diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 28470c3e..be85343f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v5 with: - go-version: ^1.23.6 + go-version: ^1.26.1 - name: Check out code into the Go module directory uses: actions/checkout@v4 @@ -40,7 +40,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v5 with: - go-version: ^1.23.6 + go-version: ^1.26.1 - name: Check out code uses: actions/checkout@v4 - name: run unit tests diff --git a/README.md b/README.md index faa2232e..32847fdb 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ Properties of an GRIP graph: GRIP also provides a query API for the traversing, analyzing and manipulating your graphs. Its syntax is inspired by [Apache TinkerPop](http://tinkerpop.apache.org/). Learn more [here](https://bmeg.github.io/grip/). +## GQL Compiler + +The repository includes a GQL-to-GripQL compiler module. See `gql/GQL_TO_GRIPQL.md` for currently supported syntax and mapping behavior. + ## Pathway Commons diff --git a/cmd/gql/main.go b/cmd/gql/main.go new file mode 100644 index 00000000..c555dc0f --- /dev/null +++ b/cmd/gql/main.go @@ -0,0 +1,68 @@ +package gql + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "time" + + "github.com/bmeg/grip/log" + "github.com/spf13/cobra" +) + +var host = "localhost:8201" +var verbose bool + +// Cmd is the declaration of the command line +var Cmd = &cobra.Command{ + Use: "gql ", + Short: "Query a graph using GQL", + Long: `Query a graph using GQL. +Example: + grip query example-graph 'match (n:Person {name: "Bob"}) return n'`, + + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + graph := args[0] + queryString := args[1] + + if verbose { + c := log.DefaultLoggerConfig() + c.Level = "debug" + log.ConfigureLogger(c) + } + + queryMap := map[string]string{"query": queryString} + payload, err := json.Marshal(queryMap) + if err != nil { + return fmt.Errorf("marshaling query: %v", err) + } + url := fmt.Sprintf("http://%s/gql/%s", host, graph) + req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload)) + if err != nil { + return fmt.Errorf("building request: %v", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := (&http.Client{Timeout: 5 * time.Second}).Do(req) + if err != nil { + return fmt.Errorf("making request: %v", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return fmt.Errorf("reading response body: %v", err) + } + + fmt.Printf("%s\n", body) + return nil + }, +} + +func init() { + Cmd.Flags().StringVarP(&host, "host", "H", host, "Grip server host:port") + Cmd.Flags().BoolVarP(&verbose, "verbose", "v", verbose, "Enable verbose logging") +} diff --git a/cmd/root.go b/cmd/root.go index b2a85c8d..f4fa42be 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -11,6 +11,7 @@ import ( "github.com/bmeg/grip/cmd/drop" "github.com/bmeg/grip/cmd/dump" "github.com/bmeg/grip/cmd/erclient" + "github.com/bmeg/grip/cmd/gql" "github.com/bmeg/grip/cmd/info" "github.com/bmeg/grip/cmd/job" "github.com/bmeg/grip/cmd/jsonload" @@ -63,6 +64,7 @@ func init() { RootCmd.AddCommand(mongoload.Cmd) RootCmd.AddCommand(jsonload.Cmd) RootCmd.AddCommand(query.Cmd) + RootCmd.AddCommand(gql.Cmd) RootCmd.AddCommand(erclient.Cmd) RootCmd.AddCommand(rdf.Cmd) RootCmd.AddCommand(schema.Cmd) diff --git a/docs/index.html b/docs/index.html index 5b3859fa..0ab8c86a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,7 +1,7 @@ - + diff --git a/endpoints/cypher/README.md b/endpoints/cypher/README.md deleted file mode 100644 index 0735bc49..00000000 --- a/endpoints/cypher/README.md +++ /dev/null @@ -1,19 +0,0 @@ - - -# Prototype - -This is a proof of concept and does not work. - -## Notes for building code - -``` -curl -O https://www.antlr.org/download/antlr-4.10.1-complete.jar -``` - -``` -curl -O https://s3.amazonaws.com/artifacts.opencypher.org/M18/Cypher.g4 -``` - -``` -java -jar antlr-4.10.1-complete.jar -Dlanguage=Go -o parser Cypher.g4 -``` diff --git a/endpoints/cypher/handle.go b/endpoints/cypher/handle.go deleted file mode 100644 index da7bf8d1..00000000 --- a/endpoints/cypher/handle.go +++ /dev/null @@ -1,60 +0,0 @@ -/* -GraphQL Web endpoint -*/ - -package main - -import ( - "bytes" - "context" - "io" - "net/http" - - "github.com/bmeg/grip/endpoints/cypher/translate" - "github.com/bmeg/grip/gripql" - "google.golang.org/protobuf/encoding/protojson" - - log "github.com/sirupsen/logrus" -) - -// Handler is a GraphQL endpoint to query the Grip database -type Handler struct { - client gripql.Client -} - -// NewHTTPHandler initilizes a new GraphQLHandler -func NewHTTPHandler(client gripql.Client, config map[string]string) (http.Handler, error) { - h := &Handler{ - client: client, - } - return h, nil -} - -// ServeHTTP responds to HTTP graphql requests -func (gh *Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { - graphName := request.URL.Path - if request.Method == "POST" { - buf := bytes.Buffer{} - buf.ReadFrom(request.Body) - cyQuery := buf.String() - gripQuery, err := translate.RunParser(cyQuery) - if err != nil { - log.Printf("Parse Error: %s", err) - } - log.Printf("Cypher Query: %s, %s = %s", graphName, cyQuery, gripQuery.String()) - client, err := gh.client.QueryC.Traversal(context.Background(), &gripql.GraphQuery{Graph: graphName, Query: gripQuery.Statements}) - if err != nil { - log.Printf("Parse Error: %s", err) - } - for { - t, err := client.Recv() - if err == io.EOF { - return - } - if b, err := protojson.Marshal(t); err == nil { - writer.Write(b) - writer.Write([]byte("\n")) - } - } - } -} diff --git a/endpoints/cypher/parser/Cypher.interp b/endpoints/cypher/parser/Cypher.interp deleted file mode 100644 index 9e4deaa2..00000000 --- a/endpoints/cypher/parser/Cypher.interp +++ /dev/null @@ -1,365 +0,0 @@ -token literal names: -null -';' -',' -'=' -'+=' -'*' -'(' -')' -'[' -']' -':' -'|' -'..' -'+' -'-' -'/' -'%' -'^' -'<>' -'<' -'>' -'<=' -'>=' -'{' -'}' -'.' -'$' -'\u27e8' -'\u3008' -'\ufe64' -'\uff1c' -'\u27e9' -'\u3009' -'\ufe65' -'\uff1e' -'\u00ad' -'\u2010' -'\u2011' -'\u2012' -'\u2013' -'\u2014' -'\u2015' -'\u2212' -'\ufe58' -'\ufe63' -'\uff0d' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'0' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -UNION -ALL -OPTIONAL -MATCH -UNWIND -AS -MERGE -ON -CREATE -SET -DETACH -DELETE -REMOVE -CALL -YIELD -WITH -RETURN -DISTINCT -ORDER -BY -L_SKIP -LIMIT -ASCENDING -ASC -DESCENDING -DESC -WHERE -OR -XOR -AND -NOT -IN -STARTS -ENDS -CONTAINS -IS -NULL -COUNT -ANY -NONE -SINGLE -TRUE -FALSE -EXISTS -CASE -ELSE -END -WHEN -THEN -StringLiteral -EscapedChar -HexInteger -DecimalInteger -OctalInteger -HexLetter -HexDigit -Digit -NonZeroDigit -NonZeroOctDigit -OctDigit -ZeroDigit -ExponentDecimalReal -RegularDecimalReal -CONSTRAINT -DO -FOR -REQUIRE -UNIQUE -MANDATORY -SCALAR -OF -ADD -DROP -FILTER -EXTRACT -UnescapedSymbolicName -IdentifierStart -IdentifierPart -EscapedSymbolicName -SP -WHITESPACE -Comment - -rule names: -oC_Cypher -oC_Statement -oC_Query -oC_RegularQuery -oC_Union -oC_SingleQuery -oC_SinglePartQuery -oC_MultiPartQuery -oC_UpdatingClause -oC_ReadingClause -oC_Match -oC_Unwind -oC_Merge -oC_MergeAction -oC_Create -oC_Set -oC_SetItem -oC_Delete -oC_Remove -oC_RemoveItem -oC_InQueryCall -oC_StandaloneCall -oC_YieldItems -oC_YieldItem -oC_With -oC_Return -oC_ProjectionBody -oC_ProjectionItems -oC_ProjectionItem -oC_Order -oC_Skip -oC_Limit -oC_SortItem -oC_Where -oC_Pattern -oC_PatternPart -oC_AnonymousPatternPart -oC_PatternElement -oC_NodePattern -oC_PatternElementChain -oC_RelationshipPattern -oC_RelationshipDetail -oC_Properties -oC_RelationshipTypes -oC_NodeLabels -oC_NodeLabel -oC_RangeLiteral -oC_LabelName -oC_RelTypeName -oC_Expression -oC_OrExpression -oC_XorExpression -oC_AndExpression -oC_NotExpression -oC_ComparisonExpression -oC_AddOrSubtractExpression -oC_MultiplyDivideModuloExpression -oC_PowerOfExpression -oC_UnaryAddOrSubtractExpression -oC_StringListNullOperatorExpression -oC_ListOperatorExpression -oC_StringOperatorExpression -oC_NullOperatorExpression -oC_PropertyOrLabelsExpression -oC_Atom -oC_Literal -oC_BooleanLiteral -oC_ListLiteral -oC_PartialComparisonExpression -oC_ParenthesizedExpression -oC_RelationshipsPattern -oC_FilterExpression -oC_IdInColl -oC_FunctionInvocation -oC_FunctionName -oC_ExistentialSubquery -oC_ExplicitProcedureInvocation -oC_ImplicitProcedureInvocation -oC_ProcedureResultField -oC_ProcedureName -oC_Namespace -oC_ListComprehension -oC_PatternComprehension -oC_PropertyLookup -oC_CaseExpression -oC_CaseAlternative -oC_Variable -oC_NumberLiteral -oC_MapLiteral -oC_Parameter -oC_PropertyExpression -oC_PropertyKeyName -oC_IntegerLiteral -oC_DoubleLiteral -oC_SchemaName -oC_ReservedWord -oC_SymbolicName -oC_LeftArrowHead -oC_RightArrowHead -oC_Dash - - -atn: -[4, 1, 127, 1568, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 1, 0, 3, 0, 202, 8, 0, 1, 0, 1, 0, 3, 0, 206, 8, 0, 1, 0, 3, 0, 209, 8, 0, 1, 0, 3, 0, 212, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 220, 8, 2, 1, 3, 1, 3, 3, 3, 224, 8, 3, 1, 3, 5, 3, 227, 8, 3, 10, 3, 12, 3, 230, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 236, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 241, 8, 4, 1, 4, 3, 4, 244, 8, 4, 1, 5, 1, 5, 3, 5, 248, 8, 5, 1, 6, 1, 6, 3, 6, 252, 8, 6, 5, 6, 254, 8, 6, 10, 6, 12, 6, 257, 9, 6, 1, 6, 1, 6, 1, 6, 3, 6, 262, 8, 6, 5, 6, 264, 8, 6, 10, 6, 12, 6, 267, 9, 6, 1, 6, 1, 6, 3, 6, 271, 8, 6, 1, 6, 5, 6, 274, 8, 6, 10, 6, 12, 6, 277, 9, 6, 1, 6, 3, 6, 280, 8, 6, 1, 6, 3, 6, 283, 8, 6, 3, 6, 285, 8, 6, 1, 7, 1, 7, 3, 7, 289, 8, 7, 5, 7, 291, 8, 7, 10, 7, 12, 7, 294, 9, 7, 1, 7, 1, 7, 3, 7, 298, 8, 7, 5, 7, 300, 8, 7, 10, 7, 12, 7, 303, 9, 7, 1, 7, 1, 7, 3, 7, 307, 8, 7, 4, 7, 309, 8, 7, 11, 7, 12, 7, 310, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 9, 1, 9, 1, 9, 3, 9, 325, 8, 9, 1, 10, 1, 10, 3, 10, 329, 8, 10, 1, 10, 1, 10, 3, 10, 333, 8, 10, 1, 10, 1, 10, 3, 10, 337, 8, 10, 1, 10, 3, 10, 340, 8, 10, 1, 11, 1, 11, 3, 11, 344, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 354, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 359, 8, 12, 10, 12, 12, 12, 362, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 374, 8, 13, 1, 14, 1, 14, 3, 14, 378, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 384, 8, 15, 1, 15, 1, 15, 3, 15, 388, 8, 15, 1, 15, 1, 15, 3, 15, 392, 8, 15, 1, 15, 5, 15, 395, 8, 15, 10, 15, 12, 15, 398, 9, 15, 1, 16, 1, 16, 3, 16, 402, 8, 16, 1, 16, 1, 16, 3, 16, 406, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 412, 8, 16, 1, 16, 1, 16, 3, 16, 416, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 422, 8, 16, 1, 16, 1, 16, 3, 16, 426, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 432, 8, 16, 1, 16, 1, 16, 3, 16, 436, 8, 16, 1, 17, 1, 17, 3, 17, 440, 8, 17, 1, 17, 1, 17, 3, 17, 444, 8, 17, 1, 17, 1, 17, 3, 17, 448, 8, 17, 1, 17, 1, 17, 3, 17, 452, 8, 17, 1, 17, 5, 17, 455, 8, 17, 10, 17, 12, 17, 458, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 464, 8, 18, 1, 18, 1, 18, 3, 18, 468, 8, 18, 1, 18, 5, 18, 471, 8, 18, 10, 18, 12, 18, 474, 9, 18, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 480, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 486, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 491, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 497, 8, 21, 1, 21, 3, 21, 500, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 506, 8, 21, 3, 21, 508, 8, 21, 1, 22, 1, 22, 3, 22, 512, 8, 22, 1, 22, 1, 22, 3, 22, 516, 8, 22, 1, 22, 5, 22, 519, 8, 22, 10, 22, 12, 22, 522, 9, 22, 1, 22, 3, 22, 525, 8, 22, 1, 22, 3, 22, 528, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 535, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24, 542, 8, 24, 1, 24, 3, 24, 545, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 3, 26, 551, 8, 26, 1, 26, 3, 26, 554, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 560, 8, 26, 1, 26, 1, 26, 3, 26, 564, 8, 26, 1, 26, 1, 26, 3, 26, 568, 8, 26, 1, 27, 1, 27, 3, 27, 572, 8, 27, 1, 27, 1, 27, 3, 27, 576, 8, 27, 1, 27, 5, 27, 579, 8, 27, 10, 27, 12, 27, 582, 9, 27, 1, 27, 1, 27, 3, 27, 586, 8, 27, 1, 27, 1, 27, 3, 27, 590, 8, 27, 1, 27, 5, 27, 593, 8, 27, 10, 27, 12, 27, 596, 9, 27, 3, 27, 598, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 607, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 616, 8, 29, 1, 29, 5, 29, 619, 8, 29, 10, 29, 12, 29, 622, 9, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 634, 8, 32, 1, 32, 3, 32, 637, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 645, 8, 34, 1, 34, 1, 34, 3, 34, 649, 8, 34, 1, 34, 5, 34, 652, 8, 34, 10, 34, 12, 34, 655, 9, 34, 1, 35, 1, 35, 3, 35, 659, 8, 35, 1, 35, 1, 35, 3, 35, 663, 8, 35, 1, 35, 1, 35, 1, 35, 3, 35, 668, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 674, 8, 37, 1, 37, 5, 37, 677, 8, 37, 10, 37, 12, 37, 680, 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 686, 8, 37, 1, 38, 1, 38, 3, 38, 690, 8, 38, 1, 38, 1, 38, 3, 38, 694, 8, 38, 3, 38, 696, 8, 38, 1, 38, 1, 38, 3, 38, 700, 8, 38, 3, 38, 702, 8, 38, 1, 38, 1, 38, 3, 38, 706, 8, 38, 3, 38, 708, 8, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 714, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 3, 40, 720, 8, 40, 1, 40, 1, 40, 3, 40, 724, 8, 40, 1, 40, 3, 40, 727, 8, 40, 1, 40, 3, 40, 730, 8, 40, 1, 40, 1, 40, 3, 40, 734, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 740, 8, 40, 1, 40, 1, 40, 3, 40, 744, 8, 40, 1, 40, 3, 40, 747, 8, 40, 1, 40, 3, 40, 750, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 756, 8, 40, 1, 40, 3, 40, 759, 8, 40, 1, 40, 3, 40, 762, 8, 40, 1, 40, 1, 40, 3, 40, 766, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 772, 8, 40, 1, 40, 3, 40, 775, 8, 40, 1, 40, 3, 40, 778, 8, 40, 1, 40, 1, 40, 3, 40, 782, 8, 40, 1, 41, 1, 41, 3, 41, 786, 8, 41, 1, 41, 1, 41, 3, 41, 790, 8, 41, 3, 41, 792, 8, 41, 1, 41, 1, 41, 3, 41, 796, 8, 41, 3, 41, 798, 8, 41, 1, 41, 3, 41, 801, 8, 41, 1, 41, 1, 41, 3, 41, 805, 8, 41, 3, 41, 807, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 3, 42, 813, 8, 42, 1, 43, 1, 43, 3, 43, 817, 8, 43, 1, 43, 1, 43, 3, 43, 821, 8, 43, 1, 43, 1, 43, 3, 43, 825, 8, 43, 1, 43, 3, 43, 828, 8, 43, 1, 43, 5, 43, 831, 8, 43, 10, 43, 12, 43, 834, 9, 43, 1, 44, 1, 44, 3, 44, 838, 8, 44, 1, 44, 5, 44, 841, 8, 44, 10, 44, 12, 44, 844, 9, 44, 1, 45, 1, 45, 3, 45, 848, 8, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 854, 8, 46, 1, 46, 1, 46, 3, 46, 858, 8, 46, 3, 46, 860, 8, 46, 1, 46, 1, 46, 3, 46, 864, 8, 46, 1, 46, 1, 46, 3, 46, 868, 8, 46, 3, 46, 870, 8, 46, 3, 46, 872, 8, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 885, 8, 50, 10, 50, 12, 50, 888, 9, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 895, 8, 51, 10, 51, 12, 51, 898, 9, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 905, 8, 52, 10, 52, 12, 52, 908, 9, 52, 1, 53, 1, 53, 3, 53, 912, 8, 53, 5, 53, 914, 8, 53, 10, 53, 12, 53, 917, 9, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 923, 8, 54, 1, 54, 5, 54, 926, 8, 54, 10, 54, 12, 54, 929, 9, 54, 1, 55, 1, 55, 3, 55, 933, 8, 55, 1, 55, 1, 55, 3, 55, 937, 8, 55, 1, 55, 1, 55, 3, 55, 941, 8, 55, 1, 55, 1, 55, 3, 55, 945, 8, 55, 1, 55, 5, 55, 948, 8, 55, 10, 55, 12, 55, 951, 9, 55, 1, 56, 1, 56, 3, 56, 955, 8, 56, 1, 56, 1, 56, 3, 56, 959, 8, 56, 1, 56, 1, 56, 3, 56, 963, 8, 56, 1, 56, 1, 56, 3, 56, 967, 8, 56, 1, 56, 1, 56, 3, 56, 971, 8, 56, 1, 56, 1, 56, 3, 56, 975, 8, 56, 1, 56, 5, 56, 978, 8, 56, 10, 56, 12, 56, 981, 9, 56, 1, 57, 1, 57, 3, 57, 985, 8, 57, 1, 57, 1, 57, 3, 57, 989, 8, 57, 1, 57, 5, 57, 992, 8, 57, 10, 57, 12, 57, 995, 9, 57, 1, 58, 1, 58, 3, 58, 999, 8, 58, 5, 58, 1001, 8, 58, 10, 58, 12, 58, 1004, 9, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1012, 8, 59, 10, 59, 12, 59, 1015, 9, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1020, 8, 60, 1, 60, 1, 60, 3, 60, 1024, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1031, 8, 60, 1, 60, 1, 60, 3, 60, 1035, 8, 60, 1, 60, 1, 60, 3, 60, 1039, 8, 60, 1, 60, 3, 60, 1042, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1054, 8, 61, 1, 61, 3, 61, 1057, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1071, 8, 62, 1, 63, 1, 63, 3, 63, 1075, 8, 63, 1, 63, 5, 63, 1078, 8, 63, 10, 63, 12, 63, 1081, 9, 63, 1, 63, 3, 63, 1084, 8, 63, 1, 63, 3, 63, 1087, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1094, 8, 64, 1, 64, 1, 64, 3, 64, 1098, 8, 64, 1, 64, 1, 64, 3, 64, 1102, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1109, 8, 64, 1, 64, 1, 64, 3, 64, 1113, 8, 64, 1, 64, 1, 64, 3, 64, 1117, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1123, 8, 64, 1, 64, 1, 64, 3, 64, 1127, 8, 64, 1, 64, 1, 64, 3, 64, 1131, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1137, 8, 64, 1, 64, 1, 64, 3, 64, 1141, 8, 64, 1, 64, 1, 64, 3, 64, 1145, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1151, 8, 64, 1, 64, 1, 64, 3, 64, 1155, 8, 64, 1, 64, 1, 64, 3, 64, 1159, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1168, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1176, 8, 65, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1182, 8, 67, 1, 67, 1, 67, 3, 67, 1186, 8, 67, 1, 67, 1, 67, 3, 67, 1190, 8, 67, 1, 67, 1, 67, 3, 67, 1194, 8, 67, 5, 67, 1196, 8, 67, 10, 67, 12, 67, 1199, 9, 67, 3, 67, 1201, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 1207, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1212, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1217, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1222, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1227, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1232, 8, 68, 1, 68, 3, 68, 1235, 8, 68, 1, 69, 1, 69, 3, 69, 1239, 8, 69, 1, 69, 1, 69, 3, 69, 1243, 8, 69, 1, 69, 1, 69, 1, 70, 1, 70, 3, 70, 1249, 8, 70, 1, 70, 4, 70, 1252, 8, 70, 11, 70, 12, 70, 1253, 1, 71, 1, 71, 3, 71, 1258, 8, 71, 1, 71, 3, 71, 1261, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 1271, 8, 73, 1, 73, 1, 73, 3, 73, 1275, 8, 73, 1, 73, 1, 73, 3, 73, 1279, 8, 73, 3, 73, 1281, 8, 73, 1, 73, 1, 73, 3, 73, 1285, 8, 73, 1, 73, 1, 73, 3, 73, 1289, 8, 73, 1, 73, 1, 73, 3, 73, 1293, 8, 73, 5, 73, 1295, 8, 73, 10, 73, 12, 73, 1298, 9, 73, 3, 73, 1300, 8, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1309, 8, 75, 1, 75, 1, 75, 3, 75, 1313, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1318, 8, 75, 1, 75, 3, 75, 1321, 8, 75, 3, 75, 1323, 8, 75, 1, 75, 3, 75, 1326, 8, 75, 1, 75, 1, 75, 1, 76, 1, 76, 3, 76, 1332, 8, 76, 1, 76, 1, 76, 3, 76, 1336, 8, 76, 1, 76, 1, 76, 3, 76, 1340, 8, 76, 1, 76, 1, 76, 3, 76, 1344, 8, 76, 1, 76, 1, 76, 3, 76, 1348, 8, 76, 5, 76, 1350, 8, 76, 10, 76, 12, 76, 1353, 9, 76, 3, 76, 1355, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 5, 80, 1369, 8, 80, 10, 80, 12, 80, 1372, 9, 80, 1, 81, 1, 81, 3, 81, 1376, 8, 81, 1, 81, 1, 81, 3, 81, 1380, 8, 81, 1, 81, 1, 81, 3, 81, 1384, 8, 81, 1, 81, 3, 81, 1387, 8, 81, 1, 81, 3, 81, 1390, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 1396, 8, 82, 1, 82, 1, 82, 3, 82, 1400, 8, 82, 1, 82, 1, 82, 3, 82, 1404, 8, 82, 3, 82, 1406, 8, 82, 1, 82, 1, 82, 3, 82, 1410, 8, 82, 1, 82, 1, 82, 3, 82, 1414, 8, 82, 3, 82, 1416, 8, 82, 1, 82, 1, 82, 3, 82, 1420, 8, 82, 1, 82, 1, 82, 3, 82, 1424, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 1430, 8, 83, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1436, 8, 84, 1, 84, 4, 84, 1439, 8, 84, 11, 84, 12, 84, 1440, 1, 84, 1, 84, 3, 84, 1445, 8, 84, 1, 84, 1, 84, 3, 84, 1449, 8, 84, 1, 84, 4, 84, 1452, 8, 84, 11, 84, 12, 84, 1453, 3, 84, 1456, 8, 84, 1, 84, 3, 84, 1459, 8, 84, 1, 84, 1, 84, 3, 84, 1463, 8, 84, 1, 84, 3, 84, 1466, 8, 84, 1, 84, 3, 84, 1469, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 3, 85, 1475, 8, 85, 1, 85, 1, 85, 3, 85, 1479, 8, 85, 1, 85, 1, 85, 3, 85, 1483, 8, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 1491, 8, 87, 1, 88, 1, 88, 3, 88, 1495, 8, 88, 1, 88, 1, 88, 3, 88, 1499, 8, 88, 1, 88, 1, 88, 3, 88, 1503, 8, 88, 1, 88, 1, 88, 3, 88, 1507, 8, 88, 1, 88, 1, 88, 3, 88, 1511, 8, 88, 1, 88, 1, 88, 3, 88, 1515, 8, 88, 1, 88, 1, 88, 3, 88, 1519, 8, 88, 1, 88, 1, 88, 3, 88, 1523, 8, 88, 5, 88, 1525, 8, 88, 10, 88, 12, 88, 1528, 9, 88, 3, 88, 1530, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 3, 89, 1537, 8, 89, 1, 90, 1, 90, 3, 90, 1541, 8, 90, 1, 90, 4, 90, 1544, 8, 90, 11, 90, 12, 90, 1545, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1556, 8, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 0, 0, 100, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 0, 10, 1, 0, 68, 71, 1, 0, 13, 14, 1, 0, 87, 88, 1, 0, 97, 99, 1, 0, 107, 108, 4, 0, 46, 58, 61, 82, 87, 94, 109, 118, 4, 0, 83, 86, 100, 100, 119, 121, 124, 124, 2, 0, 19, 19, 27, 30, 2, 0, 20, 20, 31, 34, 2, 0, 14, 14, 35, 45, 1790, 0, 201, 1, 0, 0, 0, 2, 215, 1, 0, 0, 0, 4, 219, 1, 0, 0, 0, 6, 221, 1, 0, 0, 0, 8, 243, 1, 0, 0, 0, 10, 247, 1, 0, 0, 0, 12, 284, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 319, 1, 0, 0, 0, 18, 324, 1, 0, 0, 0, 20, 328, 1, 0, 0, 0, 22, 341, 1, 0, 0, 0, 24, 351, 1, 0, 0, 0, 26, 373, 1, 0, 0, 0, 28, 375, 1, 0, 0, 0, 30, 381, 1, 0, 0, 0, 32, 435, 1, 0, 0, 0, 34, 439, 1, 0, 0, 0, 36, 459, 1, 0, 0, 0, 38, 479, 1, 0, 0, 0, 40, 481, 1, 0, 0, 0, 42, 492, 1, 0, 0, 0, 44, 509, 1, 0, 0, 0, 46, 534, 1, 0, 0, 0, 48, 538, 1, 0, 0, 0, 50, 546, 1, 0, 0, 0, 52, 553, 1, 0, 0, 0, 54, 597, 1, 0, 0, 0, 56, 606, 1, 0, 0, 0, 58, 608, 1, 0, 0, 0, 60, 623, 1, 0, 0, 0, 62, 627, 1, 0, 0, 0, 64, 631, 1, 0, 0, 0, 66, 638, 1, 0, 0, 0, 68, 642, 1, 0, 0, 0, 70, 667, 1, 0, 0, 0, 72, 669, 1, 0, 0, 0, 74, 685, 1, 0, 0, 0, 76, 687, 1, 0, 0, 0, 78, 711, 1, 0, 0, 0, 80, 781, 1, 0, 0, 0, 82, 783, 1, 0, 0, 0, 84, 812, 1, 0, 0, 0, 86, 814, 1, 0, 0, 0, 88, 835, 1, 0, 0, 0, 90, 845, 1, 0, 0, 0, 92, 851, 1, 0, 0, 0, 94, 873, 1, 0, 0, 0, 96, 875, 1, 0, 0, 0, 98, 877, 1, 0, 0, 0, 100, 879, 1, 0, 0, 0, 102, 889, 1, 0, 0, 0, 104, 899, 1, 0, 0, 0, 106, 915, 1, 0, 0, 0, 108, 920, 1, 0, 0, 0, 110, 930, 1, 0, 0, 0, 112, 952, 1, 0, 0, 0, 114, 982, 1, 0, 0, 0, 116, 1002, 1, 0, 0, 0, 118, 1007, 1, 0, 0, 0, 120, 1041, 1, 0, 0, 0, 122, 1053, 1, 0, 0, 0, 124, 1070, 1, 0, 0, 0, 126, 1072, 1, 0, 0, 0, 128, 1167, 1, 0, 0, 0, 130, 1175, 1, 0, 0, 0, 132, 1177, 1, 0, 0, 0, 134, 1179, 1, 0, 0, 0, 136, 1234, 1, 0, 0, 0, 138, 1236, 1, 0, 0, 0, 140, 1246, 1, 0, 0, 0, 142, 1255, 1, 0, 0, 0, 144, 1262, 1, 0, 0, 0, 146, 1268, 1, 0, 0, 0, 148, 1303, 1, 0, 0, 0, 150, 1306, 1, 0, 0, 0, 152, 1329, 1, 0, 0, 0, 154, 1358, 1, 0, 0, 0, 156, 1360, 1, 0, 0, 0, 158, 1362, 1, 0, 0, 0, 160, 1370, 1, 0, 0, 0, 162, 1373, 1, 0, 0, 0, 164, 1393, 1, 0, 0, 0, 166, 1427, 1, 0, 0, 0, 168, 1455, 1, 0, 0, 0, 170, 1472, 1, 0, 0, 0, 172, 1486, 1, 0, 0, 0, 174, 1490, 1, 0, 0, 0, 176, 1492, 1, 0, 0, 0, 178, 1533, 1, 0, 0, 0, 180, 1538, 1, 0, 0, 0, 182, 1547, 1, 0, 0, 0, 184, 1549, 1, 0, 0, 0, 186, 1551, 1, 0, 0, 0, 188, 1555, 1, 0, 0, 0, 190, 1557, 1, 0, 0, 0, 192, 1559, 1, 0, 0, 0, 194, 1561, 1, 0, 0, 0, 196, 1563, 1, 0, 0, 0, 198, 1565, 1, 0, 0, 0, 200, 202, 5, 125, 0, 0, 201, 200, 1, 0, 0, 0, 201, 202, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 208, 3, 2, 1, 0, 204, 206, 5, 125, 0, 0, 205, 204, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 209, 5, 1, 0, 0, 208, 205, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 211, 1, 0, 0, 0, 210, 212, 5, 125, 0, 0, 211, 210, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 5, 0, 0, 1, 214, 1, 1, 0, 0, 0, 215, 216, 3, 4, 2, 0, 216, 3, 1, 0, 0, 0, 217, 220, 3, 6, 3, 0, 218, 220, 3, 42, 21, 0, 219, 217, 1, 0, 0, 0, 219, 218, 1, 0, 0, 0, 220, 5, 1, 0, 0, 0, 221, 228, 3, 10, 5, 0, 222, 224, 5, 125, 0, 0, 223, 222, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 227, 3, 8, 4, 0, 226, 223, 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 7, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 231, 232, 5, 46, 0, 0, 232, 233, 5, 125, 0, 0, 233, 235, 5, 47, 0, 0, 234, 236, 5, 125, 0, 0, 235, 234, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 244, 3, 10, 5, 0, 238, 240, 5, 46, 0, 0, 239, 241, 5, 125, 0, 0, 240, 239, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, 242, 244, 3, 10, 5, 0, 243, 231, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 244, 9, 1, 0, 0, 0, 245, 248, 3, 12, 6, 0, 246, 248, 3, 14, 7, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 11, 1, 0, 0, 0, 249, 251, 3, 18, 9, 0, 250, 252, 5, 125, 0, 0, 251, 250, 1, 0, 0, 0, 251, 252, 1, 0, 0, 0, 252, 254, 1, 0, 0, 0, 253, 249, 1, 0, 0, 0, 254, 257, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 258, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 285, 3, 50, 25, 0, 259, 261, 3, 18, 9, 0, 260, 262, 5, 125, 0, 0, 261, 260, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, 263, 259, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 275, 3, 16, 8, 0, 269, 271, 5, 125, 0, 0, 270, 269, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 3, 16, 8, 0, 273, 270, 1, 0, 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, 276, 282, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 5, 125, 0, 0, 279, 278, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 283, 3, 50, 25, 0, 282, 279, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 285, 1, 0, 0, 0, 284, 255, 1, 0, 0, 0, 284, 265, 1, 0, 0, 0, 285, 13, 1, 0, 0, 0, 286, 288, 3, 18, 9, 0, 287, 289, 5, 125, 0, 0, 288, 287, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 286, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 301, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 297, 3, 16, 8, 0, 296, 298, 5, 125, 0, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 300, 1, 0, 0, 0, 299, 295, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 304, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 306, 3, 48, 24, 0, 305, 307, 5, 125, 0, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 309, 1, 0, 0, 0, 308, 292, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 313, 3, 12, 6, 0, 313, 15, 1, 0, 0, 0, 314, 320, 3, 28, 14, 0, 315, 320, 3, 24, 12, 0, 316, 320, 3, 34, 17, 0, 317, 320, 3, 30, 15, 0, 318, 320, 3, 36, 18, 0, 319, 314, 1, 0, 0, 0, 319, 315, 1, 0, 0, 0, 319, 316, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 17, 1, 0, 0, 0, 321, 325, 3, 20, 10, 0, 322, 325, 3, 22, 11, 0, 323, 325, 3, 40, 20, 0, 324, 321, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 323, 1, 0, 0, 0, 325, 19, 1, 0, 0, 0, 326, 327, 5, 48, 0, 0, 327, 329, 5, 125, 0, 0, 328, 326, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 5, 49, 0, 0, 331, 333, 5, 125, 0, 0, 332, 331, 1, 0, 0, 0, 332, 333, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 339, 3, 68, 34, 0, 335, 337, 5, 125, 0, 0, 336, 335, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 340, 3, 66, 33, 0, 339, 336, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 21, 1, 0, 0, 0, 341, 343, 5, 50, 0, 0, 342, 344, 5, 125, 0, 0, 343, 342, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 3, 98, 49, 0, 346, 347, 5, 125, 0, 0, 347, 348, 5, 51, 0, 0, 348, 349, 5, 125, 0, 0, 349, 350, 3, 172, 86, 0, 350, 23, 1, 0, 0, 0, 351, 353, 5, 52, 0, 0, 352, 354, 5, 125, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 360, 3, 70, 35, 0, 356, 357, 5, 125, 0, 0, 357, 359, 3, 26, 13, 0, 358, 356, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 25, 1, 0, 0, 0, 362, 360, 1, 0, 0, 0, 363, 364, 5, 53, 0, 0, 364, 365, 5, 125, 0, 0, 365, 366, 5, 49, 0, 0, 366, 367, 5, 125, 0, 0, 367, 374, 3, 30, 15, 0, 368, 369, 5, 53, 0, 0, 369, 370, 5, 125, 0, 0, 370, 371, 5, 54, 0, 0, 371, 372, 5, 125, 0, 0, 372, 374, 3, 30, 15, 0, 373, 363, 1, 0, 0, 0, 373, 368, 1, 0, 0, 0, 374, 27, 1, 0, 0, 0, 375, 377, 5, 54, 0, 0, 376, 378, 5, 125, 0, 0, 377, 376, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 380, 3, 68, 34, 0, 380, 29, 1, 0, 0, 0, 381, 383, 5, 55, 0, 0, 382, 384, 5, 125, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 396, 3, 32, 16, 0, 386, 388, 5, 125, 0, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 5, 2, 0, 0, 390, 392, 5, 125, 0, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 395, 3, 32, 16, 0, 394, 387, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 31, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 399, 401, 3, 180, 90, 0, 400, 402, 5, 125, 0, 0, 401, 400, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 405, 5, 3, 0, 0, 404, 406, 5, 125, 0, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 3, 98, 49, 0, 408, 436, 1, 0, 0, 0, 409, 411, 3, 172, 86, 0, 410, 412, 5, 125, 0, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 415, 5, 3, 0, 0, 414, 416, 5, 125, 0, 0, 415, 414, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 3, 98, 49, 0, 418, 436, 1, 0, 0, 0, 419, 421, 3, 172, 86, 0, 420, 422, 5, 125, 0, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 425, 5, 4, 0, 0, 424, 426, 5, 125, 0, 0, 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 428, 3, 98, 49, 0, 428, 436, 1, 0, 0, 0, 429, 431, 3, 172, 86, 0, 430, 432, 5, 125, 0, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 3, 88, 44, 0, 434, 436, 1, 0, 0, 0, 435, 399, 1, 0, 0, 0, 435, 409, 1, 0, 0, 0, 435, 419, 1, 0, 0, 0, 435, 429, 1, 0, 0, 0, 436, 33, 1, 0, 0, 0, 437, 438, 5, 56, 0, 0, 438, 440, 5, 125, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 443, 5, 57, 0, 0, 442, 444, 5, 125, 0, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 456, 3, 98, 49, 0, 446, 448, 5, 125, 0, 0, 447, 446, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 451, 5, 2, 0, 0, 450, 452, 5, 125, 0, 0, 451, 450, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 455, 3, 98, 49, 0, 454, 447, 1, 0, 0, 0, 455, 458, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 35, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 460, 5, 58, 0, 0, 460, 461, 5, 125, 0, 0, 461, 472, 3, 38, 19, 0, 462, 464, 5, 125, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 5, 2, 0, 0, 466, 468, 5, 125, 0, 0, 467, 466, 1, 0, 0, 0, 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 3, 38, 19, 0, 470, 463, 1, 0, 0, 0, 471, 474, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 37, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 475, 476, 3, 172, 86, 0, 476, 477, 3, 88, 44, 0, 477, 480, 1, 0, 0, 0, 478, 480, 3, 180, 90, 0, 479, 475, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 39, 1, 0, 0, 0, 481, 482, 5, 59, 0, 0, 482, 483, 5, 125, 0, 0, 483, 490, 3, 152, 76, 0, 484, 486, 5, 125, 0, 0, 485, 484, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 488, 5, 60, 0, 0, 488, 489, 5, 125, 0, 0, 489, 491, 3, 44, 22, 0, 490, 485, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 41, 1, 0, 0, 0, 492, 493, 5, 59, 0, 0, 493, 496, 5, 125, 0, 0, 494, 497, 3, 152, 76, 0, 495, 497, 3, 154, 77, 0, 496, 494, 1, 0, 0, 0, 496, 495, 1, 0, 0, 0, 497, 507, 1, 0, 0, 0, 498, 500, 5, 125, 0, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 5, 60, 0, 0, 502, 505, 5, 125, 0, 0, 503, 506, 5, 5, 0, 0, 504, 506, 3, 44, 22, 0, 505, 503, 1, 0, 0, 0, 505, 504, 1, 0, 0, 0, 506, 508, 1, 0, 0, 0, 507, 499, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 43, 1, 0, 0, 0, 509, 520, 3, 46, 23, 0, 510, 512, 5, 125, 0, 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 515, 5, 2, 0, 0, 514, 516, 5, 125, 0, 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, 519, 3, 46, 23, 0, 518, 511, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 527, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 523, 525, 5, 125, 0, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 528, 3, 66, 33, 0, 527, 524, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 45, 1, 0, 0, 0, 529, 530, 3, 156, 78, 0, 530, 531, 5, 125, 0, 0, 531, 532, 5, 51, 0, 0, 532, 533, 5, 125, 0, 0, 533, 535, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 3, 172, 86, 0, 537, 47, 1, 0, 0, 0, 538, 539, 5, 61, 0, 0, 539, 544, 3, 52, 26, 0, 540, 542, 5, 125, 0, 0, 541, 540, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 545, 3, 66, 33, 0, 544, 541, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 49, 1, 0, 0, 0, 546, 547, 5, 62, 0, 0, 547, 548, 3, 52, 26, 0, 548, 51, 1, 0, 0, 0, 549, 551, 5, 125, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 1, 0, 0, 0, 552, 554, 5, 63, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 125, 0, 0, 556, 559, 3, 54, 27, 0, 557, 558, 5, 125, 0, 0, 558, 560, 3, 58, 29, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 125, 0, 0, 562, 564, 3, 60, 30, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 567, 1, 0, 0, 0, 565, 566, 5, 125, 0, 0, 566, 568, 3, 62, 31, 0, 567, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 53, 1, 0, 0, 0, 569, 580, 5, 5, 0, 0, 570, 572, 5, 125, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 5, 2, 0, 0, 574, 576, 5, 125, 0, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 579, 3, 56, 28, 0, 578, 571, 1, 0, 0, 0, 579, 582, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 598, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, 583, 594, 3, 56, 28, 0, 584, 586, 5, 125, 0, 0, 585, 584, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 5, 2, 0, 0, 588, 590, 5, 125, 0, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 593, 3, 56, 28, 0, 592, 585, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 597, 569, 1, 0, 0, 0, 597, 583, 1, 0, 0, 0, 598, 55, 1, 0, 0, 0, 599, 600, 3, 98, 49, 0, 600, 601, 5, 125, 0, 0, 601, 602, 5, 51, 0, 0, 602, 603, 5, 125, 0, 0, 603, 604, 3, 172, 86, 0, 604, 607, 1, 0, 0, 0, 605, 607, 3, 98, 49, 0, 606, 599, 1, 0, 0, 0, 606, 605, 1, 0, 0, 0, 607, 57, 1, 0, 0, 0, 608, 609, 5, 64, 0, 0, 609, 610, 5, 125, 0, 0, 610, 611, 5, 65, 0, 0, 611, 612, 5, 125, 0, 0, 612, 620, 3, 64, 32, 0, 613, 615, 5, 2, 0, 0, 614, 616, 5, 125, 0, 0, 615, 614, 1, 0, 0, 0, 615, 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 619, 3, 64, 32, 0, 618, 613, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 59, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 623, 624, 5, 66, 0, 0, 624, 625, 5, 125, 0, 0, 625, 626, 3, 98, 49, 0, 626, 61, 1, 0, 0, 0, 627, 628, 5, 67, 0, 0, 628, 629, 5, 125, 0, 0, 629, 630, 3, 98, 49, 0, 630, 63, 1, 0, 0, 0, 631, 636, 3, 98, 49, 0, 632, 634, 5, 125, 0, 0, 633, 632, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 637, 7, 0, 0, 0, 636, 633, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 65, 1, 0, 0, 0, 638, 639, 5, 72, 0, 0, 639, 640, 5, 125, 0, 0, 640, 641, 3, 98, 49, 0, 641, 67, 1, 0, 0, 0, 642, 653, 3, 70, 35, 0, 643, 645, 5, 125, 0, 0, 644, 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 648, 5, 2, 0, 0, 647, 649, 5, 125, 0, 0, 648, 647, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 3, 70, 35, 0, 651, 644, 1, 0, 0, 0, 652, 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 69, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 656, 658, 3, 172, 86, 0, 657, 659, 5, 125, 0, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 662, 5, 3, 0, 0, 661, 663, 5, 125, 0, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 665, 3, 72, 36, 0, 665, 668, 1, 0, 0, 0, 666, 668, 3, 72, 36, 0, 667, 656, 1, 0, 0, 0, 667, 666, 1, 0, 0, 0, 668, 71, 1, 0, 0, 0, 669, 670, 3, 74, 37, 0, 670, 73, 1, 0, 0, 0, 671, 678, 3, 76, 38, 0, 672, 674, 5, 125, 0, 0, 673, 672, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 677, 3, 78, 39, 0, 676, 673, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 686, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, 682, 5, 6, 0, 0, 682, 683, 3, 74, 37, 0, 683, 684, 5, 7, 0, 0, 684, 686, 1, 0, 0, 0, 685, 671, 1, 0, 0, 0, 685, 681, 1, 0, 0, 0, 686, 75, 1, 0, 0, 0, 687, 689, 5, 6, 0, 0, 688, 690, 5, 125, 0, 0, 689, 688, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 695, 1, 0, 0, 0, 691, 693, 3, 172, 86, 0, 692, 694, 5, 125, 0, 0, 693, 692, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 696, 1, 0, 0, 0, 695, 691, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 701, 1, 0, 0, 0, 697, 699, 3, 88, 44, 0, 698, 700, 5, 125, 0, 0, 699, 698, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 702, 1, 0, 0, 0, 701, 697, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, 707, 1, 0, 0, 0, 703, 705, 3, 84, 42, 0, 704, 706, 5, 125, 0, 0, 705, 704, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 708, 1, 0, 0, 0, 707, 703, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 5, 7, 0, 0, 710, 77, 1, 0, 0, 0, 711, 713, 3, 80, 40, 0, 712, 714, 5, 125, 0, 0, 713, 712, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 3, 76, 38, 0, 716, 79, 1, 0, 0, 0, 717, 719, 3, 194, 97, 0, 718, 720, 5, 125, 0, 0, 719, 718, 1, 0, 0, 0, 719, 720, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 723, 3, 198, 99, 0, 722, 724, 5, 125, 0, 0, 723, 722, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 726, 1, 0, 0, 0, 725, 727, 3, 82, 41, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 729, 1, 0, 0, 0, 728, 730, 5, 125, 0, 0, 729, 728, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 733, 3, 198, 99, 0, 732, 734, 5, 125, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 3, 196, 98, 0, 736, 782, 1, 0, 0, 0, 737, 739, 3, 194, 97, 0, 738, 740, 5, 125, 0, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 3, 198, 99, 0, 742, 744, 5, 125, 0, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 746, 1, 0, 0, 0, 745, 747, 3, 82, 41, 0, 746, 745, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 749, 1, 0, 0, 0, 748, 750, 5, 125, 0, 0, 749, 748, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 3, 198, 99, 0, 752, 782, 1, 0, 0, 0, 753, 755, 3, 198, 99, 0, 754, 756, 5, 125, 0, 0, 755, 754, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 758, 1, 0, 0, 0, 757, 759, 3, 82, 41, 0, 758, 757, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 761, 1, 0, 0, 0, 760, 762, 5, 125, 0, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 3, 198, 99, 0, 764, 766, 5, 125, 0, 0, 765, 764, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 3, 196, 98, 0, 768, 782, 1, 0, 0, 0, 769, 771, 3, 198, 99, 0, 770, 772, 5, 125, 0, 0, 771, 770, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 1, 0, 0, 0, 773, 775, 3, 82, 41, 0, 774, 773, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 778, 5, 125, 0, 0, 777, 776, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 3, 198, 99, 0, 780, 782, 1, 0, 0, 0, 781, 717, 1, 0, 0, 0, 781, 737, 1, 0, 0, 0, 781, 753, 1, 0, 0, 0, 781, 769, 1, 0, 0, 0, 782, 81, 1, 0, 0, 0, 783, 785, 5, 8, 0, 0, 784, 786, 5, 125, 0, 0, 785, 784, 1, 0, 0, 0, 785, 786, 1, 0, 0, 0, 786, 791, 1, 0, 0, 0, 787, 789, 3, 172, 86, 0, 788, 790, 5, 125, 0, 0, 789, 788, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 792, 1, 0, 0, 0, 791, 787, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 797, 1, 0, 0, 0, 793, 795, 3, 86, 43, 0, 794, 796, 5, 125, 0, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 798, 1, 0, 0, 0, 797, 793, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 801, 3, 92, 46, 0, 800, 799, 1, 0, 0, 0, 800, 801, 1, 0, 0, 0, 801, 806, 1, 0, 0, 0, 802, 804, 3, 84, 42, 0, 803, 805, 5, 125, 0, 0, 804, 803, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 807, 1, 0, 0, 0, 806, 802, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 809, 5, 9, 0, 0, 809, 83, 1, 0, 0, 0, 810, 813, 3, 176, 88, 0, 811, 813, 3, 178, 89, 0, 812, 810, 1, 0, 0, 0, 812, 811, 1, 0, 0, 0, 813, 85, 1, 0, 0, 0, 814, 816, 5, 10, 0, 0, 815, 817, 5, 125, 0, 0, 816, 815, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 832, 3, 96, 48, 0, 819, 821, 5, 125, 0, 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 824, 5, 11, 0, 0, 823, 825, 5, 10, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, 826, 828, 5, 125, 0, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 831, 3, 96, 48, 0, 830, 820, 1, 0, 0, 0, 831, 834, 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 87, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 835, 842, 3, 90, 45, 0, 836, 838, 5, 125, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 90, 45, 0, 840, 837, 1, 0, 0, 0, 841, 844, 1, 0, 0, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 89, 1, 0, 0, 0, 844, 842, 1, 0, 0, 0, 845, 847, 5, 10, 0, 0, 846, 848, 5, 125, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 850, 3, 94, 47, 0, 850, 91, 1, 0, 0, 0, 851, 853, 5, 5, 0, 0, 852, 854, 5, 125, 0, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 859, 1, 0, 0, 0, 855, 857, 3, 184, 92, 0, 856, 858, 5, 125, 0, 0, 857, 856, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 860, 1, 0, 0, 0, 859, 855, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 871, 1, 0, 0, 0, 861, 863, 5, 12, 0, 0, 862, 864, 5, 125, 0, 0, 863, 862, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 869, 1, 0, 0, 0, 865, 867, 3, 184, 92, 0, 866, 868, 5, 125, 0, 0, 867, 866, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 870, 1, 0, 0, 0, 869, 865, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 872, 1, 0, 0, 0, 871, 861, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 93, 1, 0, 0, 0, 873, 874, 3, 188, 94, 0, 874, 95, 1, 0, 0, 0, 875, 876, 3, 188, 94, 0, 876, 97, 1, 0, 0, 0, 877, 878, 3, 100, 50, 0, 878, 99, 1, 0, 0, 0, 879, 886, 3, 102, 51, 0, 880, 881, 5, 125, 0, 0, 881, 882, 5, 73, 0, 0, 882, 883, 5, 125, 0, 0, 883, 885, 3, 102, 51, 0, 884, 880, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 101, 1, 0, 0, 0, 888, 886, 1, 0, 0, 0, 889, 896, 3, 104, 52, 0, 890, 891, 5, 125, 0, 0, 891, 892, 5, 74, 0, 0, 892, 893, 5, 125, 0, 0, 893, 895, 3, 104, 52, 0, 894, 890, 1, 0, 0, 0, 895, 898, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 103, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 906, 3, 106, 53, 0, 900, 901, 5, 125, 0, 0, 901, 902, 5, 75, 0, 0, 902, 903, 5, 125, 0, 0, 903, 905, 3, 106, 53, 0, 904, 900, 1, 0, 0, 0, 905, 908, 1, 0, 0, 0, 906, 904, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 105, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 909, 911, 5, 76, 0, 0, 910, 912, 5, 125, 0, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 914, 1, 0, 0, 0, 913, 909, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 918, 1, 0, 0, 0, 917, 915, 1, 0, 0, 0, 918, 919, 3, 108, 54, 0, 919, 107, 1, 0, 0, 0, 920, 927, 3, 110, 55, 0, 921, 923, 5, 125, 0, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 926, 3, 136, 68, 0, 925, 922, 1, 0, 0, 0, 926, 929, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 109, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 930, 949, 3, 112, 56, 0, 931, 933, 5, 125, 0, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 936, 5, 13, 0, 0, 935, 937, 5, 125, 0, 0, 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 948, 3, 112, 56, 0, 939, 941, 5, 125, 0, 0, 940, 939, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 944, 5, 14, 0, 0, 943, 945, 5, 125, 0, 0, 944, 943, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 948, 3, 112, 56, 0, 947, 932, 1, 0, 0, 0, 947, 940, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 111, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 979, 3, 114, 57, 0, 953, 955, 5, 125, 0, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 958, 5, 5, 0, 0, 957, 959, 5, 125, 0, 0, 958, 957, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 978, 3, 114, 57, 0, 961, 963, 5, 125, 0, 0, 962, 961, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 966, 5, 15, 0, 0, 965, 967, 5, 125, 0, 0, 966, 965, 1, 0, 0, 0, 966, 967, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 978, 3, 114, 57, 0, 969, 971, 5, 125, 0, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 5, 16, 0, 0, 973, 975, 5, 125, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 978, 3, 114, 57, 0, 977, 954, 1, 0, 0, 0, 977, 962, 1, 0, 0, 0, 977, 970, 1, 0, 0, 0, 978, 981, 1, 0, 0, 0, 979, 977, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 113, 1, 0, 0, 0, 981, 979, 1, 0, 0, 0, 982, 993, 3, 116, 58, 0, 983, 985, 5, 125, 0, 0, 984, 983, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 988, 5, 17, 0, 0, 987, 989, 5, 125, 0, 0, 988, 987, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 992, 3, 116, 58, 0, 991, 984, 1, 0, 0, 0, 992, 995, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 115, 1, 0, 0, 0, 995, 993, 1, 0, 0, 0, 996, 998, 7, 1, 0, 0, 997, 999, 5, 125, 0, 0, 998, 997, 1, 0, 0, 0, 998, 999, 1, 0, 0, 0, 999, 1001, 1, 0, 0, 0, 1000, 996, 1, 0, 0, 0, 1001, 1004, 1, 0, 0, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1005, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1005, 1006, 3, 118, 59, 0, 1006, 117, 1, 0, 0, 0, 1007, 1013, 3, 126, 63, 0, 1008, 1012, 3, 122, 61, 0, 1009, 1012, 3, 120, 60, 0, 1010, 1012, 3, 124, 62, 0, 1011, 1008, 1, 0, 0, 0, 1011, 1009, 1, 0, 0, 0, 1011, 1010, 1, 0, 0, 0, 1012, 1015, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 119, 1, 0, 0, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1017, 5, 125, 0, 0, 1017, 1019, 5, 77, 0, 0, 1018, 1020, 5, 125, 0, 0, 1019, 1018, 1, 0, 0, 0, 1019, 1020, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1042, 3, 126, 63, 0, 1022, 1024, 5, 125, 0, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1026, 5, 8, 0, 0, 1026, 1027, 3, 98, 49, 0, 1027, 1028, 5, 9, 0, 0, 1028, 1042, 1, 0, 0, 0, 1029, 1031, 5, 125, 0, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1034, 5, 8, 0, 0, 1033, 1035, 3, 98, 49, 0, 1034, 1033, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1038, 5, 12, 0, 0, 1037, 1039, 3, 98, 49, 0, 1038, 1037, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 5, 9, 0, 0, 1041, 1016, 1, 0, 0, 0, 1041, 1023, 1, 0, 0, 0, 1041, 1030, 1, 0, 0, 0, 1042, 121, 1, 0, 0, 0, 1043, 1044, 5, 125, 0, 0, 1044, 1045, 5, 78, 0, 0, 1045, 1046, 5, 125, 0, 0, 1046, 1054, 5, 61, 0, 0, 1047, 1048, 5, 125, 0, 0, 1048, 1049, 5, 79, 0, 0, 1049, 1050, 5, 125, 0, 0, 1050, 1054, 5, 61, 0, 0, 1051, 1052, 5, 125, 0, 0, 1052, 1054, 5, 80, 0, 0, 1053, 1043, 1, 0, 0, 0, 1053, 1047, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1057, 5, 125, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 3, 126, 63, 0, 1059, 123, 1, 0, 0, 0, 1060, 1061, 5, 125, 0, 0, 1061, 1062, 5, 81, 0, 0, 1062, 1063, 5, 125, 0, 0, 1063, 1071, 5, 82, 0, 0, 1064, 1065, 5, 125, 0, 0, 1065, 1066, 5, 81, 0, 0, 1066, 1067, 5, 125, 0, 0, 1067, 1068, 5, 76, 0, 0, 1068, 1069, 5, 125, 0, 0, 1069, 1071, 5, 82, 0, 0, 1070, 1060, 1, 0, 0, 0, 1070, 1064, 1, 0, 0, 0, 1071, 125, 1, 0, 0, 0, 1072, 1079, 3, 128, 64, 0, 1073, 1075, 5, 125, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1078, 3, 166, 83, 0, 1077, 1074, 1, 0, 0, 0, 1078, 1081, 1, 0, 0, 0, 1079, 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1086, 1, 0, 0, 0, 1081, 1079, 1, 0, 0, 0, 1082, 1084, 5, 125, 0, 0, 1083, 1082, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1087, 3, 88, 44, 0, 1086, 1083, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 127, 1, 0, 0, 0, 1088, 1168, 3, 130, 65, 0, 1089, 1168, 3, 178, 89, 0, 1090, 1168, 3, 168, 84, 0, 1091, 1093, 5, 83, 0, 0, 1092, 1094, 5, 125, 0, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1097, 5, 6, 0, 0, 1096, 1098, 5, 125, 0, 0, 1097, 1096, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1101, 5, 5, 0, 0, 1100, 1102, 5, 125, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1168, 5, 7, 0, 0, 1104, 1168, 3, 162, 81, 0, 1105, 1168, 3, 164, 82, 0, 1106, 1108, 5, 47, 0, 0, 1107, 1109, 5, 125, 0, 0, 1108, 1107, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 5, 6, 0, 0, 1111, 1113, 5, 125, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1116, 3, 142, 71, 0, 1115, 1117, 5, 125, 0, 0, 1116, 1115, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 5, 7, 0, 0, 1119, 1168, 1, 0, 0, 0, 1120, 1122, 5, 84, 0, 0, 1121, 1123, 5, 125, 0, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 5, 6, 0, 0, 1125, 1127, 5, 125, 0, 0, 1126, 1125, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 1130, 3, 142, 71, 0, 1129, 1131, 5, 125, 0, 0, 1130, 1129, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1133, 5, 7, 0, 0, 1133, 1168, 1, 0, 0, 0, 1134, 1136, 5, 85, 0, 0, 1135, 1137, 5, 125, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1140, 5, 6, 0, 0, 1139, 1141, 5, 125, 0, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1144, 3, 142, 71, 0, 1143, 1145, 5, 125, 0, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 5, 7, 0, 0, 1147, 1168, 1, 0, 0, 0, 1148, 1150, 5, 86, 0, 0, 1149, 1151, 5, 125, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1154, 5, 6, 0, 0, 1153, 1155, 5, 125, 0, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 3, 142, 71, 0, 1157, 1159, 5, 125, 0, 0, 1158, 1157, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 5, 7, 0, 0, 1161, 1168, 1, 0, 0, 0, 1162, 1168, 3, 140, 70, 0, 1163, 1168, 3, 138, 69, 0, 1164, 1168, 3, 146, 73, 0, 1165, 1168, 3, 150, 75, 0, 1166, 1168, 3, 172, 86, 0, 1167, 1088, 1, 0, 0, 0, 1167, 1089, 1, 0, 0, 0, 1167, 1090, 1, 0, 0, 0, 1167, 1091, 1, 0, 0, 0, 1167, 1104, 1, 0, 0, 0, 1167, 1105, 1, 0, 0, 0, 1167, 1106, 1, 0, 0, 0, 1167, 1120, 1, 0, 0, 0, 1167, 1134, 1, 0, 0, 0, 1167, 1148, 1, 0, 0, 0, 1167, 1162, 1, 0, 0, 0, 1167, 1163, 1, 0, 0, 0, 1167, 1164, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1166, 1, 0, 0, 0, 1168, 129, 1, 0, 0, 0, 1169, 1176, 3, 174, 87, 0, 1170, 1176, 5, 95, 0, 0, 1171, 1176, 3, 132, 66, 0, 1172, 1176, 5, 82, 0, 0, 1173, 1176, 3, 176, 88, 0, 1174, 1176, 3, 134, 67, 0, 1175, 1169, 1, 0, 0, 0, 1175, 1170, 1, 0, 0, 0, 1175, 1171, 1, 0, 0, 0, 1175, 1172, 1, 0, 0, 0, 1175, 1173, 1, 0, 0, 0, 1175, 1174, 1, 0, 0, 0, 1176, 131, 1, 0, 0, 0, 1177, 1178, 7, 2, 0, 0, 1178, 133, 1, 0, 0, 0, 1179, 1181, 5, 8, 0, 0, 1180, 1182, 5, 125, 0, 0, 1181, 1180, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1200, 1, 0, 0, 0, 1183, 1185, 3, 98, 49, 0, 1184, 1186, 5, 125, 0, 0, 1185, 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1197, 1, 0, 0, 0, 1187, 1189, 5, 2, 0, 0, 1188, 1190, 5, 125, 0, 0, 1189, 1188, 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1193, 3, 98, 49, 0, 1192, 1194, 5, 125, 0, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1196, 1, 0, 0, 0, 1195, 1187, 1, 0, 0, 0, 1196, 1199, 1, 0, 0, 0, 1197, 1195, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1200, 1183, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1203, 5, 9, 0, 0, 1203, 135, 1, 0, 0, 0, 1204, 1206, 5, 3, 0, 0, 1205, 1207, 5, 125, 0, 0, 1206, 1205, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1235, 3, 110, 55, 0, 1209, 1211, 5, 18, 0, 0, 1210, 1212, 5, 125, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1235, 3, 110, 55, 0, 1214, 1216, 5, 19, 0, 0, 1215, 1217, 5, 125, 0, 0, 1216, 1215, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1235, 3, 110, 55, 0, 1219, 1221, 5, 20, 0, 0, 1220, 1222, 5, 125, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1235, 3, 110, 55, 0, 1224, 1226, 5, 21, 0, 0, 1225, 1227, 5, 125, 0, 0, 1226, 1225, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1235, 3, 110, 55, 0, 1229, 1231, 5, 22, 0, 0, 1230, 1232, 5, 125, 0, 0, 1231, 1230, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 3, 110, 55, 0, 1234, 1204, 1, 0, 0, 0, 1234, 1209, 1, 0, 0, 0, 1234, 1214, 1, 0, 0, 0, 1234, 1219, 1, 0, 0, 0, 1234, 1224, 1, 0, 0, 0, 1234, 1229, 1, 0, 0, 0, 1235, 137, 1, 0, 0, 0, 1236, 1238, 5, 6, 0, 0, 1237, 1239, 5, 125, 0, 0, 1238, 1237, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 3, 98, 49, 0, 1241, 1243, 5, 125, 0, 0, 1242, 1241, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 5, 7, 0, 0, 1245, 139, 1, 0, 0, 0, 1246, 1251, 3, 76, 38, 0, 1247, 1249, 5, 125, 0, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1252, 3, 78, 39, 0, 1251, 1248, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1251, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 141, 1, 0, 0, 0, 1255, 1260, 3, 144, 72, 0, 1256, 1258, 5, 125, 0, 0, 1257, 1256, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1261, 3, 66, 33, 0, 1260, 1257, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 143, 1, 0, 0, 0, 1262, 1263, 3, 172, 86, 0, 1263, 1264, 5, 125, 0, 0, 1264, 1265, 5, 77, 0, 0, 1265, 1266, 5, 125, 0, 0, 1266, 1267, 3, 98, 49, 0, 1267, 145, 1, 0, 0, 0, 1268, 1270, 3, 148, 74, 0, 1269, 1271, 5, 125, 0, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1274, 5, 6, 0, 0, 1273, 1275, 5, 125, 0, 0, 1274, 1273, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1280, 1, 0, 0, 0, 1276, 1278, 5, 63, 0, 0, 1277, 1279, 5, 125, 0, 0, 1278, 1277, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1281, 1, 0, 0, 0, 1280, 1276, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1299, 1, 0, 0, 0, 1282, 1284, 3, 98, 49, 0, 1283, 1285, 5, 125, 0, 0, 1284, 1283, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1296, 1, 0, 0, 0, 1286, 1288, 5, 2, 0, 0, 1287, 1289, 5, 125, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1292, 3, 98, 49, 0, 1291, 1293, 5, 125, 0, 0, 1292, 1291, 1, 0, 0, 0, 1292, 1293, 1, 0, 0, 0, 1293, 1295, 1, 0, 0, 0, 1294, 1286, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1300, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1282, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 1, 0, 0, 0, 1301, 1302, 5, 7, 0, 0, 1302, 147, 1, 0, 0, 0, 1303, 1304, 3, 160, 80, 0, 1304, 1305, 3, 192, 96, 0, 1305, 149, 1, 0, 0, 0, 1306, 1308, 5, 89, 0, 0, 1307, 1309, 5, 125, 0, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 5, 23, 0, 0, 1311, 1313, 5, 125, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1322, 1, 0, 0, 0, 1314, 1323, 3, 6, 3, 0, 1315, 1320, 3, 68, 34, 0, 1316, 1318, 5, 125, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1321, 3, 66, 33, 0, 1320, 1317, 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1314, 1, 0, 0, 0, 1322, 1315, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1326, 5, 125, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 5, 24, 0, 0, 1328, 151, 1, 0, 0, 0, 1329, 1331, 3, 158, 79, 0, 1330, 1332, 5, 125, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1335, 5, 6, 0, 0, 1334, 1336, 5, 125, 0, 0, 1335, 1334, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1354, 1, 0, 0, 0, 1337, 1339, 3, 98, 49, 0, 1338, 1340, 5, 125, 0, 0, 1339, 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1351, 1, 0, 0, 0, 1341, 1343, 5, 2, 0, 0, 1342, 1344, 5, 125, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 3, 98, 49, 0, 1346, 1348, 5, 125, 0, 0, 1347, 1346, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1350, 1, 0, 0, 0, 1349, 1341, 1, 0, 0, 0, 1350, 1353, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1355, 1, 0, 0, 0, 1353, 1351, 1, 0, 0, 0, 1354, 1337, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 5, 7, 0, 0, 1357, 153, 1, 0, 0, 0, 1358, 1359, 3, 158, 79, 0, 1359, 155, 1, 0, 0, 0, 1360, 1361, 3, 192, 96, 0, 1361, 157, 1, 0, 0, 0, 1362, 1363, 3, 160, 80, 0, 1363, 1364, 3, 192, 96, 0, 1364, 159, 1, 0, 0, 0, 1365, 1366, 3, 192, 96, 0, 1366, 1367, 5, 25, 0, 0, 1367, 1369, 1, 0, 0, 0, 1368, 1365, 1, 0, 0, 0, 1369, 1372, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 161, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1375, 5, 8, 0, 0, 1374, 1376, 5, 125, 0, 0, 1375, 1374, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1386, 3, 142, 71, 0, 1378, 1380, 5, 125, 0, 0, 1379, 1378, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, 5, 11, 0, 0, 1382, 1384, 5, 125, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 3, 98, 49, 0, 1386, 1379, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1389, 1, 0, 0, 0, 1388, 1390, 5, 125, 0, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1392, 5, 9, 0, 0, 1392, 163, 1, 0, 0, 0, 1393, 1395, 5, 8, 0, 0, 1394, 1396, 5, 125, 0, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1405, 1, 0, 0, 0, 1397, 1399, 3, 172, 86, 0, 1398, 1400, 5, 125, 0, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1403, 5, 3, 0, 0, 1402, 1404, 5, 125, 0, 0, 1403, 1402, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1406, 1, 0, 0, 0, 1405, 1397, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1407, 1, 0, 0, 0, 1407, 1409, 3, 140, 70, 0, 1408, 1410, 5, 125, 0, 0, 1409, 1408, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1415, 1, 0, 0, 0, 1411, 1413, 3, 66, 33, 0, 1412, 1414, 5, 125, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1416, 1, 0, 0, 0, 1415, 1411, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1419, 5, 11, 0, 0, 1418, 1420, 5, 125, 0, 0, 1419, 1418, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 3, 98, 49, 0, 1422, 1424, 5, 125, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 5, 9, 0, 0, 1426, 165, 1, 0, 0, 0, 1427, 1429, 5, 25, 0, 0, 1428, 1430, 5, 125, 0, 0, 1429, 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1432, 3, 182, 91, 0, 1432, 167, 1, 0, 0, 0, 1433, 1438, 5, 90, 0, 0, 1434, 1436, 5, 125, 0, 0, 1435, 1434, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1439, 3, 170, 85, 0, 1438, 1435, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1456, 1, 0, 0, 0, 1442, 1444, 5, 90, 0, 0, 1443, 1445, 5, 125, 0, 0, 1444, 1443, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1451, 3, 98, 49, 0, 1447, 1449, 5, 125, 0, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 3, 170, 85, 0, 1451, 1448, 1, 0, 0, 0, 1452, 1453, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1456, 1, 0, 0, 0, 1455, 1433, 1, 0, 0, 0, 1455, 1442, 1, 0, 0, 0, 1456, 1465, 1, 0, 0, 0, 1457, 1459, 5, 125, 0, 0, 1458, 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1462, 5, 91, 0, 0, 1461, 1463, 5, 125, 0, 0, 1462, 1461, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1466, 3, 98, 49, 0, 1465, 1458, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1468, 1, 0, 0, 0, 1467, 1469, 5, 125, 0, 0, 1468, 1467, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 5, 92, 0, 0, 1471, 169, 1, 0, 0, 0, 1472, 1474, 5, 93, 0, 0, 1473, 1475, 5, 125, 0, 0, 1474, 1473, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1478, 3, 98, 49, 0, 1477, 1479, 5, 125, 0, 0, 1478, 1477, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 5, 94, 0, 0, 1481, 1483, 5, 125, 0, 0, 1482, 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1485, 3, 98, 49, 0, 1485, 171, 1, 0, 0, 0, 1486, 1487, 3, 192, 96, 0, 1487, 173, 1, 0, 0, 0, 1488, 1491, 3, 186, 93, 0, 1489, 1491, 3, 184, 92, 0, 1490, 1488, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 175, 1, 0, 0, 0, 1492, 1494, 5, 23, 0, 0, 1493, 1495, 5, 125, 0, 0, 1494, 1493, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1529, 1, 0, 0, 0, 1496, 1498, 3, 182, 91, 0, 1497, 1499, 5, 125, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 5, 10, 0, 0, 1501, 1503, 5, 125, 0, 0, 1502, 1501, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 3, 98, 49, 0, 1505, 1507, 5, 125, 0, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1526, 1, 0, 0, 0, 1508, 1510, 5, 2, 0, 0, 1509, 1511, 5, 125, 0, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 3, 182, 91, 0, 1513, 1515, 5, 125, 0, 0, 1514, 1513, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1518, 5, 10, 0, 0, 1517, 1519, 5, 125, 0, 0, 1518, 1517, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 3, 98, 49, 0, 1521, 1523, 5, 125, 0, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1508, 1, 0, 0, 0, 1525, 1528, 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1530, 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1529, 1496, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 177, 1, 0, 0, 0, 1533, 1536, 5, 26, 0, 0, 1534, 1537, 3, 192, 96, 0, 1535, 1537, 5, 98, 0, 0, 1536, 1534, 1, 0, 0, 0, 1536, 1535, 1, 0, 0, 0, 1537, 179, 1, 0, 0, 0, 1538, 1543, 3, 128, 64, 0, 1539, 1541, 5, 125, 0, 0, 1540, 1539, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1544, 3, 166, 83, 0, 1543, 1540, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 181, 1, 0, 0, 0, 1547, 1548, 3, 188, 94, 0, 1548, 183, 1, 0, 0, 0, 1549, 1550, 7, 3, 0, 0, 1550, 185, 1, 0, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 187, 1, 0, 0, 0, 1553, 1556, 3, 192, 96, 0, 1554, 1556, 3, 190, 95, 0, 1555, 1553, 1, 0, 0, 0, 1555, 1554, 1, 0, 0, 0, 1556, 189, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, 191, 1, 0, 0, 0, 1559, 1560, 7, 6, 0, 0, 1560, 193, 1, 0, 0, 0, 1561, 1562, 7, 7, 0, 0, 1562, 195, 1, 0, 0, 0, 1563, 1564, 7, 8, 0, 0, 1564, 197, 1, 0, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 199, 1, 0, 0, 0, 290, 201, 205, 208, 211, 219, 223, 228, 235, 240, 243, 247, 251, 255, 261, 265, 270, 275, 279, 282, 284, 288, 292, 297, 301, 306, 310, 319, 324, 328, 332, 336, 339, 343, 353, 360, 373, 377, 383, 387, 391, 396, 401, 405, 411, 415, 421, 425, 431, 435, 439, 443, 447, 451, 456, 463, 467, 472, 479, 485, 490, 496, 499, 505, 507, 511, 515, 520, 524, 527, 534, 541, 544, 550, 553, 559, 563, 567, 571, 575, 580, 585, 589, 594, 597, 606, 615, 620, 633, 636, 644, 648, 653, 658, 662, 667, 673, 678, 685, 689, 693, 695, 699, 701, 705, 707, 713, 719, 723, 726, 729, 733, 739, 743, 746, 749, 755, 758, 761, 765, 771, 774, 777, 781, 785, 789, 791, 795, 797, 800, 804, 806, 812, 816, 820, 824, 827, 832, 837, 842, 847, 853, 857, 859, 863, 867, 869, 871, 886, 896, 906, 911, 915, 922, 927, 932, 936, 940, 944, 947, 949, 954, 958, 962, 966, 970, 974, 977, 979, 984, 988, 993, 998, 1002, 1011, 1013, 1019, 1023, 1030, 1034, 1038, 1041, 1053, 1056, 1070, 1074, 1079, 1083, 1086, 1093, 1097, 1101, 1108, 1112, 1116, 1122, 1126, 1130, 1136, 1140, 1144, 1150, 1154, 1158, 1167, 1175, 1181, 1185, 1189, 1193, 1197, 1200, 1206, 1211, 1216, 1221, 1226, 1231, 1234, 1238, 1242, 1248, 1253, 1257, 1260, 1270, 1274, 1278, 1280, 1284, 1288, 1292, 1296, 1299, 1308, 1312, 1317, 1320, 1322, 1325, 1331, 1335, 1339, 1343, 1347, 1351, 1354, 1370, 1375, 1379, 1383, 1386, 1389, 1395, 1399, 1403, 1405, 1409, 1413, 1415, 1419, 1423, 1429, 1435, 1440, 1444, 1448, 1453, 1455, 1458, 1462, 1465, 1468, 1474, 1478, 1482, 1490, 1494, 1498, 1502, 1506, 1510, 1514, 1518, 1522, 1526, 1529, 1536, 1540, 1545, 1555] \ No newline at end of file diff --git a/endpoints/cypher/parser/Cypher.tokens b/endpoints/cypher/parser/Cypher.tokens deleted file mode 100644 index d596da10..00000000 --- a/endpoints/cypher/parser/Cypher.tokens +++ /dev/null @@ -1,173 +0,0 @@ -T__0=1 -T__1=2 -T__2=3 -T__3=4 -T__4=5 -T__5=6 -T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -UNION=46 -ALL=47 -OPTIONAL=48 -MATCH=49 -UNWIND=50 -AS=51 -MERGE=52 -ON=53 -CREATE=54 -SET=55 -DETACH=56 -DELETE=57 -REMOVE=58 -CALL=59 -YIELD=60 -WITH=61 -RETURN=62 -DISTINCT=63 -ORDER=64 -BY=65 -L_SKIP=66 -LIMIT=67 -ASCENDING=68 -ASC=69 -DESCENDING=70 -DESC=71 -WHERE=72 -OR=73 -XOR=74 -AND=75 -NOT=76 -IN=77 -STARTS=78 -ENDS=79 -CONTAINS=80 -IS=81 -NULL=82 -COUNT=83 -ANY=84 -NONE=85 -SINGLE=86 -TRUE=87 -FALSE=88 -EXISTS=89 -CASE=90 -ELSE=91 -END=92 -WHEN=93 -THEN=94 -StringLiteral=95 -EscapedChar=96 -HexInteger=97 -DecimalInteger=98 -OctalInteger=99 -HexLetter=100 -HexDigit=101 -Digit=102 -NonZeroDigit=103 -NonZeroOctDigit=104 -OctDigit=105 -ZeroDigit=106 -ExponentDecimalReal=107 -RegularDecimalReal=108 -CONSTRAINT=109 -DO=110 -FOR=111 -REQUIRE=112 -UNIQUE=113 -MANDATORY=114 -SCALAR=115 -OF=116 -ADD=117 -DROP=118 -FILTER=119 -EXTRACT=120 -UnescapedSymbolicName=121 -IdentifierStart=122 -IdentifierPart=123 -EscapedSymbolicName=124 -SP=125 -WHITESPACE=126 -Comment=127 -';'=1 -','=2 -'='=3 -'+='=4 -'*'=5 -'('=6 -')'=7 -'['=8 -']'=9 -':'=10 -'|'=11 -'..'=12 -'+'=13 -'-'=14 -'/'=15 -'%'=16 -'^'=17 -'<>'=18 -'<'=19 -'>'=20 -'<='=21 -'>='=22 -'{'=23 -'}'=24 -'.'=25 -'$'=26 -'\u27e8'=27 -'\u3008'=28 -'\ufe64'=29 -'\uff1c'=30 -'\u27e9'=31 -'\u3009'=32 -'\ufe65'=33 -'\uff1e'=34 -'\u00ad'=35 -'\u2010'=36 -'\u2011'=37 -'\u2012'=38 -'\u2013'=39 -'\u2014'=40 -'\u2015'=41 -'\u2212'=42 -'\ufe58'=43 -'\ufe63'=44 -'\uff0d'=45 -'0'=106 diff --git a/endpoints/cypher/parser/CypherLexer.interp b/endpoints/cypher/parser/CypherLexer.interp deleted file mode 100644 index b3028317..00000000 --- a/endpoints/cypher/parser/CypherLexer.interp +++ /dev/null @@ -1,418 +0,0 @@ -token literal names: -null -';' -',' -'=' -'+=' -'*' -'(' -')' -'[' -']' -':' -'|' -'..' -'+' -'-' -'/' -'%' -'^' -'<>' -'<' -'>' -'<=' -'>=' -'{' -'}' -'.' -'$' -'\u27e8' -'\u3008' -'\ufe64' -'\uff1c' -'\u27e9' -'\u3009' -'\ufe65' -'\uff1e' -'\u00ad' -'\u2010' -'\u2011' -'\u2012' -'\u2013' -'\u2014' -'\u2015' -'\u2212' -'\ufe58' -'\ufe63' -'\uff0d' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'0' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -UNION -ALL -OPTIONAL -MATCH -UNWIND -AS -MERGE -ON -CREATE -SET -DETACH -DELETE -REMOVE -CALL -YIELD -WITH -RETURN -DISTINCT -ORDER -BY -L_SKIP -LIMIT -ASCENDING -ASC -DESCENDING -DESC -WHERE -OR -XOR -AND -NOT -IN -STARTS -ENDS -CONTAINS -IS -NULL -COUNT -ANY -NONE -SINGLE -TRUE -FALSE -EXISTS -CASE -ELSE -END -WHEN -THEN -StringLiteral -EscapedChar -HexInteger -DecimalInteger -OctalInteger -HexLetter -HexDigit -Digit -NonZeroDigit -NonZeroOctDigit -OctDigit -ZeroDigit -ExponentDecimalReal -RegularDecimalReal -CONSTRAINT -DO -FOR -REQUIRE -UNIQUE -MANDATORY -SCALAR -OF -ADD -DROP -FILTER -EXTRACT -UnescapedSymbolicName -IdentifierStart -IdentifierPart -EscapedSymbolicName -SP -WHITESPACE -Comment - -rule names: -T__0 -T__1 -T__2 -T__3 -T__4 -T__5 -T__6 -T__7 -T__8 -T__9 -T__10 -T__11 -T__12 -T__13 -T__14 -T__15 -T__16 -T__17 -T__18 -T__19 -T__20 -T__21 -T__22 -T__23 -T__24 -T__25 -T__26 -T__27 -T__28 -T__29 -T__30 -T__31 -T__32 -T__33 -T__34 -T__35 -T__36 -T__37 -T__38 -T__39 -T__40 -T__41 -T__42 -T__43 -T__44 -UNION -ALL -OPTIONAL -MATCH -UNWIND -AS -MERGE -ON -CREATE -SET -DETACH -DELETE -REMOVE -CALL -YIELD -WITH -RETURN -DISTINCT -ORDER -BY -L_SKIP -LIMIT -ASCENDING -ASC -DESCENDING -DESC -WHERE -OR -XOR -AND -NOT -IN -STARTS -ENDS -CONTAINS -IS -NULL -COUNT -ANY -NONE -SINGLE -TRUE -FALSE -EXISTS -CASE -ELSE -END -WHEN -THEN -StringLiteral -EscapedChar -HexInteger -DecimalInteger -OctalInteger -HexLetter -HexDigit -Digit -NonZeroDigit -NonZeroOctDigit -OctDigit -ZeroDigit -ExponentDecimalReal -RegularDecimalReal -CONSTRAINT -DO -FOR -REQUIRE -UNIQUE -MANDATORY -SCALAR -OF -ADD -DROP -FILTER -EXTRACT -UnescapedSymbolicName -IdentifierStart -IdentifierPart -EscapedSymbolicName -SP -WHITESPACE -Comment -FF -EscapedSymbolicName_0 -RS -ID_Continue -Comment_1 -StringLiteral_1 -Comment_3 -Comment_2 -GS -FS -CR -Sc -SPACE -Pc -TAB -StringLiteral_0 -LF -VT -US -ID_Start - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 127, 991, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 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, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 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, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 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, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 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, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 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, 90, 1, 90, 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, 94, 1, 94, 1, 94, 5, 94, 669, 8, 94, 10, 94, 12, 94, 672, 9, 94, 1, 94, 1, 94, 1, 94, 1, 94, 5, 94, 678, 8, 94, 10, 94, 12, 94, 681, 9, 94, 1, 94, 3, 94, 684, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 704, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 4, 96, 710, 8, 96, 11, 96, 12, 96, 711, 1, 97, 1, 97, 1, 97, 5, 97, 717, 8, 97, 10, 97, 12, 97, 720, 9, 97, 3, 97, 722, 8, 97, 1, 98, 1, 98, 4, 98, 726, 8, 98, 11, 98, 12, 98, 727, 1, 99, 3, 99, 731, 8, 99, 1, 100, 1, 100, 3, 100, 735, 8, 100, 1, 101, 1, 101, 3, 101, 739, 8, 101, 1, 102, 1, 102, 3, 102, 743, 8, 102, 1, 103, 1, 103, 1, 104, 1, 104, 3, 104, 749, 8, 104, 1, 105, 1, 105, 1, 106, 4, 106, 754, 8, 106, 11, 106, 12, 106, 755, 1, 106, 4, 106, 759, 8, 106, 11, 106, 12, 106, 760, 1, 106, 1, 106, 4, 106, 765, 8, 106, 11, 106, 12, 106, 766, 1, 106, 1, 106, 4, 106, 771, 8, 106, 11, 106, 12, 106, 772, 3, 106, 775, 8, 106, 1, 106, 1, 106, 3, 106, 779, 8, 106, 1, 106, 4, 106, 782, 8, 106, 11, 106, 12, 106, 783, 1, 107, 5, 107, 787, 8, 107, 10, 107, 12, 107, 790, 9, 107, 1, 107, 1, 107, 4, 107, 794, 8, 107, 11, 107, 12, 107, 795, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 5, 120, 877, 8, 120, 10, 120, 12, 120, 880, 9, 120, 1, 121, 1, 121, 3, 121, 884, 8, 121, 1, 122, 1, 122, 3, 122, 888, 8, 122, 1, 123, 1, 123, 5, 123, 892, 8, 123, 10, 123, 12, 123, 895, 9, 123, 1, 123, 4, 123, 898, 8, 123, 11, 123, 12, 123, 899, 1, 124, 4, 124, 903, 8, 124, 11, 124, 12, 124, 904, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 3, 125, 919, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 927, 8, 126, 10, 126, 12, 126, 930, 9, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 938, 8, 126, 10, 126, 12, 126, 941, 9, 126, 1, 126, 3, 126, 944, 8, 126, 1, 126, 1, 126, 3, 126, 948, 8, 126, 3, 126, 950, 8, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 0, 0, 147, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 0, 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, 0, 291, 0, 293, 0, 1, 0, 47, 2, 0, 85, 85, 117, 117, 2, 0, 78, 78, 110, 110, 2, 0, 73, 73, 105, 105, 2, 0, 79, 79, 111, 111, 2, 0, 65, 65, 97, 97, 2, 0, 76, 76, 108, 108, 2, 0, 80, 80, 112, 112, 2, 0, 84, 84, 116, 116, 2, 0, 77, 77, 109, 109, 2, 0, 67, 67, 99, 99, 2, 0, 72, 72, 104, 104, 2, 0, 87, 87, 119, 119, 2, 0, 68, 68, 100, 100, 2, 0, 83, 83, 115, 115, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 86, 86, 118, 118, 2, 0, 89, 89, 121, 121, 2, 0, 66, 66, 98, 98, 2, 0, 75, 75, 107, 107, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 13, 0, 34, 34, 39, 39, 66, 66, 70, 70, 78, 78, 82, 82, 84, 84, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 2, 0, 65, 70, 97, 102, 2, 0, 81, 81, 113, 113, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, 1, 0, 12, 12, 1, 0, 96, 96, 1, 0, 30, 30, 730, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2208, 2228, 2230, 2247, 2259, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6848, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7673, 7675, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 40956, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42943, 42946, 42954, 42997, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69456, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69743, 69759, 69818, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70206, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72384, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110592, 110878, 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123584, 123641, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173789, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 917760, 917999, 1, 0, 42, 42, 2, 0, 39, 39, 92, 92, 2, 0, 10, 10, 13, 13, 1, 0, 47, 47, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8383, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, 9, 9, 2, 0, 34, 34, 92, 92, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 622, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2208, 2228, 2230, 2247, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 40956, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42943, 42946, 42954, 42997, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69552, 69572, 69600, 69622, 69635, 69687, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72384, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92766, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110592, 110878, 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 123136, 123180, 123191, 123197, 123214, 123214, 123584, 123627, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173789, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 1018, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 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, 1, 295, 1, 0, 0, 0, 3, 297, 1, 0, 0, 0, 5, 299, 1, 0, 0, 0, 7, 301, 1, 0, 0, 0, 9, 304, 1, 0, 0, 0, 11, 306, 1, 0, 0, 0, 13, 308, 1, 0, 0, 0, 15, 310, 1, 0, 0, 0, 17, 312, 1, 0, 0, 0, 19, 314, 1, 0, 0, 0, 21, 316, 1, 0, 0, 0, 23, 318, 1, 0, 0, 0, 25, 321, 1, 0, 0, 0, 27, 323, 1, 0, 0, 0, 29, 325, 1, 0, 0, 0, 31, 327, 1, 0, 0, 0, 33, 329, 1, 0, 0, 0, 35, 331, 1, 0, 0, 0, 37, 334, 1, 0, 0, 0, 39, 336, 1, 0, 0, 0, 41, 338, 1, 0, 0, 0, 43, 341, 1, 0, 0, 0, 45, 344, 1, 0, 0, 0, 47, 346, 1, 0, 0, 0, 49, 348, 1, 0, 0, 0, 51, 350, 1, 0, 0, 0, 53, 352, 1, 0, 0, 0, 55, 354, 1, 0, 0, 0, 57, 356, 1, 0, 0, 0, 59, 358, 1, 0, 0, 0, 61, 360, 1, 0, 0, 0, 63, 362, 1, 0, 0, 0, 65, 364, 1, 0, 0, 0, 67, 366, 1, 0, 0, 0, 69, 368, 1, 0, 0, 0, 71, 370, 1, 0, 0, 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 376, 1, 0, 0, 0, 79, 378, 1, 0, 0, 0, 81, 380, 1, 0, 0, 0, 83, 382, 1, 0, 0, 0, 85, 384, 1, 0, 0, 0, 87, 386, 1, 0, 0, 0, 89, 388, 1, 0, 0, 0, 91, 390, 1, 0, 0, 0, 93, 396, 1, 0, 0, 0, 95, 400, 1, 0, 0, 0, 97, 409, 1, 0, 0, 0, 99, 415, 1, 0, 0, 0, 101, 422, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 431, 1, 0, 0, 0, 107, 434, 1, 0, 0, 0, 109, 441, 1, 0, 0, 0, 111, 445, 1, 0, 0, 0, 113, 452, 1, 0, 0, 0, 115, 459, 1, 0, 0, 0, 117, 466, 1, 0, 0, 0, 119, 471, 1, 0, 0, 0, 121, 477, 1, 0, 0, 0, 123, 482, 1, 0, 0, 0, 125, 489, 1, 0, 0, 0, 127, 498, 1, 0, 0, 0, 129, 504, 1, 0, 0, 0, 131, 507, 1, 0, 0, 0, 133, 512, 1, 0, 0, 0, 135, 518, 1, 0, 0, 0, 137, 528, 1, 0, 0, 0, 139, 532, 1, 0, 0, 0, 141, 543, 1, 0, 0, 0, 143, 548, 1, 0, 0, 0, 145, 554, 1, 0, 0, 0, 147, 557, 1, 0, 0, 0, 149, 561, 1, 0, 0, 0, 151, 565, 1, 0, 0, 0, 153, 569, 1, 0, 0, 0, 155, 572, 1, 0, 0, 0, 157, 579, 1, 0, 0, 0, 159, 584, 1, 0, 0, 0, 161, 593, 1, 0, 0, 0, 163, 596, 1, 0, 0, 0, 165, 601, 1, 0, 0, 0, 167, 607, 1, 0, 0, 0, 169, 611, 1, 0, 0, 0, 171, 616, 1, 0, 0, 0, 173, 623, 1, 0, 0, 0, 175, 628, 1, 0, 0, 0, 177, 634, 1, 0, 0, 0, 179, 641, 1, 0, 0, 0, 181, 646, 1, 0, 0, 0, 183, 651, 1, 0, 0, 0, 185, 655, 1, 0, 0, 0, 187, 660, 1, 0, 0, 0, 189, 683, 1, 0, 0, 0, 191, 685, 1, 0, 0, 0, 193, 705, 1, 0, 0, 0, 195, 721, 1, 0, 0, 0, 197, 723, 1, 0, 0, 0, 199, 730, 1, 0, 0, 0, 201, 734, 1, 0, 0, 0, 203, 738, 1, 0, 0, 0, 205, 742, 1, 0, 0, 0, 207, 744, 1, 0, 0, 0, 209, 748, 1, 0, 0, 0, 211, 750, 1, 0, 0, 0, 213, 774, 1, 0, 0, 0, 215, 788, 1, 0, 0, 0, 217, 797, 1, 0, 0, 0, 219, 808, 1, 0, 0, 0, 221, 811, 1, 0, 0, 0, 223, 815, 1, 0, 0, 0, 225, 823, 1, 0, 0, 0, 227, 830, 1, 0, 0, 0, 229, 840, 1, 0, 0, 0, 231, 847, 1, 0, 0, 0, 233, 850, 1, 0, 0, 0, 235, 854, 1, 0, 0, 0, 237, 859, 1, 0, 0, 0, 239, 866, 1, 0, 0, 0, 241, 874, 1, 0, 0, 0, 243, 883, 1, 0, 0, 0, 245, 887, 1, 0, 0, 0, 247, 897, 1, 0, 0, 0, 249, 902, 1, 0, 0, 0, 251, 918, 1, 0, 0, 0, 253, 949, 1, 0, 0, 0, 255, 951, 1, 0, 0, 0, 257, 953, 1, 0, 0, 0, 259, 955, 1, 0, 0, 0, 261, 957, 1, 0, 0, 0, 263, 959, 1, 0, 0, 0, 265, 961, 1, 0, 0, 0, 267, 963, 1, 0, 0, 0, 269, 965, 1, 0, 0, 0, 271, 967, 1, 0, 0, 0, 273, 969, 1, 0, 0, 0, 275, 971, 1, 0, 0, 0, 277, 973, 1, 0, 0, 0, 279, 975, 1, 0, 0, 0, 281, 977, 1, 0, 0, 0, 283, 979, 1, 0, 0, 0, 285, 981, 1, 0, 0, 0, 287, 983, 1, 0, 0, 0, 289, 985, 1, 0, 0, 0, 291, 987, 1, 0, 0, 0, 293, 989, 1, 0, 0, 0, 295, 296, 5, 59, 0, 0, 296, 2, 1, 0, 0, 0, 297, 298, 5, 44, 0, 0, 298, 4, 1, 0, 0, 0, 299, 300, 5, 61, 0, 0, 300, 6, 1, 0, 0, 0, 301, 302, 5, 43, 0, 0, 302, 303, 5, 61, 0, 0, 303, 8, 1, 0, 0, 0, 304, 305, 5, 42, 0, 0, 305, 10, 1, 0, 0, 0, 306, 307, 5, 40, 0, 0, 307, 12, 1, 0, 0, 0, 308, 309, 5, 41, 0, 0, 309, 14, 1, 0, 0, 0, 310, 311, 5, 91, 0, 0, 311, 16, 1, 0, 0, 0, 312, 313, 5, 93, 0, 0, 313, 18, 1, 0, 0, 0, 314, 315, 5, 58, 0, 0, 315, 20, 1, 0, 0, 0, 316, 317, 5, 124, 0, 0, 317, 22, 1, 0, 0, 0, 318, 319, 5, 46, 0, 0, 319, 320, 5, 46, 0, 0, 320, 24, 1, 0, 0, 0, 321, 322, 5, 43, 0, 0, 322, 26, 1, 0, 0, 0, 323, 324, 5, 45, 0, 0, 324, 28, 1, 0, 0, 0, 325, 326, 5, 47, 0, 0, 326, 30, 1, 0, 0, 0, 327, 328, 5, 37, 0, 0, 328, 32, 1, 0, 0, 0, 329, 330, 5, 94, 0, 0, 330, 34, 1, 0, 0, 0, 331, 332, 5, 60, 0, 0, 332, 333, 5, 62, 0, 0, 333, 36, 1, 0, 0, 0, 334, 335, 5, 60, 0, 0, 335, 38, 1, 0, 0, 0, 336, 337, 5, 62, 0, 0, 337, 40, 1, 0, 0, 0, 338, 339, 5, 60, 0, 0, 339, 340, 5, 61, 0, 0, 340, 42, 1, 0, 0, 0, 341, 342, 5, 62, 0, 0, 342, 343, 5, 61, 0, 0, 343, 44, 1, 0, 0, 0, 344, 345, 5, 123, 0, 0, 345, 46, 1, 0, 0, 0, 346, 347, 5, 125, 0, 0, 347, 48, 1, 0, 0, 0, 348, 349, 5, 46, 0, 0, 349, 50, 1, 0, 0, 0, 350, 351, 5, 36, 0, 0, 351, 52, 1, 0, 0, 0, 352, 353, 5, 10216, 0, 0, 353, 54, 1, 0, 0, 0, 354, 355, 5, 12296, 0, 0, 355, 56, 1, 0, 0, 0, 356, 357, 5, 65124, 0, 0, 357, 58, 1, 0, 0, 0, 358, 359, 5, 65308, 0, 0, 359, 60, 1, 0, 0, 0, 360, 361, 5, 10217, 0, 0, 361, 62, 1, 0, 0, 0, 362, 363, 5, 12297, 0, 0, 363, 64, 1, 0, 0, 0, 364, 365, 5, 65125, 0, 0, 365, 66, 1, 0, 0, 0, 366, 367, 5, 65310, 0, 0, 367, 68, 1, 0, 0, 0, 368, 369, 5, 173, 0, 0, 369, 70, 1, 0, 0, 0, 370, 371, 5, 8208, 0, 0, 371, 72, 1, 0, 0, 0, 372, 373, 5, 8209, 0, 0, 373, 74, 1, 0, 0, 0, 374, 375, 5, 8210, 0, 0, 375, 76, 1, 0, 0, 0, 376, 377, 5, 8211, 0, 0, 377, 78, 1, 0, 0, 0, 378, 379, 5, 8212, 0, 0, 379, 80, 1, 0, 0, 0, 380, 381, 5, 8213, 0, 0, 381, 82, 1, 0, 0, 0, 382, 383, 5, 8722, 0, 0, 383, 84, 1, 0, 0, 0, 384, 385, 5, 65112, 0, 0, 385, 86, 1, 0, 0, 0, 386, 387, 5, 65123, 0, 0, 387, 88, 1, 0, 0, 0, 388, 389, 5, 65293, 0, 0, 389, 90, 1, 0, 0, 0, 390, 391, 7, 0, 0, 0, 391, 392, 7, 1, 0, 0, 392, 393, 7, 2, 0, 0, 393, 394, 7, 3, 0, 0, 394, 395, 7, 1, 0, 0, 395, 92, 1, 0, 0, 0, 396, 397, 7, 4, 0, 0, 397, 398, 7, 5, 0, 0, 398, 399, 7, 5, 0, 0, 399, 94, 1, 0, 0, 0, 400, 401, 7, 3, 0, 0, 401, 402, 7, 6, 0, 0, 402, 403, 7, 7, 0, 0, 403, 404, 7, 2, 0, 0, 404, 405, 7, 3, 0, 0, 405, 406, 7, 1, 0, 0, 406, 407, 7, 4, 0, 0, 407, 408, 7, 5, 0, 0, 408, 96, 1, 0, 0, 0, 409, 410, 7, 8, 0, 0, 410, 411, 7, 4, 0, 0, 411, 412, 7, 7, 0, 0, 412, 413, 7, 9, 0, 0, 413, 414, 7, 10, 0, 0, 414, 98, 1, 0, 0, 0, 415, 416, 7, 0, 0, 0, 416, 417, 7, 1, 0, 0, 417, 418, 7, 11, 0, 0, 418, 419, 7, 2, 0, 0, 419, 420, 7, 1, 0, 0, 420, 421, 7, 12, 0, 0, 421, 100, 1, 0, 0, 0, 422, 423, 7, 4, 0, 0, 423, 424, 7, 13, 0, 0, 424, 102, 1, 0, 0, 0, 425, 426, 7, 8, 0, 0, 426, 427, 7, 14, 0, 0, 427, 428, 7, 15, 0, 0, 428, 429, 7, 16, 0, 0, 429, 430, 7, 14, 0, 0, 430, 104, 1, 0, 0, 0, 431, 432, 7, 3, 0, 0, 432, 433, 7, 1, 0, 0, 433, 106, 1, 0, 0, 0, 434, 435, 7, 9, 0, 0, 435, 436, 7, 15, 0, 0, 436, 437, 7, 14, 0, 0, 437, 438, 7, 4, 0, 0, 438, 439, 7, 7, 0, 0, 439, 440, 7, 14, 0, 0, 440, 108, 1, 0, 0, 0, 441, 442, 7, 13, 0, 0, 442, 443, 7, 14, 0, 0, 443, 444, 7, 7, 0, 0, 444, 110, 1, 0, 0, 0, 445, 446, 7, 12, 0, 0, 446, 447, 7, 14, 0, 0, 447, 448, 7, 7, 0, 0, 448, 449, 7, 4, 0, 0, 449, 450, 7, 9, 0, 0, 450, 451, 7, 10, 0, 0, 451, 112, 1, 0, 0, 0, 452, 453, 7, 12, 0, 0, 453, 454, 7, 14, 0, 0, 454, 455, 7, 5, 0, 0, 455, 456, 7, 14, 0, 0, 456, 457, 7, 7, 0, 0, 457, 458, 7, 14, 0, 0, 458, 114, 1, 0, 0, 0, 459, 460, 7, 15, 0, 0, 460, 461, 7, 14, 0, 0, 461, 462, 7, 8, 0, 0, 462, 463, 7, 3, 0, 0, 463, 464, 7, 17, 0, 0, 464, 465, 7, 14, 0, 0, 465, 116, 1, 0, 0, 0, 466, 467, 7, 9, 0, 0, 467, 468, 7, 4, 0, 0, 468, 469, 7, 5, 0, 0, 469, 470, 7, 5, 0, 0, 470, 118, 1, 0, 0, 0, 471, 472, 7, 18, 0, 0, 472, 473, 7, 2, 0, 0, 473, 474, 7, 14, 0, 0, 474, 475, 7, 5, 0, 0, 475, 476, 7, 12, 0, 0, 476, 120, 1, 0, 0, 0, 477, 478, 7, 11, 0, 0, 478, 479, 7, 2, 0, 0, 479, 480, 7, 7, 0, 0, 480, 481, 7, 10, 0, 0, 481, 122, 1, 0, 0, 0, 482, 483, 7, 15, 0, 0, 483, 484, 7, 14, 0, 0, 484, 485, 7, 7, 0, 0, 485, 486, 7, 0, 0, 0, 486, 487, 7, 15, 0, 0, 487, 488, 7, 1, 0, 0, 488, 124, 1, 0, 0, 0, 489, 490, 7, 12, 0, 0, 490, 491, 7, 2, 0, 0, 491, 492, 7, 13, 0, 0, 492, 493, 7, 7, 0, 0, 493, 494, 7, 2, 0, 0, 494, 495, 7, 1, 0, 0, 495, 496, 7, 9, 0, 0, 496, 497, 7, 7, 0, 0, 497, 126, 1, 0, 0, 0, 498, 499, 7, 3, 0, 0, 499, 500, 7, 15, 0, 0, 500, 501, 7, 12, 0, 0, 501, 502, 7, 14, 0, 0, 502, 503, 7, 15, 0, 0, 503, 128, 1, 0, 0, 0, 504, 505, 7, 19, 0, 0, 505, 506, 7, 18, 0, 0, 506, 130, 1, 0, 0, 0, 507, 508, 7, 13, 0, 0, 508, 509, 7, 20, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 6, 0, 0, 511, 132, 1, 0, 0, 0, 512, 513, 7, 5, 0, 0, 513, 514, 7, 2, 0, 0, 514, 515, 7, 8, 0, 0, 515, 516, 7, 2, 0, 0, 516, 517, 7, 7, 0, 0, 517, 134, 1, 0, 0, 0, 518, 519, 7, 4, 0, 0, 519, 520, 7, 13, 0, 0, 520, 521, 7, 9, 0, 0, 521, 522, 7, 14, 0, 0, 522, 523, 7, 1, 0, 0, 523, 524, 7, 12, 0, 0, 524, 525, 7, 2, 0, 0, 525, 526, 7, 1, 0, 0, 526, 527, 7, 16, 0, 0, 527, 136, 1, 0, 0, 0, 528, 529, 7, 4, 0, 0, 529, 530, 7, 13, 0, 0, 530, 531, 7, 9, 0, 0, 531, 138, 1, 0, 0, 0, 532, 533, 7, 12, 0, 0, 533, 534, 7, 14, 0, 0, 534, 535, 7, 13, 0, 0, 535, 536, 7, 9, 0, 0, 536, 537, 7, 14, 0, 0, 537, 538, 7, 1, 0, 0, 538, 539, 7, 12, 0, 0, 539, 540, 7, 2, 0, 0, 540, 541, 7, 1, 0, 0, 541, 542, 7, 16, 0, 0, 542, 140, 1, 0, 0, 0, 543, 544, 7, 12, 0, 0, 544, 545, 7, 14, 0, 0, 545, 546, 7, 13, 0, 0, 546, 547, 7, 9, 0, 0, 547, 142, 1, 0, 0, 0, 548, 549, 7, 11, 0, 0, 549, 550, 7, 10, 0, 0, 550, 551, 7, 14, 0, 0, 551, 552, 7, 15, 0, 0, 552, 553, 7, 14, 0, 0, 553, 144, 1, 0, 0, 0, 554, 555, 7, 3, 0, 0, 555, 556, 7, 15, 0, 0, 556, 146, 1, 0, 0, 0, 557, 558, 7, 21, 0, 0, 558, 559, 7, 3, 0, 0, 559, 560, 7, 15, 0, 0, 560, 148, 1, 0, 0, 0, 561, 562, 7, 4, 0, 0, 562, 563, 7, 1, 0, 0, 563, 564, 7, 12, 0, 0, 564, 150, 1, 0, 0, 0, 565, 566, 7, 1, 0, 0, 566, 567, 7, 3, 0, 0, 567, 568, 7, 7, 0, 0, 568, 152, 1, 0, 0, 0, 569, 570, 7, 2, 0, 0, 570, 571, 7, 1, 0, 0, 571, 154, 1, 0, 0, 0, 572, 573, 7, 13, 0, 0, 573, 574, 7, 7, 0, 0, 574, 575, 7, 4, 0, 0, 575, 576, 7, 15, 0, 0, 576, 577, 7, 7, 0, 0, 577, 578, 7, 13, 0, 0, 578, 156, 1, 0, 0, 0, 579, 580, 7, 14, 0, 0, 580, 581, 7, 1, 0, 0, 581, 582, 7, 12, 0, 0, 582, 583, 7, 13, 0, 0, 583, 158, 1, 0, 0, 0, 584, 585, 7, 9, 0, 0, 585, 586, 7, 3, 0, 0, 586, 587, 7, 1, 0, 0, 587, 588, 7, 7, 0, 0, 588, 589, 7, 4, 0, 0, 589, 590, 7, 2, 0, 0, 590, 591, 7, 1, 0, 0, 591, 592, 7, 13, 0, 0, 592, 160, 1, 0, 0, 0, 593, 594, 7, 2, 0, 0, 594, 595, 7, 13, 0, 0, 595, 162, 1, 0, 0, 0, 596, 597, 7, 1, 0, 0, 597, 598, 7, 0, 0, 0, 598, 599, 7, 5, 0, 0, 599, 600, 7, 5, 0, 0, 600, 164, 1, 0, 0, 0, 601, 602, 7, 9, 0, 0, 602, 603, 7, 3, 0, 0, 603, 604, 7, 0, 0, 0, 604, 605, 7, 1, 0, 0, 605, 606, 7, 7, 0, 0, 606, 166, 1, 0, 0, 0, 607, 608, 7, 4, 0, 0, 608, 609, 7, 1, 0, 0, 609, 610, 7, 18, 0, 0, 610, 168, 1, 0, 0, 0, 611, 612, 7, 1, 0, 0, 612, 613, 7, 3, 0, 0, 613, 614, 7, 1, 0, 0, 614, 615, 7, 14, 0, 0, 615, 170, 1, 0, 0, 0, 616, 617, 7, 13, 0, 0, 617, 618, 7, 2, 0, 0, 618, 619, 7, 1, 0, 0, 619, 620, 7, 16, 0, 0, 620, 621, 7, 5, 0, 0, 621, 622, 7, 14, 0, 0, 622, 172, 1, 0, 0, 0, 623, 624, 7, 7, 0, 0, 624, 625, 7, 15, 0, 0, 625, 626, 7, 0, 0, 0, 626, 627, 7, 14, 0, 0, 627, 174, 1, 0, 0, 0, 628, 629, 7, 22, 0, 0, 629, 630, 7, 4, 0, 0, 630, 631, 7, 5, 0, 0, 631, 632, 7, 13, 0, 0, 632, 633, 7, 14, 0, 0, 633, 176, 1, 0, 0, 0, 634, 635, 7, 14, 0, 0, 635, 636, 7, 21, 0, 0, 636, 637, 7, 2, 0, 0, 637, 638, 7, 13, 0, 0, 638, 639, 7, 7, 0, 0, 639, 640, 7, 13, 0, 0, 640, 178, 1, 0, 0, 0, 641, 642, 7, 9, 0, 0, 642, 643, 7, 4, 0, 0, 643, 644, 7, 13, 0, 0, 644, 645, 7, 14, 0, 0, 645, 180, 1, 0, 0, 0, 646, 647, 7, 14, 0, 0, 647, 648, 7, 5, 0, 0, 648, 649, 7, 13, 0, 0, 649, 650, 7, 14, 0, 0, 650, 182, 1, 0, 0, 0, 651, 652, 7, 14, 0, 0, 652, 653, 7, 1, 0, 0, 653, 654, 7, 12, 0, 0, 654, 184, 1, 0, 0, 0, 655, 656, 7, 11, 0, 0, 656, 657, 7, 10, 0, 0, 657, 658, 7, 14, 0, 0, 658, 659, 7, 1, 0, 0, 659, 186, 1, 0, 0, 0, 660, 661, 7, 7, 0, 0, 661, 662, 7, 10, 0, 0, 662, 663, 7, 14, 0, 0, 663, 664, 7, 1, 0, 0, 664, 188, 1, 0, 0, 0, 665, 670, 5, 34, 0, 0, 666, 669, 3, 285, 142, 0, 667, 669, 3, 191, 95, 0, 668, 666, 1, 0, 0, 0, 668, 667, 1, 0, 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, 671, 673, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 684, 5, 34, 0, 0, 674, 679, 5, 39, 0, 0, 675, 678, 3, 265, 132, 0, 676, 678, 3, 191, 95, 0, 677, 675, 1, 0, 0, 0, 677, 676, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 1, 0, 0, 0, 681, 679, 1, 0, 0, 0, 682, 684, 5, 39, 0, 0, 683, 665, 1, 0, 0, 0, 683, 674, 1, 0, 0, 0, 684, 190, 1, 0, 0, 0, 685, 703, 5, 92, 0, 0, 686, 704, 7, 23, 0, 0, 687, 688, 7, 0, 0, 0, 688, 689, 3, 201, 100, 0, 689, 690, 3, 201, 100, 0, 690, 691, 3, 201, 100, 0, 691, 692, 3, 201, 100, 0, 692, 704, 1, 0, 0, 0, 693, 694, 7, 0, 0, 0, 694, 695, 3, 201, 100, 0, 695, 696, 3, 201, 100, 0, 696, 697, 3, 201, 100, 0, 697, 698, 3, 201, 100, 0, 698, 699, 3, 201, 100, 0, 699, 700, 3, 201, 100, 0, 700, 701, 3, 201, 100, 0, 701, 702, 3, 201, 100, 0, 702, 704, 1, 0, 0, 0, 703, 686, 1, 0, 0, 0, 703, 687, 1, 0, 0, 0, 703, 693, 1, 0, 0, 0, 704, 192, 1, 0, 0, 0, 705, 706, 5, 48, 0, 0, 706, 707, 5, 120, 0, 0, 707, 709, 1, 0, 0, 0, 708, 710, 3, 201, 100, 0, 709, 708, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 194, 1, 0, 0, 0, 713, 722, 3, 211, 105, 0, 714, 718, 3, 205, 102, 0, 715, 717, 3, 203, 101, 0, 716, 715, 1, 0, 0, 0, 717, 720, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 722, 1, 0, 0, 0, 720, 718, 1, 0, 0, 0, 721, 713, 1, 0, 0, 0, 721, 714, 1, 0, 0, 0, 722, 196, 1, 0, 0, 0, 723, 725, 3, 211, 105, 0, 724, 726, 3, 209, 104, 0, 725, 724, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 198, 1, 0, 0, 0, 729, 731, 7, 24, 0, 0, 730, 729, 1, 0, 0, 0, 731, 200, 1, 0, 0, 0, 732, 735, 3, 203, 101, 0, 733, 735, 3, 199, 99, 0, 734, 732, 1, 0, 0, 0, 734, 733, 1, 0, 0, 0, 735, 202, 1, 0, 0, 0, 736, 739, 3, 211, 105, 0, 737, 739, 3, 205, 102, 0, 738, 736, 1, 0, 0, 0, 738, 737, 1, 0, 0, 0, 739, 204, 1, 0, 0, 0, 740, 743, 3, 207, 103, 0, 741, 743, 2, 56, 57, 0, 742, 740, 1, 0, 0, 0, 742, 741, 1, 0, 0, 0, 743, 206, 1, 0, 0, 0, 744, 745, 2, 49, 55, 0, 745, 208, 1, 0, 0, 0, 746, 749, 3, 211, 105, 0, 747, 749, 3, 207, 103, 0, 748, 746, 1, 0, 0, 0, 748, 747, 1, 0, 0, 0, 749, 210, 1, 0, 0, 0, 750, 751, 5, 48, 0, 0, 751, 212, 1, 0, 0, 0, 752, 754, 3, 203, 101, 0, 753, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 775, 1, 0, 0, 0, 757, 759, 3, 203, 101, 0, 758, 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 758, 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 764, 5, 46, 0, 0, 763, 765, 3, 203, 101, 0, 764, 763, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 775, 1, 0, 0, 0, 768, 770, 5, 46, 0, 0, 769, 771, 3, 203, 101, 0, 770, 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 775, 1, 0, 0, 0, 774, 753, 1, 0, 0, 0, 774, 758, 1, 0, 0, 0, 774, 768, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 778, 7, 14, 0, 0, 777, 779, 5, 45, 0, 0, 778, 777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 781, 1, 0, 0, 0, 780, 782, 3, 203, 101, 0, 781, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 781, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 214, 1, 0, 0, 0, 785, 787, 3, 203, 101, 0, 786, 785, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 793, 5, 46, 0, 0, 792, 794, 3, 203, 101, 0, 793, 792, 1, 0, 0, 0, 794, 795, 1, 0, 0, 0, 795, 793, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 216, 1, 0, 0, 0, 797, 798, 7, 9, 0, 0, 798, 799, 7, 3, 0, 0, 799, 800, 7, 1, 0, 0, 800, 801, 7, 13, 0, 0, 801, 802, 7, 7, 0, 0, 802, 803, 7, 15, 0, 0, 803, 804, 7, 4, 0, 0, 804, 805, 7, 2, 0, 0, 805, 806, 7, 1, 0, 0, 806, 807, 7, 7, 0, 0, 807, 218, 1, 0, 0, 0, 808, 809, 7, 12, 0, 0, 809, 810, 7, 3, 0, 0, 810, 220, 1, 0, 0, 0, 811, 812, 7, 22, 0, 0, 812, 813, 7, 3, 0, 0, 813, 814, 7, 15, 0, 0, 814, 222, 1, 0, 0, 0, 815, 816, 7, 15, 0, 0, 816, 817, 7, 14, 0, 0, 817, 818, 7, 25, 0, 0, 818, 819, 7, 0, 0, 0, 819, 820, 7, 2, 0, 0, 820, 821, 7, 15, 0, 0, 821, 822, 7, 14, 0, 0, 822, 224, 1, 0, 0, 0, 823, 824, 7, 0, 0, 0, 824, 825, 7, 1, 0, 0, 825, 826, 7, 2, 0, 0, 826, 827, 7, 25, 0, 0, 827, 828, 7, 0, 0, 0, 828, 829, 7, 14, 0, 0, 829, 226, 1, 0, 0, 0, 830, 831, 7, 8, 0, 0, 831, 832, 7, 4, 0, 0, 832, 833, 7, 1, 0, 0, 833, 834, 7, 12, 0, 0, 834, 835, 7, 4, 0, 0, 835, 836, 7, 7, 0, 0, 836, 837, 7, 3, 0, 0, 837, 838, 7, 15, 0, 0, 838, 839, 7, 18, 0, 0, 839, 228, 1, 0, 0, 0, 840, 841, 7, 13, 0, 0, 841, 842, 7, 9, 0, 0, 842, 843, 7, 4, 0, 0, 843, 844, 7, 5, 0, 0, 844, 845, 7, 4, 0, 0, 845, 846, 7, 15, 0, 0, 846, 230, 1, 0, 0, 0, 847, 848, 7, 3, 0, 0, 848, 849, 7, 22, 0, 0, 849, 232, 1, 0, 0, 0, 850, 851, 7, 4, 0, 0, 851, 852, 7, 12, 0, 0, 852, 853, 7, 12, 0, 0, 853, 234, 1, 0, 0, 0, 854, 855, 7, 12, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 3, 0, 0, 857, 858, 7, 6, 0, 0, 858, 236, 1, 0, 0, 0, 859, 860, 7, 22, 0, 0, 860, 861, 7, 2, 0, 0, 861, 862, 7, 5, 0, 0, 862, 863, 7, 7, 0, 0, 863, 864, 7, 14, 0, 0, 864, 865, 7, 15, 0, 0, 865, 238, 1, 0, 0, 0, 866, 867, 7, 14, 0, 0, 867, 868, 7, 21, 0, 0, 868, 869, 7, 7, 0, 0, 869, 870, 7, 15, 0, 0, 870, 871, 7, 4, 0, 0, 871, 872, 7, 9, 0, 0, 872, 873, 7, 7, 0, 0, 873, 240, 1, 0, 0, 0, 874, 878, 3, 243, 121, 0, 875, 877, 3, 245, 122, 0, 876, 875, 1, 0, 0, 0, 877, 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 242, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 884, 3, 293, 146, 0, 882, 884, 3, 281, 140, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 244, 1, 0, 0, 0, 885, 888, 3, 261, 130, 0, 886, 888, 3, 277, 138, 0, 887, 885, 1, 0, 0, 0, 887, 886, 1, 0, 0, 0, 888, 246, 1, 0, 0, 0, 889, 893, 5, 96, 0, 0, 890, 892, 3, 257, 128, 0, 891, 890, 1, 0, 0, 0, 892, 895, 1, 0, 0, 0, 893, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 1, 0, 0, 0, 895, 893, 1, 0, 0, 0, 896, 898, 5, 96, 0, 0, 897, 889, 1, 0, 0, 0, 898, 899, 1, 0, 0, 0, 899, 897, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 248, 1, 0, 0, 0, 901, 903, 3, 251, 125, 0, 902, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 250, 1, 0, 0, 0, 906, 919, 3, 279, 139, 0, 907, 919, 3, 283, 141, 0, 908, 919, 3, 287, 143, 0, 909, 919, 3, 289, 144, 0, 910, 919, 3, 255, 127, 0, 911, 919, 3, 275, 137, 0, 912, 919, 3, 273, 136, 0, 913, 919, 3, 271, 135, 0, 914, 919, 3, 259, 129, 0, 915, 919, 3, 291, 145, 0, 916, 919, 7, 26, 0, 0, 917, 919, 3, 253, 126, 0, 918, 906, 1, 0, 0, 0, 918, 907, 1, 0, 0, 0, 918, 908, 1, 0, 0, 0, 918, 909, 1, 0, 0, 0, 918, 910, 1, 0, 0, 0, 918, 911, 1, 0, 0, 0, 918, 912, 1, 0, 0, 0, 918, 913, 1, 0, 0, 0, 918, 914, 1, 0, 0, 0, 918, 915, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 252, 1, 0, 0, 0, 920, 921, 5, 47, 0, 0, 921, 922, 5, 42, 0, 0, 922, 928, 1, 0, 0, 0, 923, 927, 3, 263, 131, 0, 924, 925, 5, 42, 0, 0, 925, 927, 3, 269, 134, 0, 926, 923, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 927, 930, 1, 0, 0, 0, 928, 926, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 931, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 931, 932, 5, 42, 0, 0, 932, 950, 5, 47, 0, 0, 933, 934, 5, 47, 0, 0, 934, 935, 5, 47, 0, 0, 935, 939, 1, 0, 0, 0, 936, 938, 3, 267, 133, 0, 937, 936, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, 944, 3, 275, 137, 0, 943, 942, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 948, 3, 287, 143, 0, 946, 948, 5, 0, 0, 1, 947, 945, 1, 0, 0, 0, 947, 946, 1, 0, 0, 0, 948, 950, 1, 0, 0, 0, 949, 920, 1, 0, 0, 0, 949, 933, 1, 0, 0, 0, 950, 254, 1, 0, 0, 0, 951, 952, 7, 27, 0, 0, 952, 256, 1, 0, 0, 0, 953, 954, 8, 28, 0, 0, 954, 258, 1, 0, 0, 0, 955, 956, 7, 29, 0, 0, 956, 260, 1, 0, 0, 0, 957, 958, 7, 30, 0, 0, 958, 262, 1, 0, 0, 0, 959, 960, 8, 31, 0, 0, 960, 264, 1, 0, 0, 0, 961, 962, 8, 32, 0, 0, 962, 266, 1, 0, 0, 0, 963, 964, 8, 33, 0, 0, 964, 268, 1, 0, 0, 0, 965, 966, 8, 34, 0, 0, 966, 270, 1, 0, 0, 0, 967, 968, 7, 35, 0, 0, 968, 272, 1, 0, 0, 0, 969, 970, 7, 36, 0, 0, 970, 274, 1, 0, 0, 0, 971, 972, 7, 37, 0, 0, 972, 276, 1, 0, 0, 0, 973, 974, 7, 38, 0, 0, 974, 278, 1, 0, 0, 0, 975, 976, 7, 39, 0, 0, 976, 280, 1, 0, 0, 0, 977, 978, 7, 40, 0, 0, 978, 282, 1, 0, 0, 0, 979, 980, 7, 41, 0, 0, 980, 284, 1, 0, 0, 0, 981, 982, 8, 42, 0, 0, 982, 286, 1, 0, 0, 0, 983, 984, 7, 43, 0, 0, 984, 288, 1, 0, 0, 0, 985, 986, 7, 44, 0, 0, 986, 290, 1, 0, 0, 0, 987, 988, 7, 45, 0, 0, 988, 292, 1, 0, 0, 0, 989, 990, 7, 46, 0, 0, 990, 294, 1, 0, 0, 0, 38, 0, 668, 670, 677, 679, 683, 703, 711, 718, 721, 727, 730, 734, 738, 742, 748, 755, 760, 766, 772, 774, 778, 783, 788, 795, 878, 883, 887, 893, 899, 904, 918, 926, 928, 939, 943, 947, 949, 0] \ No newline at end of file diff --git a/endpoints/cypher/parser/CypherLexer.tokens b/endpoints/cypher/parser/CypherLexer.tokens deleted file mode 100644 index d596da10..00000000 --- a/endpoints/cypher/parser/CypherLexer.tokens +++ /dev/null @@ -1,173 +0,0 @@ -T__0=1 -T__1=2 -T__2=3 -T__3=4 -T__4=5 -T__5=6 -T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -UNION=46 -ALL=47 -OPTIONAL=48 -MATCH=49 -UNWIND=50 -AS=51 -MERGE=52 -ON=53 -CREATE=54 -SET=55 -DETACH=56 -DELETE=57 -REMOVE=58 -CALL=59 -YIELD=60 -WITH=61 -RETURN=62 -DISTINCT=63 -ORDER=64 -BY=65 -L_SKIP=66 -LIMIT=67 -ASCENDING=68 -ASC=69 -DESCENDING=70 -DESC=71 -WHERE=72 -OR=73 -XOR=74 -AND=75 -NOT=76 -IN=77 -STARTS=78 -ENDS=79 -CONTAINS=80 -IS=81 -NULL=82 -COUNT=83 -ANY=84 -NONE=85 -SINGLE=86 -TRUE=87 -FALSE=88 -EXISTS=89 -CASE=90 -ELSE=91 -END=92 -WHEN=93 -THEN=94 -StringLiteral=95 -EscapedChar=96 -HexInteger=97 -DecimalInteger=98 -OctalInteger=99 -HexLetter=100 -HexDigit=101 -Digit=102 -NonZeroDigit=103 -NonZeroOctDigit=104 -OctDigit=105 -ZeroDigit=106 -ExponentDecimalReal=107 -RegularDecimalReal=108 -CONSTRAINT=109 -DO=110 -FOR=111 -REQUIRE=112 -UNIQUE=113 -MANDATORY=114 -SCALAR=115 -OF=116 -ADD=117 -DROP=118 -FILTER=119 -EXTRACT=120 -UnescapedSymbolicName=121 -IdentifierStart=122 -IdentifierPart=123 -EscapedSymbolicName=124 -SP=125 -WHITESPACE=126 -Comment=127 -';'=1 -','=2 -'='=3 -'+='=4 -'*'=5 -'('=6 -')'=7 -'['=8 -']'=9 -':'=10 -'|'=11 -'..'=12 -'+'=13 -'-'=14 -'/'=15 -'%'=16 -'^'=17 -'<>'=18 -'<'=19 -'>'=20 -'<='=21 -'>='=22 -'{'=23 -'}'=24 -'.'=25 -'$'=26 -'\u27e8'=27 -'\u3008'=28 -'\ufe64'=29 -'\uff1c'=30 -'\u27e9'=31 -'\u3009'=32 -'\ufe65'=33 -'\uff1e'=34 -'\u00ad'=35 -'\u2010'=36 -'\u2011'=37 -'\u2012'=38 -'\u2013'=39 -'\u2014'=40 -'\u2015'=41 -'\u2212'=42 -'\ufe58'=43 -'\ufe63'=44 -'\uff0d'=45 -'0'=106 diff --git a/endpoints/cypher/parser/cypher_base_listener.go b/endpoints/cypher/parser/cypher_base_listener.go deleted file mode 100644 index 445585b7..00000000 --- a/endpoints/cypher/parser/cypher_base_listener.go +++ /dev/null @@ -1,640 +0,0 @@ -// Code generated from Cypher.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Cypher - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// BaseCypherListener is a complete listener for a parse tree produced by CypherParser. -type BaseCypherListener struct{} - -var _ CypherListener = &BaseCypherListener{} - -// VisitTerminal is called when a terminal node is visited. -func (s *BaseCypherListener) VisitTerminal(node antlr.TerminalNode) {} - -// VisitErrorNode is called when an error node is visited. -func (s *BaseCypherListener) VisitErrorNode(node antlr.ErrorNode) {} - -// EnterEveryRule is called when any rule is entered. -func (s *BaseCypherListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} - -// ExitEveryRule is called when any rule is exited. -func (s *BaseCypherListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} - -// EnterOC_Cypher is called when production oC_Cypher is entered. -func (s *BaseCypherListener) EnterOC_Cypher(ctx *OC_CypherContext) {} - -// ExitOC_Cypher is called when production oC_Cypher is exited. -func (s *BaseCypherListener) ExitOC_Cypher(ctx *OC_CypherContext) {} - -// EnterOC_Statement is called when production oC_Statement is entered. -func (s *BaseCypherListener) EnterOC_Statement(ctx *OC_StatementContext) {} - -// ExitOC_Statement is called when production oC_Statement is exited. -func (s *BaseCypherListener) ExitOC_Statement(ctx *OC_StatementContext) {} - -// EnterOC_Query is called when production oC_Query is entered. -func (s *BaseCypherListener) EnterOC_Query(ctx *OC_QueryContext) {} - -// ExitOC_Query is called when production oC_Query is exited. -func (s *BaseCypherListener) ExitOC_Query(ctx *OC_QueryContext) {} - -// EnterOC_RegularQuery is called when production oC_RegularQuery is entered. -func (s *BaseCypherListener) EnterOC_RegularQuery(ctx *OC_RegularQueryContext) {} - -// ExitOC_RegularQuery is called when production oC_RegularQuery is exited. -func (s *BaseCypherListener) ExitOC_RegularQuery(ctx *OC_RegularQueryContext) {} - -// EnterOC_Union is called when production oC_Union is entered. -func (s *BaseCypherListener) EnterOC_Union(ctx *OC_UnionContext) {} - -// ExitOC_Union is called when production oC_Union is exited. -func (s *BaseCypherListener) ExitOC_Union(ctx *OC_UnionContext) {} - -// EnterOC_SingleQuery is called when production oC_SingleQuery is entered. -func (s *BaseCypherListener) EnterOC_SingleQuery(ctx *OC_SingleQueryContext) {} - -// ExitOC_SingleQuery is called when production oC_SingleQuery is exited. -func (s *BaseCypherListener) ExitOC_SingleQuery(ctx *OC_SingleQueryContext) {} - -// EnterOC_SinglePartQuery is called when production oC_SinglePartQuery is entered. -func (s *BaseCypherListener) EnterOC_SinglePartQuery(ctx *OC_SinglePartQueryContext) {} - -// ExitOC_SinglePartQuery is called when production oC_SinglePartQuery is exited. -func (s *BaseCypherListener) ExitOC_SinglePartQuery(ctx *OC_SinglePartQueryContext) {} - -// EnterOC_MultiPartQuery is called when production oC_MultiPartQuery is entered. -func (s *BaseCypherListener) EnterOC_MultiPartQuery(ctx *OC_MultiPartQueryContext) {} - -// ExitOC_MultiPartQuery is called when production oC_MultiPartQuery is exited. -func (s *BaseCypherListener) ExitOC_MultiPartQuery(ctx *OC_MultiPartQueryContext) {} - -// EnterOC_UpdatingClause is called when production oC_UpdatingClause is entered. -func (s *BaseCypherListener) EnterOC_UpdatingClause(ctx *OC_UpdatingClauseContext) {} - -// ExitOC_UpdatingClause is called when production oC_UpdatingClause is exited. -func (s *BaseCypherListener) ExitOC_UpdatingClause(ctx *OC_UpdatingClauseContext) {} - -// EnterOC_ReadingClause is called when production oC_ReadingClause is entered. -func (s *BaseCypherListener) EnterOC_ReadingClause(ctx *OC_ReadingClauseContext) {} - -// ExitOC_ReadingClause is called when production oC_ReadingClause is exited. -func (s *BaseCypherListener) ExitOC_ReadingClause(ctx *OC_ReadingClauseContext) {} - -// EnterOC_Match is called when production oC_Match is entered. -func (s *BaseCypherListener) EnterOC_Match(ctx *OC_MatchContext) {} - -// ExitOC_Match is called when production oC_Match is exited. -func (s *BaseCypherListener) ExitOC_Match(ctx *OC_MatchContext) {} - -// EnterOC_Unwind is called when production oC_Unwind is entered. -func (s *BaseCypherListener) EnterOC_Unwind(ctx *OC_UnwindContext) {} - -// ExitOC_Unwind is called when production oC_Unwind is exited. -func (s *BaseCypherListener) ExitOC_Unwind(ctx *OC_UnwindContext) {} - -// EnterOC_Merge is called when production oC_Merge is entered. -func (s *BaseCypherListener) EnterOC_Merge(ctx *OC_MergeContext) {} - -// ExitOC_Merge is called when production oC_Merge is exited. -func (s *BaseCypherListener) ExitOC_Merge(ctx *OC_MergeContext) {} - -// EnterOC_MergeAction is called when production oC_MergeAction is entered. -func (s *BaseCypherListener) EnterOC_MergeAction(ctx *OC_MergeActionContext) {} - -// ExitOC_MergeAction is called when production oC_MergeAction is exited. -func (s *BaseCypherListener) ExitOC_MergeAction(ctx *OC_MergeActionContext) {} - -// EnterOC_Create is called when production oC_Create is entered. -func (s *BaseCypherListener) EnterOC_Create(ctx *OC_CreateContext) {} - -// ExitOC_Create is called when production oC_Create is exited. -func (s *BaseCypherListener) ExitOC_Create(ctx *OC_CreateContext) {} - -// EnterOC_Set is called when production oC_Set is entered. -func (s *BaseCypherListener) EnterOC_Set(ctx *OC_SetContext) {} - -// ExitOC_Set is called when production oC_Set is exited. -func (s *BaseCypherListener) ExitOC_Set(ctx *OC_SetContext) {} - -// EnterOC_SetItem is called when production oC_SetItem is entered. -func (s *BaseCypherListener) EnterOC_SetItem(ctx *OC_SetItemContext) {} - -// ExitOC_SetItem is called when production oC_SetItem is exited. -func (s *BaseCypherListener) ExitOC_SetItem(ctx *OC_SetItemContext) {} - -// EnterOC_Delete is called when production oC_Delete is entered. -func (s *BaseCypherListener) EnterOC_Delete(ctx *OC_DeleteContext) {} - -// ExitOC_Delete is called when production oC_Delete is exited. -func (s *BaseCypherListener) ExitOC_Delete(ctx *OC_DeleteContext) {} - -// EnterOC_Remove is called when production oC_Remove is entered. -func (s *BaseCypherListener) EnterOC_Remove(ctx *OC_RemoveContext) {} - -// ExitOC_Remove is called when production oC_Remove is exited. -func (s *BaseCypherListener) ExitOC_Remove(ctx *OC_RemoveContext) {} - -// EnterOC_RemoveItem is called when production oC_RemoveItem is entered. -func (s *BaseCypherListener) EnterOC_RemoveItem(ctx *OC_RemoveItemContext) {} - -// ExitOC_RemoveItem is called when production oC_RemoveItem is exited. -func (s *BaseCypherListener) ExitOC_RemoveItem(ctx *OC_RemoveItemContext) {} - -// EnterOC_InQueryCall is called when production oC_InQueryCall is entered. -func (s *BaseCypherListener) EnterOC_InQueryCall(ctx *OC_InQueryCallContext) {} - -// ExitOC_InQueryCall is called when production oC_InQueryCall is exited. -func (s *BaseCypherListener) ExitOC_InQueryCall(ctx *OC_InQueryCallContext) {} - -// EnterOC_StandaloneCall is called when production oC_StandaloneCall is entered. -func (s *BaseCypherListener) EnterOC_StandaloneCall(ctx *OC_StandaloneCallContext) {} - -// ExitOC_StandaloneCall is called when production oC_StandaloneCall is exited. -func (s *BaseCypherListener) ExitOC_StandaloneCall(ctx *OC_StandaloneCallContext) {} - -// EnterOC_YieldItems is called when production oC_YieldItems is entered. -func (s *BaseCypherListener) EnterOC_YieldItems(ctx *OC_YieldItemsContext) {} - -// ExitOC_YieldItems is called when production oC_YieldItems is exited. -func (s *BaseCypherListener) ExitOC_YieldItems(ctx *OC_YieldItemsContext) {} - -// EnterOC_YieldItem is called when production oC_YieldItem is entered. -func (s *BaseCypherListener) EnterOC_YieldItem(ctx *OC_YieldItemContext) {} - -// ExitOC_YieldItem is called when production oC_YieldItem is exited. -func (s *BaseCypherListener) ExitOC_YieldItem(ctx *OC_YieldItemContext) {} - -// EnterOC_With is called when production oC_With is entered. -func (s *BaseCypherListener) EnterOC_With(ctx *OC_WithContext) {} - -// ExitOC_With is called when production oC_With is exited. -func (s *BaseCypherListener) ExitOC_With(ctx *OC_WithContext) {} - -// EnterOC_Return is called when production oC_Return is entered. -func (s *BaseCypherListener) EnterOC_Return(ctx *OC_ReturnContext) {} - -// ExitOC_Return is called when production oC_Return is exited. -func (s *BaseCypherListener) ExitOC_Return(ctx *OC_ReturnContext) {} - -// EnterOC_ProjectionBody is called when production oC_ProjectionBody is entered. -func (s *BaseCypherListener) EnterOC_ProjectionBody(ctx *OC_ProjectionBodyContext) {} - -// ExitOC_ProjectionBody is called when production oC_ProjectionBody is exited. -func (s *BaseCypherListener) ExitOC_ProjectionBody(ctx *OC_ProjectionBodyContext) {} - -// EnterOC_ProjectionItems is called when production oC_ProjectionItems is entered. -func (s *BaseCypherListener) EnterOC_ProjectionItems(ctx *OC_ProjectionItemsContext) {} - -// ExitOC_ProjectionItems is called when production oC_ProjectionItems is exited. -func (s *BaseCypherListener) ExitOC_ProjectionItems(ctx *OC_ProjectionItemsContext) {} - -// EnterOC_ProjectionItem is called when production oC_ProjectionItem is entered. -func (s *BaseCypherListener) EnterOC_ProjectionItem(ctx *OC_ProjectionItemContext) {} - -// ExitOC_ProjectionItem is called when production oC_ProjectionItem is exited. -func (s *BaseCypherListener) ExitOC_ProjectionItem(ctx *OC_ProjectionItemContext) {} - -// EnterOC_Order is called when production oC_Order is entered. -func (s *BaseCypherListener) EnterOC_Order(ctx *OC_OrderContext) {} - -// ExitOC_Order is called when production oC_Order is exited. -func (s *BaseCypherListener) ExitOC_Order(ctx *OC_OrderContext) {} - -// EnterOC_Skip is called when production oC_Skip is entered. -func (s *BaseCypherListener) EnterOC_Skip(ctx *OC_SkipContext) {} - -// ExitOC_Skip is called when production oC_Skip is exited. -func (s *BaseCypherListener) ExitOC_Skip(ctx *OC_SkipContext) {} - -// EnterOC_Limit is called when production oC_Limit is entered. -func (s *BaseCypherListener) EnterOC_Limit(ctx *OC_LimitContext) {} - -// ExitOC_Limit is called when production oC_Limit is exited. -func (s *BaseCypherListener) ExitOC_Limit(ctx *OC_LimitContext) {} - -// EnterOC_SortItem is called when production oC_SortItem is entered. -func (s *BaseCypherListener) EnterOC_SortItem(ctx *OC_SortItemContext) {} - -// ExitOC_SortItem is called when production oC_SortItem is exited. -func (s *BaseCypherListener) ExitOC_SortItem(ctx *OC_SortItemContext) {} - -// EnterOC_Where is called when production oC_Where is entered. -func (s *BaseCypherListener) EnterOC_Where(ctx *OC_WhereContext) {} - -// ExitOC_Where is called when production oC_Where is exited. -func (s *BaseCypherListener) ExitOC_Where(ctx *OC_WhereContext) {} - -// EnterOC_Pattern is called when production oC_Pattern is entered. -func (s *BaseCypherListener) EnterOC_Pattern(ctx *OC_PatternContext) {} - -// ExitOC_Pattern is called when production oC_Pattern is exited. -func (s *BaseCypherListener) ExitOC_Pattern(ctx *OC_PatternContext) {} - -// EnterOC_PatternPart is called when production oC_PatternPart is entered. -func (s *BaseCypherListener) EnterOC_PatternPart(ctx *OC_PatternPartContext) {} - -// ExitOC_PatternPart is called when production oC_PatternPart is exited. -func (s *BaseCypherListener) ExitOC_PatternPart(ctx *OC_PatternPartContext) {} - -// EnterOC_AnonymousPatternPart is called when production oC_AnonymousPatternPart is entered. -func (s *BaseCypherListener) EnterOC_AnonymousPatternPart(ctx *OC_AnonymousPatternPartContext) {} - -// ExitOC_AnonymousPatternPart is called when production oC_AnonymousPatternPart is exited. -func (s *BaseCypherListener) ExitOC_AnonymousPatternPart(ctx *OC_AnonymousPatternPartContext) {} - -// EnterOC_PatternElement is called when production oC_PatternElement is entered. -func (s *BaseCypherListener) EnterOC_PatternElement(ctx *OC_PatternElementContext) {} - -// ExitOC_PatternElement is called when production oC_PatternElement is exited. -func (s *BaseCypherListener) ExitOC_PatternElement(ctx *OC_PatternElementContext) {} - -// EnterOC_NodePattern is called when production oC_NodePattern is entered. -func (s *BaseCypherListener) EnterOC_NodePattern(ctx *OC_NodePatternContext) {} - -// ExitOC_NodePattern is called when production oC_NodePattern is exited. -func (s *BaseCypherListener) ExitOC_NodePattern(ctx *OC_NodePatternContext) {} - -// EnterOC_PatternElementChain is called when production oC_PatternElementChain is entered. -func (s *BaseCypherListener) EnterOC_PatternElementChain(ctx *OC_PatternElementChainContext) {} - -// ExitOC_PatternElementChain is called when production oC_PatternElementChain is exited. -func (s *BaseCypherListener) ExitOC_PatternElementChain(ctx *OC_PatternElementChainContext) {} - -// EnterOC_RelationshipPattern is called when production oC_RelationshipPattern is entered. -func (s *BaseCypherListener) EnterOC_RelationshipPattern(ctx *OC_RelationshipPatternContext) {} - -// ExitOC_RelationshipPattern is called when production oC_RelationshipPattern is exited. -func (s *BaseCypherListener) ExitOC_RelationshipPattern(ctx *OC_RelationshipPatternContext) {} - -// EnterOC_RelationshipDetail is called when production oC_RelationshipDetail is entered. -func (s *BaseCypherListener) EnterOC_RelationshipDetail(ctx *OC_RelationshipDetailContext) {} - -// ExitOC_RelationshipDetail is called when production oC_RelationshipDetail is exited. -func (s *BaseCypherListener) ExitOC_RelationshipDetail(ctx *OC_RelationshipDetailContext) {} - -// EnterOC_Properties is called when production oC_Properties is entered. -func (s *BaseCypherListener) EnterOC_Properties(ctx *OC_PropertiesContext) {} - -// ExitOC_Properties is called when production oC_Properties is exited. -func (s *BaseCypherListener) ExitOC_Properties(ctx *OC_PropertiesContext) {} - -// EnterOC_RelationshipTypes is called when production oC_RelationshipTypes is entered. -func (s *BaseCypherListener) EnterOC_RelationshipTypes(ctx *OC_RelationshipTypesContext) {} - -// ExitOC_RelationshipTypes is called when production oC_RelationshipTypes is exited. -func (s *BaseCypherListener) ExitOC_RelationshipTypes(ctx *OC_RelationshipTypesContext) {} - -// EnterOC_NodeLabels is called when production oC_NodeLabels is entered. -func (s *BaseCypherListener) EnterOC_NodeLabels(ctx *OC_NodeLabelsContext) {} - -// ExitOC_NodeLabels is called when production oC_NodeLabels is exited. -func (s *BaseCypherListener) ExitOC_NodeLabels(ctx *OC_NodeLabelsContext) {} - -// EnterOC_NodeLabel is called when production oC_NodeLabel is entered. -func (s *BaseCypherListener) EnterOC_NodeLabel(ctx *OC_NodeLabelContext) {} - -// ExitOC_NodeLabel is called when production oC_NodeLabel is exited. -func (s *BaseCypherListener) ExitOC_NodeLabel(ctx *OC_NodeLabelContext) {} - -// EnterOC_RangeLiteral is called when production oC_RangeLiteral is entered. -func (s *BaseCypherListener) EnterOC_RangeLiteral(ctx *OC_RangeLiteralContext) {} - -// ExitOC_RangeLiteral is called when production oC_RangeLiteral is exited. -func (s *BaseCypherListener) ExitOC_RangeLiteral(ctx *OC_RangeLiteralContext) {} - -// EnterOC_LabelName is called when production oC_LabelName is entered. -func (s *BaseCypherListener) EnterOC_LabelName(ctx *OC_LabelNameContext) {} - -// ExitOC_LabelName is called when production oC_LabelName is exited. -func (s *BaseCypherListener) ExitOC_LabelName(ctx *OC_LabelNameContext) {} - -// EnterOC_RelTypeName is called when production oC_RelTypeName is entered. -func (s *BaseCypherListener) EnterOC_RelTypeName(ctx *OC_RelTypeNameContext) {} - -// ExitOC_RelTypeName is called when production oC_RelTypeName is exited. -func (s *BaseCypherListener) ExitOC_RelTypeName(ctx *OC_RelTypeNameContext) {} - -// EnterOC_Expression is called when production oC_Expression is entered. -func (s *BaseCypherListener) EnterOC_Expression(ctx *OC_ExpressionContext) {} - -// ExitOC_Expression is called when production oC_Expression is exited. -func (s *BaseCypherListener) ExitOC_Expression(ctx *OC_ExpressionContext) {} - -// EnterOC_OrExpression is called when production oC_OrExpression is entered. -func (s *BaseCypherListener) EnterOC_OrExpression(ctx *OC_OrExpressionContext) {} - -// ExitOC_OrExpression is called when production oC_OrExpression is exited. -func (s *BaseCypherListener) ExitOC_OrExpression(ctx *OC_OrExpressionContext) {} - -// EnterOC_XorExpression is called when production oC_XorExpression is entered. -func (s *BaseCypherListener) EnterOC_XorExpression(ctx *OC_XorExpressionContext) {} - -// ExitOC_XorExpression is called when production oC_XorExpression is exited. -func (s *BaseCypherListener) ExitOC_XorExpression(ctx *OC_XorExpressionContext) {} - -// EnterOC_AndExpression is called when production oC_AndExpression is entered. -func (s *BaseCypherListener) EnterOC_AndExpression(ctx *OC_AndExpressionContext) {} - -// ExitOC_AndExpression is called when production oC_AndExpression is exited. -func (s *BaseCypherListener) ExitOC_AndExpression(ctx *OC_AndExpressionContext) {} - -// EnterOC_NotExpression is called when production oC_NotExpression is entered. -func (s *BaseCypherListener) EnterOC_NotExpression(ctx *OC_NotExpressionContext) {} - -// ExitOC_NotExpression is called when production oC_NotExpression is exited. -func (s *BaseCypherListener) ExitOC_NotExpression(ctx *OC_NotExpressionContext) {} - -// EnterOC_ComparisonExpression is called when production oC_ComparisonExpression is entered. -func (s *BaseCypherListener) EnterOC_ComparisonExpression(ctx *OC_ComparisonExpressionContext) {} - -// ExitOC_ComparisonExpression is called when production oC_ComparisonExpression is exited. -func (s *BaseCypherListener) ExitOC_ComparisonExpression(ctx *OC_ComparisonExpressionContext) {} - -// EnterOC_AddOrSubtractExpression is called when production oC_AddOrSubtractExpression is entered. -func (s *BaseCypherListener) EnterOC_AddOrSubtractExpression(ctx *OC_AddOrSubtractExpressionContext) { -} - -// ExitOC_AddOrSubtractExpression is called when production oC_AddOrSubtractExpression is exited. -func (s *BaseCypherListener) ExitOC_AddOrSubtractExpression(ctx *OC_AddOrSubtractExpressionContext) {} - -// EnterOC_MultiplyDivideModuloExpression is called when production oC_MultiplyDivideModuloExpression is entered. -func (s *BaseCypherListener) EnterOC_MultiplyDivideModuloExpression(ctx *OC_MultiplyDivideModuloExpressionContext) { -} - -// ExitOC_MultiplyDivideModuloExpression is called when production oC_MultiplyDivideModuloExpression is exited. -func (s *BaseCypherListener) ExitOC_MultiplyDivideModuloExpression(ctx *OC_MultiplyDivideModuloExpressionContext) { -} - -// EnterOC_PowerOfExpression is called when production oC_PowerOfExpression is entered. -func (s *BaseCypherListener) EnterOC_PowerOfExpression(ctx *OC_PowerOfExpressionContext) {} - -// ExitOC_PowerOfExpression is called when production oC_PowerOfExpression is exited. -func (s *BaseCypherListener) ExitOC_PowerOfExpression(ctx *OC_PowerOfExpressionContext) {} - -// EnterOC_UnaryAddOrSubtractExpression is called when production oC_UnaryAddOrSubtractExpression is entered. -func (s *BaseCypherListener) EnterOC_UnaryAddOrSubtractExpression(ctx *OC_UnaryAddOrSubtractExpressionContext) { -} - -// ExitOC_UnaryAddOrSubtractExpression is called when production oC_UnaryAddOrSubtractExpression is exited. -func (s *BaseCypherListener) ExitOC_UnaryAddOrSubtractExpression(ctx *OC_UnaryAddOrSubtractExpressionContext) { -} - -// EnterOC_StringListNullOperatorExpression is called when production oC_StringListNullOperatorExpression is entered. -func (s *BaseCypherListener) EnterOC_StringListNullOperatorExpression(ctx *OC_StringListNullOperatorExpressionContext) { -} - -// ExitOC_StringListNullOperatorExpression is called when production oC_StringListNullOperatorExpression is exited. -func (s *BaseCypherListener) ExitOC_StringListNullOperatorExpression(ctx *OC_StringListNullOperatorExpressionContext) { -} - -// EnterOC_ListOperatorExpression is called when production oC_ListOperatorExpression is entered. -func (s *BaseCypherListener) EnterOC_ListOperatorExpression(ctx *OC_ListOperatorExpressionContext) {} - -// ExitOC_ListOperatorExpression is called when production oC_ListOperatorExpression is exited. -func (s *BaseCypherListener) ExitOC_ListOperatorExpression(ctx *OC_ListOperatorExpressionContext) {} - -// EnterOC_StringOperatorExpression is called when production oC_StringOperatorExpression is entered. -func (s *BaseCypherListener) EnterOC_StringOperatorExpression(ctx *OC_StringOperatorExpressionContext) { -} - -// ExitOC_StringOperatorExpression is called when production oC_StringOperatorExpression is exited. -func (s *BaseCypherListener) ExitOC_StringOperatorExpression(ctx *OC_StringOperatorExpressionContext) { -} - -// EnterOC_NullOperatorExpression is called when production oC_NullOperatorExpression is entered. -func (s *BaseCypherListener) EnterOC_NullOperatorExpression(ctx *OC_NullOperatorExpressionContext) {} - -// ExitOC_NullOperatorExpression is called when production oC_NullOperatorExpression is exited. -func (s *BaseCypherListener) ExitOC_NullOperatorExpression(ctx *OC_NullOperatorExpressionContext) {} - -// EnterOC_PropertyOrLabelsExpression is called when production oC_PropertyOrLabelsExpression is entered. -func (s *BaseCypherListener) EnterOC_PropertyOrLabelsExpression(ctx *OC_PropertyOrLabelsExpressionContext) { -} - -// ExitOC_PropertyOrLabelsExpression is called when production oC_PropertyOrLabelsExpression is exited. -func (s *BaseCypherListener) ExitOC_PropertyOrLabelsExpression(ctx *OC_PropertyOrLabelsExpressionContext) { -} - -// EnterOC_Atom is called when production oC_Atom is entered. -func (s *BaseCypherListener) EnterOC_Atom(ctx *OC_AtomContext) {} - -// ExitOC_Atom is called when production oC_Atom is exited. -func (s *BaseCypherListener) ExitOC_Atom(ctx *OC_AtomContext) {} - -// EnterOC_Literal is called when production oC_Literal is entered. -func (s *BaseCypherListener) EnterOC_Literal(ctx *OC_LiteralContext) {} - -// ExitOC_Literal is called when production oC_Literal is exited. -func (s *BaseCypherListener) ExitOC_Literal(ctx *OC_LiteralContext) {} - -// EnterOC_BooleanLiteral is called when production oC_BooleanLiteral is entered. -func (s *BaseCypherListener) EnterOC_BooleanLiteral(ctx *OC_BooleanLiteralContext) {} - -// ExitOC_BooleanLiteral is called when production oC_BooleanLiteral is exited. -func (s *BaseCypherListener) ExitOC_BooleanLiteral(ctx *OC_BooleanLiteralContext) {} - -// EnterOC_ListLiteral is called when production oC_ListLiteral is entered. -func (s *BaseCypherListener) EnterOC_ListLiteral(ctx *OC_ListLiteralContext) {} - -// ExitOC_ListLiteral is called when production oC_ListLiteral is exited. -func (s *BaseCypherListener) ExitOC_ListLiteral(ctx *OC_ListLiteralContext) {} - -// EnterOC_PartialComparisonExpression is called when production oC_PartialComparisonExpression is entered. -func (s *BaseCypherListener) EnterOC_PartialComparisonExpression(ctx *OC_PartialComparisonExpressionContext) { -} - -// ExitOC_PartialComparisonExpression is called when production oC_PartialComparisonExpression is exited. -func (s *BaseCypherListener) ExitOC_PartialComparisonExpression(ctx *OC_PartialComparisonExpressionContext) { -} - -// EnterOC_ParenthesizedExpression is called when production oC_ParenthesizedExpression is entered. -func (s *BaseCypherListener) EnterOC_ParenthesizedExpression(ctx *OC_ParenthesizedExpressionContext) { -} - -// ExitOC_ParenthesizedExpression is called when production oC_ParenthesizedExpression is exited. -func (s *BaseCypherListener) ExitOC_ParenthesizedExpression(ctx *OC_ParenthesizedExpressionContext) {} - -// EnterOC_RelationshipsPattern is called when production oC_RelationshipsPattern is entered. -func (s *BaseCypherListener) EnterOC_RelationshipsPattern(ctx *OC_RelationshipsPatternContext) {} - -// ExitOC_RelationshipsPattern is called when production oC_RelationshipsPattern is exited. -func (s *BaseCypherListener) ExitOC_RelationshipsPattern(ctx *OC_RelationshipsPatternContext) {} - -// EnterOC_FilterExpression is called when production oC_FilterExpression is entered. -func (s *BaseCypherListener) EnterOC_FilterExpression(ctx *OC_FilterExpressionContext) {} - -// ExitOC_FilterExpression is called when production oC_FilterExpression is exited. -func (s *BaseCypherListener) ExitOC_FilterExpression(ctx *OC_FilterExpressionContext) {} - -// EnterOC_IdInColl is called when production oC_IdInColl is entered. -func (s *BaseCypherListener) EnterOC_IdInColl(ctx *OC_IdInCollContext) {} - -// ExitOC_IdInColl is called when production oC_IdInColl is exited. -func (s *BaseCypherListener) ExitOC_IdInColl(ctx *OC_IdInCollContext) {} - -// EnterOC_FunctionInvocation is called when production oC_FunctionInvocation is entered. -func (s *BaseCypherListener) EnterOC_FunctionInvocation(ctx *OC_FunctionInvocationContext) {} - -// ExitOC_FunctionInvocation is called when production oC_FunctionInvocation is exited. -func (s *BaseCypherListener) ExitOC_FunctionInvocation(ctx *OC_FunctionInvocationContext) {} - -// EnterOC_FunctionName is called when production oC_FunctionName is entered. -func (s *BaseCypherListener) EnterOC_FunctionName(ctx *OC_FunctionNameContext) {} - -// ExitOC_FunctionName is called when production oC_FunctionName is exited. -func (s *BaseCypherListener) ExitOC_FunctionName(ctx *OC_FunctionNameContext) {} - -// EnterOC_ExistentialSubquery is called when production oC_ExistentialSubquery is entered. -func (s *BaseCypherListener) EnterOC_ExistentialSubquery(ctx *OC_ExistentialSubqueryContext) {} - -// ExitOC_ExistentialSubquery is called when production oC_ExistentialSubquery is exited. -func (s *BaseCypherListener) ExitOC_ExistentialSubquery(ctx *OC_ExistentialSubqueryContext) {} - -// EnterOC_ExplicitProcedureInvocation is called when production oC_ExplicitProcedureInvocation is entered. -func (s *BaseCypherListener) EnterOC_ExplicitProcedureInvocation(ctx *OC_ExplicitProcedureInvocationContext) { -} - -// ExitOC_ExplicitProcedureInvocation is called when production oC_ExplicitProcedureInvocation is exited. -func (s *BaseCypherListener) ExitOC_ExplicitProcedureInvocation(ctx *OC_ExplicitProcedureInvocationContext) { -} - -// EnterOC_ImplicitProcedureInvocation is called when production oC_ImplicitProcedureInvocation is entered. -func (s *BaseCypherListener) EnterOC_ImplicitProcedureInvocation(ctx *OC_ImplicitProcedureInvocationContext) { -} - -// ExitOC_ImplicitProcedureInvocation is called when production oC_ImplicitProcedureInvocation is exited. -func (s *BaseCypherListener) ExitOC_ImplicitProcedureInvocation(ctx *OC_ImplicitProcedureInvocationContext) { -} - -// EnterOC_ProcedureResultField is called when production oC_ProcedureResultField is entered. -func (s *BaseCypherListener) EnterOC_ProcedureResultField(ctx *OC_ProcedureResultFieldContext) {} - -// ExitOC_ProcedureResultField is called when production oC_ProcedureResultField is exited. -func (s *BaseCypherListener) ExitOC_ProcedureResultField(ctx *OC_ProcedureResultFieldContext) {} - -// EnterOC_ProcedureName is called when production oC_ProcedureName is entered. -func (s *BaseCypherListener) EnterOC_ProcedureName(ctx *OC_ProcedureNameContext) {} - -// ExitOC_ProcedureName is called when production oC_ProcedureName is exited. -func (s *BaseCypherListener) ExitOC_ProcedureName(ctx *OC_ProcedureNameContext) {} - -// EnterOC_Namespace is called when production oC_Namespace is entered. -func (s *BaseCypherListener) EnterOC_Namespace(ctx *OC_NamespaceContext) {} - -// ExitOC_Namespace is called when production oC_Namespace is exited. -func (s *BaseCypherListener) ExitOC_Namespace(ctx *OC_NamespaceContext) {} - -// EnterOC_ListComprehension is called when production oC_ListComprehension is entered. -func (s *BaseCypherListener) EnterOC_ListComprehension(ctx *OC_ListComprehensionContext) {} - -// ExitOC_ListComprehension is called when production oC_ListComprehension is exited. -func (s *BaseCypherListener) ExitOC_ListComprehension(ctx *OC_ListComprehensionContext) {} - -// EnterOC_PatternComprehension is called when production oC_PatternComprehension is entered. -func (s *BaseCypherListener) EnterOC_PatternComprehension(ctx *OC_PatternComprehensionContext) {} - -// ExitOC_PatternComprehension is called when production oC_PatternComprehension is exited. -func (s *BaseCypherListener) ExitOC_PatternComprehension(ctx *OC_PatternComprehensionContext) {} - -// EnterOC_PropertyLookup is called when production oC_PropertyLookup is entered. -func (s *BaseCypherListener) EnterOC_PropertyLookup(ctx *OC_PropertyLookupContext) {} - -// ExitOC_PropertyLookup is called when production oC_PropertyLookup is exited. -func (s *BaseCypherListener) ExitOC_PropertyLookup(ctx *OC_PropertyLookupContext) {} - -// EnterOC_CaseExpression is called when production oC_CaseExpression is entered. -func (s *BaseCypherListener) EnterOC_CaseExpression(ctx *OC_CaseExpressionContext) {} - -// ExitOC_CaseExpression is called when production oC_CaseExpression is exited. -func (s *BaseCypherListener) ExitOC_CaseExpression(ctx *OC_CaseExpressionContext) {} - -// EnterOC_CaseAlternative is called when production oC_CaseAlternative is entered. -func (s *BaseCypherListener) EnterOC_CaseAlternative(ctx *OC_CaseAlternativeContext) {} - -// ExitOC_CaseAlternative is called when production oC_CaseAlternative is exited. -func (s *BaseCypherListener) ExitOC_CaseAlternative(ctx *OC_CaseAlternativeContext) {} - -// EnterOC_Variable is called when production oC_Variable is entered. -func (s *BaseCypherListener) EnterOC_Variable(ctx *OC_VariableContext) {} - -// ExitOC_Variable is called when production oC_Variable is exited. -func (s *BaseCypherListener) ExitOC_Variable(ctx *OC_VariableContext) {} - -// EnterOC_NumberLiteral is called when production oC_NumberLiteral is entered. -func (s *BaseCypherListener) EnterOC_NumberLiteral(ctx *OC_NumberLiteralContext) {} - -// ExitOC_NumberLiteral is called when production oC_NumberLiteral is exited. -func (s *BaseCypherListener) ExitOC_NumberLiteral(ctx *OC_NumberLiteralContext) {} - -// EnterOC_MapLiteral is called when production oC_MapLiteral is entered. -func (s *BaseCypherListener) EnterOC_MapLiteral(ctx *OC_MapLiteralContext) {} - -// ExitOC_MapLiteral is called when production oC_MapLiteral is exited. -func (s *BaseCypherListener) ExitOC_MapLiteral(ctx *OC_MapLiteralContext) {} - -// EnterOC_Parameter is called when production oC_Parameter is entered. -func (s *BaseCypherListener) EnterOC_Parameter(ctx *OC_ParameterContext) {} - -// ExitOC_Parameter is called when production oC_Parameter is exited. -func (s *BaseCypherListener) ExitOC_Parameter(ctx *OC_ParameterContext) {} - -// EnterOC_PropertyExpression is called when production oC_PropertyExpression is entered. -func (s *BaseCypherListener) EnterOC_PropertyExpression(ctx *OC_PropertyExpressionContext) {} - -// ExitOC_PropertyExpression is called when production oC_PropertyExpression is exited. -func (s *BaseCypherListener) ExitOC_PropertyExpression(ctx *OC_PropertyExpressionContext) {} - -// EnterOC_PropertyKeyName is called when production oC_PropertyKeyName is entered. -func (s *BaseCypherListener) EnterOC_PropertyKeyName(ctx *OC_PropertyKeyNameContext) {} - -// ExitOC_PropertyKeyName is called when production oC_PropertyKeyName is exited. -func (s *BaseCypherListener) ExitOC_PropertyKeyName(ctx *OC_PropertyKeyNameContext) {} - -// EnterOC_IntegerLiteral is called when production oC_IntegerLiteral is entered. -func (s *BaseCypherListener) EnterOC_IntegerLiteral(ctx *OC_IntegerLiteralContext) {} - -// ExitOC_IntegerLiteral is called when production oC_IntegerLiteral is exited. -func (s *BaseCypherListener) ExitOC_IntegerLiteral(ctx *OC_IntegerLiteralContext) {} - -// EnterOC_DoubleLiteral is called when production oC_DoubleLiteral is entered. -func (s *BaseCypherListener) EnterOC_DoubleLiteral(ctx *OC_DoubleLiteralContext) {} - -// ExitOC_DoubleLiteral is called when production oC_DoubleLiteral is exited. -func (s *BaseCypherListener) ExitOC_DoubleLiteral(ctx *OC_DoubleLiteralContext) {} - -// EnterOC_SchemaName is called when production oC_SchemaName is entered. -func (s *BaseCypherListener) EnterOC_SchemaName(ctx *OC_SchemaNameContext) {} - -// ExitOC_SchemaName is called when production oC_SchemaName is exited. -func (s *BaseCypherListener) ExitOC_SchemaName(ctx *OC_SchemaNameContext) {} - -// EnterOC_ReservedWord is called when production oC_ReservedWord is entered. -func (s *BaseCypherListener) EnterOC_ReservedWord(ctx *OC_ReservedWordContext) {} - -// ExitOC_ReservedWord is called when production oC_ReservedWord is exited. -func (s *BaseCypherListener) ExitOC_ReservedWord(ctx *OC_ReservedWordContext) {} - -// EnterOC_SymbolicName is called when production oC_SymbolicName is entered. -func (s *BaseCypherListener) EnterOC_SymbolicName(ctx *OC_SymbolicNameContext) {} - -// ExitOC_SymbolicName is called when production oC_SymbolicName is exited. -func (s *BaseCypherListener) ExitOC_SymbolicName(ctx *OC_SymbolicNameContext) {} - -// EnterOC_LeftArrowHead is called when production oC_LeftArrowHead is entered. -func (s *BaseCypherListener) EnterOC_LeftArrowHead(ctx *OC_LeftArrowHeadContext) {} - -// ExitOC_LeftArrowHead is called when production oC_LeftArrowHead is exited. -func (s *BaseCypherListener) ExitOC_LeftArrowHead(ctx *OC_LeftArrowHeadContext) {} - -// EnterOC_RightArrowHead is called when production oC_RightArrowHead is entered. -func (s *BaseCypherListener) EnterOC_RightArrowHead(ctx *OC_RightArrowHeadContext) {} - -// ExitOC_RightArrowHead is called when production oC_RightArrowHead is exited. -func (s *BaseCypherListener) ExitOC_RightArrowHead(ctx *OC_RightArrowHeadContext) {} - -// EnterOC_Dash is called when production oC_Dash is entered. -func (s *BaseCypherListener) EnterOC_Dash(ctx *OC_DashContext) {} - -// ExitOC_Dash is called when production oC_Dash is exited. -func (s *BaseCypherListener) ExitOC_Dash(ctx *OC_DashContext) {} diff --git a/endpoints/cypher/parser/cypher_lexer.go b/endpoints/cypher/parser/cypher_lexer.go deleted file mode 100644 index 51a71b8d..00000000 --- a/endpoints/cypher/parser/cypher_lexer.go +++ /dev/null @@ -1,965 +0,0 @@ -// Code generated from Cypher.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser - -import ( - "fmt" - "sync" - "unicode" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import error -var _ = fmt.Printf -var _ = sync.Once{} -var _ = unicode.IsLetter - -type CypherLexer struct { - *antlr.BaseLexer - channelNames []string - modeNames []string - // TODO: EOF string -} - -var cypherlexerLexerStaticData struct { - once sync.Once - serializedATN []int32 - channelNames []string - modeNames []string - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func cypherlexerLexerInit() { - staticData := &cypherlexerLexerStaticData - staticData.channelNames = []string{ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - } - staticData.modeNames = []string{ - "DEFAULT_MODE", - } - staticData.literalNames = []string{ - "", "';'", "','", "'='", "'+='", "'*'", "'('", "')'", "'['", "']'", - "':'", "'|'", "'..'", "'+'", "'-'", "'/'", "'%'", "'^'", "'<>'", "'<'", - "'>'", "'<='", "'>='", "'{'", "'}'", "'.'", "'$'", "'\\u27E8'", "'\\u3008'", - "'\\uFE64'", "'\\uFF1C'", "'\\u27E9'", "'\\u3009'", "'\\uFE65'", "'\\uFF1E'", - "'\\u00AD'", "'\\u2010'", "'\\u2011'", "'\\u2012'", "'\\u2013'", "'\\u2014'", - "'\\u2015'", "'\\u2212'", "'\\uFE58'", "'\\uFE63'", "'\\uFF0D'", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "'0'", - } - staticData.symbolicNames = []string{ - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "UNION", "ALL", "OPTIONAL", - "MATCH", "UNWIND", "AS", "MERGE", "ON", "CREATE", "SET", "DETACH", "DELETE", - "REMOVE", "CALL", "YIELD", "WITH", "RETURN", "DISTINCT", "ORDER", "BY", - "L_SKIP", "LIMIT", "ASCENDING", "ASC", "DESCENDING", "DESC", "WHERE", - "OR", "XOR", "AND", "NOT", "IN", "STARTS", "ENDS", "CONTAINS", "IS", - "NULL", "COUNT", "ANY", "NONE", "SINGLE", "TRUE", "FALSE", "EXISTS", - "CASE", "ELSE", "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", - "HexInteger", "DecimalInteger", "OctalInteger", "HexLetter", "HexDigit", - "Digit", "NonZeroDigit", "NonZeroOctDigit", "OctDigit", "ZeroDigit", - "ExponentDecimalReal", "RegularDecimalReal", "CONSTRAINT", "DO", "FOR", - "REQUIRE", "UNIQUE", "MANDATORY", "SCALAR", "OF", "ADD", "DROP", "FILTER", - "EXTRACT", "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", - "EscapedSymbolicName", "SP", "WHITESPACE", "Comment", - } - staticData.ruleNames = []string{ - "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", - "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", - "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", - "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", - "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", - "T__41", "T__42", "T__43", "T__44", "UNION", "ALL", "OPTIONAL", "MATCH", - "UNWIND", "AS", "MERGE", "ON", "CREATE", "SET", "DETACH", "DELETE", - "REMOVE", "CALL", "YIELD", "WITH", "RETURN", "DISTINCT", "ORDER", "BY", - "L_SKIP", "LIMIT", "ASCENDING", "ASC", "DESCENDING", "DESC", "WHERE", - "OR", "XOR", "AND", "NOT", "IN", "STARTS", "ENDS", "CONTAINS", "IS", - "NULL", "COUNT", "ANY", "NONE", "SINGLE", "TRUE", "FALSE", "EXISTS", - "CASE", "ELSE", "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", - "HexInteger", "DecimalInteger", "OctalInteger", "HexLetter", "HexDigit", - "Digit", "NonZeroDigit", "NonZeroOctDigit", "OctDigit", "ZeroDigit", - "ExponentDecimalReal", "RegularDecimalReal", "CONSTRAINT", "DO", "FOR", - "REQUIRE", "UNIQUE", "MANDATORY", "SCALAR", "OF", "ADD", "DROP", "FILTER", - "EXTRACT", "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", - "EscapedSymbolicName", "SP", "WHITESPACE", "Comment", "FF", "EscapedSymbolicName_0", - "RS", "ID_Continue", "Comment_1", "StringLiteral_1", "Comment_3", "Comment_2", - "GS", "FS", "CR", "Sc", "SPACE", "Pc", "TAB", "StringLiteral_0", "LF", - "VT", "US", "ID_Start", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 0, 127, 991, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, - 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, - 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, - 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, - 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, - 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, - 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, - 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, - 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, - 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, - 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, - 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, - 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, - 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, - 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, - 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, - 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, - 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, - 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, - 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, - 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, - 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, - 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, - 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, - 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, - 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, - 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, - 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, - 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, - 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, - 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, - 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, - 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, - 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, - 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, - 1, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 32, 1, - 32, 1, 33, 1, 33, 1, 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, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, - 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, - 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, - 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, - 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, - 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, - 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, - 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, - 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 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, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, - 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, - 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, - 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 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, 79, 1, 79, - 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, - 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, - 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, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, - 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 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, 90, 1, 90, 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, 94, 1, 94, 1, 94, 5, 94, 669, - 8, 94, 10, 94, 12, 94, 672, 9, 94, 1, 94, 1, 94, 1, 94, 1, 94, 5, 94, 678, - 8, 94, 10, 94, 12, 94, 681, 9, 94, 1, 94, 3, 94, 684, 8, 94, 1, 95, 1, - 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, - 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 704, 8, 95, 1, 96, 1, - 96, 1, 96, 1, 96, 4, 96, 710, 8, 96, 11, 96, 12, 96, 711, 1, 97, 1, 97, - 1, 97, 5, 97, 717, 8, 97, 10, 97, 12, 97, 720, 9, 97, 3, 97, 722, 8, 97, - 1, 98, 1, 98, 4, 98, 726, 8, 98, 11, 98, 12, 98, 727, 1, 99, 3, 99, 731, - 8, 99, 1, 100, 1, 100, 3, 100, 735, 8, 100, 1, 101, 1, 101, 3, 101, 739, - 8, 101, 1, 102, 1, 102, 3, 102, 743, 8, 102, 1, 103, 1, 103, 1, 104, 1, - 104, 3, 104, 749, 8, 104, 1, 105, 1, 105, 1, 106, 4, 106, 754, 8, 106, - 11, 106, 12, 106, 755, 1, 106, 4, 106, 759, 8, 106, 11, 106, 12, 106, 760, - 1, 106, 1, 106, 4, 106, 765, 8, 106, 11, 106, 12, 106, 766, 1, 106, 1, - 106, 4, 106, 771, 8, 106, 11, 106, 12, 106, 772, 3, 106, 775, 8, 106, 1, - 106, 1, 106, 3, 106, 779, 8, 106, 1, 106, 4, 106, 782, 8, 106, 11, 106, - 12, 106, 783, 1, 107, 5, 107, 787, 8, 107, 10, 107, 12, 107, 790, 9, 107, - 1, 107, 1, 107, 4, 107, 794, 8, 107, 11, 107, 12, 107, 795, 1, 108, 1, - 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, - 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, - 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, - 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, - 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, - 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, - 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, - 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, - 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 5, 120, 877, 8, 120, 10, 120, - 12, 120, 880, 9, 120, 1, 121, 1, 121, 3, 121, 884, 8, 121, 1, 122, 1, 122, - 3, 122, 888, 8, 122, 1, 123, 1, 123, 5, 123, 892, 8, 123, 10, 123, 12, - 123, 895, 9, 123, 1, 123, 4, 123, 898, 8, 123, 11, 123, 12, 123, 899, 1, - 124, 4, 124, 903, 8, 124, 11, 124, 12, 124, 904, 1, 125, 1, 125, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, - 3, 125, 919, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, - 126, 927, 8, 126, 10, 126, 12, 126, 930, 9, 126, 1, 126, 1, 126, 1, 126, - 1, 126, 1, 126, 1, 126, 5, 126, 938, 8, 126, 10, 126, 12, 126, 941, 9, - 126, 1, 126, 3, 126, 944, 8, 126, 1, 126, 1, 126, 3, 126, 948, 8, 126, - 3, 126, 950, 8, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, - 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, - 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 1, - 139, 1, 139, 1, 140, 1, 140, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, - 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 146, 1, 146, 0, 0, 147, 1, 1, 3, - 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, - 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, - 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, - 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, - 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, - 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, - 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, - 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, - 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, - 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, - 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, - 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, - 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, - 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, - 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, - 127, 255, 0, 257, 0, 259, 0, 261, 0, 263, 0, 265, 0, 267, 0, 269, 0, 271, - 0, 273, 0, 275, 0, 277, 0, 279, 0, 281, 0, 283, 0, 285, 0, 287, 0, 289, - 0, 291, 0, 293, 0, 1, 0, 47, 2, 0, 85, 85, 117, 117, 2, 0, 78, 78, 110, - 110, 2, 0, 73, 73, 105, 105, 2, 0, 79, 79, 111, 111, 2, 0, 65, 65, 97, - 97, 2, 0, 76, 76, 108, 108, 2, 0, 80, 80, 112, 112, 2, 0, 84, 84, 116, - 116, 2, 0, 77, 77, 109, 109, 2, 0, 67, 67, 99, 99, 2, 0, 72, 72, 104, 104, - 2, 0, 87, 87, 119, 119, 2, 0, 68, 68, 100, 100, 2, 0, 83, 83, 115, 115, - 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, - 2, 0, 86, 86, 118, 118, 2, 0, 89, 89, 121, 121, 2, 0, 66, 66, 98, 98, 2, - 0, 75, 75, 107, 107, 2, 0, 88, 88, 120, 120, 2, 0, 70, 70, 102, 102, 13, - 0, 34, 34, 39, 39, 66, 66, 70, 70, 78, 78, 82, 82, 84, 84, 92, 92, 98, - 98, 102, 102, 110, 110, 114, 114, 116, 116, 2, 0, 65, 70, 97, 102, 2, 0, - 81, 81, 113, 113, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, - 8233, 8239, 8239, 8287, 8287, 12288, 12288, 1, 0, 12, 12, 1, 0, 96, 96, - 1, 0, 30, 30, 730, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, - 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, - 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, - 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, - 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, - 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, - 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, - 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2208, - 2228, 2230, 2247, 2259, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, - 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, - 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, - 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, - 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, - 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, - 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, - 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, - 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, - 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, - 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, - 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, - 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, - 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, - 3112, 3114, 3129, 3133, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, - 3162, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, - 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, - 3286, 3294, 3294, 3296, 3299, 3302, 3311, 3313, 3314, 3328, 3340, 3342, - 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, - 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, - 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, - 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, - 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, - 3782, 3784, 3789, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, - 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, - 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, - 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, - 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, - 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, - 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, - 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, - 5900, 5902, 5908, 5920, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, - 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6160, - 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, - 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, - 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, - 6845, 6847, 6848, 6912, 6987, 6992, 7001, 7019, 7027, 7040, 7155, 7168, - 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, - 7378, 7380, 7418, 7424, 7673, 7675, 7957, 7960, 7965, 7968, 8005, 8008, - 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, - 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, - 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, - 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, - 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, - 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, - 8584, 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11507, 11520, 11557, - 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, - 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, - 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, - 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, - 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, - 40956, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, - 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42943, 42946, - 42954, 42997, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, - 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, - 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, - 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, - 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, - 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, - 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, - 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, - 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, - 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, - 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, - 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, - 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, - 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, - 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, - 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, - 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, - 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, - 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, - 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, - 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, - 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, - 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, - 69248, 69289, 69291, 69292, 69296, 69297, 69376, 69404, 69415, 69415, 69424, - 69456, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69743, 69759, 69818, - 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, - 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, - 70144, 70161, 70163, 70199, 70206, 70206, 70272, 70278, 70280, 70280, 70282, - 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, - 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, - 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, - 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, - 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, - 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, - 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71680, 71738, 71840, 71913, - 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, - 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, - 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72384, - 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, - 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, - 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, - 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73648, - 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77824, 78894, 82944, 83526, - 92160, 92728, 92736, 92766, 92768, 92777, 92880, 92909, 92912, 92916, 92928, - 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, - 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, - 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110592, 110878, 110928, - 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, - 113792, 113800, 113808, 113817, 113821, 113822, 119141, 119145, 119149, - 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, - 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, - 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, - 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, - 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, - 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, - 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, - 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, - 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, - 121505, 121519, 122880, 122886, 122888, 122904, 122907, 122913, 122915, - 122916, 122918, 122922, 123136, 123180, 123184, 123197, 123200, 123209, - 123214, 123214, 123584, 123641, 124928, 125124, 125136, 125142, 125184, - 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, - 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, - 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, - 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, - 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, - 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, - 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, - 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, - 173789, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, - 194560, 195101, 196608, 201546, 917760, 917999, 1, 0, 42, 42, 2, 0, 39, - 39, 92, 92, 2, 0, 10, 10, 13, 13, 1, 0, 47, 47, 1, 0, 29, 29, 1, 0, 28, - 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, - 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, - 6107, 8352, 8383, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, - 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, - 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, - 65103, 65343, 65343, 1, 0, 9, 9, 2, 0, 34, 34, 92, 92, 1, 0, 10, 10, 1, - 0, 11, 11, 1, 0, 31, 31, 622, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, - 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, - 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, - 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, - 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, - 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, - 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, - 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2208, 2228, - 2230, 2247, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, - 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, - 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, - 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, - 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, - 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, - 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, - 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, - 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, - 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, - 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, - 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, - 3261, 3261, 3294, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, - 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, - 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, - 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, - 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, - 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, - 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, - 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, - 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, - 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, - 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, - 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, - 5888, 5900, 5902, 5905, 5920, 5937, 5952, 5969, 5984, 5996, 5998, 6000, - 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, - 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, - 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6987, 7043, 7072, - 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, - 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, - 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, - 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, - 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, - 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, - 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, - 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, - 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, - 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, - 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, - 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, - 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, - 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 40956, - 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, - 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42943, - 42946, 42954, 42997, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, - 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, - 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, - 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, - 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, - 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, - 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, - 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, - 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, - 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, - 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, - 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, - 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, - 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, - 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, - 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, - 66816, 66855, 66864, 66915, 67072, 67382, 67392, 67413, 67424, 67431, 67584, - 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, - 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, - 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, - 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, - 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, - 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, - 69415, 69424, 69445, 69552, 69572, 69600, 69622, 69635, 69687, 69763, 69807, - 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, - 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, - 70163, 70187, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, - 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, - 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, - 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, - 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, - 71352, 71424, 71450, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, - 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, - 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, - 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72384, 72440, 72704, - 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, - 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, - 73112, 73440, 73458, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, - 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92766, 92880, 92909, 92928, - 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, - 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, - 100352, 101589, 101632, 101640, 110592, 110878, 110928, 110930, 110948, - 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, - 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, - 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, - 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, - 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, - 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, - 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, - 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 123136, - 123180, 123191, 123197, 123214, 123214, 123584, 123627, 124928, 125124, - 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, - 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, - 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, - 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, - 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, - 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, - 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, - 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173789, - 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, - 195101, 196608, 201546, 1018, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, - 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, - 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, - 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, - 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, - 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, - 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, - 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, - 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, - 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, - 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, - 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, - 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, - 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, - 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, - 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, - 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, - 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, - 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, - 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, - 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, - 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, - 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, - 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, - 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, - 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, - 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, - 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 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, 1, 295, 1, 0, - 0, 0, 3, 297, 1, 0, 0, 0, 5, 299, 1, 0, 0, 0, 7, 301, 1, 0, 0, 0, 9, 304, - 1, 0, 0, 0, 11, 306, 1, 0, 0, 0, 13, 308, 1, 0, 0, 0, 15, 310, 1, 0, 0, - 0, 17, 312, 1, 0, 0, 0, 19, 314, 1, 0, 0, 0, 21, 316, 1, 0, 0, 0, 23, 318, - 1, 0, 0, 0, 25, 321, 1, 0, 0, 0, 27, 323, 1, 0, 0, 0, 29, 325, 1, 0, 0, - 0, 31, 327, 1, 0, 0, 0, 33, 329, 1, 0, 0, 0, 35, 331, 1, 0, 0, 0, 37, 334, - 1, 0, 0, 0, 39, 336, 1, 0, 0, 0, 41, 338, 1, 0, 0, 0, 43, 341, 1, 0, 0, - 0, 45, 344, 1, 0, 0, 0, 47, 346, 1, 0, 0, 0, 49, 348, 1, 0, 0, 0, 51, 350, - 1, 0, 0, 0, 53, 352, 1, 0, 0, 0, 55, 354, 1, 0, 0, 0, 57, 356, 1, 0, 0, - 0, 59, 358, 1, 0, 0, 0, 61, 360, 1, 0, 0, 0, 63, 362, 1, 0, 0, 0, 65, 364, - 1, 0, 0, 0, 67, 366, 1, 0, 0, 0, 69, 368, 1, 0, 0, 0, 71, 370, 1, 0, 0, - 0, 73, 372, 1, 0, 0, 0, 75, 374, 1, 0, 0, 0, 77, 376, 1, 0, 0, 0, 79, 378, - 1, 0, 0, 0, 81, 380, 1, 0, 0, 0, 83, 382, 1, 0, 0, 0, 85, 384, 1, 0, 0, - 0, 87, 386, 1, 0, 0, 0, 89, 388, 1, 0, 0, 0, 91, 390, 1, 0, 0, 0, 93, 396, - 1, 0, 0, 0, 95, 400, 1, 0, 0, 0, 97, 409, 1, 0, 0, 0, 99, 415, 1, 0, 0, - 0, 101, 422, 1, 0, 0, 0, 103, 425, 1, 0, 0, 0, 105, 431, 1, 0, 0, 0, 107, - 434, 1, 0, 0, 0, 109, 441, 1, 0, 0, 0, 111, 445, 1, 0, 0, 0, 113, 452, - 1, 0, 0, 0, 115, 459, 1, 0, 0, 0, 117, 466, 1, 0, 0, 0, 119, 471, 1, 0, - 0, 0, 121, 477, 1, 0, 0, 0, 123, 482, 1, 0, 0, 0, 125, 489, 1, 0, 0, 0, - 127, 498, 1, 0, 0, 0, 129, 504, 1, 0, 0, 0, 131, 507, 1, 0, 0, 0, 133, - 512, 1, 0, 0, 0, 135, 518, 1, 0, 0, 0, 137, 528, 1, 0, 0, 0, 139, 532, - 1, 0, 0, 0, 141, 543, 1, 0, 0, 0, 143, 548, 1, 0, 0, 0, 145, 554, 1, 0, - 0, 0, 147, 557, 1, 0, 0, 0, 149, 561, 1, 0, 0, 0, 151, 565, 1, 0, 0, 0, - 153, 569, 1, 0, 0, 0, 155, 572, 1, 0, 0, 0, 157, 579, 1, 0, 0, 0, 159, - 584, 1, 0, 0, 0, 161, 593, 1, 0, 0, 0, 163, 596, 1, 0, 0, 0, 165, 601, - 1, 0, 0, 0, 167, 607, 1, 0, 0, 0, 169, 611, 1, 0, 0, 0, 171, 616, 1, 0, - 0, 0, 173, 623, 1, 0, 0, 0, 175, 628, 1, 0, 0, 0, 177, 634, 1, 0, 0, 0, - 179, 641, 1, 0, 0, 0, 181, 646, 1, 0, 0, 0, 183, 651, 1, 0, 0, 0, 185, - 655, 1, 0, 0, 0, 187, 660, 1, 0, 0, 0, 189, 683, 1, 0, 0, 0, 191, 685, - 1, 0, 0, 0, 193, 705, 1, 0, 0, 0, 195, 721, 1, 0, 0, 0, 197, 723, 1, 0, - 0, 0, 199, 730, 1, 0, 0, 0, 201, 734, 1, 0, 0, 0, 203, 738, 1, 0, 0, 0, - 205, 742, 1, 0, 0, 0, 207, 744, 1, 0, 0, 0, 209, 748, 1, 0, 0, 0, 211, - 750, 1, 0, 0, 0, 213, 774, 1, 0, 0, 0, 215, 788, 1, 0, 0, 0, 217, 797, - 1, 0, 0, 0, 219, 808, 1, 0, 0, 0, 221, 811, 1, 0, 0, 0, 223, 815, 1, 0, - 0, 0, 225, 823, 1, 0, 0, 0, 227, 830, 1, 0, 0, 0, 229, 840, 1, 0, 0, 0, - 231, 847, 1, 0, 0, 0, 233, 850, 1, 0, 0, 0, 235, 854, 1, 0, 0, 0, 237, - 859, 1, 0, 0, 0, 239, 866, 1, 0, 0, 0, 241, 874, 1, 0, 0, 0, 243, 883, - 1, 0, 0, 0, 245, 887, 1, 0, 0, 0, 247, 897, 1, 0, 0, 0, 249, 902, 1, 0, - 0, 0, 251, 918, 1, 0, 0, 0, 253, 949, 1, 0, 0, 0, 255, 951, 1, 0, 0, 0, - 257, 953, 1, 0, 0, 0, 259, 955, 1, 0, 0, 0, 261, 957, 1, 0, 0, 0, 263, - 959, 1, 0, 0, 0, 265, 961, 1, 0, 0, 0, 267, 963, 1, 0, 0, 0, 269, 965, - 1, 0, 0, 0, 271, 967, 1, 0, 0, 0, 273, 969, 1, 0, 0, 0, 275, 971, 1, 0, - 0, 0, 277, 973, 1, 0, 0, 0, 279, 975, 1, 0, 0, 0, 281, 977, 1, 0, 0, 0, - 283, 979, 1, 0, 0, 0, 285, 981, 1, 0, 0, 0, 287, 983, 1, 0, 0, 0, 289, - 985, 1, 0, 0, 0, 291, 987, 1, 0, 0, 0, 293, 989, 1, 0, 0, 0, 295, 296, - 5, 59, 0, 0, 296, 2, 1, 0, 0, 0, 297, 298, 5, 44, 0, 0, 298, 4, 1, 0, 0, - 0, 299, 300, 5, 61, 0, 0, 300, 6, 1, 0, 0, 0, 301, 302, 5, 43, 0, 0, 302, - 303, 5, 61, 0, 0, 303, 8, 1, 0, 0, 0, 304, 305, 5, 42, 0, 0, 305, 10, 1, - 0, 0, 0, 306, 307, 5, 40, 0, 0, 307, 12, 1, 0, 0, 0, 308, 309, 5, 41, 0, - 0, 309, 14, 1, 0, 0, 0, 310, 311, 5, 91, 0, 0, 311, 16, 1, 0, 0, 0, 312, - 313, 5, 93, 0, 0, 313, 18, 1, 0, 0, 0, 314, 315, 5, 58, 0, 0, 315, 20, - 1, 0, 0, 0, 316, 317, 5, 124, 0, 0, 317, 22, 1, 0, 0, 0, 318, 319, 5, 46, - 0, 0, 319, 320, 5, 46, 0, 0, 320, 24, 1, 0, 0, 0, 321, 322, 5, 43, 0, 0, - 322, 26, 1, 0, 0, 0, 323, 324, 5, 45, 0, 0, 324, 28, 1, 0, 0, 0, 325, 326, - 5, 47, 0, 0, 326, 30, 1, 0, 0, 0, 327, 328, 5, 37, 0, 0, 328, 32, 1, 0, - 0, 0, 329, 330, 5, 94, 0, 0, 330, 34, 1, 0, 0, 0, 331, 332, 5, 60, 0, 0, - 332, 333, 5, 62, 0, 0, 333, 36, 1, 0, 0, 0, 334, 335, 5, 60, 0, 0, 335, - 38, 1, 0, 0, 0, 336, 337, 5, 62, 0, 0, 337, 40, 1, 0, 0, 0, 338, 339, 5, - 60, 0, 0, 339, 340, 5, 61, 0, 0, 340, 42, 1, 0, 0, 0, 341, 342, 5, 62, - 0, 0, 342, 343, 5, 61, 0, 0, 343, 44, 1, 0, 0, 0, 344, 345, 5, 123, 0, - 0, 345, 46, 1, 0, 0, 0, 346, 347, 5, 125, 0, 0, 347, 48, 1, 0, 0, 0, 348, - 349, 5, 46, 0, 0, 349, 50, 1, 0, 0, 0, 350, 351, 5, 36, 0, 0, 351, 52, - 1, 0, 0, 0, 352, 353, 5, 10216, 0, 0, 353, 54, 1, 0, 0, 0, 354, 355, 5, - 12296, 0, 0, 355, 56, 1, 0, 0, 0, 356, 357, 5, 65124, 0, 0, 357, 58, 1, - 0, 0, 0, 358, 359, 5, 65308, 0, 0, 359, 60, 1, 0, 0, 0, 360, 361, 5, 10217, - 0, 0, 361, 62, 1, 0, 0, 0, 362, 363, 5, 12297, 0, 0, 363, 64, 1, 0, 0, - 0, 364, 365, 5, 65125, 0, 0, 365, 66, 1, 0, 0, 0, 366, 367, 5, 65310, 0, - 0, 367, 68, 1, 0, 0, 0, 368, 369, 5, 173, 0, 0, 369, 70, 1, 0, 0, 0, 370, - 371, 5, 8208, 0, 0, 371, 72, 1, 0, 0, 0, 372, 373, 5, 8209, 0, 0, 373, - 74, 1, 0, 0, 0, 374, 375, 5, 8210, 0, 0, 375, 76, 1, 0, 0, 0, 376, 377, - 5, 8211, 0, 0, 377, 78, 1, 0, 0, 0, 378, 379, 5, 8212, 0, 0, 379, 80, 1, - 0, 0, 0, 380, 381, 5, 8213, 0, 0, 381, 82, 1, 0, 0, 0, 382, 383, 5, 8722, - 0, 0, 383, 84, 1, 0, 0, 0, 384, 385, 5, 65112, 0, 0, 385, 86, 1, 0, 0, - 0, 386, 387, 5, 65123, 0, 0, 387, 88, 1, 0, 0, 0, 388, 389, 5, 65293, 0, - 0, 389, 90, 1, 0, 0, 0, 390, 391, 7, 0, 0, 0, 391, 392, 7, 1, 0, 0, 392, - 393, 7, 2, 0, 0, 393, 394, 7, 3, 0, 0, 394, 395, 7, 1, 0, 0, 395, 92, 1, - 0, 0, 0, 396, 397, 7, 4, 0, 0, 397, 398, 7, 5, 0, 0, 398, 399, 7, 5, 0, - 0, 399, 94, 1, 0, 0, 0, 400, 401, 7, 3, 0, 0, 401, 402, 7, 6, 0, 0, 402, - 403, 7, 7, 0, 0, 403, 404, 7, 2, 0, 0, 404, 405, 7, 3, 0, 0, 405, 406, - 7, 1, 0, 0, 406, 407, 7, 4, 0, 0, 407, 408, 7, 5, 0, 0, 408, 96, 1, 0, - 0, 0, 409, 410, 7, 8, 0, 0, 410, 411, 7, 4, 0, 0, 411, 412, 7, 7, 0, 0, - 412, 413, 7, 9, 0, 0, 413, 414, 7, 10, 0, 0, 414, 98, 1, 0, 0, 0, 415, - 416, 7, 0, 0, 0, 416, 417, 7, 1, 0, 0, 417, 418, 7, 11, 0, 0, 418, 419, - 7, 2, 0, 0, 419, 420, 7, 1, 0, 0, 420, 421, 7, 12, 0, 0, 421, 100, 1, 0, - 0, 0, 422, 423, 7, 4, 0, 0, 423, 424, 7, 13, 0, 0, 424, 102, 1, 0, 0, 0, - 425, 426, 7, 8, 0, 0, 426, 427, 7, 14, 0, 0, 427, 428, 7, 15, 0, 0, 428, - 429, 7, 16, 0, 0, 429, 430, 7, 14, 0, 0, 430, 104, 1, 0, 0, 0, 431, 432, - 7, 3, 0, 0, 432, 433, 7, 1, 0, 0, 433, 106, 1, 0, 0, 0, 434, 435, 7, 9, - 0, 0, 435, 436, 7, 15, 0, 0, 436, 437, 7, 14, 0, 0, 437, 438, 7, 4, 0, - 0, 438, 439, 7, 7, 0, 0, 439, 440, 7, 14, 0, 0, 440, 108, 1, 0, 0, 0, 441, - 442, 7, 13, 0, 0, 442, 443, 7, 14, 0, 0, 443, 444, 7, 7, 0, 0, 444, 110, - 1, 0, 0, 0, 445, 446, 7, 12, 0, 0, 446, 447, 7, 14, 0, 0, 447, 448, 7, - 7, 0, 0, 448, 449, 7, 4, 0, 0, 449, 450, 7, 9, 0, 0, 450, 451, 7, 10, 0, - 0, 451, 112, 1, 0, 0, 0, 452, 453, 7, 12, 0, 0, 453, 454, 7, 14, 0, 0, - 454, 455, 7, 5, 0, 0, 455, 456, 7, 14, 0, 0, 456, 457, 7, 7, 0, 0, 457, - 458, 7, 14, 0, 0, 458, 114, 1, 0, 0, 0, 459, 460, 7, 15, 0, 0, 460, 461, - 7, 14, 0, 0, 461, 462, 7, 8, 0, 0, 462, 463, 7, 3, 0, 0, 463, 464, 7, 17, - 0, 0, 464, 465, 7, 14, 0, 0, 465, 116, 1, 0, 0, 0, 466, 467, 7, 9, 0, 0, - 467, 468, 7, 4, 0, 0, 468, 469, 7, 5, 0, 0, 469, 470, 7, 5, 0, 0, 470, - 118, 1, 0, 0, 0, 471, 472, 7, 18, 0, 0, 472, 473, 7, 2, 0, 0, 473, 474, - 7, 14, 0, 0, 474, 475, 7, 5, 0, 0, 475, 476, 7, 12, 0, 0, 476, 120, 1, - 0, 0, 0, 477, 478, 7, 11, 0, 0, 478, 479, 7, 2, 0, 0, 479, 480, 7, 7, 0, - 0, 480, 481, 7, 10, 0, 0, 481, 122, 1, 0, 0, 0, 482, 483, 7, 15, 0, 0, - 483, 484, 7, 14, 0, 0, 484, 485, 7, 7, 0, 0, 485, 486, 7, 0, 0, 0, 486, - 487, 7, 15, 0, 0, 487, 488, 7, 1, 0, 0, 488, 124, 1, 0, 0, 0, 489, 490, - 7, 12, 0, 0, 490, 491, 7, 2, 0, 0, 491, 492, 7, 13, 0, 0, 492, 493, 7, - 7, 0, 0, 493, 494, 7, 2, 0, 0, 494, 495, 7, 1, 0, 0, 495, 496, 7, 9, 0, - 0, 496, 497, 7, 7, 0, 0, 497, 126, 1, 0, 0, 0, 498, 499, 7, 3, 0, 0, 499, - 500, 7, 15, 0, 0, 500, 501, 7, 12, 0, 0, 501, 502, 7, 14, 0, 0, 502, 503, - 7, 15, 0, 0, 503, 128, 1, 0, 0, 0, 504, 505, 7, 19, 0, 0, 505, 506, 7, - 18, 0, 0, 506, 130, 1, 0, 0, 0, 507, 508, 7, 13, 0, 0, 508, 509, 7, 20, - 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 6, 0, 0, 511, 132, 1, 0, 0, 0, - 512, 513, 7, 5, 0, 0, 513, 514, 7, 2, 0, 0, 514, 515, 7, 8, 0, 0, 515, - 516, 7, 2, 0, 0, 516, 517, 7, 7, 0, 0, 517, 134, 1, 0, 0, 0, 518, 519, - 7, 4, 0, 0, 519, 520, 7, 13, 0, 0, 520, 521, 7, 9, 0, 0, 521, 522, 7, 14, - 0, 0, 522, 523, 7, 1, 0, 0, 523, 524, 7, 12, 0, 0, 524, 525, 7, 2, 0, 0, - 525, 526, 7, 1, 0, 0, 526, 527, 7, 16, 0, 0, 527, 136, 1, 0, 0, 0, 528, - 529, 7, 4, 0, 0, 529, 530, 7, 13, 0, 0, 530, 531, 7, 9, 0, 0, 531, 138, - 1, 0, 0, 0, 532, 533, 7, 12, 0, 0, 533, 534, 7, 14, 0, 0, 534, 535, 7, - 13, 0, 0, 535, 536, 7, 9, 0, 0, 536, 537, 7, 14, 0, 0, 537, 538, 7, 1, - 0, 0, 538, 539, 7, 12, 0, 0, 539, 540, 7, 2, 0, 0, 540, 541, 7, 1, 0, 0, - 541, 542, 7, 16, 0, 0, 542, 140, 1, 0, 0, 0, 543, 544, 7, 12, 0, 0, 544, - 545, 7, 14, 0, 0, 545, 546, 7, 13, 0, 0, 546, 547, 7, 9, 0, 0, 547, 142, - 1, 0, 0, 0, 548, 549, 7, 11, 0, 0, 549, 550, 7, 10, 0, 0, 550, 551, 7, - 14, 0, 0, 551, 552, 7, 15, 0, 0, 552, 553, 7, 14, 0, 0, 553, 144, 1, 0, - 0, 0, 554, 555, 7, 3, 0, 0, 555, 556, 7, 15, 0, 0, 556, 146, 1, 0, 0, 0, - 557, 558, 7, 21, 0, 0, 558, 559, 7, 3, 0, 0, 559, 560, 7, 15, 0, 0, 560, - 148, 1, 0, 0, 0, 561, 562, 7, 4, 0, 0, 562, 563, 7, 1, 0, 0, 563, 564, - 7, 12, 0, 0, 564, 150, 1, 0, 0, 0, 565, 566, 7, 1, 0, 0, 566, 567, 7, 3, - 0, 0, 567, 568, 7, 7, 0, 0, 568, 152, 1, 0, 0, 0, 569, 570, 7, 2, 0, 0, - 570, 571, 7, 1, 0, 0, 571, 154, 1, 0, 0, 0, 572, 573, 7, 13, 0, 0, 573, - 574, 7, 7, 0, 0, 574, 575, 7, 4, 0, 0, 575, 576, 7, 15, 0, 0, 576, 577, - 7, 7, 0, 0, 577, 578, 7, 13, 0, 0, 578, 156, 1, 0, 0, 0, 579, 580, 7, 14, - 0, 0, 580, 581, 7, 1, 0, 0, 581, 582, 7, 12, 0, 0, 582, 583, 7, 13, 0, - 0, 583, 158, 1, 0, 0, 0, 584, 585, 7, 9, 0, 0, 585, 586, 7, 3, 0, 0, 586, - 587, 7, 1, 0, 0, 587, 588, 7, 7, 0, 0, 588, 589, 7, 4, 0, 0, 589, 590, - 7, 2, 0, 0, 590, 591, 7, 1, 0, 0, 591, 592, 7, 13, 0, 0, 592, 160, 1, 0, - 0, 0, 593, 594, 7, 2, 0, 0, 594, 595, 7, 13, 0, 0, 595, 162, 1, 0, 0, 0, - 596, 597, 7, 1, 0, 0, 597, 598, 7, 0, 0, 0, 598, 599, 7, 5, 0, 0, 599, - 600, 7, 5, 0, 0, 600, 164, 1, 0, 0, 0, 601, 602, 7, 9, 0, 0, 602, 603, - 7, 3, 0, 0, 603, 604, 7, 0, 0, 0, 604, 605, 7, 1, 0, 0, 605, 606, 7, 7, - 0, 0, 606, 166, 1, 0, 0, 0, 607, 608, 7, 4, 0, 0, 608, 609, 7, 1, 0, 0, - 609, 610, 7, 18, 0, 0, 610, 168, 1, 0, 0, 0, 611, 612, 7, 1, 0, 0, 612, - 613, 7, 3, 0, 0, 613, 614, 7, 1, 0, 0, 614, 615, 7, 14, 0, 0, 615, 170, - 1, 0, 0, 0, 616, 617, 7, 13, 0, 0, 617, 618, 7, 2, 0, 0, 618, 619, 7, 1, - 0, 0, 619, 620, 7, 16, 0, 0, 620, 621, 7, 5, 0, 0, 621, 622, 7, 14, 0, - 0, 622, 172, 1, 0, 0, 0, 623, 624, 7, 7, 0, 0, 624, 625, 7, 15, 0, 0, 625, - 626, 7, 0, 0, 0, 626, 627, 7, 14, 0, 0, 627, 174, 1, 0, 0, 0, 628, 629, - 7, 22, 0, 0, 629, 630, 7, 4, 0, 0, 630, 631, 7, 5, 0, 0, 631, 632, 7, 13, - 0, 0, 632, 633, 7, 14, 0, 0, 633, 176, 1, 0, 0, 0, 634, 635, 7, 14, 0, - 0, 635, 636, 7, 21, 0, 0, 636, 637, 7, 2, 0, 0, 637, 638, 7, 13, 0, 0, - 638, 639, 7, 7, 0, 0, 639, 640, 7, 13, 0, 0, 640, 178, 1, 0, 0, 0, 641, - 642, 7, 9, 0, 0, 642, 643, 7, 4, 0, 0, 643, 644, 7, 13, 0, 0, 644, 645, - 7, 14, 0, 0, 645, 180, 1, 0, 0, 0, 646, 647, 7, 14, 0, 0, 647, 648, 7, - 5, 0, 0, 648, 649, 7, 13, 0, 0, 649, 650, 7, 14, 0, 0, 650, 182, 1, 0, - 0, 0, 651, 652, 7, 14, 0, 0, 652, 653, 7, 1, 0, 0, 653, 654, 7, 12, 0, - 0, 654, 184, 1, 0, 0, 0, 655, 656, 7, 11, 0, 0, 656, 657, 7, 10, 0, 0, - 657, 658, 7, 14, 0, 0, 658, 659, 7, 1, 0, 0, 659, 186, 1, 0, 0, 0, 660, - 661, 7, 7, 0, 0, 661, 662, 7, 10, 0, 0, 662, 663, 7, 14, 0, 0, 663, 664, - 7, 1, 0, 0, 664, 188, 1, 0, 0, 0, 665, 670, 5, 34, 0, 0, 666, 669, 3, 285, - 142, 0, 667, 669, 3, 191, 95, 0, 668, 666, 1, 0, 0, 0, 668, 667, 1, 0, - 0, 0, 669, 672, 1, 0, 0, 0, 670, 668, 1, 0, 0, 0, 670, 671, 1, 0, 0, 0, - 671, 673, 1, 0, 0, 0, 672, 670, 1, 0, 0, 0, 673, 684, 5, 34, 0, 0, 674, - 679, 5, 39, 0, 0, 675, 678, 3, 265, 132, 0, 676, 678, 3, 191, 95, 0, 677, - 675, 1, 0, 0, 0, 677, 676, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 677, - 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 682, 1, 0, 0, 0, 681, 679, 1, 0, - 0, 0, 682, 684, 5, 39, 0, 0, 683, 665, 1, 0, 0, 0, 683, 674, 1, 0, 0, 0, - 684, 190, 1, 0, 0, 0, 685, 703, 5, 92, 0, 0, 686, 704, 7, 23, 0, 0, 687, - 688, 7, 0, 0, 0, 688, 689, 3, 201, 100, 0, 689, 690, 3, 201, 100, 0, 690, - 691, 3, 201, 100, 0, 691, 692, 3, 201, 100, 0, 692, 704, 1, 0, 0, 0, 693, - 694, 7, 0, 0, 0, 694, 695, 3, 201, 100, 0, 695, 696, 3, 201, 100, 0, 696, - 697, 3, 201, 100, 0, 697, 698, 3, 201, 100, 0, 698, 699, 3, 201, 100, 0, - 699, 700, 3, 201, 100, 0, 700, 701, 3, 201, 100, 0, 701, 702, 3, 201, 100, - 0, 702, 704, 1, 0, 0, 0, 703, 686, 1, 0, 0, 0, 703, 687, 1, 0, 0, 0, 703, - 693, 1, 0, 0, 0, 704, 192, 1, 0, 0, 0, 705, 706, 5, 48, 0, 0, 706, 707, - 5, 120, 0, 0, 707, 709, 1, 0, 0, 0, 708, 710, 3, 201, 100, 0, 709, 708, - 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 711, 712, 1, 0, - 0, 0, 712, 194, 1, 0, 0, 0, 713, 722, 3, 211, 105, 0, 714, 718, 3, 205, - 102, 0, 715, 717, 3, 203, 101, 0, 716, 715, 1, 0, 0, 0, 717, 720, 1, 0, - 0, 0, 718, 716, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 722, 1, 0, 0, 0, - 720, 718, 1, 0, 0, 0, 721, 713, 1, 0, 0, 0, 721, 714, 1, 0, 0, 0, 722, - 196, 1, 0, 0, 0, 723, 725, 3, 211, 105, 0, 724, 726, 3, 209, 104, 0, 725, - 724, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 727, 728, - 1, 0, 0, 0, 728, 198, 1, 0, 0, 0, 729, 731, 7, 24, 0, 0, 730, 729, 1, 0, - 0, 0, 731, 200, 1, 0, 0, 0, 732, 735, 3, 203, 101, 0, 733, 735, 3, 199, - 99, 0, 734, 732, 1, 0, 0, 0, 734, 733, 1, 0, 0, 0, 735, 202, 1, 0, 0, 0, - 736, 739, 3, 211, 105, 0, 737, 739, 3, 205, 102, 0, 738, 736, 1, 0, 0, - 0, 738, 737, 1, 0, 0, 0, 739, 204, 1, 0, 0, 0, 740, 743, 3, 207, 103, 0, - 741, 743, 2, 56, 57, 0, 742, 740, 1, 0, 0, 0, 742, 741, 1, 0, 0, 0, 743, - 206, 1, 0, 0, 0, 744, 745, 2, 49, 55, 0, 745, 208, 1, 0, 0, 0, 746, 749, - 3, 211, 105, 0, 747, 749, 3, 207, 103, 0, 748, 746, 1, 0, 0, 0, 748, 747, - 1, 0, 0, 0, 749, 210, 1, 0, 0, 0, 750, 751, 5, 48, 0, 0, 751, 212, 1, 0, - 0, 0, 752, 754, 3, 203, 101, 0, 753, 752, 1, 0, 0, 0, 754, 755, 1, 0, 0, - 0, 755, 753, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 775, 1, 0, 0, 0, 757, - 759, 3, 203, 101, 0, 758, 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 758, - 1, 0, 0, 0, 760, 761, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 764, 5, 46, - 0, 0, 763, 765, 3, 203, 101, 0, 764, 763, 1, 0, 0, 0, 765, 766, 1, 0, 0, - 0, 766, 764, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 775, 1, 0, 0, 0, 768, - 770, 5, 46, 0, 0, 769, 771, 3, 203, 101, 0, 770, 769, 1, 0, 0, 0, 771, - 772, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 772, 773, 1, 0, 0, 0, 773, 775, - 1, 0, 0, 0, 774, 753, 1, 0, 0, 0, 774, 758, 1, 0, 0, 0, 774, 768, 1, 0, - 0, 0, 775, 776, 1, 0, 0, 0, 776, 778, 7, 14, 0, 0, 777, 779, 5, 45, 0, - 0, 778, 777, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 781, 1, 0, 0, 0, 780, - 782, 3, 203, 101, 0, 781, 780, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 781, - 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 214, 1, 0, 0, 0, 785, 787, 3, 203, - 101, 0, 786, 785, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, - 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, - 793, 5, 46, 0, 0, 792, 794, 3, 203, 101, 0, 793, 792, 1, 0, 0, 0, 794, - 795, 1, 0, 0, 0, 795, 793, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 216, - 1, 0, 0, 0, 797, 798, 7, 9, 0, 0, 798, 799, 7, 3, 0, 0, 799, 800, 7, 1, - 0, 0, 800, 801, 7, 13, 0, 0, 801, 802, 7, 7, 0, 0, 802, 803, 7, 15, 0, - 0, 803, 804, 7, 4, 0, 0, 804, 805, 7, 2, 0, 0, 805, 806, 7, 1, 0, 0, 806, - 807, 7, 7, 0, 0, 807, 218, 1, 0, 0, 0, 808, 809, 7, 12, 0, 0, 809, 810, - 7, 3, 0, 0, 810, 220, 1, 0, 0, 0, 811, 812, 7, 22, 0, 0, 812, 813, 7, 3, - 0, 0, 813, 814, 7, 15, 0, 0, 814, 222, 1, 0, 0, 0, 815, 816, 7, 15, 0, - 0, 816, 817, 7, 14, 0, 0, 817, 818, 7, 25, 0, 0, 818, 819, 7, 0, 0, 0, - 819, 820, 7, 2, 0, 0, 820, 821, 7, 15, 0, 0, 821, 822, 7, 14, 0, 0, 822, - 224, 1, 0, 0, 0, 823, 824, 7, 0, 0, 0, 824, 825, 7, 1, 0, 0, 825, 826, - 7, 2, 0, 0, 826, 827, 7, 25, 0, 0, 827, 828, 7, 0, 0, 0, 828, 829, 7, 14, - 0, 0, 829, 226, 1, 0, 0, 0, 830, 831, 7, 8, 0, 0, 831, 832, 7, 4, 0, 0, - 832, 833, 7, 1, 0, 0, 833, 834, 7, 12, 0, 0, 834, 835, 7, 4, 0, 0, 835, - 836, 7, 7, 0, 0, 836, 837, 7, 3, 0, 0, 837, 838, 7, 15, 0, 0, 838, 839, - 7, 18, 0, 0, 839, 228, 1, 0, 0, 0, 840, 841, 7, 13, 0, 0, 841, 842, 7, - 9, 0, 0, 842, 843, 7, 4, 0, 0, 843, 844, 7, 5, 0, 0, 844, 845, 7, 4, 0, - 0, 845, 846, 7, 15, 0, 0, 846, 230, 1, 0, 0, 0, 847, 848, 7, 3, 0, 0, 848, - 849, 7, 22, 0, 0, 849, 232, 1, 0, 0, 0, 850, 851, 7, 4, 0, 0, 851, 852, - 7, 12, 0, 0, 852, 853, 7, 12, 0, 0, 853, 234, 1, 0, 0, 0, 854, 855, 7, - 12, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 3, 0, 0, 857, 858, 7, 6, - 0, 0, 858, 236, 1, 0, 0, 0, 859, 860, 7, 22, 0, 0, 860, 861, 7, 2, 0, 0, - 861, 862, 7, 5, 0, 0, 862, 863, 7, 7, 0, 0, 863, 864, 7, 14, 0, 0, 864, - 865, 7, 15, 0, 0, 865, 238, 1, 0, 0, 0, 866, 867, 7, 14, 0, 0, 867, 868, - 7, 21, 0, 0, 868, 869, 7, 7, 0, 0, 869, 870, 7, 15, 0, 0, 870, 871, 7, - 4, 0, 0, 871, 872, 7, 9, 0, 0, 872, 873, 7, 7, 0, 0, 873, 240, 1, 0, 0, - 0, 874, 878, 3, 243, 121, 0, 875, 877, 3, 245, 122, 0, 876, 875, 1, 0, - 0, 0, 877, 880, 1, 0, 0, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, - 879, 242, 1, 0, 0, 0, 880, 878, 1, 0, 0, 0, 881, 884, 3, 293, 146, 0, 882, - 884, 3, 281, 140, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 244, - 1, 0, 0, 0, 885, 888, 3, 261, 130, 0, 886, 888, 3, 277, 138, 0, 887, 885, - 1, 0, 0, 0, 887, 886, 1, 0, 0, 0, 888, 246, 1, 0, 0, 0, 889, 893, 5, 96, - 0, 0, 890, 892, 3, 257, 128, 0, 891, 890, 1, 0, 0, 0, 892, 895, 1, 0, 0, - 0, 893, 891, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 896, 1, 0, 0, 0, 895, - 893, 1, 0, 0, 0, 896, 898, 5, 96, 0, 0, 897, 889, 1, 0, 0, 0, 898, 899, - 1, 0, 0, 0, 899, 897, 1, 0, 0, 0, 899, 900, 1, 0, 0, 0, 900, 248, 1, 0, - 0, 0, 901, 903, 3, 251, 125, 0, 902, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, - 0, 904, 902, 1, 0, 0, 0, 904, 905, 1, 0, 0, 0, 905, 250, 1, 0, 0, 0, 906, - 919, 3, 279, 139, 0, 907, 919, 3, 283, 141, 0, 908, 919, 3, 287, 143, 0, - 909, 919, 3, 289, 144, 0, 910, 919, 3, 255, 127, 0, 911, 919, 3, 275, 137, - 0, 912, 919, 3, 273, 136, 0, 913, 919, 3, 271, 135, 0, 914, 919, 3, 259, - 129, 0, 915, 919, 3, 291, 145, 0, 916, 919, 7, 26, 0, 0, 917, 919, 3, 253, - 126, 0, 918, 906, 1, 0, 0, 0, 918, 907, 1, 0, 0, 0, 918, 908, 1, 0, 0, - 0, 918, 909, 1, 0, 0, 0, 918, 910, 1, 0, 0, 0, 918, 911, 1, 0, 0, 0, 918, - 912, 1, 0, 0, 0, 918, 913, 1, 0, 0, 0, 918, 914, 1, 0, 0, 0, 918, 915, - 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 252, 1, 0, - 0, 0, 920, 921, 5, 47, 0, 0, 921, 922, 5, 42, 0, 0, 922, 928, 1, 0, 0, - 0, 923, 927, 3, 263, 131, 0, 924, 925, 5, 42, 0, 0, 925, 927, 3, 269, 134, - 0, 926, 923, 1, 0, 0, 0, 926, 924, 1, 0, 0, 0, 927, 930, 1, 0, 0, 0, 928, - 926, 1, 0, 0, 0, 928, 929, 1, 0, 0, 0, 929, 931, 1, 0, 0, 0, 930, 928, - 1, 0, 0, 0, 931, 932, 5, 42, 0, 0, 932, 950, 5, 47, 0, 0, 933, 934, 5, - 47, 0, 0, 934, 935, 5, 47, 0, 0, 935, 939, 1, 0, 0, 0, 936, 938, 3, 267, - 133, 0, 937, 936, 1, 0, 0, 0, 938, 941, 1, 0, 0, 0, 939, 937, 1, 0, 0, - 0, 939, 940, 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 942, - 944, 3, 275, 137, 0, 943, 942, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 947, - 1, 0, 0, 0, 945, 948, 3, 287, 143, 0, 946, 948, 5, 0, 0, 1, 947, 945, 1, - 0, 0, 0, 947, 946, 1, 0, 0, 0, 948, 950, 1, 0, 0, 0, 949, 920, 1, 0, 0, - 0, 949, 933, 1, 0, 0, 0, 950, 254, 1, 0, 0, 0, 951, 952, 7, 27, 0, 0, 952, - 256, 1, 0, 0, 0, 953, 954, 8, 28, 0, 0, 954, 258, 1, 0, 0, 0, 955, 956, - 7, 29, 0, 0, 956, 260, 1, 0, 0, 0, 957, 958, 7, 30, 0, 0, 958, 262, 1, - 0, 0, 0, 959, 960, 8, 31, 0, 0, 960, 264, 1, 0, 0, 0, 961, 962, 8, 32, - 0, 0, 962, 266, 1, 0, 0, 0, 963, 964, 8, 33, 0, 0, 964, 268, 1, 0, 0, 0, - 965, 966, 8, 34, 0, 0, 966, 270, 1, 0, 0, 0, 967, 968, 7, 35, 0, 0, 968, - 272, 1, 0, 0, 0, 969, 970, 7, 36, 0, 0, 970, 274, 1, 0, 0, 0, 971, 972, - 7, 37, 0, 0, 972, 276, 1, 0, 0, 0, 973, 974, 7, 38, 0, 0, 974, 278, 1, - 0, 0, 0, 975, 976, 7, 39, 0, 0, 976, 280, 1, 0, 0, 0, 977, 978, 7, 40, - 0, 0, 978, 282, 1, 0, 0, 0, 979, 980, 7, 41, 0, 0, 980, 284, 1, 0, 0, 0, - 981, 982, 8, 42, 0, 0, 982, 286, 1, 0, 0, 0, 983, 984, 7, 43, 0, 0, 984, - 288, 1, 0, 0, 0, 985, 986, 7, 44, 0, 0, 986, 290, 1, 0, 0, 0, 987, 988, - 7, 45, 0, 0, 988, 292, 1, 0, 0, 0, 989, 990, 7, 46, 0, 0, 990, 294, 1, - 0, 0, 0, 38, 0, 668, 670, 677, 679, 683, 703, 711, 718, 721, 727, 730, - 734, 738, 742, 748, 755, 760, 766, 772, 774, 778, 783, 788, 795, 878, 883, - 887, 893, 899, 904, 918, 926, 928, 939, 943, 947, 949, 0, - } - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// CypherLexerInit initializes any static state used to implement CypherLexer. By default the -// static state used to implement the lexer is lazily initialized during the first call to -// NewCypherLexer(). You can call this function if you wish to initialize the static state ahead -// of time. -func CypherLexerInit() { - staticData := &cypherlexerLexerStaticData - staticData.once.Do(cypherlexerLexerInit) -} - -// NewCypherLexer produces a new lexer instance for the optional input antlr.CharStream. -func NewCypherLexer(input antlr.CharStream) *CypherLexer { - CypherLexerInit() - l := new(CypherLexer) - l.BaseLexer = antlr.NewBaseLexer(input) - staticData := &cypherlexerLexerStaticData - l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - l.channelNames = staticData.channelNames - l.modeNames = staticData.modeNames - l.RuleNames = staticData.ruleNames - l.LiteralNames = staticData.literalNames - l.SymbolicNames = staticData.symbolicNames - l.GrammarFileName = "Cypher.g4" - // TODO: l.EOF = antlr.TokenEOF - - return l -} - -// CypherLexer tokens. -const ( - CypherLexerT__0 = 1 - CypherLexerT__1 = 2 - CypherLexerT__2 = 3 - CypherLexerT__3 = 4 - CypherLexerT__4 = 5 - CypherLexerT__5 = 6 - CypherLexerT__6 = 7 - CypherLexerT__7 = 8 - CypherLexerT__8 = 9 - CypherLexerT__9 = 10 - CypherLexerT__10 = 11 - CypherLexerT__11 = 12 - CypherLexerT__12 = 13 - CypherLexerT__13 = 14 - CypherLexerT__14 = 15 - CypherLexerT__15 = 16 - CypherLexerT__16 = 17 - CypherLexerT__17 = 18 - CypherLexerT__18 = 19 - CypherLexerT__19 = 20 - CypherLexerT__20 = 21 - CypherLexerT__21 = 22 - CypherLexerT__22 = 23 - CypherLexerT__23 = 24 - CypherLexerT__24 = 25 - CypherLexerT__25 = 26 - CypherLexerT__26 = 27 - CypherLexerT__27 = 28 - CypherLexerT__28 = 29 - CypherLexerT__29 = 30 - CypherLexerT__30 = 31 - CypherLexerT__31 = 32 - CypherLexerT__32 = 33 - CypherLexerT__33 = 34 - CypherLexerT__34 = 35 - CypherLexerT__35 = 36 - CypherLexerT__36 = 37 - CypherLexerT__37 = 38 - CypherLexerT__38 = 39 - CypherLexerT__39 = 40 - CypherLexerT__40 = 41 - CypherLexerT__41 = 42 - CypherLexerT__42 = 43 - CypherLexerT__43 = 44 - CypherLexerT__44 = 45 - CypherLexerUNION = 46 - CypherLexerALL = 47 - CypherLexerOPTIONAL = 48 - CypherLexerMATCH = 49 - CypherLexerUNWIND = 50 - CypherLexerAS = 51 - CypherLexerMERGE = 52 - CypherLexerON = 53 - CypherLexerCREATE = 54 - CypherLexerSET = 55 - CypherLexerDETACH = 56 - CypherLexerDELETE = 57 - CypherLexerREMOVE = 58 - CypherLexerCALL = 59 - CypherLexerYIELD = 60 - CypherLexerWITH = 61 - CypherLexerRETURN = 62 - CypherLexerDISTINCT = 63 - CypherLexerORDER = 64 - CypherLexerBY = 65 - CypherLexerL_SKIP = 66 - CypherLexerLIMIT = 67 - CypherLexerASCENDING = 68 - CypherLexerASC = 69 - CypherLexerDESCENDING = 70 - CypherLexerDESC = 71 - CypherLexerWHERE = 72 - CypherLexerOR = 73 - CypherLexerXOR = 74 - CypherLexerAND = 75 - CypherLexerNOT = 76 - CypherLexerIN = 77 - CypherLexerSTARTS = 78 - CypherLexerENDS = 79 - CypherLexerCONTAINS = 80 - CypherLexerIS = 81 - CypherLexerNULL = 82 - CypherLexerCOUNT = 83 - CypherLexerANY = 84 - CypherLexerNONE = 85 - CypherLexerSINGLE = 86 - CypherLexerTRUE = 87 - CypherLexerFALSE = 88 - CypherLexerEXISTS = 89 - CypherLexerCASE = 90 - CypherLexerELSE = 91 - CypherLexerEND = 92 - CypherLexerWHEN = 93 - CypherLexerTHEN = 94 - CypherLexerStringLiteral = 95 - CypherLexerEscapedChar = 96 - CypherLexerHexInteger = 97 - CypherLexerDecimalInteger = 98 - CypherLexerOctalInteger = 99 - CypherLexerHexLetter = 100 - CypherLexerHexDigit = 101 - CypherLexerDigit = 102 - CypherLexerNonZeroDigit = 103 - CypherLexerNonZeroOctDigit = 104 - CypherLexerOctDigit = 105 - CypherLexerZeroDigit = 106 - CypherLexerExponentDecimalReal = 107 - CypherLexerRegularDecimalReal = 108 - CypherLexerCONSTRAINT = 109 - CypherLexerDO = 110 - CypherLexerFOR = 111 - CypherLexerREQUIRE = 112 - CypherLexerUNIQUE = 113 - CypherLexerMANDATORY = 114 - CypherLexerSCALAR = 115 - CypherLexerOF = 116 - CypherLexerADD = 117 - CypherLexerDROP = 118 - CypherLexerFILTER = 119 - CypherLexerEXTRACT = 120 - CypherLexerUnescapedSymbolicName = 121 - CypherLexerIdentifierStart = 122 - CypherLexerIdentifierPart = 123 - CypherLexerEscapedSymbolicName = 124 - CypherLexerSP = 125 - CypherLexerWHITESPACE = 126 - CypherLexerComment = 127 -) diff --git a/endpoints/cypher/parser/cypher_listener.go b/endpoints/cypher/parser/cypher_listener.go deleted file mode 100644 index 1ee4d140..00000000 --- a/endpoints/cypher/parser/cypher_listener.go +++ /dev/null @@ -1,610 +0,0 @@ -// Code generated from Cypher.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Cypher - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// CypherListener is a complete listener for a parse tree produced by CypherParser. -type CypherListener interface { - antlr.ParseTreeListener - - // EnterOC_Cypher is called when entering the oC_Cypher production. - EnterOC_Cypher(c *OC_CypherContext) - - // EnterOC_Statement is called when entering the oC_Statement production. - EnterOC_Statement(c *OC_StatementContext) - - // EnterOC_Query is called when entering the oC_Query production. - EnterOC_Query(c *OC_QueryContext) - - // EnterOC_RegularQuery is called when entering the oC_RegularQuery production. - EnterOC_RegularQuery(c *OC_RegularQueryContext) - - // EnterOC_Union is called when entering the oC_Union production. - EnterOC_Union(c *OC_UnionContext) - - // EnterOC_SingleQuery is called when entering the oC_SingleQuery production. - EnterOC_SingleQuery(c *OC_SingleQueryContext) - - // EnterOC_SinglePartQuery is called when entering the oC_SinglePartQuery production. - EnterOC_SinglePartQuery(c *OC_SinglePartQueryContext) - - // EnterOC_MultiPartQuery is called when entering the oC_MultiPartQuery production. - EnterOC_MultiPartQuery(c *OC_MultiPartQueryContext) - - // EnterOC_UpdatingClause is called when entering the oC_UpdatingClause production. - EnterOC_UpdatingClause(c *OC_UpdatingClauseContext) - - // EnterOC_ReadingClause is called when entering the oC_ReadingClause production. - EnterOC_ReadingClause(c *OC_ReadingClauseContext) - - // EnterOC_Match is called when entering the oC_Match production. - EnterOC_Match(c *OC_MatchContext) - - // EnterOC_Unwind is called when entering the oC_Unwind production. - EnterOC_Unwind(c *OC_UnwindContext) - - // EnterOC_Merge is called when entering the oC_Merge production. - EnterOC_Merge(c *OC_MergeContext) - - // EnterOC_MergeAction is called when entering the oC_MergeAction production. - EnterOC_MergeAction(c *OC_MergeActionContext) - - // EnterOC_Create is called when entering the oC_Create production. - EnterOC_Create(c *OC_CreateContext) - - // EnterOC_Set is called when entering the oC_Set production. - EnterOC_Set(c *OC_SetContext) - - // EnterOC_SetItem is called when entering the oC_SetItem production. - EnterOC_SetItem(c *OC_SetItemContext) - - // EnterOC_Delete is called when entering the oC_Delete production. - EnterOC_Delete(c *OC_DeleteContext) - - // EnterOC_Remove is called when entering the oC_Remove production. - EnterOC_Remove(c *OC_RemoveContext) - - // EnterOC_RemoveItem is called when entering the oC_RemoveItem production. - EnterOC_RemoveItem(c *OC_RemoveItemContext) - - // EnterOC_InQueryCall is called when entering the oC_InQueryCall production. - EnterOC_InQueryCall(c *OC_InQueryCallContext) - - // EnterOC_StandaloneCall is called when entering the oC_StandaloneCall production. - EnterOC_StandaloneCall(c *OC_StandaloneCallContext) - - // EnterOC_YieldItems is called when entering the oC_YieldItems production. - EnterOC_YieldItems(c *OC_YieldItemsContext) - - // EnterOC_YieldItem is called when entering the oC_YieldItem production. - EnterOC_YieldItem(c *OC_YieldItemContext) - - // EnterOC_With is called when entering the oC_With production. - EnterOC_With(c *OC_WithContext) - - // EnterOC_Return is called when entering the oC_Return production. - EnterOC_Return(c *OC_ReturnContext) - - // EnterOC_ProjectionBody is called when entering the oC_ProjectionBody production. - EnterOC_ProjectionBody(c *OC_ProjectionBodyContext) - - // EnterOC_ProjectionItems is called when entering the oC_ProjectionItems production. - EnterOC_ProjectionItems(c *OC_ProjectionItemsContext) - - // EnterOC_ProjectionItem is called when entering the oC_ProjectionItem production. - EnterOC_ProjectionItem(c *OC_ProjectionItemContext) - - // EnterOC_Order is called when entering the oC_Order production. - EnterOC_Order(c *OC_OrderContext) - - // EnterOC_Skip is called when entering the oC_Skip production. - EnterOC_Skip(c *OC_SkipContext) - - // EnterOC_Limit is called when entering the oC_Limit production. - EnterOC_Limit(c *OC_LimitContext) - - // EnterOC_SortItem is called when entering the oC_SortItem production. - EnterOC_SortItem(c *OC_SortItemContext) - - // EnterOC_Where is called when entering the oC_Where production. - EnterOC_Where(c *OC_WhereContext) - - // EnterOC_Pattern is called when entering the oC_Pattern production. - EnterOC_Pattern(c *OC_PatternContext) - - // EnterOC_PatternPart is called when entering the oC_PatternPart production. - EnterOC_PatternPart(c *OC_PatternPartContext) - - // EnterOC_AnonymousPatternPart is called when entering the oC_AnonymousPatternPart production. - EnterOC_AnonymousPatternPart(c *OC_AnonymousPatternPartContext) - - // EnterOC_PatternElement is called when entering the oC_PatternElement production. - EnterOC_PatternElement(c *OC_PatternElementContext) - - // EnterOC_NodePattern is called when entering the oC_NodePattern production. - EnterOC_NodePattern(c *OC_NodePatternContext) - - // EnterOC_PatternElementChain is called when entering the oC_PatternElementChain production. - EnterOC_PatternElementChain(c *OC_PatternElementChainContext) - - // EnterOC_RelationshipPattern is called when entering the oC_RelationshipPattern production. - EnterOC_RelationshipPattern(c *OC_RelationshipPatternContext) - - // EnterOC_RelationshipDetail is called when entering the oC_RelationshipDetail production. - EnterOC_RelationshipDetail(c *OC_RelationshipDetailContext) - - // EnterOC_Properties is called when entering the oC_Properties production. - EnterOC_Properties(c *OC_PropertiesContext) - - // EnterOC_RelationshipTypes is called when entering the oC_RelationshipTypes production. - EnterOC_RelationshipTypes(c *OC_RelationshipTypesContext) - - // EnterOC_NodeLabels is called when entering the oC_NodeLabels production. - EnterOC_NodeLabels(c *OC_NodeLabelsContext) - - // EnterOC_NodeLabel is called when entering the oC_NodeLabel production. - EnterOC_NodeLabel(c *OC_NodeLabelContext) - - // EnterOC_RangeLiteral is called when entering the oC_RangeLiteral production. - EnterOC_RangeLiteral(c *OC_RangeLiteralContext) - - // EnterOC_LabelName is called when entering the oC_LabelName production. - EnterOC_LabelName(c *OC_LabelNameContext) - - // EnterOC_RelTypeName is called when entering the oC_RelTypeName production. - EnterOC_RelTypeName(c *OC_RelTypeNameContext) - - // EnterOC_Expression is called when entering the oC_Expression production. - EnterOC_Expression(c *OC_ExpressionContext) - - // EnterOC_OrExpression is called when entering the oC_OrExpression production. - EnterOC_OrExpression(c *OC_OrExpressionContext) - - // EnterOC_XorExpression is called when entering the oC_XorExpression production. - EnterOC_XorExpression(c *OC_XorExpressionContext) - - // EnterOC_AndExpression is called when entering the oC_AndExpression production. - EnterOC_AndExpression(c *OC_AndExpressionContext) - - // EnterOC_NotExpression is called when entering the oC_NotExpression production. - EnterOC_NotExpression(c *OC_NotExpressionContext) - - // EnterOC_ComparisonExpression is called when entering the oC_ComparisonExpression production. - EnterOC_ComparisonExpression(c *OC_ComparisonExpressionContext) - - // EnterOC_AddOrSubtractExpression is called when entering the oC_AddOrSubtractExpression production. - EnterOC_AddOrSubtractExpression(c *OC_AddOrSubtractExpressionContext) - - // EnterOC_MultiplyDivideModuloExpression is called when entering the oC_MultiplyDivideModuloExpression production. - EnterOC_MultiplyDivideModuloExpression(c *OC_MultiplyDivideModuloExpressionContext) - - // EnterOC_PowerOfExpression is called when entering the oC_PowerOfExpression production. - EnterOC_PowerOfExpression(c *OC_PowerOfExpressionContext) - - // EnterOC_UnaryAddOrSubtractExpression is called when entering the oC_UnaryAddOrSubtractExpression production. - EnterOC_UnaryAddOrSubtractExpression(c *OC_UnaryAddOrSubtractExpressionContext) - - // EnterOC_StringListNullOperatorExpression is called when entering the oC_StringListNullOperatorExpression production. - EnterOC_StringListNullOperatorExpression(c *OC_StringListNullOperatorExpressionContext) - - // EnterOC_ListOperatorExpression is called when entering the oC_ListOperatorExpression production. - EnterOC_ListOperatorExpression(c *OC_ListOperatorExpressionContext) - - // EnterOC_StringOperatorExpression is called when entering the oC_StringOperatorExpression production. - EnterOC_StringOperatorExpression(c *OC_StringOperatorExpressionContext) - - // EnterOC_NullOperatorExpression is called when entering the oC_NullOperatorExpression production. - EnterOC_NullOperatorExpression(c *OC_NullOperatorExpressionContext) - - // EnterOC_PropertyOrLabelsExpression is called when entering the oC_PropertyOrLabelsExpression production. - EnterOC_PropertyOrLabelsExpression(c *OC_PropertyOrLabelsExpressionContext) - - // EnterOC_Atom is called when entering the oC_Atom production. - EnterOC_Atom(c *OC_AtomContext) - - // EnterOC_Literal is called when entering the oC_Literal production. - EnterOC_Literal(c *OC_LiteralContext) - - // EnterOC_BooleanLiteral is called when entering the oC_BooleanLiteral production. - EnterOC_BooleanLiteral(c *OC_BooleanLiteralContext) - - // EnterOC_ListLiteral is called when entering the oC_ListLiteral production. - EnterOC_ListLiteral(c *OC_ListLiteralContext) - - // EnterOC_PartialComparisonExpression is called when entering the oC_PartialComparisonExpression production. - EnterOC_PartialComparisonExpression(c *OC_PartialComparisonExpressionContext) - - // EnterOC_ParenthesizedExpression is called when entering the oC_ParenthesizedExpression production. - EnterOC_ParenthesizedExpression(c *OC_ParenthesizedExpressionContext) - - // EnterOC_RelationshipsPattern is called when entering the oC_RelationshipsPattern production. - EnterOC_RelationshipsPattern(c *OC_RelationshipsPatternContext) - - // EnterOC_FilterExpression is called when entering the oC_FilterExpression production. - EnterOC_FilterExpression(c *OC_FilterExpressionContext) - - // EnterOC_IdInColl is called when entering the oC_IdInColl production. - EnterOC_IdInColl(c *OC_IdInCollContext) - - // EnterOC_FunctionInvocation is called when entering the oC_FunctionInvocation production. - EnterOC_FunctionInvocation(c *OC_FunctionInvocationContext) - - // EnterOC_FunctionName is called when entering the oC_FunctionName production. - EnterOC_FunctionName(c *OC_FunctionNameContext) - - // EnterOC_ExistentialSubquery is called when entering the oC_ExistentialSubquery production. - EnterOC_ExistentialSubquery(c *OC_ExistentialSubqueryContext) - - // EnterOC_ExplicitProcedureInvocation is called when entering the oC_ExplicitProcedureInvocation production. - EnterOC_ExplicitProcedureInvocation(c *OC_ExplicitProcedureInvocationContext) - - // EnterOC_ImplicitProcedureInvocation is called when entering the oC_ImplicitProcedureInvocation production. - EnterOC_ImplicitProcedureInvocation(c *OC_ImplicitProcedureInvocationContext) - - // EnterOC_ProcedureResultField is called when entering the oC_ProcedureResultField production. - EnterOC_ProcedureResultField(c *OC_ProcedureResultFieldContext) - - // EnterOC_ProcedureName is called when entering the oC_ProcedureName production. - EnterOC_ProcedureName(c *OC_ProcedureNameContext) - - // EnterOC_Namespace is called when entering the oC_Namespace production. - EnterOC_Namespace(c *OC_NamespaceContext) - - // EnterOC_ListComprehension is called when entering the oC_ListComprehension production. - EnterOC_ListComprehension(c *OC_ListComprehensionContext) - - // EnterOC_PatternComprehension is called when entering the oC_PatternComprehension production. - EnterOC_PatternComprehension(c *OC_PatternComprehensionContext) - - // EnterOC_PropertyLookup is called when entering the oC_PropertyLookup production. - EnterOC_PropertyLookup(c *OC_PropertyLookupContext) - - // EnterOC_CaseExpression is called when entering the oC_CaseExpression production. - EnterOC_CaseExpression(c *OC_CaseExpressionContext) - - // EnterOC_CaseAlternative is called when entering the oC_CaseAlternative production. - EnterOC_CaseAlternative(c *OC_CaseAlternativeContext) - - // EnterOC_Variable is called when entering the oC_Variable production. - EnterOC_Variable(c *OC_VariableContext) - - // EnterOC_NumberLiteral is called when entering the oC_NumberLiteral production. - EnterOC_NumberLiteral(c *OC_NumberLiteralContext) - - // EnterOC_MapLiteral is called when entering the oC_MapLiteral production. - EnterOC_MapLiteral(c *OC_MapLiteralContext) - - // EnterOC_Parameter is called when entering the oC_Parameter production. - EnterOC_Parameter(c *OC_ParameterContext) - - // EnterOC_PropertyExpression is called when entering the oC_PropertyExpression production. - EnterOC_PropertyExpression(c *OC_PropertyExpressionContext) - - // EnterOC_PropertyKeyName is called when entering the oC_PropertyKeyName production. - EnterOC_PropertyKeyName(c *OC_PropertyKeyNameContext) - - // EnterOC_IntegerLiteral is called when entering the oC_IntegerLiteral production. - EnterOC_IntegerLiteral(c *OC_IntegerLiteralContext) - - // EnterOC_DoubleLiteral is called when entering the oC_DoubleLiteral production. - EnterOC_DoubleLiteral(c *OC_DoubleLiteralContext) - - // EnterOC_SchemaName is called when entering the oC_SchemaName production. - EnterOC_SchemaName(c *OC_SchemaNameContext) - - // EnterOC_ReservedWord is called when entering the oC_ReservedWord production. - EnterOC_ReservedWord(c *OC_ReservedWordContext) - - // EnterOC_SymbolicName is called when entering the oC_SymbolicName production. - EnterOC_SymbolicName(c *OC_SymbolicNameContext) - - // EnterOC_LeftArrowHead is called when entering the oC_LeftArrowHead production. - EnterOC_LeftArrowHead(c *OC_LeftArrowHeadContext) - - // EnterOC_RightArrowHead is called when entering the oC_RightArrowHead production. - EnterOC_RightArrowHead(c *OC_RightArrowHeadContext) - - // EnterOC_Dash is called when entering the oC_Dash production. - EnterOC_Dash(c *OC_DashContext) - - // ExitOC_Cypher is called when exiting the oC_Cypher production. - ExitOC_Cypher(c *OC_CypherContext) - - // ExitOC_Statement is called when exiting the oC_Statement production. - ExitOC_Statement(c *OC_StatementContext) - - // ExitOC_Query is called when exiting the oC_Query production. - ExitOC_Query(c *OC_QueryContext) - - // ExitOC_RegularQuery is called when exiting the oC_RegularQuery production. - ExitOC_RegularQuery(c *OC_RegularQueryContext) - - // ExitOC_Union is called when exiting the oC_Union production. - ExitOC_Union(c *OC_UnionContext) - - // ExitOC_SingleQuery is called when exiting the oC_SingleQuery production. - ExitOC_SingleQuery(c *OC_SingleQueryContext) - - // ExitOC_SinglePartQuery is called when exiting the oC_SinglePartQuery production. - ExitOC_SinglePartQuery(c *OC_SinglePartQueryContext) - - // ExitOC_MultiPartQuery is called when exiting the oC_MultiPartQuery production. - ExitOC_MultiPartQuery(c *OC_MultiPartQueryContext) - - // ExitOC_UpdatingClause is called when exiting the oC_UpdatingClause production. - ExitOC_UpdatingClause(c *OC_UpdatingClauseContext) - - // ExitOC_ReadingClause is called when exiting the oC_ReadingClause production. - ExitOC_ReadingClause(c *OC_ReadingClauseContext) - - // ExitOC_Match is called when exiting the oC_Match production. - ExitOC_Match(c *OC_MatchContext) - - // ExitOC_Unwind is called when exiting the oC_Unwind production. - ExitOC_Unwind(c *OC_UnwindContext) - - // ExitOC_Merge is called when exiting the oC_Merge production. - ExitOC_Merge(c *OC_MergeContext) - - // ExitOC_MergeAction is called when exiting the oC_MergeAction production. - ExitOC_MergeAction(c *OC_MergeActionContext) - - // ExitOC_Create is called when exiting the oC_Create production. - ExitOC_Create(c *OC_CreateContext) - - // ExitOC_Set is called when exiting the oC_Set production. - ExitOC_Set(c *OC_SetContext) - - // ExitOC_SetItem is called when exiting the oC_SetItem production. - ExitOC_SetItem(c *OC_SetItemContext) - - // ExitOC_Delete is called when exiting the oC_Delete production. - ExitOC_Delete(c *OC_DeleteContext) - - // ExitOC_Remove is called when exiting the oC_Remove production. - ExitOC_Remove(c *OC_RemoveContext) - - // ExitOC_RemoveItem is called when exiting the oC_RemoveItem production. - ExitOC_RemoveItem(c *OC_RemoveItemContext) - - // ExitOC_InQueryCall is called when exiting the oC_InQueryCall production. - ExitOC_InQueryCall(c *OC_InQueryCallContext) - - // ExitOC_StandaloneCall is called when exiting the oC_StandaloneCall production. - ExitOC_StandaloneCall(c *OC_StandaloneCallContext) - - // ExitOC_YieldItems is called when exiting the oC_YieldItems production. - ExitOC_YieldItems(c *OC_YieldItemsContext) - - // ExitOC_YieldItem is called when exiting the oC_YieldItem production. - ExitOC_YieldItem(c *OC_YieldItemContext) - - // ExitOC_With is called when exiting the oC_With production. - ExitOC_With(c *OC_WithContext) - - // ExitOC_Return is called when exiting the oC_Return production. - ExitOC_Return(c *OC_ReturnContext) - - // ExitOC_ProjectionBody is called when exiting the oC_ProjectionBody production. - ExitOC_ProjectionBody(c *OC_ProjectionBodyContext) - - // ExitOC_ProjectionItems is called when exiting the oC_ProjectionItems production. - ExitOC_ProjectionItems(c *OC_ProjectionItemsContext) - - // ExitOC_ProjectionItem is called when exiting the oC_ProjectionItem production. - ExitOC_ProjectionItem(c *OC_ProjectionItemContext) - - // ExitOC_Order is called when exiting the oC_Order production. - ExitOC_Order(c *OC_OrderContext) - - // ExitOC_Skip is called when exiting the oC_Skip production. - ExitOC_Skip(c *OC_SkipContext) - - // ExitOC_Limit is called when exiting the oC_Limit production. - ExitOC_Limit(c *OC_LimitContext) - - // ExitOC_SortItem is called when exiting the oC_SortItem production. - ExitOC_SortItem(c *OC_SortItemContext) - - // ExitOC_Where is called when exiting the oC_Where production. - ExitOC_Where(c *OC_WhereContext) - - // ExitOC_Pattern is called when exiting the oC_Pattern production. - ExitOC_Pattern(c *OC_PatternContext) - - // ExitOC_PatternPart is called when exiting the oC_PatternPart production. - ExitOC_PatternPart(c *OC_PatternPartContext) - - // ExitOC_AnonymousPatternPart is called when exiting the oC_AnonymousPatternPart production. - ExitOC_AnonymousPatternPart(c *OC_AnonymousPatternPartContext) - - // ExitOC_PatternElement is called when exiting the oC_PatternElement production. - ExitOC_PatternElement(c *OC_PatternElementContext) - - // ExitOC_NodePattern is called when exiting the oC_NodePattern production. - ExitOC_NodePattern(c *OC_NodePatternContext) - - // ExitOC_PatternElementChain is called when exiting the oC_PatternElementChain production. - ExitOC_PatternElementChain(c *OC_PatternElementChainContext) - - // ExitOC_RelationshipPattern is called when exiting the oC_RelationshipPattern production. - ExitOC_RelationshipPattern(c *OC_RelationshipPatternContext) - - // ExitOC_RelationshipDetail is called when exiting the oC_RelationshipDetail production. - ExitOC_RelationshipDetail(c *OC_RelationshipDetailContext) - - // ExitOC_Properties is called when exiting the oC_Properties production. - ExitOC_Properties(c *OC_PropertiesContext) - - // ExitOC_RelationshipTypes is called when exiting the oC_RelationshipTypes production. - ExitOC_RelationshipTypes(c *OC_RelationshipTypesContext) - - // ExitOC_NodeLabels is called when exiting the oC_NodeLabels production. - ExitOC_NodeLabels(c *OC_NodeLabelsContext) - - // ExitOC_NodeLabel is called when exiting the oC_NodeLabel production. - ExitOC_NodeLabel(c *OC_NodeLabelContext) - - // ExitOC_RangeLiteral is called when exiting the oC_RangeLiteral production. - ExitOC_RangeLiteral(c *OC_RangeLiteralContext) - - // ExitOC_LabelName is called when exiting the oC_LabelName production. - ExitOC_LabelName(c *OC_LabelNameContext) - - // ExitOC_RelTypeName is called when exiting the oC_RelTypeName production. - ExitOC_RelTypeName(c *OC_RelTypeNameContext) - - // ExitOC_Expression is called when exiting the oC_Expression production. - ExitOC_Expression(c *OC_ExpressionContext) - - // ExitOC_OrExpression is called when exiting the oC_OrExpression production. - ExitOC_OrExpression(c *OC_OrExpressionContext) - - // ExitOC_XorExpression is called when exiting the oC_XorExpression production. - ExitOC_XorExpression(c *OC_XorExpressionContext) - - // ExitOC_AndExpression is called when exiting the oC_AndExpression production. - ExitOC_AndExpression(c *OC_AndExpressionContext) - - // ExitOC_NotExpression is called when exiting the oC_NotExpression production. - ExitOC_NotExpression(c *OC_NotExpressionContext) - - // ExitOC_ComparisonExpression is called when exiting the oC_ComparisonExpression production. - ExitOC_ComparisonExpression(c *OC_ComparisonExpressionContext) - - // ExitOC_AddOrSubtractExpression is called when exiting the oC_AddOrSubtractExpression production. - ExitOC_AddOrSubtractExpression(c *OC_AddOrSubtractExpressionContext) - - // ExitOC_MultiplyDivideModuloExpression is called when exiting the oC_MultiplyDivideModuloExpression production. - ExitOC_MultiplyDivideModuloExpression(c *OC_MultiplyDivideModuloExpressionContext) - - // ExitOC_PowerOfExpression is called when exiting the oC_PowerOfExpression production. - ExitOC_PowerOfExpression(c *OC_PowerOfExpressionContext) - - // ExitOC_UnaryAddOrSubtractExpression is called when exiting the oC_UnaryAddOrSubtractExpression production. - ExitOC_UnaryAddOrSubtractExpression(c *OC_UnaryAddOrSubtractExpressionContext) - - // ExitOC_StringListNullOperatorExpression is called when exiting the oC_StringListNullOperatorExpression production. - ExitOC_StringListNullOperatorExpression(c *OC_StringListNullOperatorExpressionContext) - - // ExitOC_ListOperatorExpression is called when exiting the oC_ListOperatorExpression production. - ExitOC_ListOperatorExpression(c *OC_ListOperatorExpressionContext) - - // ExitOC_StringOperatorExpression is called when exiting the oC_StringOperatorExpression production. - ExitOC_StringOperatorExpression(c *OC_StringOperatorExpressionContext) - - // ExitOC_NullOperatorExpression is called when exiting the oC_NullOperatorExpression production. - ExitOC_NullOperatorExpression(c *OC_NullOperatorExpressionContext) - - // ExitOC_PropertyOrLabelsExpression is called when exiting the oC_PropertyOrLabelsExpression production. - ExitOC_PropertyOrLabelsExpression(c *OC_PropertyOrLabelsExpressionContext) - - // ExitOC_Atom is called when exiting the oC_Atom production. - ExitOC_Atom(c *OC_AtomContext) - - // ExitOC_Literal is called when exiting the oC_Literal production. - ExitOC_Literal(c *OC_LiteralContext) - - // ExitOC_BooleanLiteral is called when exiting the oC_BooleanLiteral production. - ExitOC_BooleanLiteral(c *OC_BooleanLiteralContext) - - // ExitOC_ListLiteral is called when exiting the oC_ListLiteral production. - ExitOC_ListLiteral(c *OC_ListLiteralContext) - - // ExitOC_PartialComparisonExpression is called when exiting the oC_PartialComparisonExpression production. - ExitOC_PartialComparisonExpression(c *OC_PartialComparisonExpressionContext) - - // ExitOC_ParenthesizedExpression is called when exiting the oC_ParenthesizedExpression production. - ExitOC_ParenthesizedExpression(c *OC_ParenthesizedExpressionContext) - - // ExitOC_RelationshipsPattern is called when exiting the oC_RelationshipsPattern production. - ExitOC_RelationshipsPattern(c *OC_RelationshipsPatternContext) - - // ExitOC_FilterExpression is called when exiting the oC_FilterExpression production. - ExitOC_FilterExpression(c *OC_FilterExpressionContext) - - // ExitOC_IdInColl is called when exiting the oC_IdInColl production. - ExitOC_IdInColl(c *OC_IdInCollContext) - - // ExitOC_FunctionInvocation is called when exiting the oC_FunctionInvocation production. - ExitOC_FunctionInvocation(c *OC_FunctionInvocationContext) - - // ExitOC_FunctionName is called when exiting the oC_FunctionName production. - ExitOC_FunctionName(c *OC_FunctionNameContext) - - // ExitOC_ExistentialSubquery is called when exiting the oC_ExistentialSubquery production. - ExitOC_ExistentialSubquery(c *OC_ExistentialSubqueryContext) - - // ExitOC_ExplicitProcedureInvocation is called when exiting the oC_ExplicitProcedureInvocation production. - ExitOC_ExplicitProcedureInvocation(c *OC_ExplicitProcedureInvocationContext) - - // ExitOC_ImplicitProcedureInvocation is called when exiting the oC_ImplicitProcedureInvocation production. - ExitOC_ImplicitProcedureInvocation(c *OC_ImplicitProcedureInvocationContext) - - // ExitOC_ProcedureResultField is called when exiting the oC_ProcedureResultField production. - ExitOC_ProcedureResultField(c *OC_ProcedureResultFieldContext) - - // ExitOC_ProcedureName is called when exiting the oC_ProcedureName production. - ExitOC_ProcedureName(c *OC_ProcedureNameContext) - - // ExitOC_Namespace is called when exiting the oC_Namespace production. - ExitOC_Namespace(c *OC_NamespaceContext) - - // ExitOC_ListComprehension is called when exiting the oC_ListComprehension production. - ExitOC_ListComprehension(c *OC_ListComprehensionContext) - - // ExitOC_PatternComprehension is called when exiting the oC_PatternComprehension production. - ExitOC_PatternComprehension(c *OC_PatternComprehensionContext) - - // ExitOC_PropertyLookup is called when exiting the oC_PropertyLookup production. - ExitOC_PropertyLookup(c *OC_PropertyLookupContext) - - // ExitOC_CaseExpression is called when exiting the oC_CaseExpression production. - ExitOC_CaseExpression(c *OC_CaseExpressionContext) - - // ExitOC_CaseAlternative is called when exiting the oC_CaseAlternative production. - ExitOC_CaseAlternative(c *OC_CaseAlternativeContext) - - // ExitOC_Variable is called when exiting the oC_Variable production. - ExitOC_Variable(c *OC_VariableContext) - - // ExitOC_NumberLiteral is called when exiting the oC_NumberLiteral production. - ExitOC_NumberLiteral(c *OC_NumberLiteralContext) - - // ExitOC_MapLiteral is called when exiting the oC_MapLiteral production. - ExitOC_MapLiteral(c *OC_MapLiteralContext) - - // ExitOC_Parameter is called when exiting the oC_Parameter production. - ExitOC_Parameter(c *OC_ParameterContext) - - // ExitOC_PropertyExpression is called when exiting the oC_PropertyExpression production. - ExitOC_PropertyExpression(c *OC_PropertyExpressionContext) - - // ExitOC_PropertyKeyName is called when exiting the oC_PropertyKeyName production. - ExitOC_PropertyKeyName(c *OC_PropertyKeyNameContext) - - // ExitOC_IntegerLiteral is called when exiting the oC_IntegerLiteral production. - ExitOC_IntegerLiteral(c *OC_IntegerLiteralContext) - - // ExitOC_DoubleLiteral is called when exiting the oC_DoubleLiteral production. - ExitOC_DoubleLiteral(c *OC_DoubleLiteralContext) - - // ExitOC_SchemaName is called when exiting the oC_SchemaName production. - ExitOC_SchemaName(c *OC_SchemaNameContext) - - // ExitOC_ReservedWord is called when exiting the oC_ReservedWord production. - ExitOC_ReservedWord(c *OC_ReservedWordContext) - - // ExitOC_SymbolicName is called when exiting the oC_SymbolicName production. - ExitOC_SymbolicName(c *OC_SymbolicNameContext) - - // ExitOC_LeftArrowHead is called when exiting the oC_LeftArrowHead production. - ExitOC_LeftArrowHead(c *OC_LeftArrowHeadContext) - - // ExitOC_RightArrowHead is called when exiting the oC_RightArrowHead production. - ExitOC_RightArrowHead(c *OC_RightArrowHeadContext) - - // ExitOC_Dash is called when exiting the oC_Dash production. - ExitOC_Dash(c *OC_DashContext) -} diff --git a/endpoints/cypher/parser/cypher_parser.go b/endpoints/cypher/parser/cypher_parser.go deleted file mode 100644 index 9e3f249d..00000000 --- a/endpoints/cypher/parser/cypher_parser.go +++ /dev/null @@ -1,19645 +0,0 @@ -// Code generated from Cypher.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Cypher - -import ( - "fmt" - "strconv" - "sync" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import errors -var _ = fmt.Printf -var _ = strconv.Itoa -var _ = sync.Once{} - -type CypherParser struct { - *antlr.BaseParser -} - -var cypherParserStaticData struct { - once sync.Once - serializedATN []int32 - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func cypherParserInit() { - staticData := &cypherParserStaticData - staticData.literalNames = []string{ - "", "';'", "','", "'='", "'+='", "'*'", "'('", "')'", "'['", "']'", - "':'", "'|'", "'..'", "'+'", "'-'", "'/'", "'%'", "'^'", "'<>'", "'<'", - "'>'", "'<='", "'>='", "'{'", "'}'", "'.'", "'$'", "'\\u27E8'", "'\\u3008'", - "'\\uFE64'", "'\\uFF1C'", "'\\u27E9'", "'\\u3009'", "'\\uFE65'", "'\\uFF1E'", - "'\\u00AD'", "'\\u2010'", "'\\u2011'", "'\\u2012'", "'\\u2013'", "'\\u2014'", - "'\\u2015'", "'\\u2212'", "'\\uFE58'", "'\\uFE63'", "'\\uFF0D'", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "'0'", - } - staticData.symbolicNames = []string{ - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", "", "", "UNION", "ALL", "OPTIONAL", - "MATCH", "UNWIND", "AS", "MERGE", "ON", "CREATE", "SET", "DETACH", "DELETE", - "REMOVE", "CALL", "YIELD", "WITH", "RETURN", "DISTINCT", "ORDER", "BY", - "L_SKIP", "LIMIT", "ASCENDING", "ASC", "DESCENDING", "DESC", "WHERE", - "OR", "XOR", "AND", "NOT", "IN", "STARTS", "ENDS", "CONTAINS", "IS", - "NULL", "COUNT", "ANY", "NONE", "SINGLE", "TRUE", "FALSE", "EXISTS", - "CASE", "ELSE", "END", "WHEN", "THEN", "StringLiteral", "EscapedChar", - "HexInteger", "DecimalInteger", "OctalInteger", "HexLetter", "HexDigit", - "Digit", "NonZeroDigit", "NonZeroOctDigit", "OctDigit", "ZeroDigit", - "ExponentDecimalReal", "RegularDecimalReal", "CONSTRAINT", "DO", "FOR", - "REQUIRE", "UNIQUE", "MANDATORY", "SCALAR", "OF", "ADD", "DROP", "FILTER", - "EXTRACT", "UnescapedSymbolicName", "IdentifierStart", "IdentifierPart", - "EscapedSymbolicName", "SP", "WHITESPACE", "Comment", - } - staticData.ruleNames = []string{ - "oC_Cypher", "oC_Statement", "oC_Query", "oC_RegularQuery", "oC_Union", - "oC_SingleQuery", "oC_SinglePartQuery", "oC_MultiPartQuery", "oC_UpdatingClause", - "oC_ReadingClause", "oC_Match", "oC_Unwind", "oC_Merge", "oC_MergeAction", - "oC_Create", "oC_Set", "oC_SetItem", "oC_Delete", "oC_Remove", "oC_RemoveItem", - "oC_InQueryCall", "oC_StandaloneCall", "oC_YieldItems", "oC_YieldItem", - "oC_With", "oC_Return", "oC_ProjectionBody", "oC_ProjectionItems", "oC_ProjectionItem", - "oC_Order", "oC_Skip", "oC_Limit", "oC_SortItem", "oC_Where", "oC_Pattern", - "oC_PatternPart", "oC_AnonymousPatternPart", "oC_PatternElement", "oC_NodePattern", - "oC_PatternElementChain", "oC_RelationshipPattern", "oC_RelationshipDetail", - "oC_Properties", "oC_RelationshipTypes", "oC_NodeLabels", "oC_NodeLabel", - "oC_RangeLiteral", "oC_LabelName", "oC_RelTypeName", "oC_Expression", - "oC_OrExpression", "oC_XorExpression", "oC_AndExpression", "oC_NotExpression", - "oC_ComparisonExpression", "oC_AddOrSubtractExpression", "oC_MultiplyDivideModuloExpression", - "oC_PowerOfExpression", "oC_UnaryAddOrSubtractExpression", "oC_StringListNullOperatorExpression", - "oC_ListOperatorExpression", "oC_StringOperatorExpression", "oC_NullOperatorExpression", - "oC_PropertyOrLabelsExpression", "oC_Atom", "oC_Literal", "oC_BooleanLiteral", - "oC_ListLiteral", "oC_PartialComparisonExpression", "oC_ParenthesizedExpression", - "oC_RelationshipsPattern", "oC_FilterExpression", "oC_IdInColl", "oC_FunctionInvocation", - "oC_FunctionName", "oC_ExistentialSubquery", "oC_ExplicitProcedureInvocation", - "oC_ImplicitProcedureInvocation", "oC_ProcedureResultField", "oC_ProcedureName", - "oC_Namespace", "oC_ListComprehension", "oC_PatternComprehension", "oC_PropertyLookup", - "oC_CaseExpression", "oC_CaseAlternative", "oC_Variable", "oC_NumberLiteral", - "oC_MapLiteral", "oC_Parameter", "oC_PropertyExpression", "oC_PropertyKeyName", - "oC_IntegerLiteral", "oC_DoubleLiteral", "oC_SchemaName", "oC_ReservedWord", - "oC_SymbolicName", "oC_LeftArrowHead", "oC_RightArrowHead", "oC_Dash", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 1, 127, 1568, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, - 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, - 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, - 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, - 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, - 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, - 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, - 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, - 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, - 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, - 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, - 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, - 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, - 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, - 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, - 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, - 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, - 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, - 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, - 99, 1, 0, 3, 0, 202, 8, 0, 1, 0, 1, 0, 3, 0, 206, 8, 0, 1, 0, 3, 0, 209, - 8, 0, 1, 0, 3, 0, 212, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, - 220, 8, 2, 1, 3, 1, 3, 3, 3, 224, 8, 3, 1, 3, 5, 3, 227, 8, 3, 10, 3, 12, - 3, 230, 9, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 236, 8, 4, 1, 4, 1, 4, 1, 4, - 3, 4, 241, 8, 4, 1, 4, 3, 4, 244, 8, 4, 1, 5, 1, 5, 3, 5, 248, 8, 5, 1, - 6, 1, 6, 3, 6, 252, 8, 6, 5, 6, 254, 8, 6, 10, 6, 12, 6, 257, 9, 6, 1, - 6, 1, 6, 1, 6, 3, 6, 262, 8, 6, 5, 6, 264, 8, 6, 10, 6, 12, 6, 267, 9, - 6, 1, 6, 1, 6, 3, 6, 271, 8, 6, 1, 6, 5, 6, 274, 8, 6, 10, 6, 12, 6, 277, - 9, 6, 1, 6, 3, 6, 280, 8, 6, 1, 6, 3, 6, 283, 8, 6, 3, 6, 285, 8, 6, 1, - 7, 1, 7, 3, 7, 289, 8, 7, 5, 7, 291, 8, 7, 10, 7, 12, 7, 294, 9, 7, 1, - 7, 1, 7, 3, 7, 298, 8, 7, 5, 7, 300, 8, 7, 10, 7, 12, 7, 303, 9, 7, 1, - 7, 1, 7, 3, 7, 307, 8, 7, 4, 7, 309, 8, 7, 11, 7, 12, 7, 310, 1, 7, 1, - 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 9, 1, 9, 1, 9, 3, - 9, 325, 8, 9, 1, 10, 1, 10, 3, 10, 329, 8, 10, 1, 10, 1, 10, 3, 10, 333, - 8, 10, 1, 10, 1, 10, 3, 10, 337, 8, 10, 1, 10, 3, 10, 340, 8, 10, 1, 11, - 1, 11, 3, 11, 344, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, - 12, 1, 12, 3, 12, 354, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 359, 8, 12, 10, - 12, 12, 12, 362, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, - 1, 13, 1, 13, 1, 13, 3, 13, 374, 8, 13, 1, 14, 1, 14, 3, 14, 378, 8, 14, - 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 384, 8, 15, 1, 15, 1, 15, 3, 15, 388, - 8, 15, 1, 15, 1, 15, 3, 15, 392, 8, 15, 1, 15, 5, 15, 395, 8, 15, 10, 15, - 12, 15, 398, 9, 15, 1, 16, 1, 16, 3, 16, 402, 8, 16, 1, 16, 1, 16, 3, 16, - 406, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 412, 8, 16, 1, 16, 1, 16, - 3, 16, 416, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 422, 8, 16, 1, 16, - 1, 16, 3, 16, 426, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 432, 8, 16, - 1, 16, 1, 16, 3, 16, 436, 8, 16, 1, 17, 1, 17, 3, 17, 440, 8, 17, 1, 17, - 1, 17, 3, 17, 444, 8, 17, 1, 17, 1, 17, 3, 17, 448, 8, 17, 1, 17, 1, 17, - 3, 17, 452, 8, 17, 1, 17, 5, 17, 455, 8, 17, 10, 17, 12, 17, 458, 9, 17, - 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 464, 8, 18, 1, 18, 1, 18, 3, 18, 468, - 8, 18, 1, 18, 5, 18, 471, 8, 18, 10, 18, 12, 18, 474, 9, 18, 1, 19, 1, - 19, 1, 19, 1, 19, 3, 19, 480, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, - 486, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 491, 8, 20, 1, 21, 1, 21, 1, 21, - 1, 21, 3, 21, 497, 8, 21, 1, 21, 3, 21, 500, 8, 21, 1, 21, 1, 21, 1, 21, - 1, 21, 3, 21, 506, 8, 21, 3, 21, 508, 8, 21, 1, 22, 1, 22, 3, 22, 512, - 8, 22, 1, 22, 1, 22, 3, 22, 516, 8, 22, 1, 22, 5, 22, 519, 8, 22, 10, 22, - 12, 22, 522, 9, 22, 1, 22, 3, 22, 525, 8, 22, 1, 22, 3, 22, 528, 8, 22, - 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 535, 8, 23, 1, 23, 1, 23, 1, - 24, 1, 24, 1, 24, 3, 24, 542, 8, 24, 1, 24, 3, 24, 545, 8, 24, 1, 25, 1, - 25, 1, 25, 1, 26, 3, 26, 551, 8, 26, 1, 26, 3, 26, 554, 8, 26, 1, 26, 1, - 26, 1, 26, 1, 26, 3, 26, 560, 8, 26, 1, 26, 1, 26, 3, 26, 564, 8, 26, 1, - 26, 1, 26, 3, 26, 568, 8, 26, 1, 27, 1, 27, 3, 27, 572, 8, 27, 1, 27, 1, - 27, 3, 27, 576, 8, 27, 1, 27, 5, 27, 579, 8, 27, 10, 27, 12, 27, 582, 9, - 27, 1, 27, 1, 27, 3, 27, 586, 8, 27, 1, 27, 1, 27, 3, 27, 590, 8, 27, 1, - 27, 5, 27, 593, 8, 27, 10, 27, 12, 27, 596, 9, 27, 3, 27, 598, 8, 27, 1, - 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 607, 8, 28, 1, 29, - 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 616, 8, 29, 1, 29, 5, - 29, 619, 8, 29, 10, 29, 12, 29, 622, 9, 29, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 634, 8, 32, 1, 32, 3, - 32, 637, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 645, 8, - 34, 1, 34, 1, 34, 3, 34, 649, 8, 34, 1, 34, 5, 34, 652, 8, 34, 10, 34, - 12, 34, 655, 9, 34, 1, 35, 1, 35, 3, 35, 659, 8, 35, 1, 35, 1, 35, 3, 35, - 663, 8, 35, 1, 35, 1, 35, 1, 35, 3, 35, 668, 8, 35, 1, 36, 1, 36, 1, 37, - 1, 37, 3, 37, 674, 8, 37, 1, 37, 5, 37, 677, 8, 37, 10, 37, 12, 37, 680, - 9, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 686, 8, 37, 1, 38, 1, 38, 3, - 38, 690, 8, 38, 1, 38, 1, 38, 3, 38, 694, 8, 38, 3, 38, 696, 8, 38, 1, - 38, 1, 38, 3, 38, 700, 8, 38, 3, 38, 702, 8, 38, 1, 38, 1, 38, 3, 38, 706, - 8, 38, 3, 38, 708, 8, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 714, 8, 39, - 1, 39, 1, 39, 1, 40, 1, 40, 3, 40, 720, 8, 40, 1, 40, 1, 40, 3, 40, 724, - 8, 40, 1, 40, 3, 40, 727, 8, 40, 1, 40, 3, 40, 730, 8, 40, 1, 40, 1, 40, - 3, 40, 734, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 740, 8, 40, 1, 40, - 1, 40, 3, 40, 744, 8, 40, 1, 40, 3, 40, 747, 8, 40, 1, 40, 3, 40, 750, - 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 756, 8, 40, 1, 40, 3, 40, 759, - 8, 40, 1, 40, 3, 40, 762, 8, 40, 1, 40, 1, 40, 3, 40, 766, 8, 40, 1, 40, - 1, 40, 1, 40, 1, 40, 3, 40, 772, 8, 40, 1, 40, 3, 40, 775, 8, 40, 1, 40, - 3, 40, 778, 8, 40, 1, 40, 1, 40, 3, 40, 782, 8, 40, 1, 41, 1, 41, 3, 41, - 786, 8, 41, 1, 41, 1, 41, 3, 41, 790, 8, 41, 3, 41, 792, 8, 41, 1, 41, - 1, 41, 3, 41, 796, 8, 41, 3, 41, 798, 8, 41, 1, 41, 3, 41, 801, 8, 41, - 1, 41, 1, 41, 3, 41, 805, 8, 41, 3, 41, 807, 8, 41, 1, 41, 1, 41, 1, 42, - 1, 42, 3, 42, 813, 8, 42, 1, 43, 1, 43, 3, 43, 817, 8, 43, 1, 43, 1, 43, - 3, 43, 821, 8, 43, 1, 43, 1, 43, 3, 43, 825, 8, 43, 1, 43, 3, 43, 828, - 8, 43, 1, 43, 5, 43, 831, 8, 43, 10, 43, 12, 43, 834, 9, 43, 1, 44, 1, - 44, 3, 44, 838, 8, 44, 1, 44, 5, 44, 841, 8, 44, 10, 44, 12, 44, 844, 9, - 44, 1, 45, 1, 45, 3, 45, 848, 8, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, - 854, 8, 46, 1, 46, 1, 46, 3, 46, 858, 8, 46, 3, 46, 860, 8, 46, 1, 46, - 1, 46, 3, 46, 864, 8, 46, 1, 46, 1, 46, 3, 46, 868, 8, 46, 3, 46, 870, - 8, 46, 3, 46, 872, 8, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, - 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 885, 8, 50, 10, 50, 12, 50, 888, - 9, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 5, 51, 895, 8, 51, 10, 51, 12, - 51, 898, 9, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 905, 8, 52, 10, - 52, 12, 52, 908, 9, 52, 1, 53, 1, 53, 3, 53, 912, 8, 53, 5, 53, 914, 8, - 53, 10, 53, 12, 53, 917, 9, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 923, - 8, 54, 1, 54, 5, 54, 926, 8, 54, 10, 54, 12, 54, 929, 9, 54, 1, 55, 1, - 55, 3, 55, 933, 8, 55, 1, 55, 1, 55, 3, 55, 937, 8, 55, 1, 55, 1, 55, 3, - 55, 941, 8, 55, 1, 55, 1, 55, 3, 55, 945, 8, 55, 1, 55, 5, 55, 948, 8, - 55, 10, 55, 12, 55, 951, 9, 55, 1, 56, 1, 56, 3, 56, 955, 8, 56, 1, 56, - 1, 56, 3, 56, 959, 8, 56, 1, 56, 1, 56, 3, 56, 963, 8, 56, 1, 56, 1, 56, - 3, 56, 967, 8, 56, 1, 56, 1, 56, 3, 56, 971, 8, 56, 1, 56, 1, 56, 3, 56, - 975, 8, 56, 1, 56, 5, 56, 978, 8, 56, 10, 56, 12, 56, 981, 9, 56, 1, 57, - 1, 57, 3, 57, 985, 8, 57, 1, 57, 1, 57, 3, 57, 989, 8, 57, 1, 57, 5, 57, - 992, 8, 57, 10, 57, 12, 57, 995, 9, 57, 1, 58, 1, 58, 3, 58, 999, 8, 58, - 5, 58, 1001, 8, 58, 10, 58, 12, 58, 1004, 9, 58, 1, 58, 1, 58, 1, 59, 1, - 59, 1, 59, 1, 59, 5, 59, 1012, 8, 59, 10, 59, 12, 59, 1015, 9, 59, 1, 60, - 1, 60, 1, 60, 3, 60, 1020, 8, 60, 1, 60, 1, 60, 3, 60, 1024, 8, 60, 1, - 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1031, 8, 60, 1, 60, 1, 60, 3, 60, - 1035, 8, 60, 1, 60, 1, 60, 3, 60, 1039, 8, 60, 1, 60, 3, 60, 1042, 8, 60, - 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, - 61, 1054, 8, 61, 1, 61, 3, 61, 1057, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, - 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1071, 8, - 62, 1, 63, 1, 63, 3, 63, 1075, 8, 63, 1, 63, 5, 63, 1078, 8, 63, 10, 63, - 12, 63, 1081, 9, 63, 1, 63, 3, 63, 1084, 8, 63, 1, 63, 3, 63, 1087, 8, - 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1094, 8, 64, 1, 64, 1, 64, - 3, 64, 1098, 8, 64, 1, 64, 1, 64, 3, 64, 1102, 8, 64, 1, 64, 1, 64, 1, - 64, 1, 64, 1, 64, 3, 64, 1109, 8, 64, 1, 64, 1, 64, 3, 64, 1113, 8, 64, - 1, 64, 1, 64, 3, 64, 1117, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1123, - 8, 64, 1, 64, 1, 64, 3, 64, 1127, 8, 64, 1, 64, 1, 64, 3, 64, 1131, 8, - 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1137, 8, 64, 1, 64, 1, 64, 3, 64, - 1141, 8, 64, 1, 64, 1, 64, 3, 64, 1145, 8, 64, 1, 64, 1, 64, 1, 64, 1, - 64, 3, 64, 1151, 8, 64, 1, 64, 1, 64, 3, 64, 1155, 8, 64, 1, 64, 1, 64, - 3, 64, 1159, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, - 64, 1168, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1176, - 8, 65, 1, 66, 1, 66, 1, 67, 1, 67, 3, 67, 1182, 8, 67, 1, 67, 1, 67, 3, - 67, 1186, 8, 67, 1, 67, 1, 67, 3, 67, 1190, 8, 67, 1, 67, 1, 67, 3, 67, - 1194, 8, 67, 5, 67, 1196, 8, 67, 10, 67, 12, 67, 1199, 9, 67, 3, 67, 1201, - 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 3, 68, 1207, 8, 68, 1, 68, 1, 68, 1, - 68, 3, 68, 1212, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1217, 8, 68, 1, 68, - 1, 68, 1, 68, 3, 68, 1222, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1227, 8, - 68, 1, 68, 1, 68, 1, 68, 3, 68, 1232, 8, 68, 1, 68, 3, 68, 1235, 8, 68, - 1, 69, 1, 69, 3, 69, 1239, 8, 69, 1, 69, 1, 69, 3, 69, 1243, 8, 69, 1, - 69, 1, 69, 1, 70, 1, 70, 3, 70, 1249, 8, 70, 1, 70, 4, 70, 1252, 8, 70, - 11, 70, 12, 70, 1253, 1, 71, 1, 71, 3, 71, 1258, 8, 71, 1, 71, 3, 71, 1261, - 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 1271, - 8, 73, 1, 73, 1, 73, 3, 73, 1275, 8, 73, 1, 73, 1, 73, 3, 73, 1279, 8, - 73, 3, 73, 1281, 8, 73, 1, 73, 1, 73, 3, 73, 1285, 8, 73, 1, 73, 1, 73, - 3, 73, 1289, 8, 73, 1, 73, 1, 73, 3, 73, 1293, 8, 73, 5, 73, 1295, 8, 73, - 10, 73, 12, 73, 1298, 9, 73, 3, 73, 1300, 8, 73, 1, 73, 1, 73, 1, 74, 1, - 74, 1, 74, 1, 75, 1, 75, 3, 75, 1309, 8, 75, 1, 75, 1, 75, 3, 75, 1313, - 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1318, 8, 75, 1, 75, 3, 75, 1321, 8, - 75, 3, 75, 1323, 8, 75, 1, 75, 3, 75, 1326, 8, 75, 1, 75, 1, 75, 1, 76, - 1, 76, 3, 76, 1332, 8, 76, 1, 76, 1, 76, 3, 76, 1336, 8, 76, 1, 76, 1, - 76, 3, 76, 1340, 8, 76, 1, 76, 1, 76, 3, 76, 1344, 8, 76, 1, 76, 1, 76, - 3, 76, 1348, 8, 76, 5, 76, 1350, 8, 76, 10, 76, 12, 76, 1353, 9, 76, 3, - 76, 1355, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 79, 1, 79, - 1, 79, 1, 80, 1, 80, 1, 80, 5, 80, 1369, 8, 80, 10, 80, 12, 80, 1372, 9, - 80, 1, 81, 1, 81, 3, 81, 1376, 8, 81, 1, 81, 1, 81, 3, 81, 1380, 8, 81, - 1, 81, 1, 81, 3, 81, 1384, 8, 81, 1, 81, 3, 81, 1387, 8, 81, 1, 81, 3, - 81, 1390, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 1396, 8, 82, 1, 82, - 1, 82, 3, 82, 1400, 8, 82, 1, 82, 1, 82, 3, 82, 1404, 8, 82, 3, 82, 1406, - 8, 82, 1, 82, 1, 82, 3, 82, 1410, 8, 82, 1, 82, 1, 82, 3, 82, 1414, 8, - 82, 3, 82, 1416, 8, 82, 1, 82, 1, 82, 3, 82, 1420, 8, 82, 1, 82, 1, 82, - 3, 82, 1424, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 1430, 8, 83, 1, - 83, 1, 83, 1, 84, 1, 84, 3, 84, 1436, 8, 84, 1, 84, 4, 84, 1439, 8, 84, - 11, 84, 12, 84, 1440, 1, 84, 1, 84, 3, 84, 1445, 8, 84, 1, 84, 1, 84, 3, - 84, 1449, 8, 84, 1, 84, 4, 84, 1452, 8, 84, 11, 84, 12, 84, 1453, 3, 84, - 1456, 8, 84, 1, 84, 3, 84, 1459, 8, 84, 1, 84, 1, 84, 3, 84, 1463, 8, 84, - 1, 84, 3, 84, 1466, 8, 84, 1, 84, 3, 84, 1469, 8, 84, 1, 84, 1, 84, 1, - 85, 1, 85, 3, 85, 1475, 8, 85, 1, 85, 1, 85, 3, 85, 1479, 8, 85, 1, 85, - 1, 85, 3, 85, 1483, 8, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 3, - 87, 1491, 8, 87, 1, 88, 1, 88, 3, 88, 1495, 8, 88, 1, 88, 1, 88, 3, 88, - 1499, 8, 88, 1, 88, 1, 88, 3, 88, 1503, 8, 88, 1, 88, 1, 88, 3, 88, 1507, - 8, 88, 1, 88, 1, 88, 3, 88, 1511, 8, 88, 1, 88, 1, 88, 3, 88, 1515, 8, - 88, 1, 88, 1, 88, 3, 88, 1519, 8, 88, 1, 88, 1, 88, 3, 88, 1523, 8, 88, - 5, 88, 1525, 8, 88, 10, 88, 12, 88, 1528, 9, 88, 3, 88, 1530, 8, 88, 1, - 88, 1, 88, 1, 89, 1, 89, 1, 89, 3, 89, 1537, 8, 89, 1, 90, 1, 90, 3, 90, - 1541, 8, 90, 1, 90, 4, 90, 1544, 8, 90, 11, 90, 12, 90, 1545, 1, 91, 1, - 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1556, 8, 94, 1, 95, - 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 0, - 0, 100, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, - 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, - 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, - 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, - 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, - 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, - 196, 198, 0, 10, 1, 0, 68, 71, 1, 0, 13, 14, 1, 0, 87, 88, 1, 0, 97, 99, - 1, 0, 107, 108, 4, 0, 46, 58, 61, 82, 87, 94, 109, 118, 4, 0, 83, 86, 100, - 100, 119, 121, 124, 124, 2, 0, 19, 19, 27, 30, 2, 0, 20, 20, 31, 34, 2, - 0, 14, 14, 35, 45, 1790, 0, 201, 1, 0, 0, 0, 2, 215, 1, 0, 0, 0, 4, 219, - 1, 0, 0, 0, 6, 221, 1, 0, 0, 0, 8, 243, 1, 0, 0, 0, 10, 247, 1, 0, 0, 0, - 12, 284, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 319, 1, 0, 0, 0, 18, 324, - 1, 0, 0, 0, 20, 328, 1, 0, 0, 0, 22, 341, 1, 0, 0, 0, 24, 351, 1, 0, 0, - 0, 26, 373, 1, 0, 0, 0, 28, 375, 1, 0, 0, 0, 30, 381, 1, 0, 0, 0, 32, 435, - 1, 0, 0, 0, 34, 439, 1, 0, 0, 0, 36, 459, 1, 0, 0, 0, 38, 479, 1, 0, 0, - 0, 40, 481, 1, 0, 0, 0, 42, 492, 1, 0, 0, 0, 44, 509, 1, 0, 0, 0, 46, 534, - 1, 0, 0, 0, 48, 538, 1, 0, 0, 0, 50, 546, 1, 0, 0, 0, 52, 553, 1, 0, 0, - 0, 54, 597, 1, 0, 0, 0, 56, 606, 1, 0, 0, 0, 58, 608, 1, 0, 0, 0, 60, 623, - 1, 0, 0, 0, 62, 627, 1, 0, 0, 0, 64, 631, 1, 0, 0, 0, 66, 638, 1, 0, 0, - 0, 68, 642, 1, 0, 0, 0, 70, 667, 1, 0, 0, 0, 72, 669, 1, 0, 0, 0, 74, 685, - 1, 0, 0, 0, 76, 687, 1, 0, 0, 0, 78, 711, 1, 0, 0, 0, 80, 781, 1, 0, 0, - 0, 82, 783, 1, 0, 0, 0, 84, 812, 1, 0, 0, 0, 86, 814, 1, 0, 0, 0, 88, 835, - 1, 0, 0, 0, 90, 845, 1, 0, 0, 0, 92, 851, 1, 0, 0, 0, 94, 873, 1, 0, 0, - 0, 96, 875, 1, 0, 0, 0, 98, 877, 1, 0, 0, 0, 100, 879, 1, 0, 0, 0, 102, - 889, 1, 0, 0, 0, 104, 899, 1, 0, 0, 0, 106, 915, 1, 0, 0, 0, 108, 920, - 1, 0, 0, 0, 110, 930, 1, 0, 0, 0, 112, 952, 1, 0, 0, 0, 114, 982, 1, 0, - 0, 0, 116, 1002, 1, 0, 0, 0, 118, 1007, 1, 0, 0, 0, 120, 1041, 1, 0, 0, - 0, 122, 1053, 1, 0, 0, 0, 124, 1070, 1, 0, 0, 0, 126, 1072, 1, 0, 0, 0, - 128, 1167, 1, 0, 0, 0, 130, 1175, 1, 0, 0, 0, 132, 1177, 1, 0, 0, 0, 134, - 1179, 1, 0, 0, 0, 136, 1234, 1, 0, 0, 0, 138, 1236, 1, 0, 0, 0, 140, 1246, - 1, 0, 0, 0, 142, 1255, 1, 0, 0, 0, 144, 1262, 1, 0, 0, 0, 146, 1268, 1, - 0, 0, 0, 148, 1303, 1, 0, 0, 0, 150, 1306, 1, 0, 0, 0, 152, 1329, 1, 0, - 0, 0, 154, 1358, 1, 0, 0, 0, 156, 1360, 1, 0, 0, 0, 158, 1362, 1, 0, 0, - 0, 160, 1370, 1, 0, 0, 0, 162, 1373, 1, 0, 0, 0, 164, 1393, 1, 0, 0, 0, - 166, 1427, 1, 0, 0, 0, 168, 1455, 1, 0, 0, 0, 170, 1472, 1, 0, 0, 0, 172, - 1486, 1, 0, 0, 0, 174, 1490, 1, 0, 0, 0, 176, 1492, 1, 0, 0, 0, 178, 1533, - 1, 0, 0, 0, 180, 1538, 1, 0, 0, 0, 182, 1547, 1, 0, 0, 0, 184, 1549, 1, - 0, 0, 0, 186, 1551, 1, 0, 0, 0, 188, 1555, 1, 0, 0, 0, 190, 1557, 1, 0, - 0, 0, 192, 1559, 1, 0, 0, 0, 194, 1561, 1, 0, 0, 0, 196, 1563, 1, 0, 0, - 0, 198, 1565, 1, 0, 0, 0, 200, 202, 5, 125, 0, 0, 201, 200, 1, 0, 0, 0, - 201, 202, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 208, 3, 2, 1, 0, 204, - 206, 5, 125, 0, 0, 205, 204, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 207, - 1, 0, 0, 0, 207, 209, 5, 1, 0, 0, 208, 205, 1, 0, 0, 0, 208, 209, 1, 0, - 0, 0, 209, 211, 1, 0, 0, 0, 210, 212, 5, 125, 0, 0, 211, 210, 1, 0, 0, - 0, 211, 212, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 5, 0, 0, 1, 214, - 1, 1, 0, 0, 0, 215, 216, 3, 4, 2, 0, 216, 3, 1, 0, 0, 0, 217, 220, 3, 6, - 3, 0, 218, 220, 3, 42, 21, 0, 219, 217, 1, 0, 0, 0, 219, 218, 1, 0, 0, - 0, 220, 5, 1, 0, 0, 0, 221, 228, 3, 10, 5, 0, 222, 224, 5, 125, 0, 0, 223, - 222, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 227, - 3, 8, 4, 0, 226, 223, 1, 0, 0, 0, 227, 230, 1, 0, 0, 0, 228, 226, 1, 0, - 0, 0, 228, 229, 1, 0, 0, 0, 229, 7, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 231, - 232, 5, 46, 0, 0, 232, 233, 5, 125, 0, 0, 233, 235, 5, 47, 0, 0, 234, 236, - 5, 125, 0, 0, 235, 234, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 237, 1, - 0, 0, 0, 237, 244, 3, 10, 5, 0, 238, 240, 5, 46, 0, 0, 239, 241, 5, 125, - 0, 0, 240, 239, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 242, 1, 0, 0, 0, - 242, 244, 3, 10, 5, 0, 243, 231, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 244, - 9, 1, 0, 0, 0, 245, 248, 3, 12, 6, 0, 246, 248, 3, 14, 7, 0, 247, 245, - 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 11, 1, 0, 0, 0, 249, 251, 3, 18, - 9, 0, 250, 252, 5, 125, 0, 0, 251, 250, 1, 0, 0, 0, 251, 252, 1, 0, 0, - 0, 252, 254, 1, 0, 0, 0, 253, 249, 1, 0, 0, 0, 254, 257, 1, 0, 0, 0, 255, - 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 258, 1, 0, 0, 0, 257, 255, - 1, 0, 0, 0, 258, 285, 3, 50, 25, 0, 259, 261, 3, 18, 9, 0, 260, 262, 5, - 125, 0, 0, 261, 260, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, - 0, 0, 263, 259, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, - 265, 266, 1, 0, 0, 0, 266, 268, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, - 275, 3, 16, 8, 0, 269, 271, 5, 125, 0, 0, 270, 269, 1, 0, 0, 0, 270, 271, - 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 274, 3, 16, 8, 0, 273, 270, 1, 0, - 0, 0, 274, 277, 1, 0, 0, 0, 275, 273, 1, 0, 0, 0, 275, 276, 1, 0, 0, 0, - 276, 282, 1, 0, 0, 0, 277, 275, 1, 0, 0, 0, 278, 280, 5, 125, 0, 0, 279, - 278, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 283, - 3, 50, 25, 0, 282, 279, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 285, 1, - 0, 0, 0, 284, 255, 1, 0, 0, 0, 284, 265, 1, 0, 0, 0, 285, 13, 1, 0, 0, - 0, 286, 288, 3, 18, 9, 0, 287, 289, 5, 125, 0, 0, 288, 287, 1, 0, 0, 0, - 288, 289, 1, 0, 0, 0, 289, 291, 1, 0, 0, 0, 290, 286, 1, 0, 0, 0, 291, - 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 301, - 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 297, 3, 16, 8, 0, 296, 298, 5, 125, - 0, 0, 297, 296, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 300, 1, 0, 0, 0, - 299, 295, 1, 0, 0, 0, 300, 303, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, - 302, 1, 0, 0, 0, 302, 304, 1, 0, 0, 0, 303, 301, 1, 0, 0, 0, 304, 306, - 3, 48, 24, 0, 305, 307, 5, 125, 0, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, - 0, 0, 0, 307, 309, 1, 0, 0, 0, 308, 292, 1, 0, 0, 0, 309, 310, 1, 0, 0, - 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, - 313, 3, 12, 6, 0, 313, 15, 1, 0, 0, 0, 314, 320, 3, 28, 14, 0, 315, 320, - 3, 24, 12, 0, 316, 320, 3, 34, 17, 0, 317, 320, 3, 30, 15, 0, 318, 320, - 3, 36, 18, 0, 319, 314, 1, 0, 0, 0, 319, 315, 1, 0, 0, 0, 319, 316, 1, - 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 318, 1, 0, 0, 0, 320, 17, 1, 0, 0, - 0, 321, 325, 3, 20, 10, 0, 322, 325, 3, 22, 11, 0, 323, 325, 3, 40, 20, - 0, 324, 321, 1, 0, 0, 0, 324, 322, 1, 0, 0, 0, 324, 323, 1, 0, 0, 0, 325, - 19, 1, 0, 0, 0, 326, 327, 5, 48, 0, 0, 327, 329, 5, 125, 0, 0, 328, 326, - 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 5, 49, - 0, 0, 331, 333, 5, 125, 0, 0, 332, 331, 1, 0, 0, 0, 332, 333, 1, 0, 0, - 0, 333, 334, 1, 0, 0, 0, 334, 339, 3, 68, 34, 0, 335, 337, 5, 125, 0, 0, - 336, 335, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, - 340, 3, 66, 33, 0, 339, 336, 1, 0, 0, 0, 339, 340, 1, 0, 0, 0, 340, 21, - 1, 0, 0, 0, 341, 343, 5, 50, 0, 0, 342, 344, 5, 125, 0, 0, 343, 342, 1, - 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 3, 98, 49, - 0, 346, 347, 5, 125, 0, 0, 347, 348, 5, 51, 0, 0, 348, 349, 5, 125, 0, - 0, 349, 350, 3, 172, 86, 0, 350, 23, 1, 0, 0, 0, 351, 353, 5, 52, 0, 0, - 352, 354, 5, 125, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, - 355, 1, 0, 0, 0, 355, 360, 3, 70, 35, 0, 356, 357, 5, 125, 0, 0, 357, 359, - 3, 26, 13, 0, 358, 356, 1, 0, 0, 0, 359, 362, 1, 0, 0, 0, 360, 358, 1, - 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 25, 1, 0, 0, 0, 362, 360, 1, 0, 0, - 0, 363, 364, 5, 53, 0, 0, 364, 365, 5, 125, 0, 0, 365, 366, 5, 49, 0, 0, - 366, 367, 5, 125, 0, 0, 367, 374, 3, 30, 15, 0, 368, 369, 5, 53, 0, 0, - 369, 370, 5, 125, 0, 0, 370, 371, 5, 54, 0, 0, 371, 372, 5, 125, 0, 0, - 372, 374, 3, 30, 15, 0, 373, 363, 1, 0, 0, 0, 373, 368, 1, 0, 0, 0, 374, - 27, 1, 0, 0, 0, 375, 377, 5, 54, 0, 0, 376, 378, 5, 125, 0, 0, 377, 376, - 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 380, 3, 68, - 34, 0, 380, 29, 1, 0, 0, 0, 381, 383, 5, 55, 0, 0, 382, 384, 5, 125, 0, - 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, - 396, 3, 32, 16, 0, 386, 388, 5, 125, 0, 0, 387, 386, 1, 0, 0, 0, 387, 388, - 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 391, 5, 2, 0, 0, 390, 392, 5, 125, - 0, 0, 391, 390, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, - 393, 395, 3, 32, 16, 0, 394, 387, 1, 0, 0, 0, 395, 398, 1, 0, 0, 0, 396, - 394, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 31, 1, 0, 0, 0, 398, 396, 1, - 0, 0, 0, 399, 401, 3, 180, 90, 0, 400, 402, 5, 125, 0, 0, 401, 400, 1, - 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 405, 5, 3, 0, - 0, 404, 406, 5, 125, 0, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, - 406, 407, 1, 0, 0, 0, 407, 408, 3, 98, 49, 0, 408, 436, 1, 0, 0, 0, 409, - 411, 3, 172, 86, 0, 410, 412, 5, 125, 0, 0, 411, 410, 1, 0, 0, 0, 411, - 412, 1, 0, 0, 0, 412, 413, 1, 0, 0, 0, 413, 415, 5, 3, 0, 0, 414, 416, - 5, 125, 0, 0, 415, 414, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, - 0, 0, 0, 417, 418, 3, 98, 49, 0, 418, 436, 1, 0, 0, 0, 419, 421, 3, 172, - 86, 0, 420, 422, 5, 125, 0, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, - 0, 422, 423, 1, 0, 0, 0, 423, 425, 5, 4, 0, 0, 424, 426, 5, 125, 0, 0, - 425, 424, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, - 428, 3, 98, 49, 0, 428, 436, 1, 0, 0, 0, 429, 431, 3, 172, 86, 0, 430, - 432, 5, 125, 0, 0, 431, 430, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, - 1, 0, 0, 0, 433, 434, 3, 88, 44, 0, 434, 436, 1, 0, 0, 0, 435, 399, 1, - 0, 0, 0, 435, 409, 1, 0, 0, 0, 435, 419, 1, 0, 0, 0, 435, 429, 1, 0, 0, - 0, 436, 33, 1, 0, 0, 0, 437, 438, 5, 56, 0, 0, 438, 440, 5, 125, 0, 0, - 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, - 443, 5, 57, 0, 0, 442, 444, 5, 125, 0, 0, 443, 442, 1, 0, 0, 0, 443, 444, - 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 456, 3, 98, 49, 0, 446, 448, 5, - 125, 0, 0, 447, 446, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, - 0, 0, 449, 451, 5, 2, 0, 0, 450, 452, 5, 125, 0, 0, 451, 450, 1, 0, 0, - 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 455, 3, 98, 49, 0, - 454, 447, 1, 0, 0, 0, 455, 458, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 456, - 457, 1, 0, 0, 0, 457, 35, 1, 0, 0, 0, 458, 456, 1, 0, 0, 0, 459, 460, 5, - 58, 0, 0, 460, 461, 5, 125, 0, 0, 461, 472, 3, 38, 19, 0, 462, 464, 5, - 125, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, - 0, 0, 465, 467, 5, 2, 0, 0, 466, 468, 5, 125, 0, 0, 467, 466, 1, 0, 0, - 0, 467, 468, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 3, 38, 19, 0, - 470, 463, 1, 0, 0, 0, 471, 474, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 472, - 473, 1, 0, 0, 0, 473, 37, 1, 0, 0, 0, 474, 472, 1, 0, 0, 0, 475, 476, 3, - 172, 86, 0, 476, 477, 3, 88, 44, 0, 477, 480, 1, 0, 0, 0, 478, 480, 3, - 180, 90, 0, 479, 475, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 39, 1, 0, - 0, 0, 481, 482, 5, 59, 0, 0, 482, 483, 5, 125, 0, 0, 483, 490, 3, 152, - 76, 0, 484, 486, 5, 125, 0, 0, 485, 484, 1, 0, 0, 0, 485, 486, 1, 0, 0, - 0, 486, 487, 1, 0, 0, 0, 487, 488, 5, 60, 0, 0, 488, 489, 5, 125, 0, 0, - 489, 491, 3, 44, 22, 0, 490, 485, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, - 41, 1, 0, 0, 0, 492, 493, 5, 59, 0, 0, 493, 496, 5, 125, 0, 0, 494, 497, - 3, 152, 76, 0, 495, 497, 3, 154, 77, 0, 496, 494, 1, 0, 0, 0, 496, 495, - 1, 0, 0, 0, 497, 507, 1, 0, 0, 0, 498, 500, 5, 125, 0, 0, 499, 498, 1, - 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 502, 5, 60, 0, - 0, 502, 505, 5, 125, 0, 0, 503, 506, 5, 5, 0, 0, 504, 506, 3, 44, 22, 0, - 505, 503, 1, 0, 0, 0, 505, 504, 1, 0, 0, 0, 506, 508, 1, 0, 0, 0, 507, - 499, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 43, 1, 0, 0, 0, 509, 520, 3, - 46, 23, 0, 510, 512, 5, 125, 0, 0, 511, 510, 1, 0, 0, 0, 511, 512, 1, 0, - 0, 0, 512, 513, 1, 0, 0, 0, 513, 515, 5, 2, 0, 0, 514, 516, 5, 125, 0, - 0, 515, 514, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 1, 0, 0, 0, 517, - 519, 3, 46, 23, 0, 518, 511, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, - 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 527, 1, 0, 0, 0, 522, 520, 1, 0, - 0, 0, 523, 525, 5, 125, 0, 0, 524, 523, 1, 0, 0, 0, 524, 525, 1, 0, 0, - 0, 525, 526, 1, 0, 0, 0, 526, 528, 3, 66, 33, 0, 527, 524, 1, 0, 0, 0, - 527, 528, 1, 0, 0, 0, 528, 45, 1, 0, 0, 0, 529, 530, 3, 156, 78, 0, 530, - 531, 5, 125, 0, 0, 531, 532, 5, 51, 0, 0, 532, 533, 5, 125, 0, 0, 533, - 535, 1, 0, 0, 0, 534, 529, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, - 1, 0, 0, 0, 536, 537, 3, 172, 86, 0, 537, 47, 1, 0, 0, 0, 538, 539, 5, - 61, 0, 0, 539, 544, 3, 52, 26, 0, 540, 542, 5, 125, 0, 0, 541, 540, 1, - 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 545, 3, 66, 33, - 0, 544, 541, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 49, 1, 0, 0, 0, 546, - 547, 5, 62, 0, 0, 547, 548, 3, 52, 26, 0, 548, 51, 1, 0, 0, 0, 549, 551, - 5, 125, 0, 0, 550, 549, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 1, - 0, 0, 0, 552, 554, 5, 63, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, - 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 125, 0, 0, 556, 559, 3, 54, 27, 0, - 557, 558, 5, 125, 0, 0, 558, 560, 3, 58, 29, 0, 559, 557, 1, 0, 0, 0, 559, - 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 125, 0, 0, 562, 564, - 3, 60, 30, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 567, 1, - 0, 0, 0, 565, 566, 5, 125, 0, 0, 566, 568, 3, 62, 31, 0, 567, 565, 1, 0, - 0, 0, 567, 568, 1, 0, 0, 0, 568, 53, 1, 0, 0, 0, 569, 580, 5, 5, 0, 0, - 570, 572, 5, 125, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, - 573, 1, 0, 0, 0, 573, 575, 5, 2, 0, 0, 574, 576, 5, 125, 0, 0, 575, 574, - 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 579, 3, 56, - 28, 0, 578, 571, 1, 0, 0, 0, 579, 582, 1, 0, 0, 0, 580, 578, 1, 0, 0, 0, - 580, 581, 1, 0, 0, 0, 581, 598, 1, 0, 0, 0, 582, 580, 1, 0, 0, 0, 583, - 594, 3, 56, 28, 0, 584, 586, 5, 125, 0, 0, 585, 584, 1, 0, 0, 0, 585, 586, - 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 5, 2, 0, 0, 588, 590, 5, 125, - 0, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, - 591, 593, 3, 56, 28, 0, 592, 585, 1, 0, 0, 0, 593, 596, 1, 0, 0, 0, 594, - 592, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 598, 1, 0, 0, 0, 596, 594, - 1, 0, 0, 0, 597, 569, 1, 0, 0, 0, 597, 583, 1, 0, 0, 0, 598, 55, 1, 0, - 0, 0, 599, 600, 3, 98, 49, 0, 600, 601, 5, 125, 0, 0, 601, 602, 5, 51, - 0, 0, 602, 603, 5, 125, 0, 0, 603, 604, 3, 172, 86, 0, 604, 607, 1, 0, - 0, 0, 605, 607, 3, 98, 49, 0, 606, 599, 1, 0, 0, 0, 606, 605, 1, 0, 0, - 0, 607, 57, 1, 0, 0, 0, 608, 609, 5, 64, 0, 0, 609, 610, 5, 125, 0, 0, - 610, 611, 5, 65, 0, 0, 611, 612, 5, 125, 0, 0, 612, 620, 3, 64, 32, 0, - 613, 615, 5, 2, 0, 0, 614, 616, 5, 125, 0, 0, 615, 614, 1, 0, 0, 0, 615, - 616, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 619, 3, 64, 32, 0, 618, 613, - 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 620, 621, 1, 0, - 0, 0, 621, 59, 1, 0, 0, 0, 622, 620, 1, 0, 0, 0, 623, 624, 5, 66, 0, 0, - 624, 625, 5, 125, 0, 0, 625, 626, 3, 98, 49, 0, 626, 61, 1, 0, 0, 0, 627, - 628, 5, 67, 0, 0, 628, 629, 5, 125, 0, 0, 629, 630, 3, 98, 49, 0, 630, - 63, 1, 0, 0, 0, 631, 636, 3, 98, 49, 0, 632, 634, 5, 125, 0, 0, 633, 632, - 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 637, 7, 0, - 0, 0, 636, 633, 1, 0, 0, 0, 636, 637, 1, 0, 0, 0, 637, 65, 1, 0, 0, 0, - 638, 639, 5, 72, 0, 0, 639, 640, 5, 125, 0, 0, 640, 641, 3, 98, 49, 0, - 641, 67, 1, 0, 0, 0, 642, 653, 3, 70, 35, 0, 643, 645, 5, 125, 0, 0, 644, - 643, 1, 0, 0, 0, 644, 645, 1, 0, 0, 0, 645, 646, 1, 0, 0, 0, 646, 648, - 5, 2, 0, 0, 647, 649, 5, 125, 0, 0, 648, 647, 1, 0, 0, 0, 648, 649, 1, - 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 652, 3, 70, 35, 0, 651, 644, 1, 0, - 0, 0, 652, 655, 1, 0, 0, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, - 654, 69, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 656, 658, 3, 172, 86, 0, 657, - 659, 5, 125, 0, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 660, - 1, 0, 0, 0, 660, 662, 5, 3, 0, 0, 661, 663, 5, 125, 0, 0, 662, 661, 1, - 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 664, 1, 0, 0, 0, 664, 665, 3, 72, 36, - 0, 665, 668, 1, 0, 0, 0, 666, 668, 3, 72, 36, 0, 667, 656, 1, 0, 0, 0, - 667, 666, 1, 0, 0, 0, 668, 71, 1, 0, 0, 0, 669, 670, 3, 74, 37, 0, 670, - 73, 1, 0, 0, 0, 671, 678, 3, 76, 38, 0, 672, 674, 5, 125, 0, 0, 673, 672, - 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 1, 0, 0, 0, 675, 677, 3, 78, - 39, 0, 676, 673, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, - 678, 679, 1, 0, 0, 0, 679, 686, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, - 682, 5, 6, 0, 0, 682, 683, 3, 74, 37, 0, 683, 684, 5, 7, 0, 0, 684, 686, - 1, 0, 0, 0, 685, 671, 1, 0, 0, 0, 685, 681, 1, 0, 0, 0, 686, 75, 1, 0, - 0, 0, 687, 689, 5, 6, 0, 0, 688, 690, 5, 125, 0, 0, 689, 688, 1, 0, 0, - 0, 689, 690, 1, 0, 0, 0, 690, 695, 1, 0, 0, 0, 691, 693, 3, 172, 86, 0, - 692, 694, 5, 125, 0, 0, 693, 692, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, - 696, 1, 0, 0, 0, 695, 691, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 701, - 1, 0, 0, 0, 697, 699, 3, 88, 44, 0, 698, 700, 5, 125, 0, 0, 699, 698, 1, - 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 702, 1, 0, 0, 0, 701, 697, 1, 0, 0, - 0, 701, 702, 1, 0, 0, 0, 702, 707, 1, 0, 0, 0, 703, 705, 3, 84, 42, 0, - 704, 706, 5, 125, 0, 0, 705, 704, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, - 708, 1, 0, 0, 0, 707, 703, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, - 1, 0, 0, 0, 709, 710, 5, 7, 0, 0, 710, 77, 1, 0, 0, 0, 711, 713, 3, 80, - 40, 0, 712, 714, 5, 125, 0, 0, 713, 712, 1, 0, 0, 0, 713, 714, 1, 0, 0, - 0, 714, 715, 1, 0, 0, 0, 715, 716, 3, 76, 38, 0, 716, 79, 1, 0, 0, 0, 717, - 719, 3, 194, 97, 0, 718, 720, 5, 125, 0, 0, 719, 718, 1, 0, 0, 0, 719, - 720, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 723, 3, 198, 99, 0, 722, 724, - 5, 125, 0, 0, 723, 722, 1, 0, 0, 0, 723, 724, 1, 0, 0, 0, 724, 726, 1, - 0, 0, 0, 725, 727, 3, 82, 41, 0, 726, 725, 1, 0, 0, 0, 726, 727, 1, 0, - 0, 0, 727, 729, 1, 0, 0, 0, 728, 730, 5, 125, 0, 0, 729, 728, 1, 0, 0, - 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 733, 3, 198, 99, 0, - 732, 734, 5, 125, 0, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, - 735, 1, 0, 0, 0, 735, 736, 3, 196, 98, 0, 736, 782, 1, 0, 0, 0, 737, 739, - 3, 194, 97, 0, 738, 740, 5, 125, 0, 0, 739, 738, 1, 0, 0, 0, 739, 740, - 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 3, 198, 99, 0, 742, 744, 5, - 125, 0, 0, 743, 742, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 746, 1, 0, - 0, 0, 745, 747, 3, 82, 41, 0, 746, 745, 1, 0, 0, 0, 746, 747, 1, 0, 0, - 0, 747, 749, 1, 0, 0, 0, 748, 750, 5, 125, 0, 0, 749, 748, 1, 0, 0, 0, - 749, 750, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 752, 3, 198, 99, 0, 752, - 782, 1, 0, 0, 0, 753, 755, 3, 198, 99, 0, 754, 756, 5, 125, 0, 0, 755, - 754, 1, 0, 0, 0, 755, 756, 1, 0, 0, 0, 756, 758, 1, 0, 0, 0, 757, 759, - 3, 82, 41, 0, 758, 757, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 761, 1, - 0, 0, 0, 760, 762, 5, 125, 0, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, - 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 3, 198, 99, 0, 764, 766, 5, 125, - 0, 0, 765, 764, 1, 0, 0, 0, 765, 766, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, - 767, 768, 3, 196, 98, 0, 768, 782, 1, 0, 0, 0, 769, 771, 3, 198, 99, 0, - 770, 772, 5, 125, 0, 0, 771, 770, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, - 774, 1, 0, 0, 0, 773, 775, 3, 82, 41, 0, 774, 773, 1, 0, 0, 0, 774, 775, - 1, 0, 0, 0, 775, 777, 1, 0, 0, 0, 776, 778, 5, 125, 0, 0, 777, 776, 1, - 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 780, 3, 198, - 99, 0, 780, 782, 1, 0, 0, 0, 781, 717, 1, 0, 0, 0, 781, 737, 1, 0, 0, 0, - 781, 753, 1, 0, 0, 0, 781, 769, 1, 0, 0, 0, 782, 81, 1, 0, 0, 0, 783, 785, - 5, 8, 0, 0, 784, 786, 5, 125, 0, 0, 785, 784, 1, 0, 0, 0, 785, 786, 1, - 0, 0, 0, 786, 791, 1, 0, 0, 0, 787, 789, 3, 172, 86, 0, 788, 790, 5, 125, - 0, 0, 789, 788, 1, 0, 0, 0, 789, 790, 1, 0, 0, 0, 790, 792, 1, 0, 0, 0, - 791, 787, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 797, 1, 0, 0, 0, 793, - 795, 3, 86, 43, 0, 794, 796, 5, 125, 0, 0, 795, 794, 1, 0, 0, 0, 795, 796, - 1, 0, 0, 0, 796, 798, 1, 0, 0, 0, 797, 793, 1, 0, 0, 0, 797, 798, 1, 0, - 0, 0, 798, 800, 1, 0, 0, 0, 799, 801, 3, 92, 46, 0, 800, 799, 1, 0, 0, - 0, 800, 801, 1, 0, 0, 0, 801, 806, 1, 0, 0, 0, 802, 804, 3, 84, 42, 0, - 803, 805, 5, 125, 0, 0, 804, 803, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, - 807, 1, 0, 0, 0, 806, 802, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 808, - 1, 0, 0, 0, 808, 809, 5, 9, 0, 0, 809, 83, 1, 0, 0, 0, 810, 813, 3, 176, - 88, 0, 811, 813, 3, 178, 89, 0, 812, 810, 1, 0, 0, 0, 812, 811, 1, 0, 0, - 0, 813, 85, 1, 0, 0, 0, 814, 816, 5, 10, 0, 0, 815, 817, 5, 125, 0, 0, - 816, 815, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, - 832, 3, 96, 48, 0, 819, 821, 5, 125, 0, 0, 820, 819, 1, 0, 0, 0, 820, 821, - 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 824, 5, 11, 0, 0, 823, 825, 5, 10, - 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 827, 1, 0, 0, 0, - 826, 828, 5, 125, 0, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, - 829, 1, 0, 0, 0, 829, 831, 3, 96, 48, 0, 830, 820, 1, 0, 0, 0, 831, 834, - 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 87, 1, 0, - 0, 0, 834, 832, 1, 0, 0, 0, 835, 842, 3, 90, 45, 0, 836, 838, 5, 125, 0, - 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, - 841, 3, 90, 45, 0, 840, 837, 1, 0, 0, 0, 841, 844, 1, 0, 0, 0, 842, 840, - 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 89, 1, 0, 0, 0, 844, 842, 1, 0, - 0, 0, 845, 847, 5, 10, 0, 0, 846, 848, 5, 125, 0, 0, 847, 846, 1, 0, 0, - 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 850, 3, 94, 47, 0, - 850, 91, 1, 0, 0, 0, 851, 853, 5, 5, 0, 0, 852, 854, 5, 125, 0, 0, 853, - 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 859, 1, 0, 0, 0, 855, 857, - 3, 184, 92, 0, 856, 858, 5, 125, 0, 0, 857, 856, 1, 0, 0, 0, 857, 858, - 1, 0, 0, 0, 858, 860, 1, 0, 0, 0, 859, 855, 1, 0, 0, 0, 859, 860, 1, 0, - 0, 0, 860, 871, 1, 0, 0, 0, 861, 863, 5, 12, 0, 0, 862, 864, 5, 125, 0, - 0, 863, 862, 1, 0, 0, 0, 863, 864, 1, 0, 0, 0, 864, 869, 1, 0, 0, 0, 865, - 867, 3, 184, 92, 0, 866, 868, 5, 125, 0, 0, 867, 866, 1, 0, 0, 0, 867, - 868, 1, 0, 0, 0, 868, 870, 1, 0, 0, 0, 869, 865, 1, 0, 0, 0, 869, 870, - 1, 0, 0, 0, 870, 872, 1, 0, 0, 0, 871, 861, 1, 0, 0, 0, 871, 872, 1, 0, - 0, 0, 872, 93, 1, 0, 0, 0, 873, 874, 3, 188, 94, 0, 874, 95, 1, 0, 0, 0, - 875, 876, 3, 188, 94, 0, 876, 97, 1, 0, 0, 0, 877, 878, 3, 100, 50, 0, - 878, 99, 1, 0, 0, 0, 879, 886, 3, 102, 51, 0, 880, 881, 5, 125, 0, 0, 881, - 882, 5, 73, 0, 0, 882, 883, 5, 125, 0, 0, 883, 885, 3, 102, 51, 0, 884, - 880, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 886, 887, - 1, 0, 0, 0, 887, 101, 1, 0, 0, 0, 888, 886, 1, 0, 0, 0, 889, 896, 3, 104, - 52, 0, 890, 891, 5, 125, 0, 0, 891, 892, 5, 74, 0, 0, 892, 893, 5, 125, - 0, 0, 893, 895, 3, 104, 52, 0, 894, 890, 1, 0, 0, 0, 895, 898, 1, 0, 0, - 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 103, 1, 0, 0, 0, 898, - 896, 1, 0, 0, 0, 899, 906, 3, 106, 53, 0, 900, 901, 5, 125, 0, 0, 901, - 902, 5, 75, 0, 0, 902, 903, 5, 125, 0, 0, 903, 905, 3, 106, 53, 0, 904, - 900, 1, 0, 0, 0, 905, 908, 1, 0, 0, 0, 906, 904, 1, 0, 0, 0, 906, 907, - 1, 0, 0, 0, 907, 105, 1, 0, 0, 0, 908, 906, 1, 0, 0, 0, 909, 911, 5, 76, - 0, 0, 910, 912, 5, 125, 0, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, - 0, 912, 914, 1, 0, 0, 0, 913, 909, 1, 0, 0, 0, 914, 917, 1, 0, 0, 0, 915, - 913, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 918, 1, 0, 0, 0, 917, 915, - 1, 0, 0, 0, 918, 919, 3, 108, 54, 0, 919, 107, 1, 0, 0, 0, 920, 927, 3, - 110, 55, 0, 921, 923, 5, 125, 0, 0, 922, 921, 1, 0, 0, 0, 922, 923, 1, - 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 926, 3, 136, 68, 0, 925, 922, 1, 0, - 0, 0, 926, 929, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, - 928, 109, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 930, 949, 3, 112, 56, 0, 931, - 933, 5, 125, 0, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 934, - 1, 0, 0, 0, 934, 936, 5, 13, 0, 0, 935, 937, 5, 125, 0, 0, 936, 935, 1, - 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 948, 3, 112, - 56, 0, 939, 941, 5, 125, 0, 0, 940, 939, 1, 0, 0, 0, 940, 941, 1, 0, 0, - 0, 941, 942, 1, 0, 0, 0, 942, 944, 5, 14, 0, 0, 943, 945, 5, 125, 0, 0, - 944, 943, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, - 948, 3, 112, 56, 0, 947, 932, 1, 0, 0, 0, 947, 940, 1, 0, 0, 0, 948, 951, - 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 111, 1, 0, - 0, 0, 951, 949, 1, 0, 0, 0, 952, 979, 3, 114, 57, 0, 953, 955, 5, 125, - 0, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, - 956, 958, 5, 5, 0, 0, 957, 959, 5, 125, 0, 0, 958, 957, 1, 0, 0, 0, 958, - 959, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 978, 3, 114, 57, 0, 961, 963, - 5, 125, 0, 0, 962, 961, 1, 0, 0, 0, 962, 963, 1, 0, 0, 0, 963, 964, 1, - 0, 0, 0, 964, 966, 5, 15, 0, 0, 965, 967, 5, 125, 0, 0, 966, 965, 1, 0, - 0, 0, 966, 967, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 978, 3, 114, 57, - 0, 969, 971, 5, 125, 0, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, - 971, 972, 1, 0, 0, 0, 972, 974, 5, 16, 0, 0, 973, 975, 5, 125, 0, 0, 974, - 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 978, - 3, 114, 57, 0, 977, 954, 1, 0, 0, 0, 977, 962, 1, 0, 0, 0, 977, 970, 1, - 0, 0, 0, 978, 981, 1, 0, 0, 0, 979, 977, 1, 0, 0, 0, 979, 980, 1, 0, 0, - 0, 980, 113, 1, 0, 0, 0, 981, 979, 1, 0, 0, 0, 982, 993, 3, 116, 58, 0, - 983, 985, 5, 125, 0, 0, 984, 983, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, - 986, 1, 0, 0, 0, 986, 988, 5, 17, 0, 0, 987, 989, 5, 125, 0, 0, 988, 987, - 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 990, 1, 0, 0, 0, 990, 992, 3, 116, - 58, 0, 991, 984, 1, 0, 0, 0, 992, 995, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, - 993, 994, 1, 0, 0, 0, 994, 115, 1, 0, 0, 0, 995, 993, 1, 0, 0, 0, 996, - 998, 7, 1, 0, 0, 997, 999, 5, 125, 0, 0, 998, 997, 1, 0, 0, 0, 998, 999, - 1, 0, 0, 0, 999, 1001, 1, 0, 0, 0, 1000, 996, 1, 0, 0, 0, 1001, 1004, 1, - 0, 0, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1005, 1, - 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1005, 1006, 3, 118, 59, 0, 1006, 117, - 1, 0, 0, 0, 1007, 1013, 3, 126, 63, 0, 1008, 1012, 3, 122, 61, 0, 1009, - 1012, 3, 120, 60, 0, 1010, 1012, 3, 124, 62, 0, 1011, 1008, 1, 0, 0, 0, - 1011, 1009, 1, 0, 0, 0, 1011, 1010, 1, 0, 0, 0, 1012, 1015, 1, 0, 0, 0, - 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 119, 1, 0, 0, 0, - 1015, 1013, 1, 0, 0, 0, 1016, 1017, 5, 125, 0, 0, 1017, 1019, 5, 77, 0, - 0, 1018, 1020, 5, 125, 0, 0, 1019, 1018, 1, 0, 0, 0, 1019, 1020, 1, 0, - 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1042, 3, 126, 63, 0, 1022, 1024, 5, - 125, 0, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, - 1, 0, 0, 0, 1025, 1026, 5, 8, 0, 0, 1026, 1027, 3, 98, 49, 0, 1027, 1028, - 5, 9, 0, 0, 1028, 1042, 1, 0, 0, 0, 1029, 1031, 5, 125, 0, 0, 1030, 1029, - 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 1032, 1, 0, 0, 0, 1032, 1034, - 5, 8, 0, 0, 1033, 1035, 3, 98, 49, 0, 1034, 1033, 1, 0, 0, 0, 1034, 1035, - 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1038, 5, 12, 0, 0, 1037, 1039, - 3, 98, 49, 0, 1038, 1037, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1040, - 1, 0, 0, 0, 1040, 1042, 5, 9, 0, 0, 1041, 1016, 1, 0, 0, 0, 1041, 1023, - 1, 0, 0, 0, 1041, 1030, 1, 0, 0, 0, 1042, 121, 1, 0, 0, 0, 1043, 1044, - 5, 125, 0, 0, 1044, 1045, 5, 78, 0, 0, 1045, 1046, 5, 125, 0, 0, 1046, - 1054, 5, 61, 0, 0, 1047, 1048, 5, 125, 0, 0, 1048, 1049, 5, 79, 0, 0, 1049, - 1050, 5, 125, 0, 0, 1050, 1054, 5, 61, 0, 0, 1051, 1052, 5, 125, 0, 0, - 1052, 1054, 5, 80, 0, 0, 1053, 1043, 1, 0, 0, 0, 1053, 1047, 1, 0, 0, 0, - 1053, 1051, 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1057, 5, 125, 0, - 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, - 0, 1058, 1059, 3, 126, 63, 0, 1059, 123, 1, 0, 0, 0, 1060, 1061, 5, 125, - 0, 0, 1061, 1062, 5, 81, 0, 0, 1062, 1063, 5, 125, 0, 0, 1063, 1071, 5, - 82, 0, 0, 1064, 1065, 5, 125, 0, 0, 1065, 1066, 5, 81, 0, 0, 1066, 1067, - 5, 125, 0, 0, 1067, 1068, 5, 76, 0, 0, 1068, 1069, 5, 125, 0, 0, 1069, - 1071, 5, 82, 0, 0, 1070, 1060, 1, 0, 0, 0, 1070, 1064, 1, 0, 0, 0, 1071, - 125, 1, 0, 0, 0, 1072, 1079, 3, 128, 64, 0, 1073, 1075, 5, 125, 0, 0, 1074, - 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, - 1078, 3, 166, 83, 0, 1077, 1074, 1, 0, 0, 0, 1078, 1081, 1, 0, 0, 0, 1079, - 1077, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1086, 1, 0, 0, 0, 1081, - 1079, 1, 0, 0, 0, 1082, 1084, 5, 125, 0, 0, 1083, 1082, 1, 0, 0, 0, 1083, - 1084, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1087, 3, 88, 44, 0, 1086, - 1083, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 127, 1, 0, 0, 0, 1088, - 1168, 3, 130, 65, 0, 1089, 1168, 3, 178, 89, 0, 1090, 1168, 3, 168, 84, - 0, 1091, 1093, 5, 83, 0, 0, 1092, 1094, 5, 125, 0, 0, 1093, 1092, 1, 0, - 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, 1097, 5, 6, - 0, 0, 1096, 1098, 5, 125, 0, 0, 1097, 1096, 1, 0, 0, 0, 1097, 1098, 1, - 0, 0, 0, 1098, 1099, 1, 0, 0, 0, 1099, 1101, 5, 5, 0, 0, 1100, 1102, 5, - 125, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, - 1, 0, 0, 0, 1103, 1168, 5, 7, 0, 0, 1104, 1168, 3, 162, 81, 0, 1105, 1168, - 3, 164, 82, 0, 1106, 1108, 5, 47, 0, 0, 1107, 1109, 5, 125, 0, 0, 1108, - 1107, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, - 1112, 5, 6, 0, 0, 1111, 1113, 5, 125, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, - 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1116, 3, 142, 71, 0, 1115, - 1117, 5, 125, 0, 0, 1116, 1115, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, - 1118, 1, 0, 0, 0, 1118, 1119, 5, 7, 0, 0, 1119, 1168, 1, 0, 0, 0, 1120, - 1122, 5, 84, 0, 0, 1121, 1123, 5, 125, 0, 0, 1122, 1121, 1, 0, 0, 0, 1122, - 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 5, 6, 0, 0, 1125, - 1127, 5, 125, 0, 0, 1126, 1125, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, - 1128, 1, 0, 0, 0, 1128, 1130, 3, 142, 71, 0, 1129, 1131, 5, 125, 0, 0, - 1130, 1129, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, - 1132, 1133, 5, 7, 0, 0, 1133, 1168, 1, 0, 0, 0, 1134, 1136, 5, 85, 0, 0, - 1135, 1137, 5, 125, 0, 0, 1136, 1135, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, - 0, 1137, 1138, 1, 0, 0, 0, 1138, 1140, 5, 6, 0, 0, 1139, 1141, 5, 125, - 0, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, - 0, 0, 1142, 1144, 3, 142, 71, 0, 1143, 1145, 5, 125, 0, 0, 1144, 1143, - 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, - 5, 7, 0, 0, 1147, 1168, 1, 0, 0, 0, 1148, 1150, 5, 86, 0, 0, 1149, 1151, - 5, 125, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, - 1, 0, 0, 0, 1152, 1154, 5, 6, 0, 0, 1153, 1155, 5, 125, 0, 0, 1154, 1153, - 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, - 3, 142, 71, 0, 1157, 1159, 5, 125, 0, 0, 1158, 1157, 1, 0, 0, 0, 1158, - 1159, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 5, 7, 0, 0, 1161, - 1168, 1, 0, 0, 0, 1162, 1168, 3, 140, 70, 0, 1163, 1168, 3, 138, 69, 0, - 1164, 1168, 3, 146, 73, 0, 1165, 1168, 3, 150, 75, 0, 1166, 1168, 3, 172, - 86, 0, 1167, 1088, 1, 0, 0, 0, 1167, 1089, 1, 0, 0, 0, 1167, 1090, 1, 0, - 0, 0, 1167, 1091, 1, 0, 0, 0, 1167, 1104, 1, 0, 0, 0, 1167, 1105, 1, 0, - 0, 0, 1167, 1106, 1, 0, 0, 0, 1167, 1120, 1, 0, 0, 0, 1167, 1134, 1, 0, - 0, 0, 1167, 1148, 1, 0, 0, 0, 1167, 1162, 1, 0, 0, 0, 1167, 1163, 1, 0, - 0, 0, 1167, 1164, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1166, 1, 0, - 0, 0, 1168, 129, 1, 0, 0, 0, 1169, 1176, 3, 174, 87, 0, 1170, 1176, 5, - 95, 0, 0, 1171, 1176, 3, 132, 66, 0, 1172, 1176, 5, 82, 0, 0, 1173, 1176, - 3, 176, 88, 0, 1174, 1176, 3, 134, 67, 0, 1175, 1169, 1, 0, 0, 0, 1175, - 1170, 1, 0, 0, 0, 1175, 1171, 1, 0, 0, 0, 1175, 1172, 1, 0, 0, 0, 1175, - 1173, 1, 0, 0, 0, 1175, 1174, 1, 0, 0, 0, 1176, 131, 1, 0, 0, 0, 1177, - 1178, 7, 2, 0, 0, 1178, 133, 1, 0, 0, 0, 1179, 1181, 5, 8, 0, 0, 1180, - 1182, 5, 125, 0, 0, 1181, 1180, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, - 1200, 1, 0, 0, 0, 1183, 1185, 3, 98, 49, 0, 1184, 1186, 5, 125, 0, 0, 1185, - 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1197, 1, 0, 0, 0, 1187, - 1189, 5, 2, 0, 0, 1188, 1190, 5, 125, 0, 0, 1189, 1188, 1, 0, 0, 0, 1189, - 1190, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1193, 3, 98, 49, 0, 1192, - 1194, 5, 125, 0, 0, 1193, 1192, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, - 1196, 1, 0, 0, 0, 1195, 1187, 1, 0, 0, 0, 1196, 1199, 1, 0, 0, 0, 1197, - 1195, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, - 1197, 1, 0, 0, 0, 1200, 1183, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, - 1202, 1, 0, 0, 0, 1202, 1203, 5, 9, 0, 0, 1203, 135, 1, 0, 0, 0, 1204, - 1206, 5, 3, 0, 0, 1205, 1207, 5, 125, 0, 0, 1206, 1205, 1, 0, 0, 0, 1206, - 1207, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1235, 3, 110, 55, 0, 1209, - 1211, 5, 18, 0, 0, 1210, 1212, 5, 125, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, - 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1235, 3, 110, 55, 0, 1214, - 1216, 5, 19, 0, 0, 1215, 1217, 5, 125, 0, 0, 1216, 1215, 1, 0, 0, 0, 1216, - 1217, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1235, 3, 110, 55, 0, 1219, - 1221, 5, 20, 0, 0, 1220, 1222, 5, 125, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, - 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1235, 3, 110, 55, 0, 1224, - 1226, 5, 21, 0, 0, 1225, 1227, 5, 125, 0, 0, 1226, 1225, 1, 0, 0, 0, 1226, - 1227, 1, 0, 0, 0, 1227, 1228, 1, 0, 0, 0, 1228, 1235, 3, 110, 55, 0, 1229, - 1231, 5, 22, 0, 0, 1230, 1232, 5, 125, 0, 0, 1231, 1230, 1, 0, 0, 0, 1231, - 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1235, 3, 110, 55, 0, 1234, - 1204, 1, 0, 0, 0, 1234, 1209, 1, 0, 0, 0, 1234, 1214, 1, 0, 0, 0, 1234, - 1219, 1, 0, 0, 0, 1234, 1224, 1, 0, 0, 0, 1234, 1229, 1, 0, 0, 0, 1235, - 137, 1, 0, 0, 0, 1236, 1238, 5, 6, 0, 0, 1237, 1239, 5, 125, 0, 0, 1238, - 1237, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, - 1242, 3, 98, 49, 0, 1241, 1243, 5, 125, 0, 0, 1242, 1241, 1, 0, 0, 0, 1242, - 1243, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 5, 7, 0, 0, 1245, - 139, 1, 0, 0, 0, 1246, 1251, 3, 76, 38, 0, 1247, 1249, 5, 125, 0, 0, 1248, - 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, - 1252, 3, 78, 39, 0, 1251, 1248, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, - 1251, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 141, 1, 0, 0, 0, 1255, - 1260, 3, 144, 72, 0, 1256, 1258, 5, 125, 0, 0, 1257, 1256, 1, 0, 0, 0, - 1257, 1258, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1261, 3, 66, 33, - 0, 1260, 1257, 1, 0, 0, 0, 1260, 1261, 1, 0, 0, 0, 1261, 143, 1, 0, 0, - 0, 1262, 1263, 3, 172, 86, 0, 1263, 1264, 5, 125, 0, 0, 1264, 1265, 5, - 77, 0, 0, 1265, 1266, 5, 125, 0, 0, 1266, 1267, 3, 98, 49, 0, 1267, 145, - 1, 0, 0, 0, 1268, 1270, 3, 148, 74, 0, 1269, 1271, 5, 125, 0, 0, 1270, - 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, - 1274, 5, 6, 0, 0, 1273, 1275, 5, 125, 0, 0, 1274, 1273, 1, 0, 0, 0, 1274, - 1275, 1, 0, 0, 0, 1275, 1280, 1, 0, 0, 0, 1276, 1278, 5, 63, 0, 0, 1277, - 1279, 5, 125, 0, 0, 1278, 1277, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, - 1281, 1, 0, 0, 0, 1280, 1276, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, - 1299, 1, 0, 0, 0, 1282, 1284, 3, 98, 49, 0, 1283, 1285, 5, 125, 0, 0, 1284, - 1283, 1, 0, 0, 0, 1284, 1285, 1, 0, 0, 0, 1285, 1296, 1, 0, 0, 0, 1286, - 1288, 5, 2, 0, 0, 1287, 1289, 5, 125, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, - 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1292, 3, 98, 49, 0, 1291, - 1293, 5, 125, 0, 0, 1292, 1291, 1, 0, 0, 0, 1292, 1293, 1, 0, 0, 0, 1293, - 1295, 1, 0, 0, 0, 1294, 1286, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, - 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1300, 1, 0, 0, 0, 1298, - 1296, 1, 0, 0, 0, 1299, 1282, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, - 1301, 1, 0, 0, 0, 1301, 1302, 5, 7, 0, 0, 1302, 147, 1, 0, 0, 0, 1303, - 1304, 3, 160, 80, 0, 1304, 1305, 3, 192, 96, 0, 1305, 149, 1, 0, 0, 0, - 1306, 1308, 5, 89, 0, 0, 1307, 1309, 5, 125, 0, 0, 1308, 1307, 1, 0, 0, - 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 5, 23, 0, - 0, 1311, 1313, 5, 125, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, - 0, 0, 1313, 1322, 1, 0, 0, 0, 1314, 1323, 3, 6, 3, 0, 1315, 1320, 3, 68, - 34, 0, 1316, 1318, 5, 125, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, - 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1321, 3, 66, 33, 0, 1320, 1317, - 1, 0, 0, 0, 1320, 1321, 1, 0, 0, 0, 1321, 1323, 1, 0, 0, 0, 1322, 1314, - 1, 0, 0, 0, 1322, 1315, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1326, - 5, 125, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, - 1, 0, 0, 0, 1327, 1328, 5, 24, 0, 0, 1328, 151, 1, 0, 0, 0, 1329, 1331, - 3, 158, 79, 0, 1330, 1332, 5, 125, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, - 1332, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1335, 5, 6, 0, 0, 1334, - 1336, 5, 125, 0, 0, 1335, 1334, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, - 1354, 1, 0, 0, 0, 1337, 1339, 3, 98, 49, 0, 1338, 1340, 5, 125, 0, 0, 1339, - 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1351, 1, 0, 0, 0, 1341, - 1343, 5, 2, 0, 0, 1342, 1344, 5, 125, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, - 1344, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 3, 98, 49, 0, 1346, - 1348, 5, 125, 0, 0, 1347, 1346, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, - 1350, 1, 0, 0, 0, 1349, 1341, 1, 0, 0, 0, 1350, 1353, 1, 0, 0, 0, 1351, - 1349, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1355, 1, 0, 0, 0, 1353, - 1351, 1, 0, 0, 0, 1354, 1337, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, - 1356, 1, 0, 0, 0, 1356, 1357, 5, 7, 0, 0, 1357, 153, 1, 0, 0, 0, 1358, - 1359, 3, 158, 79, 0, 1359, 155, 1, 0, 0, 0, 1360, 1361, 3, 192, 96, 0, - 1361, 157, 1, 0, 0, 0, 1362, 1363, 3, 160, 80, 0, 1363, 1364, 3, 192, 96, - 0, 1364, 159, 1, 0, 0, 0, 1365, 1366, 3, 192, 96, 0, 1366, 1367, 5, 25, - 0, 0, 1367, 1369, 1, 0, 0, 0, 1368, 1365, 1, 0, 0, 0, 1369, 1372, 1, 0, - 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 161, 1, 0, - 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1375, 5, 8, 0, 0, 1374, 1376, 5, 125, - 0, 0, 1375, 1374, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, - 0, 0, 1377, 1386, 3, 142, 71, 0, 1378, 1380, 5, 125, 0, 0, 1379, 1378, - 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, - 5, 11, 0, 0, 1382, 1384, 5, 125, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, - 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 3, 98, 49, 0, 1386, 1379, - 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1389, 1, 0, 0, 0, 1388, 1390, - 5, 125, 0, 0, 1389, 1388, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, - 1, 0, 0, 0, 1391, 1392, 5, 9, 0, 0, 1392, 163, 1, 0, 0, 0, 1393, 1395, - 5, 8, 0, 0, 1394, 1396, 5, 125, 0, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, - 1, 0, 0, 0, 1396, 1405, 1, 0, 0, 0, 1397, 1399, 3, 172, 86, 0, 1398, 1400, - 5, 125, 0, 0, 1399, 1398, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, - 1, 0, 0, 0, 1401, 1403, 5, 3, 0, 0, 1402, 1404, 5, 125, 0, 0, 1403, 1402, - 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1406, 1, 0, 0, 0, 1405, 1397, - 1, 0, 0, 0, 1405, 1406, 1, 0, 0, 0, 1406, 1407, 1, 0, 0, 0, 1407, 1409, - 3, 140, 70, 0, 1408, 1410, 5, 125, 0, 0, 1409, 1408, 1, 0, 0, 0, 1409, - 1410, 1, 0, 0, 0, 1410, 1415, 1, 0, 0, 0, 1411, 1413, 3, 66, 33, 0, 1412, - 1414, 5, 125, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, - 1416, 1, 0, 0, 0, 1415, 1411, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, - 1417, 1, 0, 0, 0, 1417, 1419, 5, 11, 0, 0, 1418, 1420, 5, 125, 0, 0, 1419, - 1418, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, - 1423, 3, 98, 49, 0, 1422, 1424, 5, 125, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, - 1424, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 5, 9, 0, 0, 1426, - 165, 1, 0, 0, 0, 1427, 1429, 5, 25, 0, 0, 1428, 1430, 5, 125, 0, 0, 1429, - 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, - 1432, 3, 182, 91, 0, 1432, 167, 1, 0, 0, 0, 1433, 1438, 5, 90, 0, 0, 1434, - 1436, 5, 125, 0, 0, 1435, 1434, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, - 1437, 1, 0, 0, 0, 1437, 1439, 3, 170, 85, 0, 1438, 1435, 1, 0, 0, 0, 1439, - 1440, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, - 1456, 1, 0, 0, 0, 1442, 1444, 5, 90, 0, 0, 1443, 1445, 5, 125, 0, 0, 1444, - 1443, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, - 1451, 3, 98, 49, 0, 1447, 1449, 5, 125, 0, 0, 1448, 1447, 1, 0, 0, 0, 1448, - 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 3, 170, 85, 0, 1451, - 1448, 1, 0, 0, 0, 1452, 1453, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, - 1454, 1, 0, 0, 0, 1454, 1456, 1, 0, 0, 0, 1455, 1433, 1, 0, 0, 0, 1455, - 1442, 1, 0, 0, 0, 1456, 1465, 1, 0, 0, 0, 1457, 1459, 5, 125, 0, 0, 1458, - 1457, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, - 1462, 5, 91, 0, 0, 1461, 1463, 5, 125, 0, 0, 1462, 1461, 1, 0, 0, 0, 1462, - 1463, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1466, 3, 98, 49, 0, 1465, - 1458, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1468, 1, 0, 0, 0, 1467, - 1469, 5, 125, 0, 0, 1468, 1467, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, - 1470, 1, 0, 0, 0, 1470, 1471, 5, 92, 0, 0, 1471, 169, 1, 0, 0, 0, 1472, - 1474, 5, 93, 0, 0, 1473, 1475, 5, 125, 0, 0, 1474, 1473, 1, 0, 0, 0, 1474, - 1475, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1478, 3, 98, 49, 0, 1477, - 1479, 5, 125, 0, 0, 1478, 1477, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, - 1480, 1, 0, 0, 0, 1480, 1482, 5, 94, 0, 0, 1481, 1483, 5, 125, 0, 0, 1482, - 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, - 1485, 3, 98, 49, 0, 1485, 171, 1, 0, 0, 0, 1486, 1487, 3, 192, 96, 0, 1487, - 173, 1, 0, 0, 0, 1488, 1491, 3, 186, 93, 0, 1489, 1491, 3, 184, 92, 0, - 1490, 1488, 1, 0, 0, 0, 1490, 1489, 1, 0, 0, 0, 1491, 175, 1, 0, 0, 0, - 1492, 1494, 5, 23, 0, 0, 1493, 1495, 5, 125, 0, 0, 1494, 1493, 1, 0, 0, - 0, 1494, 1495, 1, 0, 0, 0, 1495, 1529, 1, 0, 0, 0, 1496, 1498, 3, 182, - 91, 0, 1497, 1499, 5, 125, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, - 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 5, 10, 0, 0, 1501, 1503, 5, - 125, 0, 0, 1502, 1501, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, - 1, 0, 0, 0, 1504, 1506, 3, 98, 49, 0, 1505, 1507, 5, 125, 0, 0, 1506, 1505, - 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1526, 1, 0, 0, 0, 1508, 1510, - 5, 2, 0, 0, 1509, 1511, 5, 125, 0, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, - 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1514, 3, 182, 91, 0, 1513, 1515, - 5, 125, 0, 0, 1514, 1513, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1516, - 1, 0, 0, 0, 1516, 1518, 5, 10, 0, 0, 1517, 1519, 5, 125, 0, 0, 1518, 1517, - 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, - 3, 98, 49, 0, 1521, 1523, 5, 125, 0, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, - 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1508, 1, 0, 0, 0, 1525, 1528, - 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1530, - 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1529, 1496, 1, 0, 0, 0, 1529, 1530, - 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 177, - 1, 0, 0, 0, 1533, 1536, 5, 26, 0, 0, 1534, 1537, 3, 192, 96, 0, 1535, 1537, - 5, 98, 0, 0, 1536, 1534, 1, 0, 0, 0, 1536, 1535, 1, 0, 0, 0, 1537, 179, - 1, 0, 0, 0, 1538, 1543, 3, 128, 64, 0, 1539, 1541, 5, 125, 0, 0, 1540, - 1539, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, - 1544, 3, 166, 83, 0, 1543, 1540, 1, 0, 0, 0, 1544, 1545, 1, 0, 0, 0, 1545, - 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 181, 1, 0, 0, 0, 1547, - 1548, 3, 188, 94, 0, 1548, 183, 1, 0, 0, 0, 1549, 1550, 7, 3, 0, 0, 1550, - 185, 1, 0, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 187, 1, 0, 0, 0, 1553, 1556, - 3, 192, 96, 0, 1554, 1556, 3, 190, 95, 0, 1555, 1553, 1, 0, 0, 0, 1555, - 1554, 1, 0, 0, 0, 1556, 189, 1, 0, 0, 0, 1557, 1558, 7, 5, 0, 0, 1558, - 191, 1, 0, 0, 0, 1559, 1560, 7, 6, 0, 0, 1560, 193, 1, 0, 0, 0, 1561, 1562, - 7, 7, 0, 0, 1562, 195, 1, 0, 0, 0, 1563, 1564, 7, 8, 0, 0, 1564, 197, 1, - 0, 0, 0, 1565, 1566, 7, 9, 0, 0, 1566, 199, 1, 0, 0, 0, 290, 201, 205, - 208, 211, 219, 223, 228, 235, 240, 243, 247, 251, 255, 261, 265, 270, 275, - 279, 282, 284, 288, 292, 297, 301, 306, 310, 319, 324, 328, 332, 336, 339, - 343, 353, 360, 373, 377, 383, 387, 391, 396, 401, 405, 411, 415, 421, 425, - 431, 435, 439, 443, 447, 451, 456, 463, 467, 472, 479, 485, 490, 496, 499, - 505, 507, 511, 515, 520, 524, 527, 534, 541, 544, 550, 553, 559, 563, 567, - 571, 575, 580, 585, 589, 594, 597, 606, 615, 620, 633, 636, 644, 648, 653, - 658, 662, 667, 673, 678, 685, 689, 693, 695, 699, 701, 705, 707, 713, 719, - 723, 726, 729, 733, 739, 743, 746, 749, 755, 758, 761, 765, 771, 774, 777, - 781, 785, 789, 791, 795, 797, 800, 804, 806, 812, 816, 820, 824, 827, 832, - 837, 842, 847, 853, 857, 859, 863, 867, 869, 871, 886, 896, 906, 911, 915, - 922, 927, 932, 936, 940, 944, 947, 949, 954, 958, 962, 966, 970, 974, 977, - 979, 984, 988, 993, 998, 1002, 1011, 1013, 1019, 1023, 1030, 1034, 1038, - 1041, 1053, 1056, 1070, 1074, 1079, 1083, 1086, 1093, 1097, 1101, 1108, - 1112, 1116, 1122, 1126, 1130, 1136, 1140, 1144, 1150, 1154, 1158, 1167, - 1175, 1181, 1185, 1189, 1193, 1197, 1200, 1206, 1211, 1216, 1221, 1226, - 1231, 1234, 1238, 1242, 1248, 1253, 1257, 1260, 1270, 1274, 1278, 1280, - 1284, 1288, 1292, 1296, 1299, 1308, 1312, 1317, 1320, 1322, 1325, 1331, - 1335, 1339, 1343, 1347, 1351, 1354, 1370, 1375, 1379, 1383, 1386, 1389, - 1395, 1399, 1403, 1405, 1409, 1413, 1415, 1419, 1423, 1429, 1435, 1440, - 1444, 1448, 1453, 1455, 1458, 1462, 1465, 1468, 1474, 1478, 1482, 1490, - 1494, 1498, 1502, 1506, 1510, 1514, 1518, 1522, 1526, 1529, 1536, 1540, - 1545, 1555, - } - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// CypherParserInit initializes any static state used to implement CypherParser. By default the -// static state used to implement the parser is lazily initialized during the first call to -// NewCypherParser(). You can call this function if you wish to initialize the static state ahead -// of time. -func CypherParserInit() { - staticData := &cypherParserStaticData - staticData.once.Do(cypherParserInit) -} - -// NewCypherParser produces a new parser instance for the optional input antlr.TokenStream. -func NewCypherParser(input antlr.TokenStream) *CypherParser { - CypherParserInit() - this := new(CypherParser) - this.BaseParser = antlr.NewBaseParser(input) - staticData := &cypherParserStaticData - this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - this.RuleNames = staticData.ruleNames - this.LiteralNames = staticData.literalNames - this.SymbolicNames = staticData.symbolicNames - this.GrammarFileName = "Cypher.g4" - - return this -} - -// CypherParser tokens. -const ( - CypherParserEOF = antlr.TokenEOF - CypherParserT__0 = 1 - CypherParserT__1 = 2 - CypherParserT__2 = 3 - CypherParserT__3 = 4 - CypherParserT__4 = 5 - CypherParserT__5 = 6 - CypherParserT__6 = 7 - CypherParserT__7 = 8 - CypherParserT__8 = 9 - CypherParserT__9 = 10 - CypherParserT__10 = 11 - CypherParserT__11 = 12 - CypherParserT__12 = 13 - CypherParserT__13 = 14 - CypherParserT__14 = 15 - CypherParserT__15 = 16 - CypherParserT__16 = 17 - CypherParserT__17 = 18 - CypherParserT__18 = 19 - CypherParserT__19 = 20 - CypherParserT__20 = 21 - CypherParserT__21 = 22 - CypherParserT__22 = 23 - CypherParserT__23 = 24 - CypherParserT__24 = 25 - CypherParserT__25 = 26 - CypherParserT__26 = 27 - CypherParserT__27 = 28 - CypherParserT__28 = 29 - CypherParserT__29 = 30 - CypherParserT__30 = 31 - CypherParserT__31 = 32 - CypherParserT__32 = 33 - CypherParserT__33 = 34 - CypherParserT__34 = 35 - CypherParserT__35 = 36 - CypherParserT__36 = 37 - CypherParserT__37 = 38 - CypherParserT__38 = 39 - CypherParserT__39 = 40 - CypherParserT__40 = 41 - CypherParserT__41 = 42 - CypherParserT__42 = 43 - CypherParserT__43 = 44 - CypherParserT__44 = 45 - CypherParserUNION = 46 - CypherParserALL = 47 - CypherParserOPTIONAL = 48 - CypherParserMATCH = 49 - CypherParserUNWIND = 50 - CypherParserAS = 51 - CypherParserMERGE = 52 - CypherParserON = 53 - CypherParserCREATE = 54 - CypherParserSET = 55 - CypherParserDETACH = 56 - CypherParserDELETE = 57 - CypherParserREMOVE = 58 - CypherParserCALL = 59 - CypherParserYIELD = 60 - CypherParserWITH = 61 - CypherParserRETURN = 62 - CypherParserDISTINCT = 63 - CypherParserORDER = 64 - CypherParserBY = 65 - CypherParserL_SKIP = 66 - CypherParserLIMIT = 67 - CypherParserASCENDING = 68 - CypherParserASC = 69 - CypherParserDESCENDING = 70 - CypherParserDESC = 71 - CypherParserWHERE = 72 - CypherParserOR = 73 - CypherParserXOR = 74 - CypherParserAND = 75 - CypherParserNOT = 76 - CypherParserIN = 77 - CypherParserSTARTS = 78 - CypherParserENDS = 79 - CypherParserCONTAINS = 80 - CypherParserIS = 81 - CypherParserNULL = 82 - CypherParserCOUNT = 83 - CypherParserANY = 84 - CypherParserNONE = 85 - CypherParserSINGLE = 86 - CypherParserTRUE = 87 - CypherParserFALSE = 88 - CypherParserEXISTS = 89 - CypherParserCASE = 90 - CypherParserELSE = 91 - CypherParserEND = 92 - CypherParserWHEN = 93 - CypherParserTHEN = 94 - CypherParserStringLiteral = 95 - CypherParserEscapedChar = 96 - CypherParserHexInteger = 97 - CypherParserDecimalInteger = 98 - CypherParserOctalInteger = 99 - CypherParserHexLetter = 100 - CypherParserHexDigit = 101 - CypherParserDigit = 102 - CypherParserNonZeroDigit = 103 - CypherParserNonZeroOctDigit = 104 - CypherParserOctDigit = 105 - CypherParserZeroDigit = 106 - CypherParserExponentDecimalReal = 107 - CypherParserRegularDecimalReal = 108 - CypherParserCONSTRAINT = 109 - CypherParserDO = 110 - CypherParserFOR = 111 - CypherParserREQUIRE = 112 - CypherParserUNIQUE = 113 - CypherParserMANDATORY = 114 - CypherParserSCALAR = 115 - CypherParserOF = 116 - CypherParserADD = 117 - CypherParserDROP = 118 - CypherParserFILTER = 119 - CypherParserEXTRACT = 120 - CypherParserUnescapedSymbolicName = 121 - CypherParserIdentifierStart = 122 - CypherParserIdentifierPart = 123 - CypherParserEscapedSymbolicName = 124 - CypherParserSP = 125 - CypherParserWHITESPACE = 126 - CypherParserComment = 127 -) - -// CypherParser rules. -const ( - CypherParserRULE_oC_Cypher = 0 - CypherParserRULE_oC_Statement = 1 - CypherParserRULE_oC_Query = 2 - CypherParserRULE_oC_RegularQuery = 3 - CypherParserRULE_oC_Union = 4 - CypherParserRULE_oC_SingleQuery = 5 - CypherParserRULE_oC_SinglePartQuery = 6 - CypherParserRULE_oC_MultiPartQuery = 7 - CypherParserRULE_oC_UpdatingClause = 8 - CypherParserRULE_oC_ReadingClause = 9 - CypherParserRULE_oC_Match = 10 - CypherParserRULE_oC_Unwind = 11 - CypherParserRULE_oC_Merge = 12 - CypherParserRULE_oC_MergeAction = 13 - CypherParserRULE_oC_Create = 14 - CypherParserRULE_oC_Set = 15 - CypherParserRULE_oC_SetItem = 16 - CypherParserRULE_oC_Delete = 17 - CypherParserRULE_oC_Remove = 18 - CypherParserRULE_oC_RemoveItem = 19 - CypherParserRULE_oC_InQueryCall = 20 - CypherParserRULE_oC_StandaloneCall = 21 - CypherParserRULE_oC_YieldItems = 22 - CypherParserRULE_oC_YieldItem = 23 - CypherParserRULE_oC_With = 24 - CypherParserRULE_oC_Return = 25 - CypherParserRULE_oC_ProjectionBody = 26 - CypherParserRULE_oC_ProjectionItems = 27 - CypherParserRULE_oC_ProjectionItem = 28 - CypherParserRULE_oC_Order = 29 - CypherParserRULE_oC_Skip = 30 - CypherParserRULE_oC_Limit = 31 - CypherParserRULE_oC_SortItem = 32 - CypherParserRULE_oC_Where = 33 - CypherParserRULE_oC_Pattern = 34 - CypherParserRULE_oC_PatternPart = 35 - CypherParserRULE_oC_AnonymousPatternPart = 36 - CypherParserRULE_oC_PatternElement = 37 - CypherParserRULE_oC_NodePattern = 38 - CypherParserRULE_oC_PatternElementChain = 39 - CypherParserRULE_oC_RelationshipPattern = 40 - CypherParserRULE_oC_RelationshipDetail = 41 - CypherParserRULE_oC_Properties = 42 - CypherParserRULE_oC_RelationshipTypes = 43 - CypherParserRULE_oC_NodeLabels = 44 - CypherParserRULE_oC_NodeLabel = 45 - CypherParserRULE_oC_RangeLiteral = 46 - CypherParserRULE_oC_LabelName = 47 - CypherParserRULE_oC_RelTypeName = 48 - CypherParserRULE_oC_Expression = 49 - CypherParserRULE_oC_OrExpression = 50 - CypherParserRULE_oC_XorExpression = 51 - CypherParserRULE_oC_AndExpression = 52 - CypherParserRULE_oC_NotExpression = 53 - CypherParserRULE_oC_ComparisonExpression = 54 - CypherParserRULE_oC_AddOrSubtractExpression = 55 - CypherParserRULE_oC_MultiplyDivideModuloExpression = 56 - CypherParserRULE_oC_PowerOfExpression = 57 - CypherParserRULE_oC_UnaryAddOrSubtractExpression = 58 - CypherParserRULE_oC_StringListNullOperatorExpression = 59 - CypherParserRULE_oC_ListOperatorExpression = 60 - CypherParserRULE_oC_StringOperatorExpression = 61 - CypherParserRULE_oC_NullOperatorExpression = 62 - CypherParserRULE_oC_PropertyOrLabelsExpression = 63 - CypherParserRULE_oC_Atom = 64 - CypherParserRULE_oC_Literal = 65 - CypherParserRULE_oC_BooleanLiteral = 66 - CypherParserRULE_oC_ListLiteral = 67 - CypherParserRULE_oC_PartialComparisonExpression = 68 - CypherParserRULE_oC_ParenthesizedExpression = 69 - CypherParserRULE_oC_RelationshipsPattern = 70 - CypherParserRULE_oC_FilterExpression = 71 - CypherParserRULE_oC_IdInColl = 72 - CypherParserRULE_oC_FunctionInvocation = 73 - CypherParserRULE_oC_FunctionName = 74 - CypherParserRULE_oC_ExistentialSubquery = 75 - CypherParserRULE_oC_ExplicitProcedureInvocation = 76 - CypherParserRULE_oC_ImplicitProcedureInvocation = 77 - CypherParserRULE_oC_ProcedureResultField = 78 - CypherParserRULE_oC_ProcedureName = 79 - CypherParserRULE_oC_Namespace = 80 - CypherParserRULE_oC_ListComprehension = 81 - CypherParserRULE_oC_PatternComprehension = 82 - CypherParserRULE_oC_PropertyLookup = 83 - CypherParserRULE_oC_CaseExpression = 84 - CypherParserRULE_oC_CaseAlternative = 85 - CypherParserRULE_oC_Variable = 86 - CypherParserRULE_oC_NumberLiteral = 87 - CypherParserRULE_oC_MapLiteral = 88 - CypherParserRULE_oC_Parameter = 89 - CypherParserRULE_oC_PropertyExpression = 90 - CypherParserRULE_oC_PropertyKeyName = 91 - CypherParserRULE_oC_IntegerLiteral = 92 - CypherParserRULE_oC_DoubleLiteral = 93 - CypherParserRULE_oC_SchemaName = 94 - CypherParserRULE_oC_ReservedWord = 95 - CypherParserRULE_oC_SymbolicName = 96 - CypherParserRULE_oC_LeftArrowHead = 97 - CypherParserRULE_oC_RightArrowHead = 98 - CypherParserRULE_oC_Dash = 99 -) - -// IOC_CypherContext is an interface to support dynamic dispatch. -type IOC_CypherContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_CypherContext differentiates from other interfaces. - IsOC_CypherContext() -} - -type OC_CypherContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_CypherContext() *OC_CypherContext { - var p = new(OC_CypherContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_Cypher - return p -} - -func (*OC_CypherContext) IsOC_CypherContext() {} - -func NewOC_CypherContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_CypherContext { - var p = new(OC_CypherContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_Cypher - - return p -} - -func (s *OC_CypherContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_CypherContext) OC_Statement() IOC_StatementContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_StatementContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_StatementContext) -} - -func (s *OC_CypherContext) EOF() antlr.TerminalNode { - return s.GetToken(CypherParserEOF, 0) -} - -func (s *OC_CypherContext) AllSP() []antlr.TerminalNode { - return s.GetTokens(CypherParserSP) -} - -func (s *OC_CypherContext) SP(i int) antlr.TerminalNode { - return s.GetToken(CypherParserSP, i) -} - -func (s *OC_CypherContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_CypherContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_CypherContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_Cypher(s) - } -} - -func (s *OC_CypherContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_Cypher(s) - } -} - -func (p *CypherParser) OC_Cypher() (localctx IOC_CypherContext) { - this := p - _ = this - - localctx = NewOC_CypherContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, CypherParserRULE_oC_Cypher) - var _la int - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(201) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(200) - p.Match(CypherParserSP) - } - - } - { - p.SetState(203) - p.OC_Statement() - } - p.SetState(208) - p.GetErrorHandler().Sync(p) - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 2, p.GetParserRuleContext()) == 1 { - p.SetState(205) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(204) - p.Match(CypherParserSP) - } - - } - { - p.SetState(207) - p.Match(CypherParserT__0) - } - - } - p.SetState(211) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(210) - p.Match(CypherParserSP) - } - - } - { - p.SetState(213) - p.Match(CypherParserEOF) - } - - return localctx -} - -// IOC_StatementContext is an interface to support dynamic dispatch. -type IOC_StatementContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_StatementContext differentiates from other interfaces. - IsOC_StatementContext() -} - -type OC_StatementContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_StatementContext() *OC_StatementContext { - var p = new(OC_StatementContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_Statement - return p -} - -func (*OC_StatementContext) IsOC_StatementContext() {} - -func NewOC_StatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_StatementContext { - var p = new(OC_StatementContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_Statement - - return p -} - -func (s *OC_StatementContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_StatementContext) OC_Query() IOC_QueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_QueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_QueryContext) -} - -func (s *OC_StatementContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_StatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_StatementContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_Statement(s) - } -} - -func (s *OC_StatementContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_Statement(s) - } -} - -func (p *CypherParser) OC_Statement() (localctx IOC_StatementContext) { - this := p - _ = this - - localctx = NewOC_StatementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, CypherParserRULE_oC_Statement) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(215) - p.OC_Query() - } - - return localctx -} - -// IOC_QueryContext is an interface to support dynamic dispatch. -type IOC_QueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_QueryContext differentiates from other interfaces. - IsOC_QueryContext() -} - -type OC_QueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_QueryContext() *OC_QueryContext { - var p = new(OC_QueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_Query - return p -} - -func (*OC_QueryContext) IsOC_QueryContext() {} - -func NewOC_QueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_QueryContext { - var p = new(OC_QueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_Query - - return p -} - -func (s *OC_QueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_QueryContext) OC_RegularQuery() IOC_RegularQueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_RegularQueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_RegularQueryContext) -} - -func (s *OC_QueryContext) OC_StandaloneCall() IOC_StandaloneCallContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_StandaloneCallContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_StandaloneCallContext) -} - -func (s *OC_QueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_QueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_QueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_Query(s) - } -} - -func (s *OC_QueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_Query(s) - } -} - -func (p *CypherParser) OC_Query() (localctx IOC_QueryContext) { - this := p - _ = this - - localctx = NewOC_QueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, CypherParserRULE_oC_Query) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(219) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(217) - p.OC_RegularQuery() - } - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(218) - p.OC_StandaloneCall() - } - - } - - return localctx -} - -// IOC_RegularQueryContext is an interface to support dynamic dispatch. -type IOC_RegularQueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_RegularQueryContext differentiates from other interfaces. - IsOC_RegularQueryContext() -} - -type OC_RegularQueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_RegularQueryContext() *OC_RegularQueryContext { - var p = new(OC_RegularQueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_RegularQuery - return p -} - -func (*OC_RegularQueryContext) IsOC_RegularQueryContext() {} - -func NewOC_RegularQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_RegularQueryContext { - var p = new(OC_RegularQueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_RegularQuery - - return p -} - -func (s *OC_RegularQueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_RegularQueryContext) OC_SingleQuery() IOC_SingleQueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_SingleQueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_SingleQueryContext) -} - -func (s *OC_RegularQueryContext) AllOC_Union() []IOC_UnionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOC_UnionContext); ok { - len++ - } - } - - tst := make([]IOC_UnionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOC_UnionContext); ok { - tst[i] = t.(IOC_UnionContext) - i++ - } - } - - return tst -} - -func (s *OC_RegularQueryContext) OC_Union(i int) IOC_UnionContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_UnionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOC_UnionContext) -} - -func (s *OC_RegularQueryContext) AllSP() []antlr.TerminalNode { - return s.GetTokens(CypherParserSP) -} - -func (s *OC_RegularQueryContext) SP(i int) antlr.TerminalNode { - return s.GetToken(CypherParserSP, i) -} - -func (s *OC_RegularQueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_RegularQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_RegularQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_RegularQuery(s) - } -} - -func (s *OC_RegularQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_RegularQuery(s) - } -} - -func (p *CypherParser) OC_RegularQuery() (localctx IOC_RegularQueryContext) { - this := p - _ = this - - localctx = NewOC_RegularQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, CypherParserRULE_oC_RegularQuery) - var _la int - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(221) - p.OC_SingleQuery() - } - p.SetState(228) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(223) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(222) - p.Match(CypherParserSP) - } - - } - { - p.SetState(225) - p.OC_Union() - } - - } - p.SetState(230) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 6, p.GetParserRuleContext()) - } - - return localctx -} - -// IOC_UnionContext is an interface to support dynamic dispatch. -type IOC_UnionContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_UnionContext differentiates from other interfaces. - IsOC_UnionContext() -} - -type OC_UnionContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_UnionContext() *OC_UnionContext { - var p = new(OC_UnionContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_Union - return p -} - -func (*OC_UnionContext) IsOC_UnionContext() {} - -func NewOC_UnionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_UnionContext { - var p = new(OC_UnionContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_Union - - return p -} - -func (s *OC_UnionContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_UnionContext) UNION() antlr.TerminalNode { - return s.GetToken(CypherParserUNION, 0) -} - -func (s *OC_UnionContext) AllSP() []antlr.TerminalNode { - return s.GetTokens(CypherParserSP) -} - -func (s *OC_UnionContext) SP(i int) antlr.TerminalNode { - return s.GetToken(CypherParserSP, i) -} - -func (s *OC_UnionContext) ALL() antlr.TerminalNode { - return s.GetToken(CypherParserALL, 0) -} - -func (s *OC_UnionContext) OC_SingleQuery() IOC_SingleQueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_SingleQueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_SingleQueryContext) -} - -func (s *OC_UnionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_UnionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_UnionContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_Union(s) - } -} - -func (s *OC_UnionContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_Union(s) - } -} - -func (p *CypherParser) OC_Union() (localctx IOC_UnionContext) { - this := p - _ = this - - localctx = NewOC_UnionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, CypherParserRULE_oC_Union) - var _la int - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(243) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 9, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(231) - p.Match(CypherParserUNION) - } - { - p.SetState(232) - p.Match(CypherParserSP) - } - { - p.SetState(233) - p.Match(CypherParserALL) - } - p.SetState(235) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(234) - p.Match(CypherParserSP) - } - - } - { - p.SetState(237) - p.OC_SingleQuery() - } - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(238) - p.Match(CypherParserUNION) - } - p.SetState(240) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - if _la == CypherParserSP { - { - p.SetState(239) - p.Match(CypherParserSP) - } - - } - { - p.SetState(242) - p.OC_SingleQuery() - } - - } - - return localctx -} - -// IOC_SingleQueryContext is an interface to support dynamic dispatch. -type IOC_SingleQueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_SingleQueryContext differentiates from other interfaces. - IsOC_SingleQueryContext() -} - -type OC_SingleQueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_SingleQueryContext() *OC_SingleQueryContext { - var p = new(OC_SingleQueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_SingleQuery - return p -} - -func (*OC_SingleQueryContext) IsOC_SingleQueryContext() {} - -func NewOC_SingleQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_SingleQueryContext { - var p = new(OC_SingleQueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_SingleQuery - - return p -} - -func (s *OC_SingleQueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_SingleQueryContext) OC_SinglePartQuery() IOC_SinglePartQueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_SinglePartQueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_SinglePartQueryContext) -} - -func (s *OC_SingleQueryContext) OC_MultiPartQuery() IOC_MultiPartQueryContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_MultiPartQueryContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_MultiPartQueryContext) -} - -func (s *OC_SingleQueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_SingleQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_SingleQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_SingleQuery(s) - } -} - -func (s *OC_SingleQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_SingleQuery(s) - } -} - -func (p *CypherParser) OC_SingleQuery() (localctx IOC_SingleQueryContext) { - this := p - _ = this - - localctx = NewOC_SingleQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, CypherParserRULE_oC_SingleQuery) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(247) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(245) - p.OC_SinglePartQuery() - } - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(246) - p.OC_MultiPartQuery() - } - - } - - return localctx -} - -// IOC_SinglePartQueryContext is an interface to support dynamic dispatch. -type IOC_SinglePartQueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOC_SinglePartQueryContext differentiates from other interfaces. - IsOC_SinglePartQueryContext() -} - -type OC_SinglePartQueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOC_SinglePartQueryContext() *OC_SinglePartQueryContext { - var p = new(OC_SinglePartQueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = CypherParserRULE_oC_SinglePartQuery - return p -} - -func (*OC_SinglePartQueryContext) IsOC_SinglePartQueryContext() {} - -func NewOC_SinglePartQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OC_SinglePartQueryContext { - var p = new(OC_SinglePartQueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = CypherParserRULE_oC_SinglePartQuery - - return p -} - -func (s *OC_SinglePartQueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *OC_SinglePartQueryContext) OC_Return() IOC_ReturnContext { - var t antlr.RuleContext - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_ReturnContext); ok { - t = ctx.(antlr.RuleContext) - break - } - } - - if t == nil { - return nil - } - - return t.(IOC_ReturnContext) -} - -func (s *OC_SinglePartQueryContext) AllOC_ReadingClause() []IOC_ReadingClauseContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOC_ReadingClauseContext); ok { - len++ - } - } - - tst := make([]IOC_ReadingClauseContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOC_ReadingClauseContext); ok { - tst[i] = t.(IOC_ReadingClauseContext) - i++ - } - } - - return tst -} - -func (s *OC_SinglePartQueryContext) OC_ReadingClause(i int) IOC_ReadingClauseContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_ReadingClauseContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOC_ReadingClauseContext) -} - -func (s *OC_SinglePartQueryContext) AllSP() []antlr.TerminalNode { - return s.GetTokens(CypherParserSP) -} - -func (s *OC_SinglePartQueryContext) SP(i int) antlr.TerminalNode { - return s.GetToken(CypherParserSP, i) -} - -func (s *OC_SinglePartQueryContext) AllOC_UpdatingClause() []IOC_UpdatingClauseContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOC_UpdatingClauseContext); ok { - len++ - } - } - - tst := make([]IOC_UpdatingClauseContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOC_UpdatingClauseContext); ok { - tst[i] = t.(IOC_UpdatingClauseContext) - i++ - } - } - - return tst -} - -func (s *OC_SinglePartQueryContext) OC_UpdatingClause(i int) IOC_UpdatingClauseContext { - var t antlr.RuleContext - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOC_UpdatingClauseContext); ok { - if j == i { - t = ctx.(antlr.RuleContext) - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOC_UpdatingClauseContext) -} - -func (s *OC_SinglePartQueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *OC_SinglePartQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - -func (s *OC_SinglePartQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.EnterOC_SinglePartQuery(s) - } -} - -func (s *OC_SinglePartQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(CypherListener); ok { - listenerT.ExitOC_SinglePartQuery(s) - } -} - -func (p *CypherParser) OC_SinglePartQuery() (localctx IOC_SinglePartQueryContext) { - this := p - _ = this - - localctx = NewOC_SinglePartQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, CypherParserRULE_oC_SinglePartQuery) - var _la int - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.SetState(284) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 19, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - p.SetState(255) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - for ((_la-48)&-(0x1f+1)) == 0 && ((1< 3 - RETURN n, friendsCount`, - gripql.NewQuery().V(), //FIXME - }, { - `MATCH (n {name: 'John'})-[:FRIEND]-(friend) - WITH n, count(friend) AS friendsCount - SET n.friendsCount = friendsCount - RETURN n.friendsCount`, - gripql.NewQuery().V(), //FIXME - }, { - `MATCH (user:User {name: 'Adam'})-[r1:FRIEND]-()-[r2:FRIEND]-(friend_of_a_friend) - RETURN friend_of_a_friend.name AS fofName`, - gripql.NewQuery().V(), //FIXME - }, { - `MATCH (me)-[:KNOWS*1..2]-(remote_friend) - WHERE me.name = 'Filipa' - RETURN remote_friend.name`, - gripql.NewQuery().V(), //FIXME - }, -} - -func TestMatch1(t *testing.T) { - - for i := range pairs { - p := pairs[i].gripql - ct := pairs[i].cypher - o, err := translate.RunParser(ct) - if err != nil { - t.Error(err) - } - if !QueryCompare(o, p) { - t.Errorf("Compiled query %s results in\n %s !=\n %s", ct, o.String(), p.String()) - } - } -} diff --git a/endpoints/cypher/translate/build.go b/endpoints/cypher/translate/build.go deleted file mode 100644 index fd71ae27..00000000 --- a/endpoints/cypher/translate/build.go +++ /dev/null @@ -1,197 +0,0 @@ -package translate - -import ( - "fmt" - "strings" - - "github.com/antlr/antlr4/runtime/Go/antlr" - "github.com/bmeg/grip/endpoints/cypher/parser" - - "github.com/bmeg/grip/gripql" - "github.com/bmeg/grip/log" - //log "github.com/sirupsen/logrus" -) - -type vertexSelect struct { - name string - label []string - selectMap map[string]string -} - -type edgeSelect struct { - name string - label []string -} - -type cypherListener struct { - *parser.BaseCypherListener - - queryType string - - vertexPath []vertexSelect - edgePath []edgeSelect - returns []string - - curVariable string - curLabels []string - - curMapKey []string - - curExpression []string - - curMap map[string]string -} - -func evalHasExpression(key string, exp string) *gripql.HasExpression { - if strings.HasPrefix(exp, "'") && strings.HasSuffix(exp, "'") { - exp = exp[1 : len(exp)-1] - } - return gripql.Eq(key, exp) -} - -func (c *cypherListener) BuildQuery() (*gripql.Query, error) { - if c.queryType == "MATCH" { - q := gripql.NewQuery() - q = q.V() - if len(c.vertexPath) > 0 && len(c.vertexPath[0].label) > 0 { - q = q.HasLabel(c.vertexPath[0].label[0]) - } - for i := 0; i < len(c.vertexPath); i++ { - if len(c.vertexPath[i].selectMap) > 0 { - for k, v := range c.vertexPath[i].selectMap { - e := evalHasExpression(k, v) - q = q.Has(e) - } - } - q = q.As(c.vertexPath[i].name) - } - if len(c.returns) > 0 { - log.Infof("Render: $" + c.returns[0] + "._data") - r := map[string]any{} - for _, i := range c.returns { - r[i] = "$" + i + "._data" - } - q = q.Render(r) - } - log.Debugf("Query: %s", q.String()) - return q, nil - } else if c.queryType == "CREATE" { - log.Debugf("Query Build: %#v", c) - } - return nil, fmt.Errorf("unknown query type") -} - -func (c *cypherListener) EnterOC_Statement(ctx *parser.OC_StatementContext) { - log.Debugf("Entering Statement %#v", ctx.GetText()) -} - -func (c *cypherListener) EnterOC_Match(ctx *parser.OC_MatchContext) { - log.Debugf("Is Match") - c.vertexPath = make([]vertexSelect, 0, 10) - c.edgePath = make([]edgeSelect, 0, 10) -} - -func (c *cypherListener) ExitOC_Match(ctx *parser.OC_MatchContext) { - log.Debugf("Building Query: %#v", c.vertexPath) - c.queryType = "MATCH" -} - -func (c *cypherListener) EnterOC_Create(ctx *parser.OC_CreateContext) { - log.Debugf("Is Create") - c.vertexPath = make([]vertexSelect, 0, 10) - c.edgePath = make([]edgeSelect, 0, 10) -} - -func (c *cypherListener) ExitOC_Create(ctx *parser.OC_CreateContext) { - log.Debugf("Building Query: %#v", c.vertexPath) - c.queryType = "CREATE" -} - -func (c *cypherListener) EnterOC_PatternElement(ctx *parser.OC_PatternElementContext) { - log.Debugf("Is pattern %s", ctx.GetText()) -} - -func (c *cypherListener) EnterOC_NodePattern(ctx *parser.OC_NodePatternContext) { - log.Debugf("NodePattern: %s", ctx.GetText()) - c.curVariable = "" - c.curLabels = []string{} - c.curMap = map[string]string{} -} - -func (c *cypherListener) ExitOC_NodePattern(ctx *parser.OC_NodePatternContext) { - vs := vertexSelect{name: c.curVariable, label: c.curLabels} - if len(c.curMap) > 0 { - vs.selectMap = c.curMap - } - c.vertexPath = append(c.vertexPath, vs) -} - -func (c *cypherListener) EnterOC_Variable(ctx *parser.OC_VariableContext) { - log.Debugf("Variable: %s", ctx.GetText()) - c.curVariable = ctx.GetText() -} - -func (c *cypherListener) EnterOC_MapLiteral(ctx *parser.OC_MapLiteralContext) { - log.Debugf("MapLiteral: %s", ctx.GetText()) - c.curMapKey = []string{} - c.curExpression = []string{} -} - -func (c *cypherListener) ExitOC_MapLiteral(ctx *parser.OC_MapLiteralContext) { - out := map[string]string{} - for i := 0; i < len(c.curMapKey) && i < len(c.curExpression); i++ { - out[c.curMapKey[i]] = c.curExpression[i] - } - c.curMap = out -} - -func (c *cypherListener) EnterOC_PropertyKeyName(ctx *parser.OC_PropertyKeyNameContext) { - c.curMapKey = append(c.curMapKey, ctx.GetText()) -} - -func (c *cypherListener) EnterOC_Expression(ctx *parser.OC_ExpressionContext) { - log.Debugf("Expression: %s", ctx.GetText()) - c.curExpression = append(c.curExpression, ctx.GetText()) -} - -func (c *cypherListener) EnterOC_RelationshipPattern(ctx *parser.OC_RelationshipPatternContext) { - log.Debugf("RelationshipPattern: %s", ctx.GetText()) - c.curVariable = "" - c.curLabels = []string{} -} - -func (c *cypherListener) ExitOC_RelationshipPattern(ctx *parser.OC_RelationshipPatternContext) { - e := edgeSelect{name: c.curVariable, label: c.curLabels} - log.Debugf("RelationshipPattern: %s", e) - c.edgePath = append(c.edgePath, e) -} - -func (c *cypherListener) EnterOC_LabelName(ctx *parser.OC_LabelNameContext) { - log.Debugf("Label: %s", ctx.GetText()) - c.curLabels = append(c.curLabels, ctx.GetText()) -} - -func (c *cypherListener) EnterOC_Return(ctx *parser.OC_ReturnContext) { - log.Debugf("Returns: %s", ctx.GetText()) - c.returns = []string{} -} - -func (c *cypherListener) EnterOC_ProjectionItem(ctx *parser.OC_ProjectionItemContext) { - log.Infof("Return Projections: %s", ctx.GetText()) - c.returns = append(c.returns, ctx.GetText()) -} - -func RunParser(oc string) (*gripql.Query, error) { - // Setup the input - is := antlr.NewInputStream(oc) - // Create the Lexer - lexer := parser.NewCypherLexer(is) - stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) - // Create the Parser - p := parser.NewCypherParser(stream) - cl := &cypherListener{} - // Finally parse the expression - antlr.ParseTreeWalkerDefault.Walk(cl, p.OC_Cypher()) - - return cl.BuildQuery() -} diff --git a/endpoints/gql/GQL_COMPILER_PROGRESS.md b/endpoints/gql/GQL_COMPILER_PROGRESS.md new file mode 100644 index 00000000..b34996f3 --- /dev/null +++ b/endpoints/gql/GQL_COMPILER_PROGRESS.md @@ -0,0 +1,53 @@ +# GQL Compiler Progress and TODOs + +Date: 2026-03-19 + +This document summarizes the current implementation status of the read-only GQL to GripQL compiler and the most relevant follow-up work. + +## Scope Goal + +Provide a minimal read-only GQL translator that compiles a constrained subset of queries into GripQL traversal steps. + +## Current Status + +Implemented in `gql/compiler/build.go`. + +Supported today: + +- `MATCH` with node labels and inline property maps +- Linear relationship traversal with `Out`, `In`, and `Both` direction mapping +- Minimal `WHERE` predicates of the form `var.field literal` +- `RETURN var`, `RETURN var.field`, and aliased property projections +- Minimal `ORDER BY` on the current traversal variable +- `SKIP` and `LIMIT` integer literals +- Syntax error collection from the generated GQL parser + +Intentionally unsupported today: + +- `CREATE`, `INSERT`, `SET`, `DELETE`, `REMOVE` +- `WITH`, `UNION`, `OPTIONAL MATCH`, `GROUP BY`, `YIELD` +- Procedure calls and `SELECT` +- Variable-length relationships and quantified paths +- Complex `WHERE` expressions +- Aggregations and complex `RETURN` expressions + +## Active Files + +- `gql/compiler/build.go` +- `gql/handle.go` +- `gql/test/gql_test.go` +- `gql/GQL_TO_GRIPQL.md` + +## Recent Cleanup + +- Renamed active compiler symbols and error messages to refer to GQL consistently. +- Consolidated endpoint integration on the active GQL handler path. +- Removed the unused legacy parser implementation tree. +- Kept the working compiler behavior unchanged for the supported subset. + +## Highest-Value Next Steps + +1. Add structured compiler error categories instead of plain strings. +2. Expand `WHERE` support to boolean composition while keeping explicit scope rules. +3. Add more whitespace, casing, and malformed-query coverage in `gql/test/gql_test.go`. +4. Decide whether to support simple aggregation pipelines or reject them permanently. \ No newline at end of file diff --git a/endpoints/gql/GQL_TO_GRIPQL.md b/endpoints/gql/GQL_TO_GRIPQL.md new file mode 100644 index 00000000..5f42902c --- /dev/null +++ b/endpoints/gql/GQL_TO_GRIPQL.md @@ -0,0 +1,225 @@ +# GQL to GripQL Mapping + +This document describes how the GQL compiler in this repository translates queries into GripQL. + +The current implementation is intentionally minimal and read-only. Unsupported features return explicit compile errors. + +## Translator Entry Point + +- Compiler package: `gql/compiler/build.go` +- Parse function: `RunParser(gql string) (*gripql.Query, error)` + +## GripQL Syntax Used by the Compiler + +The compiler currently emits these GripQL steps: + +- `V()` +- `HasLabel(...)` +- `Has(gripql.Eq(...))` for inline node map properties +- `Has(gripql.Eq/Neq/Gt/Gte/Lt/Lte(...))` for supported WHERE predicates +- `Out(...)`, `In(...)`, and `Both(...)` for relationship traversal +- `As(...)` +- `Sort(...)` +- `Render(...)` +- `Skip(...)` +- `Limit(...)` + +## Supported GQL Subset + +### MATCH with one node pattern + +GQL: + +```gql +MATCH (n:Person {name: 'Bob'}) +RETURN n +``` + +GripQL: + +```go +gripql.NewQuery(). + V(). + HasLabel("Person"). + Has(gripql.Eq("name", "Bob")). + As("n"). + Render("$n") +``` + +Notes: + +- One node pattern is supported. +- Node labels are mapped to `HasLabel`. +- Node inline map properties are mapped to `Has(gripql.Eq(...))`. +- A single projection item in `RETURN` is rendered. + +### MATCH with linear relationship traversal + +GQL: + +```gql +MATCH (n)-[:FRIEND]->(friend) +RETURN friend +``` + +GripQL: + +```go +gripql.NewQuery(). + V(). + As("n"). + Out("FRIEND"). + As("friend"). + Render("$friend") +``` + +Direction mapping, applied per hop in the chain: + +- `-[:TYPE]->` maps to `Out("TYPE")` +- `<-[:TYPE]-` maps to `In("TYPE")` +- `-[:TYPE]-` maps to `Both("TYPE")` + +Linear multi-hop chains are supported by applying the same mapping repeatedly. + +### MATCH with minimal WHERE predicate + +GQL: + +```gql +MATCH (n:Person) +WHERE n.name = 'Bob' +RETURN n +``` + +GripQL: + +```go +gripql.NewQuery(). + V(). + HasLabel("Person"). + As("n"). + Has(gripql.Eq("name", "Bob")). + Render("$n") +``` + +Supported WHERE forms: + +- `var.field = literal` +- `var.field != literal` and `var.field <> literal` +- `var.field > literal` +- `var.field >= literal` +- `var.field < literal` +- `var.field <= literal` + +WHERE scope rule, current implementation: + +- The `var` in `WHERE` must be the current traversal variable, the last node in the path. + +### RETURN projection forms + +Supported RETURN forms: + +- `RETURN var` +- `RETURN var.field` +- `RETURN var.field AS alias` +- Multi-item combinations of the above + +Example: + +```gql +MATCH (n:Person {name: 'Bob'}) +RETURN n.name AS personName +``` + +```go +gripql.NewQuery(). + V(). + HasLabel("Person"). + Has(gripql.Eq("name", "Bob")). + As("n"). + Render(map[string]any{"personName": "$n.name"}) +``` + +### Pagination clauses + +GQL: + +```gql +MATCH (n:Person) +RETURN n +SKIP 5 +LIMIT 10 +``` + +GripQL: + +```go +gripql.NewQuery(). + V(). + HasLabel("Person"). + As("n"). + Render("$n"). + Skip(5). + Limit(10) +``` + +Notes: + +- `SKIP` and `LIMIT` currently accept only integer literals. + +### ORDER BY clause + +GQL: + +```gql +MATCH (n:Person) +RETURN n +ORDER BY n.name DESC +``` + +GripQL: + +```go +gripql.NewQuery(). + V(). + HasLabel("Person"). + As("n"). + Sort([]*gripql.SortField{{Field: "name", Descending: true}}). + Render("$n") +``` + +Notes: + +- Supported form is `ORDER BY var.field [ASC|DESC]`. +- Multiple sort keys are supported, comma-separated. +- The `var` in `ORDER BY` must be the current traversal variable. + +## Unsupported GQL Features, Current + +The compiler currently rejects queries containing any of the following: + +- Variable-length relationships, for example `*1..2` +- Complex `WHERE` expressions, for example `AND`, `OR`, function calls, or non-literal comparisons +- `WHERE` on a non-current traversal variable +- `WITH` +- `SET` +- `DELETE` +- `REMOVE` +- `MERGE` +- `UNWIND` +- `UNION` +- Complex `RETURN` expressions, for example functions like `count(n)`, arithmetic, or nested expressions +- `CREATE`, write operations + +## Error Behavior + +Unsupported features return an error from `RunParser` and do not emit partial fallback queries. + +## Developer Notes for Extending + +When extending the translator: + +- Keep `gql/compiler/build.go` as the translation source of truth. +- Add table-driven tests in `gql/test/gql_test.go` for every new supported syntax shape. +- Keep unsupported features explicit until fully implemented. +- Add new mapping examples to this document and verify they compile through `RunParser`. \ No newline at end of file diff --git a/endpoints/gql/README.md b/endpoints/gql/README.md new file mode 100644 index 00000000..31c68d0e --- /dev/null +++ b/endpoints/gql/README.md @@ -0,0 +1,16 @@ + +## Notes for building code + +``` +curl -O https://www.antlr.org/download/antlr-4.13.2-complete.jar +``` + +``` +./generate.sh +``` + +## Compiler Mapping Guide + +For the currently supported GQL subset and its GripQL translation mapping, see `GQL_TO_GRIPQL.md`. + +For current implementation status and prioritized remaining TODOs, see `GQL_COMPILER_PROGRESS.md`. diff --git a/endpoints/gql/compiler/build.go b/endpoints/gql/compiler/build.go new file mode 100644 index 00000000..31a7989b --- /dev/null +++ b/endpoints/gql/compiler/build.go @@ -0,0 +1,677 @@ +package compiler + +import ( + "fmt" + "regexp" + "strconv" + "strings" + + "github.com/antlr4-go/antlr/v4" + "github.com/bmeg/grip/endpoints/gql/parser" + + "github.com/bmeg/grip/gripql" + "github.com/bmeg/grip/log" + //log "github.com/sirupsen/logrus" +) + +type vertexSelect struct { + name string + label []string + selectMap map[string]string +} + +type edgeSelect struct { + name string + label []string + direction string +} + +type gqlListener struct { + *parser.BaseGQLListener + + queryType string + + unsupported []string + + vertexPath []vertexSelect + edgePath []edgeSelect + returns []string + + curVariable string + curLabels []string + inRelation bool + inPattern bool + + curMap map[string]string + currentEdgeDirection string + + whereExpr string + orderExpr string + skipExpr string + limitExpr string +} + +type syntaxErrorListener struct { + *antlr.DefaultErrorListener + errors []string +} + +func (s *syntaxErrorListener) SyntaxError(_ antlr.Recognizer, _ interface{}, line, column int, msg string, _ antlr.RecognitionException) { + s.errors = append(s.errors, fmt.Sprintf("line %d:%d %s", line, column, msg)) +} + +func evalHasExpression(key string, exp string) *gripql.HasExpression { + if strings.HasPrefix(exp, "'") && strings.HasSuffix(exp, "'") { + exp = exp[1 : len(exp)-1] + } + return gripql.Eq(key, exp) +} + +var simpleVariableName = regexp.MustCompile(`^[A-Za-z_][A-Za-z0-9_]*$`) +var simpleWhereExpression = regexp.MustCompile(`^([A-Za-z_][A-Za-z0-9_]*)\.([A-Za-z_][A-Za-z0-9_]*)(=|<>|!=|<=|>=|<|>)(.+)$`) +var simpleReturnValue = regexp.MustCompile(`^([A-Za-z_][A-Za-z0-9_]*)(?:\.([A-Za-z_][A-Za-z0-9_]*))?$`) +var simpleOrderItem = regexp.MustCompile(`^([A-Za-z_][A-Za-z0-9_]*)\.([A-Za-z_][A-Za-z0-9_]*)$`) + +type returnProjection struct { + key string + value string + isBare bool +} + +func addVertexStep(q *gripql.Query, v vertexSelect) *gripql.Query { + if len(v.label) > 0 { + q = q.HasLabel(v.label[0]) + } + if len(v.selectMap) > 0 { + for k, val := range v.selectMap { + e := evalHasExpression(k, val) + q = q.Has(e) + } + } + if v.name != "" { + q = q.As(v.name) + } + return q +} + +func parseScalarLiteral(raw string) (any, error) { + raw = strings.TrimSpace(raw) + if len(raw) >= 2 { + if (raw[0] == '\'' && raw[len(raw)-1] == '\'') || (raw[0] == '"' && raw[len(raw)-1] == '"') { + return raw[1 : len(raw)-1], nil + } + } + + lower := strings.ToLower(raw) + if lower == "true" { + return true, nil + } + if lower == "false" { + return false, nil + } + if lower == "null" { + return nil, nil + } + + if i, err := strconv.ParseInt(raw, 10, 64); err == nil { + return i, nil + } + if f, err := strconv.ParseFloat(raw, 64); err == nil { + return f, nil + } + + return nil, fmt.Errorf("unsupported literal: %s", raw) +} + +func parseWhereExpression(whereText string) (string, *gripql.HasExpression, error) { + expr := strings.TrimSpace(whereText) + if strings.HasPrefix(strings.ToUpper(expr), "WHERE") { + expr = strings.TrimSpace(expr[5:]) + } + + if strings.Contains(expr, " AND ") || strings.Contains(expr, " OR ") { + return "", nil, fmt.Errorf("unsupported GQL features: complex WHERE expression") + } + + parts := simpleWhereExpression.FindStringSubmatch(expr) + if len(parts) != 5 { + return "", nil, fmt.Errorf("unsupported GQL features: WHERE expression") + } + + varName := parts[1] + key := parts[2] + op := parts[3] + rawVal := parts[4] + + val, err := parseScalarLiteral(rawVal) + if err != nil { + return "", nil, fmt.Errorf("unsupported GQL features: WHERE literal") + } + + switch op { + case "=": + return varName, gripql.Eq(key, val), nil + case "<>", "!=": + return varName, gripql.Neq(key, val), nil + case ">": + return varName, gripql.Gt(key, val), nil + case ">=": + return varName, gripql.Gte(key, val), nil + case "<": + return varName, gripql.Lt(key, val), nil + case "<=": + return varName, gripql.Lte(key, val), nil + default: + return "", nil, fmt.Errorf("unsupported GQL features: WHERE operator") + } +} + +func parseReturnProjection(text string) (returnProjection, error) { + trimmed := strings.TrimSpace(text) + valueExpr, alias := splitReturnProjectionAlias(trimmed) + + match := simpleReturnValue.FindStringSubmatch(valueExpr) + if len(match) != 3 { + return returnProjection{}, fmt.Errorf("unsupported GQL features: complex RETURN projection (%q)", text) + } + + varName := match[1] + field := match[2] + + if !simpleVariableName.MatchString(varName) { + return returnProjection{}, fmt.Errorf("unsupported GQL features: complex RETURN projection (%q)", text) + } + + value := "$" + varName + isBare := true + key := varName + + if field != "" { + value = "$" + varName + "." + field + key = varName + "." + field + isBare = false + } + + if alias != "" { + key = alias + isBare = false + } + + return returnProjection{key: key, value: value, isBare: isBare}, nil +} + +func splitReturnProjectionAlias(text string) (string, string) { + upper := strings.ToUpper(text) + for i := len(text) - 2; i >= 0; i-- { + if upper[i:i+2] != "AS" { + continue + } + + left := strings.TrimSpace(text[:i]) + right := strings.TrimSpace(text[i+2:]) + if left == "" || right == "" { + continue + } + if simpleVariableName.MatchString(right) { + return left, right + } + } + + return text, "" +} + +func parseClauseUint(clauseText string, keyword string) (uint32, error) { + expr := strings.TrimSpace(clauseText) + upperKeyword := strings.ToUpper(keyword) + upperExpr := strings.ToUpper(expr) + if strings.HasPrefix(upperExpr, upperKeyword) { + expr = strings.TrimSpace(expr[len(keyword):]) + } + + v, err := strconv.ParseUint(expr, 10, 32) + if err != nil { + return 0, fmt.Errorf("unsupported GQL features: %s expression", upperKeyword) + } + return uint32(v), nil +} + +func parseOrderExpression(orderText string, currentVar string) ([]*gripql.SortField, error) { + expr := strings.ReplaceAll(strings.TrimSpace(orderText), " ", "") + upperExpr := strings.ToUpper(expr) + if strings.HasPrefix(upperExpr, "ORDERBY") { + expr = strings.TrimSpace(expr[len("ORDERBY"):]) + } + + if expr == "" { + return nil, fmt.Errorf("unsupported GQL features: ORDER BY expression") + } + + items := strings.Split(expr, ",") + sortFields := make([]*gripql.SortField, 0, len(items)) + for _, item := range items { + compact := strings.TrimSpace(item) + upperCompact := strings.ToUpper(compact) + + descending := false + if strings.HasSuffix(upperCompact, "DESC") { + descending = true + compact = strings.TrimSpace(compact[:len(compact)-4]) + } else if strings.HasSuffix(upperCompact, "ASC") { + compact = strings.TrimSpace(compact[:len(compact)-3]) + } + + parts := simpleOrderItem.FindStringSubmatch(compact) + if len(parts) < 3 { + return nil, fmt.Errorf("unsupported GQL features: ORDER BY item") + } + + varName := parts[1] + field := parts[2] + if varName != currentVar { + return nil, fmt.Errorf("unsupported GQL features: ORDER BY on non-current variable") + } + + sortFields = append(sortFields, &gripql.SortField{Field: field, Descending: descending}) + } + + return sortFields, nil +} + +func (c *gqlListener) markUnsupported(feature string) { + for _, v := range c.unsupported { + if v == feature { + return + } + } + c.unsupported = append(c.unsupported, feature) +} + +func (c *gqlListener) BuildQuery() (*gripql.Query, error) { + if len(c.unsupported) > 0 { + return nil, fmt.Errorf("unsupported GQL features: %s", strings.Join(c.unsupported, ", ")) + } + + if c.queryType == "MATCH" { + if len(c.vertexPath) == 0 { + return nil, fmt.Errorf("invalid query: MATCH clause did not include any node patterns") + } + if len(c.edgePath) > 0 && len(c.vertexPath) != len(c.edgePath)+1 { + return nil, fmt.Errorf("invalid query: path length mismatch (vertices=%d, edges=%d)", len(c.vertexPath), len(c.edgePath)) + } + q := gripql.NewQuery() + q = q.V() + q = addVertexStep(q, c.vertexPath[0]) + + for i := 0; i < len(c.edgePath); i++ { + e := c.edgePath[i] + switch e.direction { + case "out": + q = q.Out(e.label...) + case "in": + q = q.In(e.label...) + case "both": + q = q.Both(e.label...) + default: + return nil, fmt.Errorf("unsupported GQL features: relationship direction") + } + q = addVertexStep(q, c.vertexPath[i+1]) + } + + if c.whereExpr != "" { + whereVar, whereExpr, err := parseWhereExpression(c.whereExpr) + if err != nil { + return nil, err + } + currentVar := c.vertexPath[len(c.vertexPath)-1].name + if currentVar == "" || whereVar != currentVar { + return nil, fmt.Errorf("unsupported GQL features: WHERE on non-current variable") + } + q = q.Has(whereExpr) + } + + if c.orderExpr != "" { + currentVar := c.vertexPath[len(c.vertexPath)-1].name + if currentVar == "" { + return nil, fmt.Errorf("unsupported GQL features: ORDER BY without current variable") + } + sortFields, err := parseOrderExpression(c.orderExpr, currentVar) + if err != nil { + return nil, err + } + q = q.Sort(sortFields) + } + + if len(c.returns) > 0 { + projections := make([]returnProjection, 0, len(c.returns)) + for _, item := range c.returns { + p, err := parseReturnProjection(item) + if err != nil { + return nil, err + } + projections = append(projections, p) + } + + if len(projections) == 1 && projections[0].isBare { + q = q.Render(projections[0].value) + } else { + renderMap := map[string]any{} + for _, p := range projections { + renderMap[p.key] = p.value + } + q = q.Render(renderMap) + } + } + + if c.skipExpr != "" { + skipVal, err := parseClauseUint(c.skipExpr, "SKIP") + if err != nil { + return nil, err + } + q = q.Skip(skipVal) + } + + if c.limitExpr != "" { + limitVal, err := parseClauseUint(c.limitExpr, "LIMIT") + if err != nil { + return nil, err + } + q = q.Limit(limitVal) + } + log.Debugf("Query: %s", q.String()) + return q, nil + } else if c.queryType == "CREATE" { + return nil, fmt.Errorf("unsupported GQL features: CREATE") + } + return nil, fmt.Errorf("unknown query type") +} + +func (c *gqlListener) EnterStatement(ctx *parser.StatementContext) { + log.Debugf("Entering Statement %#v", ctx.GetText()) +} + +func (c *gqlListener) EnterMatchStatement(ctx *parser.MatchStatementContext) { + log.Debugf("Is Match") + c.vertexPath = make([]vertexSelect, 0, 10) + c.edgePath = make([]edgeSelect, 0, 10) + c.returns = nil + c.whereExpr = "" + c.orderExpr = "" + c.skipExpr = "" + c.limitExpr = "" +} + +func (c *gqlListener) ExitMatchStatement(ctx *parser.MatchStatementContext) { + log.Debugf("Building Query: %#v", c.vertexPath) + c.queryType = "MATCH" +} + +func (c *gqlListener) EnterCreateSchemaStatement(ctx *parser.CreateSchemaStatementContext) { + c.markUnsupported("CREATE") +} + +func (c *gqlListener) EnterCreateGraphStatement(ctx *parser.CreateGraphStatementContext) { + c.markUnsupported("CREATE") +} + +func (c *gqlListener) EnterCreateGraphTypeStatement(ctx *parser.CreateGraphTypeStatementContext) { + c.markUnsupported("CREATE") +} + +func (c *gqlListener) EnterNodePattern(ctx *parser.NodePatternContext) { + log.Debugf("NodePattern: %s", ctx.GetText()) + c.inPattern = true + c.inRelation = false + c.curVariable = "" + c.curLabels = []string{} + c.curMap = map[string]string{} +} + +func (c *gqlListener) ExitNodePattern(ctx *parser.NodePatternContext) { + vs := vertexSelect{name: c.curVariable, label: c.curLabels} + if len(c.curMap) > 0 { + vs.selectMap = c.curMap + } + c.vertexPath = append(c.vertexPath, vs) + c.inPattern = false +} + +func (c *gqlListener) EnterElementVariable(ctx *parser.ElementVariableContext) { + if !c.inPattern { + return + } + log.Debugf("Variable: %s", ctx.GetText()) + c.curVariable = ctx.GetText() +} + +func (c *gqlListener) EnterPropertyKeyValuePair(ctx *parser.PropertyKeyValuePairContext) { + if !c.inPattern || c.inRelation { + return + } + key, value, ok := strings.Cut(ctx.GetText(), ":") + if !ok || key == "" || value == "" { + c.markUnsupported("property map") + return + } + c.curMap[key] = value +} + +func (c *gqlListener) EnterEdgePattern(ctx *parser.EdgePatternContext) { + log.Debugf("EdgePattern: %s", ctx.GetText()) + c.inPattern = true + c.inRelation = true + c.curVariable = "" + c.curLabels = []string{} + c.curMap = map[string]string{} + c.currentEdgeDirection = "both" +} + +func (c *gqlListener) EnterFullEdgePointingLeft(ctx *parser.FullEdgePointingLeftContext) { + c.currentEdgeDirection = "in" + _ = ctx +} + +func (c *gqlListener) EnterFullEdgePointingRight(ctx *parser.FullEdgePointingRightContext) { + c.currentEdgeDirection = "out" + _ = ctx +} + +func (c *gqlListener) EnterFullEdgeUndirected(ctx *parser.FullEdgeUndirectedContext) { + c.currentEdgeDirection = "both" + _ = ctx +} + +func (c *gqlListener) EnterFullEdgeLeftOrUndirected(ctx *parser.FullEdgeLeftOrUndirectedContext) { + c.markUnsupported("relationship direction") + _ = ctx +} + +func (c *gqlListener) EnterFullEdgeUndirectedOrRight(ctx *parser.FullEdgeUndirectedOrRightContext) { + c.markUnsupported("relationship direction") + _ = ctx +} + +func (c *gqlListener) EnterFullEdgeLeftOrRight(ctx *parser.FullEdgeLeftOrRightContext) { + c.markUnsupported("relationship direction") + _ = ctx +} + +func (c *gqlListener) EnterFullEdgeAnyDirection(ctx *parser.FullEdgeAnyDirectionContext) { + c.currentEdgeDirection = "both" + _ = ctx +} + +func (c *gqlListener) ExitEdgePattern(ctx *parser.EdgePatternContext) { + e := edgeSelect{name: c.curVariable, label: c.curLabels, direction: c.currentEdgeDirection} + log.Debugf("RelationshipPattern: %s", e) + c.edgePath = append(c.edgePath, e) + c.inPattern = false + c.inRelation = false + _ = ctx +} + +func (c *gqlListener) EnterLabelName(ctx *parser.LabelNameContext) { + if !c.inPattern { + return + } + log.Debugf("Label: %s", ctx.GetText()) + c.curLabels = append(c.curLabels, ctx.GetText()) +} + +func (c *gqlListener) EnterReturnStatement(ctx *parser.ReturnStatementContext) { + log.Debugf("Returns: %s", ctx.GetText()) + c.returns = []string{} +} + +func (c *gqlListener) EnterReturnItem(ctx *parser.ReturnItemContext) { + log.Debugf("Return Projections: %s", ctx.GetText()) + c.returns = append(c.returns, ctx.GetText()) +} + +func (c *gqlListener) EnterWhereClause(ctx *parser.WhereClauseContext) { + c.whereExpr = ctx.GetText() +} + +func (c *gqlListener) EnterGraphPatternWhereClause(ctx *parser.GraphPatternWhereClauseContext) { + if c.whereExpr == "" { + c.whereExpr = ctx.GetText() + } +} + +func (c *gqlListener) EnterElementPatternWhereClause(ctx *parser.ElementPatternWhereClauseContext) { + if c.whereExpr == "" { + c.whereExpr = ctx.GetText() + } +} + +func (c *gqlListener) EnterInsertStatement(ctx *parser.InsertStatementContext) { + c.markUnsupported("CREATE") +} + +func (c *gqlListener) EnterSetStatement(ctx *parser.SetStatementContext) { + c.markUnsupported("SET") + _ = ctx +} + +func (c *gqlListener) EnterDeleteStatement(ctx *parser.DeleteStatementContext) { + c.markUnsupported("DELETE") + _ = ctx +} + +func (c *gqlListener) EnterRemoveStatement(ctx *parser.RemoveStatementContext) { + c.markUnsupported("REMOVE") + _ = ctx +} + +func (c *gqlListener) EnterLetStatement(ctx *parser.LetStatementContext) { + c.markUnsupported("WITH") + _ = ctx +} + +func (c *gqlListener) EnterForStatement(ctx *parser.ForStatementContext) { + c.markUnsupported("FOR") + _ = ctx +} + +func (c *gqlListener) EnterQueryConjunction(ctx *parser.QueryConjunctionContext) { + c.markUnsupported("UNION") + _ = ctx +} + +func (c *gqlListener) EnterSelectStatement(ctx *parser.SelectStatementContext) { + c.markUnsupported("SELECT") + _ = ctx +} + +func (c *gqlListener) EnterCallProcedureStatement(ctx *parser.CallProcedureStatementContext) { + c.markUnsupported("procedure call") + _ = ctx +} + +func (c *gqlListener) EnterOptionalMatchStatement(ctx *parser.OptionalMatchStatementContext) { + c.markUnsupported("OPTIONAL MATCH") + _ = ctx +} + +func (c *gqlListener) EnterGroupByClause(ctx *parser.GroupByClauseContext) { + c.markUnsupported("GROUP BY") + _ = ctx +} + +func (c *gqlListener) EnterGraphPatternYieldClause(ctx *parser.GraphPatternYieldClauseContext) { + c.markUnsupported("YIELD") + _ = ctx +} + +func (c *gqlListener) EnterPathVariableDeclaration(ctx *parser.PathVariableDeclarationContext) { + c.markUnsupported("path variables") + _ = ctx +} + +func (c *gqlListener) EnterKeepClause(ctx *parser.KeepClauseContext) { + c.markUnsupported("KEEP") + _ = ctx +} + +func (c *gqlListener) EnterPathPatternPrefix(ctx *parser.PathPatternPrefixContext) { + c.markUnsupported("path search") + _ = ctx +} + +func (c *gqlListener) EnterGraphPatternQuantifier(ctx *parser.GraphPatternQuantifierContext) { + c.markUnsupported("variable-length relationships") + _ = ctx +} + +func (c *gqlListener) EnterFixedQuantifier(ctx *parser.FixedQuantifierContext) { + c.markUnsupported("variable-length relationships") + _ = ctx +} + +func (c *gqlListener) EnterGeneralQuantifier(ctx *parser.GeneralQuantifierContext) { + c.markUnsupported("variable-length relationships") + _ = ctx +} + +func (c *gqlListener) EnterFilterStatement(ctx *parser.FilterStatementContext) { + upper := strings.ToUpper(ctx.GetText()) + if !strings.HasPrefix(upper, "FILTERWHERE") { + c.markUnsupported("FILTER") + } +} + +func (c *gqlListener) EnterOrderByClause(ctx *parser.OrderByClauseContext) { + c.orderExpr = ctx.GetText() +} + +func (c *gqlListener) EnterOffsetClause(ctx *parser.OffsetClauseContext) { + c.skipExpr = ctx.GetText() +} + +func (c *gqlListener) EnterLimitClause(ctx *parser.LimitClauseContext) { + c.limitExpr = ctx.GetText() +} + +func RunParser(gqlText string) (*gripql.Query, error) { + // Setup the input + is := antlr.NewInputStream(gqlText) + errorListener := &syntaxErrorListener{DefaultErrorListener: antlr.NewDefaultErrorListener()} + // Create the Lexer + lexer := parser.NewGQLLexer(is) + lexer.RemoveErrorListeners() + lexer.AddErrorListener(errorListener) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + // Create the Parser + p := parser.NewGQLParser(stream) + p.RemoveErrorListeners() + p.AddErrorListener(errorListener) + cl := &gqlListener{BaseGQLListener: &parser.BaseGQLListener{}} + // Finally parse the expression + tree := p.GqlProgram() + antlr.ParseTreeWalkerDefault.Walk(cl, tree) + + if len(errorListener.errors) > 0 { + return nil, fmt.Errorf("parse error: %s", strings.Join(errorListener.errors, "; ")) + } + + return cl.BuildQuery() +} diff --git a/endpoints/gql/generate.sh b/endpoints/gql/generate.sh new file mode 100755 index 00000000..175d2d05 --- /dev/null +++ b/endpoints/gql/generate.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +git clone https://github.com/opengql/grammar.git + +cd grammar && java -jar ../antlr-4.13.2-complete.jar -Dlanguage=Go -o ../parser GQL.g4 diff --git a/endpoints/gql/handle.go b/endpoints/gql/handle.go new file mode 100644 index 00000000..0beba9aa --- /dev/null +++ b/endpoints/gql/handle.go @@ -0,0 +1,101 @@ +/* +GQL Web endpoint +*/ + +//go:generate ./generate.sh + +package gql + +import ( + "encoding/json" + "fmt" + "io" + "net/http" + "regexp" + "strings" + + "github.com/bmeg/grip/endpoints/gql/compiler" + "github.com/bmeg/grip/gripql" + "google.golang.org/protobuf/encoding/protojson" + + log "github.com/sirupsen/logrus" +) + +// Handler is a GQL endpoint to query the Grip database. +type Handler struct { + client gripql.Client +} + +// NewHTTPHandler initializes a new GQL handler. +func NewHTTPHandler(client gripql.Client) (http.Handler, error) { + h := &Handler{ + client: client, + } + return h, nil +} + +// ServeHTTP responds to HTTP GQL requests. +func (gh *Handler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { + ctx := request.Context() + pathRE := regexp.MustCompile("/gql/(.*)$") + parts := pathRE.FindStringSubmatch(request.URL.Path) + if len(parts) < 2 { + http.Error(writer, "invalid gql path", http.StatusBadRequest) + return + } + graphName := parts[1] + + if request.Method != "POST" { + http.Error(writer, "method not allowed", http.StatusMethodNotAllowed) + return + } + + body, err := io.ReadAll(request.Body) + if err != nil { + http.Error(writer, fmt.Sprintf("failed to read request body: %s", err), http.StatusBadRequest) + return + } + + var requestPayload struct { + Query string `json:"query"` + } + if err := json.Unmarshal(body, &requestPayload); err != nil { + http.Error(writer, fmt.Sprintf("failed to parse request body as JSON: %s", err), http.StatusBadRequest) + return + } + if strings.TrimSpace(requestPayload.Query) == "" { + http.Error(writer, "missing query in request body", http.StatusBadRequest) + return + } + + gqlQuery := requestPayload.Query + gripQuery, err := compiler.RunParser(gqlQuery) + if err != nil { + log.Printf("Parse Error: %s", err) + http.Error(writer, fmt.Sprintf("failed to parse query: %s", err), http.StatusInternalServerError) + return + } + log.Printf("GQL Query: %s, %s = %s", graphName, gqlQuery, gripQuery.String()) + + result, err := gh.client.Traversal(ctx, + &gripql.GraphQuery{ + Graph: graphName, + Query: gripQuery.Statements, + }, + ) + if err != nil { + log.Printf("Query Error: %s", err) + http.Error(writer, fmt.Sprintf("failed to execute query: %s", err), http.StatusInternalServerError) + return + } + + for row := range result { + rowBytes, err := protojson.Marshal(row.GetRender()) + if err != nil { + log.Printf("Marshal Error: %s", err) + continue + } + writer.Write(rowBytes) + writer.Write([]byte("\n")) + } +} diff --git a/endpoints/gql/parser/GQL.interp b/endpoints/gql/parser/GQL.interp new file mode 100644 index 00000000..444b8cb2 --- /dev/null +++ b/endpoints/gql/parser/GQL.interp @@ -0,0 +1,1365 @@ +token literal names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'ABS' +'ACOS' +'ALL' +'ALL_DIFFERENT' +'AND' +'ANY' +'ARRAY' +'AS' +'ASC' +'ASCENDING' +'ASIN' +'AT' +'ATAN' +'AVG' +'BIG' +'BIGINT' +'BINARY' +'BOOL' +'BOOLEAN' +'BOTH' +'BTRIM' +'BY' +'BYTE_LENGTH' +'BYTES' +'CALL' +'CARDINALITY' +'CASE' +'CAST' +'CEIL' +'CEILING' +'CHAR' +'CHAR_LENGTH' +'CHARACTER_LENGTH' +'CHARACTERISTICS' +'CLOSE' +'COALESCE' +'COLLECT_LIST' +'COMMIT' +'COPY' +'COS' +'COSH' +'COT' +'COUNT' +'CREATE' +'CURRENT_DATE' +'CURRENT_GRAPH' +'CURRENT_PROPERTY_GRAPH' +'CURRENT_SCHEMA' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'DATE' +'DATETIME' +'DAY' +'DEC' +'DECIMAL' +'DEGREES' +'DELETE' +'DESC' +'DESCENDING' +'DETACH' +'DISTINCT' +'DOUBLE' +'DROP' +'DURATION' +'DURATION_BETWEEN' +'ELEMENT_ID' +'ELSE' +'END' +'EXCEPT' +'EXISTS' +'EXP' +'FILTER' +'FINISH' +'FLOAT' +'FLOAT16' +'FLOAT32' +'FLOAT64' +'FLOAT128' +'FLOAT256' +'FLOOR' +'FOR' +'FROM' +'GROUP' +'HAVING' +'HOME_GRAPH' +'HOME_PROPERTY_GRAPH' +'HOME_SCHEMA' +'HOUR' +'IF' +'IN' +'INSERT' +'INT' +'INTEGER' +'INT8' +'INTEGER8' +'INT16' +'INTEGER16' +'INT32' +'INTEGER32' +'INT64' +'INTEGER64' +'INT128' +'INTEGER128' +'INT256' +'INTEGER256' +'INTERSECT' +'INTERVAL' +'IS' +'LEADING' +'LEFT' +'LET' +'LIKE' +'LIMIT' +'LIST' +'LN' +'LOCAL' +'LOCAL_DATETIME' +'LOCAL_TIME' +'LOCAL_TIMESTAMP' +'LOG' +'LOG10' +'LOWER' +'LTRIM' +'MATCH' +'MAX' +'MIN' +'MINUTE' +'MOD' +'MONTH' +'NEXT' +'NODETACH' +'NORMALIZE' +'NOT' +'NOTHING' +'NULL' +'NULLS' +'NULLIF' +'OCTET_LENGTH' +'OF' +'OFFSET' +'OPTIONAL' +'OR' +'ORDER' +'OTHERWISE' +'PARAMETER' +'PARAMETERS' +'PATH' +'PATH_LENGTH' +'PATHS' +'PERCENTILE_CONT' +'PERCENTILE_DISC' +'POWER' +'PRECISION' +'PROPERTY_EXISTS' +'RADIANS' +'REAL' +'RECORD' +'REMOVE' +'REPLACE' +'RESET' +'RETURN' +'RIGHT' +'ROLLBACK' +'RTRIM' +'SAME' +'SCHEMA' +'SECOND' +'SELECT' +'SESSION' +'SESSION_USER' +'SET' +'SIGNED' +'SIN' +'SINH' +'SIZE' +'SKIP' +'SMALL' +'SMALLINT' +'SQRT' +'START' +'STDDEV_POP' +'STDDEV_SAMP' +'STRING' +'SUM' +'TAN' +'TANH' +'THEN' +'TIME' +'TIMESTAMP' +'TRAILING' +'TRIM' +'TYPED' +'UBIGINT' +'UINT' +'UINT8' +'UINT16' +'UINT32' +'UINT64' +'UINT128' +'UINT256' +'UNION' +'UNSIGNED' +'UPPER' +'USE' +'USMALLINT' +'VALUE' +'VARBINARY' +'VARCHAR' +'VARIABLE' +'WHEN' +'WHERE' +'WITH' +'XOR' +'YEAR' +'YIELD' +'ZONED' +'ZONED_DATETIME' +'ZONED_TIME' +'ABSTRACT' +'AGGREGATE' +'AGGREGATES' +'ALTER' +'CATALOG' +'CLEAR' +'CLONE' +'CONSTRAINT' +'CURRENT_ROLE' +'CURRENT_USER' +'DATA' +'DIRECTORY' +'DRYRUN' +'EXACT' +'EXISTING' +'FUNCTION' +'GQLSTATUS' +'GRANT' +'INSTANT' +'INFINITY' +'NUMBER' +'NUMERIC' +'ON' +'OPEN' +'PARTITION' +'PROCEDURE' +'PRODUCT' +'PROJECT' +'QUERY' +'RECORDS' +'REFERENCE' +'RENAME' +'REVOKE' +'SUBSTRING' +'SYSTEM_USER' +'TEMPORAL' +'UNIQUE' +'UNIT' +'VALUES' +'ACYCLIC' +'BINDING' +'BINDINGS' +'CONNECTING' +'DESTINATION' +'DIFFERENT' +'DIRECTED' +'EDGE' +'EDGES' +'ELEMENT' +'ELEMENTS' +'FIRST' +'GRAPH' +'GROUPS' +'KEEP' +'LABEL' +'LABELED' +'LABELS' +'LAST' +'NFC' +'NFD' +'NFKC' +'NFKD' +'NO' +'NODE' +'NORMALIZED' +'ONLY' +'ORDINALITY' +'PROPERTY' +'READ' +'RELATIONSHIP' +'RELATIONSHIPS' +'REPEATABLE' +'SHORTEST' +'SIMPLE' +'SOURCE' +'TABLE' +'TO' +'TRAIL' +'TRANSACTION' +'TYPE' +'UNDIRECTED' +'VERTEX' +'WALK' +'WITHOUT' +'WRITE' +'ZONE' +null +null +null +'|+|' +']->' +']~>' +'||' +'::' +'$$' +'..' +'>=' +'<-' +'<~' +'<-[' +'<~[' +'<->' +'<-/' +'<~/' +'<=' +'-[' +'-/' +'<>' +'->' +']-' +']~' +'=>' +'/-' +'/->' +'/~' +'/~>' +'~[' +'~>' +'~/' +'&' +'*' +':' +',' +'@' +'$' +'"' +'=' +'!' +'>' +'`' +'{' +'[' +'(' +'<' +'-' +'%' +'.' +'+' +'?' +'\'' +'\\' +'}' +']' +')' +'/' +'~' +'_' +'|' +null +null +null +null +null + +token symbolic names: +null +IMPLIES +BOOLEAN_LITERAL +SINGLE_QUOTED_CHARACTER_SEQUENCE +DOUBLE_QUOTED_CHARACTER_SEQUENCE +ACCENT_QUOTED_CHARACTER_SEQUENCE +NO_ESCAPE +BYTE_STRING_LITERAL +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER +UNSIGNED_HEXADECIMAL_INTEGER +UNSIGNED_OCTAL_INTEGER +UNSIGNED_BINARY_INTEGER +ABS +ACOS +ALL +ALL_DIFFERENT +AND +ANY +ARRAY +AS +ASC +ASCENDING +ASIN +AT +ATAN +AVG +BIG +BIGINT +BINARY +BOOL +BOOLEAN +BOTH +BTRIM +BY +BYTE_LENGTH +BYTES +CALL +CARDINALITY +CASE +CAST +CEIL +CEILING +CHAR +CHAR_LENGTH +CHARACTER_LENGTH +CHARACTERISTICS +CLOSE +COALESCE +COLLECT_LIST +COMMIT +COPY +COS +COSH +COT +COUNT +CREATE +CURRENT_DATE +CURRENT_GRAPH +CURRENT_PROPERTY_GRAPH +CURRENT_SCHEMA +CURRENT_TIME +CURRENT_TIMESTAMP +DATE +DATETIME +DAY +DEC +DECIMAL +DEGREES +DELETE +DESC +DESCENDING +DETACH +DISTINCT +DOUBLE +DROP +DURATION +DURATION_BETWEEN +ELEMENT_ID +ELSE +END +EXCEPT +EXISTS +EXP +FILTER +FINISH +FLOAT +FLOAT16 +FLOAT32 +FLOAT64 +FLOAT128 +FLOAT256 +FLOOR +FOR +FROM +GROUP +HAVING +HOME_GRAPH +HOME_PROPERTY_GRAPH +HOME_SCHEMA +HOUR +IF +IN +INSERT +INT +INTEGER +INT8 +INTEGER8 +INT16 +INTEGER16 +INT32 +INTEGER32 +INT64 +INTEGER64 +INT128 +INTEGER128 +INT256 +INTEGER256 +INTERSECT +INTERVAL +IS +LEADING +LEFT +LET +LIKE +LIMIT +LIST +LN +LOCAL +LOCAL_DATETIME +LOCAL_TIME +LOCAL_TIMESTAMP +LOG_KW +LOG10 +LOWER +LTRIM +MATCH +MAX +MIN +MINUTE +MOD +MONTH +NEXT +NODETACH +NORMALIZE +NOT +NOTHING +NULL_KW +NULLS +NULLIF +OCTET_LENGTH +OF +OFFSET +OPTIONAL +OR +ORDER +OTHERWISE +PARAMETER +PARAMETERS +PATH +PATH_LENGTH +PATHS +PERCENTILE_CONT +PERCENTILE_DISC +POWER +PRECISION +PROPERTY_EXISTS +RADIANS +REAL +RECORD +REMOVE +REPLACE +RESET +RETURN +RIGHT +ROLLBACK +RTRIM +SAME +SCHEMA +SECOND +SELECT +SESSION +SESSION_USER +SET +SIGNED +SIN +SINH +SIZE +SKIP_RESERVED_WORD +SMALL +SMALLINT +SQRT +START +STDDEV_POP +STDDEV_SAMP +STRING +SUM +TAN +TANH +THEN +TIME +TIMESTAMP +TRAILING +TRIM +TYPED +UBIGINT +UINT +UINT8 +UINT16 +UINT32 +UINT64 +UINT128 +UINT256 +UNION +UNSIGNED +UPPER +USE +USMALLINT +VALUE +VARBINARY +VARCHAR +VARIABLE +WHEN +WHERE +WITH +XOR +YEAR +YIELD +ZONED +ZONED_DATETIME +ZONED_TIME +ABSTRACT +AGGREGATE +AGGREGATES +ALTER +CATALOG +CLEAR +CLONE +CONSTRAINT +CURRENT_ROLE +CURRENT_USER +DATA +DIRECTORY +DRYRUN +EXACT +EXISTING +FUNCTION +GQLSTATUS +GRANT +INSTANT +INFINITY_KW +NUMBER +NUMERIC +ON +OPEN +PARTITION +PROCEDURE +PRODUCT +PROJECT +QUERY +RECORDS +REFERENCE +RENAME +REVOKE +SUBSTRING +SYSTEM_USER +TEMPORAL +UNIQUE +UNIT +VALUES +ACYCLIC +BINDING +BINDINGS +CONNECTING +DESTINATION +DIFFERENT +DIRECTED +EDGE +EDGES +ELEMENT +ELEMENTS +FIRST +GRAPH +GROUPS +KEEP +LABEL +LABELED +LABELS +LAST +NFC +NFD +NFKC +NFKD +NO +NODE +NORMALIZED +ONLY +ORDINALITY +PROPERTY +READ +RELATIONSHIP +RELATIONSHIPS +REPEATABLE +SHORTEST +SIMPLE +SOURCE +TABLE +TO +TRAIL +TRANSACTION +TYPE +UNDIRECTED +VERTEX +WALK +WITHOUT +WRITE +ZONE +REGULAR_IDENTIFIER +SUBSTITUTED_PARAMETER_REFERENCE +GENERAL_PARAMETER_REFERENCE +MULTISET_ALTERNATION_OPERATOR +BRACKET_RIGHT_ARROW +BRACKET_TILDE_RIGHT_ARROW +CONCATENATION_OPERATOR +DOUBLE_COLON +DOUBLE_DOLLAR_SIGN +DOUBLE_PERIOD +GREATER_THAN_OR_EQUALS_OPERATOR +LEFT_ARROW +LEFT_ARROW_TILDE +LEFT_ARROW_BRACKET +LEFT_ARROW_TILDE_BRACKET +LEFT_MINUS_RIGHT +LEFT_MINUS_SLASH +LEFT_TILDE_SLASH +LESS_THAN_OR_EQUALS_OPERATOR +MINUS_LEFT_BRACKET +MINUS_SLASH +NOT_EQUALS_OPERATOR +RIGHT_ARROW +RIGHT_BRACKET_MINUS +RIGHT_BRACKET_TILDE +RIGHT_DOUBLE_ARROW +SLASH_MINUS +SLASH_MINUS_RIGHT +SLASH_TILDE +SLASH_TILDE_RIGHT +TILDE_LEFT_BRACKET +TILDE_RIGHT_ARROW +TILDE_SLASH +AMPERSAND +ASTERISK +COLON +COMMA +COMMERCIAL_AT +DOLLAR_SIGN +DOUBLE_QUOTE +EQUALS_OPERATOR +EXCLAMATION_MARK +RIGHT_ANGLE_BRACKET +GRAVE_ACCENT +LEFT_BRACE +LEFT_BRACKET +LEFT_PAREN +LEFT_ANGLE_BRACKET +MINUS_SIGN +PERCENT +PERIOD +PLUS_SIGN +QUESTION_MARK +QUOTE +REVERSE_SOLIDUS +RIGHT_BRACE +RIGHT_BRACKET +RIGHT_PAREN +SOLIDUS +TILDE +UNDERSCORE +VERTICAL_BAR +SP +WHITESPACE +BRACKETED_COMMENT +SIMPLE_COMMENT_SOLIDUS +SIMPLE_COMMENT_MINUS + +rule names: +gqlProgram +programActivity +sessionActivity +transactionActivity +endTransactionCommand +sessionSetCommand +sessionSetSchemaClause +sessionSetGraphClause +sessionSetTimeZoneClause +setTimeZoneValue +sessionSetParameterClause +sessionSetGraphParameterClause +sessionSetBindingTableParameterClause +sessionSetValueParameterClause +sessionSetParameterName +sessionResetCommand +sessionResetArguments +sessionCloseCommand +sessionParameterSpecification +startTransactionCommand +transactionCharacteristics +transactionMode +transactionAccessMode +rollbackCommand +commitCommand +nestedProcedureSpecification +procedureSpecification +nestedDataModifyingProcedureSpecification +nestedQuerySpecification +procedureBody +bindingVariableDefinitionBlock +bindingVariableDefinition +statementBlock +statement +nextStatement +graphVariableDefinition +optTypedGraphInitializer +graphInitializer +bindingTableVariableDefinition +optTypedBindingTableInitializer +bindingTableInitializer +valueVariableDefinition +optTypedValueInitializer +valueInitializer +graphExpression +currentGraph +bindingTableExpression +nestedBindingTableQuerySpecification +objectExpressionPrimary +linearCatalogModifyingStatement +simpleCatalogModifyingStatement +primitiveCatalogModifyingStatement +createSchemaStatement +dropSchemaStatement +createGraphStatement +openGraphType +ofGraphType +graphTypeLikeGraph +graphSource +dropGraphStatement +createGraphTypeStatement +graphTypeSource +copyOfGraphType +dropGraphTypeStatement +callCatalogModifyingProcedureStatement +linearDataModifyingStatement +focusedLinearDataModifyingStatement +focusedLinearDataModifyingStatementBody +focusedNestedDataModifyingProcedureSpecification +ambientLinearDataModifyingStatement +ambientLinearDataModifyingStatementBody +simpleLinearDataAccessingStatement +simpleDataAccessingStatement +simpleDataModifyingStatement +primitiveDataModifyingStatement +insertStatement +setStatement +setItemList +setItem +setPropertyItem +setAllPropertiesItem +setLabelItem +removeStatement +removeItemList +removeItem +removePropertyItem +removeLabelItem +deleteStatement +deleteItemList +deleteItem +callDataModifyingProcedureStatement +compositeQueryStatement +compositeQueryExpression +queryConjunction +setOperator +compositeQueryPrimary +linearQueryStatement +focusedLinearQueryStatement +focusedLinearQueryStatementPart +focusedLinearQueryAndPrimitiveResultStatementPart +focusedPrimitiveResultStatement +focusedNestedQuerySpecification +ambientLinearQueryStatement +simpleLinearQueryStatement +simpleQueryStatement +primitiveQueryStatement +matchStatement +simpleMatchStatement +optionalMatchStatement +optionalOperand +matchStatementBlock +callQueryStatement +filterStatement +letStatement +letVariableDefinitionList +letVariableDefinition +forStatement +forItem +forItemAlias +forItemSource +forOrdinalityOrOffset +orderByAndPageStatement +primitiveResultStatement +returnStatement +returnStatementBody +returnItemList +returnItem +returnItemAlias +selectStatement +selectItemList +selectItem +selectItemAlias +havingClause +selectStatementBody +selectGraphMatchList +selectGraphMatch +selectQuerySpecification +callProcedureStatement +procedureCall +inlineProcedureCall +variableScopeClause +bindingVariableReferenceList +namedProcedureCall +procedureArgumentList +procedureArgument +atSchemaClause +useGraphClause +graphPatternBindingTable +graphPatternYieldClause +graphPatternYieldItemList +graphPatternYieldItem +graphPattern +matchMode +repeatableElementsMatchMode +differentEdgesMatchMode +elementBindingsOrElements +edgeBindingsOrEdges +pathPatternList +pathPattern +pathVariableDeclaration +keepClause +graphPatternWhereClause +insertGraphPattern +insertPathPatternList +insertPathPattern +insertNodePattern +insertEdgePattern +insertEdgePointingLeft +insertEdgePointingRight +insertEdgeUndirected +insertElementPatternFiller +labelAndPropertySetSpecification +pathPatternPrefix +pathModePrefix +pathMode +pathSearchPrefix +allPathSearch +pathOrPaths +anyPathSearch +numberOfPaths +shortestPathSearch +allShortestPathSearch +anyShortestPathSearch +countedShortestPathSearch +countedShortestGroupSearch +numberOfGroups +pathPatternExpression +pathTerm +pathFactor +pathPrimary +elementPattern +nodePattern +elementPatternFiller +elementVariableDeclaration +isLabelExpression +isOrColon +elementPatternPredicate +elementPatternWhereClause +elementPropertySpecification +propertyKeyValuePairList +propertyKeyValuePair +edgePattern +fullEdgePattern +fullEdgePointingLeft +fullEdgeUndirected +fullEdgePointingRight +fullEdgeLeftOrUndirected +fullEdgeUndirectedOrRight +fullEdgeLeftOrRight +fullEdgeAnyDirection +abbreviatedEdgePattern +parenthesizedPathPatternExpression +subpathVariableDeclaration +parenthesizedPathPatternWhereClause +labelExpression +pathVariableReference +elementVariableReference +graphPatternQuantifier +fixedQuantifier +generalQuantifier +lowerBound +upperBound +simplifiedPathPatternExpression +simplifiedDefaultingLeft +simplifiedDefaultingUndirected +simplifiedDefaultingRight +simplifiedDefaultingLeftOrUndirected +simplifiedDefaultingUndirectedOrRight +simplifiedDefaultingLeftOrRight +simplifiedDefaultingAnyDirection +simplifiedContents +simplifiedPathUnion +simplifiedMultisetAlternation +simplifiedTerm +simplifiedFactorLow +simplifiedFactorHigh +simplifiedQuantified +simplifiedQuestioned +simplifiedTertiary +simplifiedDirectionOverride +simplifiedOverrideLeft +simplifiedOverrideUndirected +simplifiedOverrideRight +simplifiedOverrideLeftOrUndirected +simplifiedOverrideUndirectedOrRight +simplifiedOverrideLeftOrRight +simplifiedOverrideAnyDirection +simplifiedSecondary +simplifiedNegation +simplifiedPrimary +whereClause +yieldClause +yieldItemList +yieldItem +yieldItemName +yieldItemAlias +groupByClause +groupingElementList +groupingElement +emptyGroupingSet +orderByClause +sortSpecificationList +sortSpecification +sortKey +orderingSpecification +nullOrdering +limitClause +offsetClause +offsetSynonym +schemaReference +absoluteCatalogSchemaReference +catalogSchemaParentAndName +relativeCatalogSchemaReference +predefinedSchemaReference +absoluteDirectoryPath +relativeDirectoryPath +simpleDirectoryPath +graphReference +catalogGraphParentAndName +homeGraph +graphTypeReference +catalogGraphTypeParentAndName +bindingTableReference +procedureReference +catalogProcedureParentAndName +catalogObjectParentReference +referenceParameterSpecification +nestedGraphTypeSpecification +graphTypeSpecificationBody +elementTypeList +elementTypeSpecification +nodeTypeSpecification +nodeTypePattern +nodeTypePhrase +nodeTypePhraseFiller +nodeTypeFiller +localNodeTypeAlias +nodeTypeImpliedContent +nodeTypeKeyLabelSet +nodeTypeLabelSet +nodeTypePropertyTypes +edgeTypeSpecification +edgeTypePattern +edgeTypePhrase +edgeTypePhraseFiller +edgeTypeFiller +edgeTypeImpliedContent +edgeTypeKeyLabelSet +edgeTypeLabelSet +edgeTypePropertyTypes +edgeTypePatternDirected +edgeTypePatternPointingRight +edgeTypePatternPointingLeft +edgeTypePatternUndirected +arcTypePointingRight +arcTypePointingLeft +arcTypeUndirected +sourceNodeTypeReference +destinationNodeTypeReference +edgeKind +endpointPairPhrase +endpointPair +endpointPairDirected +endpointPairPointingRight +endpointPairPointingLeft +endpointPairUndirected +connectorPointingRight +connectorUndirected +sourceNodeTypeAlias +destinationNodeTypeAlias +labelSetPhrase +labelSetSpecification +propertyTypesSpecification +propertyTypeList +propertyType +propertyValueType +bindingTableType +valueType +typed +predefinedType +booleanType +characterStringType +byteStringType +minLength +maxLength +fixedLength +numericType +exactNumericType +binaryExactNumericType +signedBinaryExactNumericType +unsignedBinaryExactNumericType +verboseBinaryExactNumericType +decimalExactNumericType +precision +scale +approximateNumericType +temporalType +temporalInstantType +datetimeType +localdatetimeType +dateType +timeType +localtimeType +temporalDurationType +temporalDurationQualifier +referenceValueType +immaterialValueType +nullType +emptyType +graphReferenceValueType +closedGraphReferenceValueType +openGraphReferenceValueType +bindingTableReferenceValueType +nodeReferenceValueType +closedNodeReferenceValueType +openNodeReferenceValueType +edgeReferenceValueType +closedEdgeReferenceValueType +openEdgeReferenceValueType +pathValueType +listValueTypeName +listValueTypeNameSynonym +recordType +fieldTypesSpecification +fieldTypeList +notNull +fieldType +searchCondition +predicate +compOp +existsPredicate +nullPredicate +nullPredicatePart2 +valueTypePredicate +valueTypePredicatePart2 +normalizedPredicatePart2 +directedPredicate +directedPredicatePart2 +labeledPredicate +labeledPredicatePart2 +isLabeledOrColon +sourceDestinationPredicate +nodeReference +sourcePredicatePart2 +destinationPredicatePart2 +edgeReference +all_differentPredicate +samePredicate +property_existsPredicate +valueExpression +valueFunction +booleanValueExpression +characterOrByteStringFunction +subCharacterOrByteString +trimSingleCharacterOrByteString +foldCharacterString +trimMultiCharacterCharacterString +normalizeCharacterString +nodeReferenceValueExpression +edgeReferenceValueExpression +aggregatingValueExpression +valueExpressionPrimary +parenthesizedValueExpression +nonParenthesizedValueExpressionPrimary +nonParenthesizedValueExpressionPrimarySpecialCase +unsignedValueSpecification +nonNegativeIntegerSpecification +generalValueSpecification +dynamicParameterSpecification +letValueExpression +valueQueryExpression +caseExpression +caseAbbreviation +caseSpecification +simpleCase +searchedCase +simpleWhenClause +searchedWhenClause +elseClause +caseOperand +whenOperandList +whenOperand +result +resultExpression +castSpecification +castOperand +castTarget +aggregateFunction +generalSetFunction +binarySetFunction +generalSetFunctionType +setQuantifier +binarySetFunctionType +dependentValueExpression +independentValueExpression +element_idFunction +bindingVariableReference +pathValueExpression +pathValueConstructor +pathValueConstructorByEnumeration +pathElementList +pathElementListStart +pathElementListStep +listValueExpression +listValueFunction +trimListFunction +elementsFunction +listValueConstructor +listValueConstructorByEnumeration +listElementList +listElement +recordConstructor +fieldsSpecification +fieldList +field +truthValue +numericValueExpression +numericValueFunction +lengthExpression +cardinalityExpression +cardinalityExpressionArgument +charLengthExpression +byteLengthExpression +pathLengthExpression +absoluteValueExpression +modulusExpression +numericValueExpressionDividend +numericValueExpressionDivisor +trigonometricFunction +trigonometricFunctionName +generalLogarithmFunction +generalLogarithmBase +generalLogarithmArgument +commonLogarithm +naturalLogarithm +exponentialFunction +powerFunction +numericValueExpressionBase +numericValueExpressionExponent +squareRoot +floorFunction +ceilingFunction +characterStringValueExpression +byteStringValueExpression +trimOperands +trimCharacterOrByteStringSource +trimSpecification +trimCharacterOrByteString +normalForm +stringLength +datetimeValueExpression +datetimeValueFunction +dateFunction +timeFunction +localtimeFunction +datetimeFunction +localdatetimeFunction +dateFunctionParameters +timeFunctionParameters +datetimeFunctionParameters +durationValueExpression +datetimeSubtraction +datetimeSubtractionParameters +datetimeValueExpression1 +datetimeValueExpression2 +durationValueFunction +durationFunction +durationFunctionParameters +objectName +objectNameOrBindingVariable +directoryName +schemaName +graphName +delimitedGraphName +graphTypeName +nodeTypeName +edgeTypeName +bindingTableName +delimitedBindingTableName +procedureName +labelName +propertyName +fieldName +elementVariable +pathVariable +subpathVariable +bindingVariable +unsignedLiteral +generalLiteral +temporalLiteral +dateLiteral +timeLiteral +datetimeLiteral +listLiteral +recordLiteral +identifier +regularIdentifier +timeZoneString +characterStringLiteral +unsignedNumericLiteral +exactNumericLiteral +approximateNumericLiteral +unsignedInteger +unsignedDecimalInteger +nullLiteral +dateString +timeString +datetimeString +durationLiteral +durationString +nodeSynonym +edgesSynonym +edgeSynonym +nonReservedWords + + +atn: +[4, 1, 390, 4603, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, 572, 7, 572, 2, 573, 7, 573, 1, 0, 1, 0, 3, 0, 1151, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 1158, 8, 0, 1, 1, 1, 1, 3, 1, 1162, 8, 1, 1, 2, 4, 2, 1165, 8, 2, 11, 2, 12, 2, 1166, 1, 2, 4, 2, 1170, 8, 2, 11, 2, 12, 2, 1171, 1, 2, 5, 2, 1175, 8, 2, 10, 2, 12, 2, 1178, 9, 2, 3, 2, 1180, 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 1185, 8, 3, 3, 3, 1187, 8, 3, 1, 3, 1, 3, 3, 3, 1191, 8, 3, 1, 3, 3, 3, 1194, 8, 3, 1, 4, 1, 4, 3, 4, 1198, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1206, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 3, 7, 1212, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 1226, 8, 10, 1, 11, 3, 11, 1229, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 3, 12, 1236, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 1249, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1256, 8, 15, 1, 16, 3, 16, 1259, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1264, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1270, 8, 16, 1, 16, 3, 16, 1273, 8, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 1283, 8, 19, 1, 20, 1, 20, 1, 20, 5, 20, 1288, 8, 20, 10, 20, 12, 20, 1291, 9, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1299, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 3, 29, 1320, 8, 29, 1, 29, 3, 29, 1323, 8, 29, 1, 29, 1, 29, 1, 30, 4, 30, 1328, 8, 30, 11, 30, 12, 30, 1329, 1, 31, 1, 31, 1, 31, 3, 31, 1335, 8, 31, 1, 32, 1, 32, 5, 32, 1339, 8, 32, 10, 32, 12, 32, 1342, 9, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1347, 8, 33, 1, 34, 1, 34, 3, 34, 1351, 8, 34, 1, 34, 1, 34, 1, 35, 3, 35, 1356, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 3, 36, 1363, 8, 36, 1, 36, 3, 36, 1366, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 3, 38, 1374, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 3, 39, 1381, 8, 39, 1, 39, 3, 39, 1384, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 3, 42, 1396, 8, 42, 1, 42, 3, 42, 1399, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1410, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1418, 8, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1426, 8, 48, 1, 49, 4, 49, 1429, 8, 49, 11, 49, 12, 49, 1430, 1, 50, 1, 50, 3, 50, 1435, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1458, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 1464, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1470, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1475, 8, 54, 1, 54, 3, 54, 1478, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1483, 8, 54, 1, 54, 3, 54, 1486, 8, 54, 1, 55, 3, 55, 1489, 8, 55, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 56, 1, 56, 3, 56, 1500, 8, 56, 1, 56, 1, 56, 3, 56, 1504, 8, 56, 1, 56, 3, 56, 1507, 8, 56, 1, 56, 3, 56, 1510, 8, 56, 1, 56, 3, 56, 1513, 8, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 3, 59, 1525, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1530, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 1536, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1543, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1548, 8, 60, 1, 60, 1, 60, 3, 60, 1552, 8, 60, 1, 60, 1, 60, 1, 60, 1, 61, 3, 61, 1558, 8, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1563, 8, 61, 1, 61, 3, 61, 1566, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 3, 63, 1574, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1580, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 3, 65, 1588, 8, 65, 1, 66, 1, 66, 3, 66, 1592, 8, 66, 1, 67, 1, 67, 1, 67, 3, 67, 1597, 8, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1604, 8, 69, 1, 70, 1, 70, 3, 70, 1608, 8, 70, 1, 71, 4, 71, 1611, 8, 71, 11, 71, 12, 71, 1612, 1, 72, 1, 72, 3, 72, 1617, 8, 72, 1, 73, 1, 73, 3, 73, 1621, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1627, 8, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 5, 77, 1638, 8, 77, 10, 77, 12, 77, 1641, 9, 77, 1, 78, 1, 78, 1, 78, 3, 78, 1646, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1658, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 5, 83, 1672, 8, 83, 10, 83, 12, 83, 1675, 9, 83, 1, 84, 1, 84, 3, 84, 1679, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 3, 87, 1690, 8, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 5, 88, 1698, 8, 88, 10, 88, 12, 88, 1701, 9, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 1716, 8, 92, 10, 92, 12, 92, 1719, 9, 92, 1, 93, 1, 93, 3, 93, 1723, 8, 93, 1, 94, 1, 94, 3, 94, 1727, 8, 94, 1, 94, 1, 94, 3, 94, 1731, 8, 94, 1, 94, 1, 94, 3, 94, 1735, 8, 94, 3, 94, 1737, 8, 94, 1, 95, 1, 95, 1, 96, 1, 96, 3, 96, 1743, 8, 96, 1, 97, 5, 97, 1746, 8, 97, 10, 97, 12, 97, 1749, 9, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1755, 8, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1771, 8, 102, 1, 102, 1, 102, 3, 102, 1775, 8, 102, 1, 103, 4, 103, 1778, 8, 103, 11, 103, 12, 103, 1779, 1, 104, 1, 104, 3, 104, 1784, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1791, 8, 105, 1, 106, 1, 106, 3, 106, 1795, 8, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1812, 8, 109, 1, 110, 4, 110, 1815, 8, 110, 11, 110, 12, 110, 1816, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 3, 112, 1824, 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 5, 114, 1832, 8, 114, 10, 114, 12, 114, 1835, 9, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 3, 115, 1842, 8, 115, 1, 116, 1, 116, 1, 116, 3, 116, 1847, 8, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 1863, 8, 121, 1, 121, 3, 121, 1866, 8, 121, 1, 121, 1, 121, 3, 121, 1870, 8, 121, 1, 121, 3, 121, 1873, 8, 121, 1, 122, 1, 122, 3, 122, 1877, 8, 122, 1, 122, 3, 122, 1880, 8, 122, 1, 123, 1, 123, 1, 123, 1, 124, 3, 124, 1886, 8, 124, 1, 124, 1, 124, 3, 124, 1890, 8, 124, 1, 124, 3, 124, 1893, 8, 124, 1, 125, 1, 125, 1, 125, 5, 125, 1898, 8, 125, 10, 125, 12, 125, 1901, 9, 125, 1, 126, 1, 126, 3, 126, 1905, 8, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 1912, 8, 128, 1, 128, 1, 128, 3, 128, 1916, 8, 128, 1, 128, 1, 128, 3, 128, 1920, 8, 128, 1, 128, 3, 128, 1923, 8, 128, 1, 128, 3, 128, 1926, 8, 128, 1, 128, 3, 128, 1929, 8, 128, 1, 128, 3, 128, 1932, 8, 128, 1, 128, 3, 128, 1935, 8, 128, 3, 128, 1937, 8, 128, 1, 129, 1, 129, 1, 129, 5, 129, 1942, 8, 129, 10, 129, 12, 129, 1945, 9, 129, 1, 130, 1, 130, 3, 130, 1949, 8, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 3, 133, 1960, 8, 133, 1, 134, 1, 134, 1, 134, 5, 134, 1965, 8, 134, 10, 134, 12, 134, 1968, 9, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1977, 8, 136, 1, 137, 3, 137, 1980, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 1987, 8, 138, 1, 139, 3, 139, 1990, 8, 139, 1, 139, 1, 139, 1, 140, 1, 140, 3, 140, 1996, 8, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 5, 141, 2003, 8, 141, 10, 141, 12, 141, 2006, 9, 141, 1, 142, 1, 142, 1, 142, 3, 142, 2011, 8, 142, 1, 142, 1, 142, 3, 142, 2015, 8, 142, 1, 143, 1, 143, 1, 143, 5, 143, 2020, 8, 143, 10, 143, 12, 143, 2023, 9, 143, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2035, 8, 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 5, 149, 2043, 8, 149, 10, 149, 12, 149, 2046, 9, 149, 1, 150, 1, 150, 1, 151, 3, 151, 2051, 8, 151, 1, 151, 1, 151, 3, 151, 2055, 8, 151, 1, 151, 3, 151, 2058, 8, 151, 1, 152, 1, 152, 3, 152, 2062, 8, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 3, 155, 2072, 8, 155, 1, 155, 3, 155, 2075, 8, 155, 1, 156, 1, 156, 3, 156, 2079, 8, 156, 1, 156, 3, 156, 2082, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 2087, 8, 157, 10, 157, 12, 157, 2090, 9, 157, 1, 158, 3, 158, 2093, 8, 158, 1, 158, 3, 158, 2096, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 5, 163, 2114, 8, 163, 10, 163, 12, 163, 2117, 9, 163, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2123, 8, 164, 10, 164, 12, 164, 2126, 9, 164, 1, 165, 1, 165, 3, 165, 2130, 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 3, 166, 2137, 8, 166, 1, 167, 1, 167, 3, 167, 2141, 8, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 2147, 8, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2153, 8, 169, 1, 169, 1, 169, 1, 170, 1, 170, 3, 170, 2159, 8, 170, 1, 170, 3, 170, 2162, 8, 170, 1, 170, 3, 170, 2165, 8, 170, 1, 171, 1, 171, 1, 171, 3, 171, 2170, 8, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2175, 8, 171, 1, 171, 3, 171, 2178, 8, 171, 1, 172, 1, 172, 3, 172, 2182, 8, 172, 1, 173, 1, 173, 3, 173, 2186, 8, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 3, 175, 2193, 8, 175, 1, 176, 1, 176, 3, 176, 2197, 8, 176, 1, 176, 3, 176, 2200, 8, 176, 1, 177, 1, 177, 1, 178, 1, 178, 3, 178, 2206, 8, 178, 1, 178, 3, 178, 2209, 8, 178, 1, 178, 3, 178, 2212, 8, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 2220, 8, 180, 1, 181, 1, 181, 1, 181, 3, 181, 2225, 8, 181, 1, 181, 3, 181, 2228, 8, 181, 1, 182, 1, 182, 1, 182, 3, 182, 2233, 8, 182, 1, 182, 3, 182, 2236, 8, 182, 1, 183, 1, 183, 1, 183, 3, 183, 2241, 8, 183, 1, 183, 3, 183, 2244, 8, 183, 1, 184, 1, 184, 3, 184, 2248, 8, 184, 1, 184, 3, 184, 2251, 8, 184, 1, 184, 3, 184, 2254, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 4, 186, 2264, 8, 186, 11, 186, 12, 186, 2265, 1, 186, 1, 186, 1, 186, 4, 186, 2271, 8, 186, 11, 186, 12, 186, 2272, 3, 186, 2275, 8, 186, 1, 187, 4, 187, 2278, 8, 187, 11, 187, 12, 187, 2279, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2289, 8, 188, 1, 189, 1, 189, 1, 189, 3, 189, 2294, 8, 189, 1, 190, 1, 190, 3, 190, 2298, 8, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 3, 192, 2305, 8, 192, 1, 192, 3, 192, 2308, 8, 192, 1, 192, 3, 192, 2311, 8, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 3, 196, 2322, 8, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 5, 199, 2334, 8, 199, 10, 199, 12, 199, 2337, 9, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 3, 201, 2345, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2354, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 211, 1, 211, 3, 211, 2388, 8, 211, 1, 211, 3, 211, 2391, 8, 211, 1, 211, 1, 211, 3, 211, 2395, 8, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 3, 214, 2414, 8, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 2422, 8, 214, 10, 214, 12, 214, 2425, 9, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2435, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 3, 219, 2443, 8, 219, 1, 219, 1, 219, 3, 219, 2447, 8, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 2462, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 3, 230, 2495, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 2502, 8, 231, 10, 231, 12, 231, 2505, 9, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232, 2512, 8, 232, 10, 232, 12, 232, 2515, 9, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 2522, 8, 233, 10, 233, 12, 233, 2525, 9, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 5, 234, 2533, 8, 234, 10, 234, 12, 234, 2536, 9, 234, 1, 235, 1, 235, 1, 235, 3, 235, 2541, 8, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2551, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 2560, 8, 239, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 3, 247, 2587, 8, 247, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 2597, 8, 249, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 5, 252, 2608, 8, 252, 10, 252, 12, 252, 2611, 9, 252, 1, 253, 1, 253, 3, 253, 2615, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 5, 257, 2629, 8, 257, 10, 257, 12, 257, 2632, 9, 257, 1, 257, 3, 257, 2635, 8, 257, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 5, 261, 2649, 8, 261, 10, 261, 12, 261, 2652, 9, 261, 1, 262, 1, 262, 3, 262, 2656, 8, 262, 1, 262, 3, 262, 2659, 8, 262, 1, 263, 1, 263, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 2669, 8, 265, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 3, 269, 2682, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 2688, 8, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 3, 272, 2697, 8, 272, 1, 273, 1, 273, 1, 274, 1, 274, 3, 274, 2703, 8, 274, 1, 275, 1, 275, 1, 275, 5, 275, 2708, 8, 275, 10, 275, 12, 275, 2711, 9, 275, 1, 275, 1, 275, 3, 275, 2715, 8, 275, 1, 276, 1, 276, 1, 276, 4, 276, 2720, 8, 276, 11, 276, 12, 276, 2721, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 2730, 8, 277, 1, 278, 3, 278, 2733, 8, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 2741, 8, 280, 1, 281, 3, 281, 2744, 8, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 2753, 8, 282, 1, 283, 1, 283, 3, 283, 2757, 8, 283, 1, 284, 3, 284, 2760, 8, 284, 1, 284, 1, 284, 1, 285, 1, 285, 3, 285, 2766, 8, 285, 1, 285, 1, 285, 1, 285, 5, 285, 2771, 8, 285, 10, 285, 12, 285, 2774, 9, 285, 1, 285, 1, 285, 1, 285, 4, 285, 2779, 8, 285, 11, 285, 12, 285, 2780, 3, 285, 2783, 8, 285, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 5, 289, 2796, 8, 289, 10, 289, 12, 289, 2799, 9, 289, 1, 290, 1, 290, 3, 290, 2803, 8, 290, 1, 291, 1, 291, 3, 291, 2807, 8, 291, 1, 292, 1, 292, 3, 292, 2811, 8, 292, 1, 292, 1, 292, 3, 292, 2815, 8, 292, 1, 292, 1, 292, 3, 292, 2819, 8, 292, 1, 292, 3, 292, 2822, 8, 292, 1, 292, 1, 292, 1, 293, 1, 293, 3, 293, 2828, 8, 293, 1, 293, 1, 293, 1, 293, 3, 293, 2833, 8, 293, 1, 294, 1, 294, 3, 294, 2837, 8, 294, 1, 294, 3, 294, 2840, 8, 294, 1, 295, 1, 295, 3, 295, 2844, 8, 295, 1, 295, 3, 295, 2847, 8, 295, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 2856, 8, 297, 1, 298, 3, 298, 2859, 8, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 300, 1, 300, 1, 301, 1, 301, 3, 301, 2869, 8, 301, 1, 302, 3, 302, 2872, 8, 302, 1, 302, 1, 302, 3, 302, 2876, 8, 302, 1, 302, 1, 302, 3, 302, 2880, 8, 302, 1, 302, 1, 302, 3, 302, 2884, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 2889, 8, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 3, 304, 2896, 8, 304, 1, 304, 3, 304, 2899, 8, 304, 1, 305, 1, 305, 3, 305, 2903, 8, 305, 1, 305, 3, 305, 2906, 8, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 3, 306, 2913, 8, 306, 1, 307, 3, 307, 2916, 8, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 309, 1, 309, 1, 310, 1, 310, 3, 310, 2926, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 3, 317, 2958, 8, 317, 1, 317, 3, 317, 2961, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 2969, 8, 318, 1, 318, 3, 318, 2972, 8, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 3, 321, 2981, 8, 321, 1, 322, 1, 322, 3, 322, 2985, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 328, 1, 328, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, 330, 3020, 8, 330, 1, 331, 1, 331, 1, 331, 5, 331, 3025, 8, 331, 10, 331, 12, 331, 3028, 9, 331, 1, 332, 1, 332, 3, 332, 3032, 8, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 5, 333, 3039, 8, 333, 10, 333, 12, 333, 3042, 9, 333, 1, 334, 1, 334, 3, 334, 3046, 8, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 336, 3, 336, 3053, 8, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3069, 8, 337, 1, 337, 3, 337, 3072, 8, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3079, 8, 337, 1, 337, 3, 337, 3082, 8, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3087, 8, 337, 1, 337, 3, 337, 3090, 8, 337, 1, 337, 3, 337, 3093, 8, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3098, 8, 337, 1, 337, 1, 337, 3, 337, 3102, 8, 337, 1, 337, 1, 337, 1, 337, 1, 337, 5, 337, 3108, 8, 337, 10, 337, 12, 337, 3111, 9, 337, 1, 337, 1, 337, 3, 337, 3115, 8, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3126, 8, 337, 1, 337, 3, 337, 3129, 8, 337, 5, 337, 3131, 8, 337, 10, 337, 12, 337, 3134, 9, 337, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 3145, 8, 339, 1, 340, 1, 340, 3, 340, 3149, 8, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3156, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3161, 8, 341, 1, 341, 3, 341, 3164, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3171, 8, 341, 1, 341, 3, 341, 3174, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3181, 8, 341, 1, 341, 3, 341, 3184, 8, 341, 3, 341, 3186, 8, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3193, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3198, 8, 342, 1, 342, 3, 342, 3201, 8, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3208, 8, 342, 1, 342, 3, 342, 3211, 8, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3218, 8, 342, 1, 342, 3, 342, 3221, 8, 342, 3, 342, 3223, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 345, 1, 345, 1, 346, 1, 346, 3, 346, 3233, 8, 346, 1, 347, 1, 347, 3, 347, 3237, 8, 347, 1, 348, 1, 348, 3, 348, 3241, 8, 348, 1, 349, 1, 349, 3, 349, 3245, 8, 349, 1, 349, 1, 349, 3, 349, 3249, 8, 349, 1, 349, 1, 349, 3, 349, 3253, 8, 349, 1, 349, 1, 349, 3, 349, 3257, 8, 349, 1, 349, 1, 349, 3, 349, 3261, 8, 349, 1, 349, 1, 349, 3, 349, 3265, 8, 349, 1, 349, 1, 349, 3, 349, 3269, 8, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 3276, 8, 349, 1, 349, 3, 349, 3279, 8, 349, 1, 349, 1, 349, 3, 349, 3283, 8, 349, 1, 349, 3, 349, 3286, 8, 349, 1, 349, 3, 349, 3289, 8, 349, 1, 350, 1, 350, 3, 350, 3293, 8, 350, 1, 350, 1, 350, 3, 350, 3297, 8, 350, 1, 350, 1, 350, 3, 350, 3301, 8, 350, 1, 350, 1, 350, 3, 350, 3305, 8, 350, 1, 350, 1, 350, 3, 350, 3309, 8, 350, 1, 350, 1, 350, 3, 350, 3313, 8, 350, 1, 350, 1, 350, 3, 350, 3317, 8, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 3, 350, 3324, 8, 350, 1, 350, 3, 350, 3327, 8, 350, 1, 350, 1, 350, 3, 350, 3331, 8, 350, 1, 350, 1, 350, 3, 350, 3335, 8, 350, 1, 351, 1, 351, 3, 351, 3339, 8, 351, 1, 351, 1, 351, 3, 351, 3343, 8, 351, 1, 351, 1, 351, 3, 351, 3347, 8, 351, 1, 351, 1, 351, 3, 351, 3351, 8, 351, 1, 351, 1, 351, 3, 351, 3355, 8, 351, 1, 351, 1, 351, 3, 351, 3359, 8, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3364, 8, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3371, 8, 351, 1, 351, 3, 351, 3374, 8, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3379, 8, 351, 3, 351, 3381, 8, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 3, 352, 3388, 8, 352, 1, 352, 1, 352, 3, 352, 3392, 8, 352, 3, 352, 3394, 8, 352, 1, 353, 1, 353, 1, 354, 1, 354, 1, 355, 1, 355, 3, 355, 3402, 8, 355, 1, 355, 1, 355, 3, 355, 3406, 8, 355, 1, 355, 1, 355, 3, 355, 3410, 8, 355, 1, 355, 1, 355, 3, 355, 3414, 8, 355, 1, 355, 1, 355, 3, 355, 3418, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 3425, 8, 355, 1, 355, 1, 355, 3, 355, 3429, 8, 355, 1, 355, 3, 355, 3432, 8, 355, 1, 355, 1, 355, 3, 355, 3436, 8, 355, 1, 355, 1, 355, 3, 355, 3440, 8, 355, 1, 355, 3, 355, 3443, 8, 355, 3, 355, 3445, 8, 355, 1, 356, 1, 356, 3, 356, 3449, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 3456, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 3461, 8, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 3, 358, 3468, 8, 358, 3, 358, 3470, 8, 358, 1, 359, 1, 359, 1, 359, 3, 359, 3475, 8, 359, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 3481, 8, 359, 1, 359, 3, 359, 3484, 8, 359, 3, 359, 3486, 8, 359, 1, 360, 1, 360, 3, 360, 3490, 8, 360, 1, 361, 1, 361, 1, 361, 3, 361, 3495, 8, 361, 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 3502, 8, 361, 3, 361, 3504, 8, 361, 1, 362, 1, 362, 1, 362, 3, 362, 3509, 8, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 3516, 8, 362, 3, 362, 3518, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 3525, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 1, 364, 3, 364, 3533, 8, 364, 1, 365, 1, 365, 1, 365, 1, 365, 3, 365, 3539, 8, 365, 1, 366, 1, 366, 3, 366, 3543, 8, 366, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 3, 368, 3550, 8, 368, 1, 369, 1, 369, 3, 369, 3554, 8, 369, 1, 370, 3, 370, 3557, 8, 370, 1, 370, 1, 370, 1, 370, 3, 370, 3562, 8, 370, 1, 371, 1, 371, 3, 371, 3566, 8, 371, 1, 371, 1, 371, 3, 371, 3570, 8, 371, 1, 372, 1, 372, 3, 372, 3574, 8, 372, 1, 373, 1, 373, 3, 373, 3578, 8, 373, 1, 374, 1, 374, 3, 374, 3582, 8, 374, 1, 375, 3, 375, 3585, 8, 375, 1, 375, 1, 375, 3, 375, 3589, 8, 375, 1, 376, 1, 376, 3, 376, 3593, 8, 376, 1, 377, 1, 377, 3, 377, 3597, 8, 377, 1, 378, 3, 378, 3600, 8, 378, 1, 378, 1, 378, 3, 378, 3604, 8, 378, 1, 379, 1, 379, 3, 379, 3608, 8, 379, 1, 380, 1, 380, 1, 381, 1, 381, 1, 382, 3, 382, 3615, 8, 382, 1, 382, 1, 382, 3, 382, 3619, 8, 382, 1, 382, 3, 382, 3622, 8, 382, 1, 382, 1, 382, 3, 382, 3626, 8, 382, 3, 382, 3628, 8, 382, 1, 383, 1, 383, 3, 383, 3632, 8, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 5, 384, 3639, 8, 384, 10, 384, 12, 384, 3642, 9, 384, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 3, 386, 3649, 8, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 3664, 8, 388, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 3, 390, 3686, 8, 390, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 3, 392, 3693, 8, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 3, 394, 3702, 8, 394, 1, 394, 1, 394, 1, 394, 1, 395, 1, 395, 3, 395, 3709, 8, 395, 1, 395, 3, 395, 3712, 8, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 3, 397, 3721, 8, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 3, 400, 3733, 8, 400, 1, 400, 1, 400, 3, 400, 3737, 8, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 3745, 8, 401, 1, 402, 1, 402, 1, 403, 1, 403, 3, 403, 3751, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 404, 1, 404, 3, 404, 3759, 8, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 5, 406, 3774, 8, 406, 10, 406, 12, 406, 3777, 9, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 5, 407, 3788, 8, 407, 10, 407, 12, 407, 3791, 9, 407, 1, 407, 1, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3809, 8, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3814, 8, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3820, 8, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3846, 8, 409, 1, 409, 5, 409, 3849, 8, 409, 10, 409, 12, 409, 3852, 9, 409, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 3860, 8, 410, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 3869, 8, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 3, 416, 3893, 8, 416, 1, 416, 1, 416, 1, 417, 1, 417, 1, 417, 1, 417, 1, 417, 3, 417, 3902, 8, 417, 1, 417, 1, 417, 1, 418, 1, 418, 1, 419, 1, 419, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 3, 421, 3923, 8, 421, 1, 421, 1, 421, 1, 421, 5, 421, 3928, 8, 421, 10, 421, 12, 421, 3931, 9, 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 3, 423, 3939, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 3, 424, 3953, 8, 424, 1, 425, 1, 425, 3, 425, 3957, 8, 425, 1, 426, 1, 426, 3, 426, 3961, 8, 426, 1, 427, 1, 427, 3, 427, 3965, 8, 427, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 3, 431, 3980, 8, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 4, 432, 3994, 8, 432, 11, 432, 12, 432, 3995, 1, 432, 1, 432, 3, 432, 4000, 8, 432, 1, 433, 1, 433, 3, 433, 4004, 8, 433, 1, 434, 1, 434, 1, 434, 4, 434, 4009, 8, 434, 11, 434, 12, 434, 4010, 1, 434, 3, 434, 4014, 8, 434, 1, 434, 1, 434, 1, 435, 1, 435, 4, 435, 4020, 8, 435, 11, 435, 12, 435, 4021, 1, 435, 3, 435, 4025, 8, 435, 1, 435, 1, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 3, 439, 4044, 8, 439, 1, 440, 1, 440, 1, 440, 5, 440, 4049, 8, 440, 10, 440, 12, 440, 4052, 9, 440, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 3, 441, 4065, 8, 441, 1, 442, 1, 442, 3, 442, 4069, 8, 442, 1, 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 445, 1, 445, 3, 445, 4082, 8, 445, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 3, 447, 4092, 8, 447, 1, 448, 1, 448, 1, 448, 3, 448, 4097, 8, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 451, 1, 451, 1, 452, 1, 452, 1, 453, 3, 453, 4116, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 457, 1, 457, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 5, 460, 4140, 8, 460, 10, 460, 12, 460, 4143, 9, 460, 1, 461, 1, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 464, 1, 464, 3, 464, 4156, 8, 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 468, 3, 468, 4173, 8, 468, 1, 468, 1, 468, 3, 468, 4177, 8, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 5, 469, 4184, 8, 469, 10, 469, 12, 469, 4187, 9, 469, 1, 470, 1, 470, 1, 471, 3, 471, 4192, 8, 471, 1, 471, 1, 471, 1, 472, 1, 472, 3, 472, 4198, 8, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 5, 473, 4205, 8, 473, 10, 473, 12, 473, 4208, 9, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 3, 476, 4221, 8, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 5, 476, 4229, 8, 476, 10, 476, 12, 476, 4232, 9, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 3, 477, 4247, 8, 477, 1, 478, 1, 478, 1, 478, 3, 478, 4252, 8, 478, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 3, 479, 4264, 8, 479, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, 488, 1, 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, 1, 492, 1, 493, 1, 493, 1, 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, 1, 504, 3, 504, 4363, 8, 504, 1, 504, 3, 504, 4366, 8, 504, 1, 504, 3, 504, 4369, 8, 504, 1, 504, 1, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 3, 511, 4390, 8, 511, 1, 512, 1, 512, 1, 512, 1, 512, 3, 512, 4396, 8, 512, 1, 512, 3, 512, 4399, 8, 512, 1, 513, 1, 513, 1, 513, 1, 513, 3, 513, 4405, 8, 513, 1, 513, 3, 513, 4408, 8, 513, 1, 514, 1, 514, 1, 514, 3, 514, 4413, 8, 514, 1, 514, 3, 514, 4416, 8, 514, 1, 515, 1, 515, 1, 515, 1, 515, 3, 515, 4422, 8, 515, 1, 515, 3, 515, 4425, 8, 515, 1, 516, 1, 516, 1, 516, 1, 516, 3, 516, 4431, 8, 516, 1, 516, 3, 516, 4434, 8, 516, 1, 517, 1, 517, 3, 517, 4438, 8, 517, 1, 518, 1, 518, 3, 518, 4442, 8, 518, 1, 519, 1, 519, 3, 519, 4446, 8, 519, 1, 520, 1, 520, 1, 521, 1, 521, 1, 521, 1, 521, 1, 521, 3, 521, 4455, 8, 521, 1, 522, 1, 522, 1, 522, 1, 522, 1, 523, 1, 523, 1, 524, 1, 524, 1, 525, 1, 525, 3, 525, 4467, 8, 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 3, 527, 4476, 8, 527, 1, 528, 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, 1, 532, 1, 532, 3, 532, 4488, 8, 532, 1, 533, 1, 533, 1, 534, 1, 534, 1, 535, 1, 535, 1, 536, 1, 536, 1, 537, 1, 537, 3, 537, 4500, 8, 537, 1, 538, 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, 1, 541, 1, 542, 1, 542, 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, 1, 546, 1, 546, 1, 547, 1, 547, 3, 547, 4522, 8, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 3, 548, 4532, 8, 548, 1, 549, 1, 549, 1, 549, 3, 549, 4537, 8, 549, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 552, 1, 552, 1, 552, 1, 553, 1, 553, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 3, 555, 4555, 8, 555, 1, 556, 1, 556, 3, 556, 4559, 8, 556, 1, 557, 1, 557, 1, 558, 1, 558, 1, 559, 1, 559, 3, 559, 4567, 8, 559, 1, 560, 1, 560, 1, 560, 1, 560, 1, 560, 3, 560, 4574, 8, 560, 1, 561, 1, 561, 1, 562, 1, 562, 1, 563, 1, 563, 1, 564, 1, 564, 1, 565, 1, 565, 1, 566, 1, 566, 1, 567, 1, 567, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 570, 1, 570, 1, 571, 1, 571, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 0, 8, 184, 428, 466, 468, 674, 818, 842, 952, 574, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, 998, 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, 1142, 1144, 1146, 0, 45, 2, 0, 53, 53, 165, 165, 1, 0, 65, 66, 2, 0, 79, 79, 150, 150, 2, 0, 159, 159, 304, 304, 4, 0, 277, 277, 311, 311, 315, 315, 320, 320, 2, 0, 166, 166, 168, 168, 2, 0, 102, 102, 290, 290, 2, 0, 127, 127, 359, 359, 6, 0, 335, 336, 339, 339, 346, 346, 355, 355, 372, 372, 383, 383, 2, 0, 28, 29, 77, 78, 2, 0, 159, 159, 195, 195, 3, 0, 67, 67, 106, 106, 374, 374, 1, 0, 104, 105, 2, 0, 283, 283, 318, 318, 2, 0, 314, 314, 346, 346, 2, 0, 314, 314, 383, 383, 2, 0, 211, 211, 331, 331, 1, 0, 37, 38, 1, 0, 73, 74, 2, 0, 26, 26, 133, 133, 6, 0, 334, 334, 342, 342, 345, 345, 364, 364, 366, 366, 371, 371, 2, 0, 372, 372, 375, 375, 2, 0, 358, 358, 382, 382, 2, 0, 161, 161, 232, 232, 2, 0, 129, 129, 181, 181, 2, 0, 141, 141, 222, 222, 3, 0, 40, 40, 142, 142, 183, 183, 6, 0, 33, 33, 56, 56, 62, 62, 144, 145, 200, 201, 203, 203, 2, 0, 22, 22, 80, 80, 1, 0, 169, 170, 1, 0, 51, 52, 2, 0, 42, 42, 157, 157, 8, 0, 21, 21, 30, 30, 32, 32, 59, 61, 75, 75, 174, 174, 192, 193, 204, 205, 1, 0, 48, 49, 3, 0, 39, 39, 128, 128, 209, 209, 1, 0, 296, 299, 1, 0, 4, 5, 2, 0, 71, 71, 208, 208, 1, 0, 3, 4, 3, 0, 9, 10, 13, 13, 15, 15, 1, 0, 16, 19, 2, 0, 301, 301, 319, 319, 2, 0, 285, 285, 308, 308, 2, 0, 284, 284, 307, 307, 1, 0, 277, 323, 4726, 0, 1157, 1, 0, 0, 0, 2, 1161, 1, 0, 0, 0, 4, 1179, 1, 0, 0, 0, 6, 1193, 1, 0, 0, 0, 8, 1197, 1, 0, 0, 0, 10, 1199, 1, 0, 0, 0, 12, 1207, 1, 0, 0, 0, 14, 1211, 1, 0, 0, 0, 16, 1216, 1, 0, 0, 0, 18, 1220, 1, 0, 0, 0, 20, 1225, 1, 0, 0, 0, 22, 1228, 1, 0, 0, 0, 24, 1235, 1, 0, 0, 0, 26, 1241, 1, 0, 0, 0, 28, 1248, 1, 0, 0, 0, 30, 1252, 1, 0, 0, 0, 32, 1272, 1, 0, 0, 0, 34, 1274, 1, 0, 0, 0, 36, 1277, 1, 0, 0, 0, 38, 1279, 1, 0, 0, 0, 40, 1284, 1, 0, 0, 0, 42, 1292, 1, 0, 0, 0, 44, 1298, 1, 0, 0, 0, 46, 1300, 1, 0, 0, 0, 48, 1302, 1, 0, 0, 0, 50, 1304, 1, 0, 0, 0, 52, 1308, 1, 0, 0, 0, 54, 1310, 1, 0, 0, 0, 56, 1314, 1, 0, 0, 0, 58, 1319, 1, 0, 0, 0, 60, 1327, 1, 0, 0, 0, 62, 1334, 1, 0, 0, 0, 64, 1336, 1, 0, 0, 0, 66, 1346, 1, 0, 0, 0, 68, 1348, 1, 0, 0, 0, 70, 1355, 1, 0, 0, 0, 72, 1365, 1, 0, 0, 0, 74, 1369, 1, 0, 0, 0, 76, 1373, 1, 0, 0, 0, 78, 1383, 1, 0, 0, 0, 80, 1387, 1, 0, 0, 0, 82, 1390, 1, 0, 0, 0, 84, 1398, 1, 0, 0, 0, 86, 1402, 1, 0, 0, 0, 88, 1409, 1, 0, 0, 0, 90, 1411, 1, 0, 0, 0, 92, 1417, 1, 0, 0, 0, 94, 1419, 1, 0, 0, 0, 96, 1425, 1, 0, 0, 0, 98, 1428, 1, 0, 0, 0, 100, 1434, 1, 0, 0, 0, 102, 1442, 1, 0, 0, 0, 104, 1444, 1, 0, 0, 0, 106, 1453, 1, 0, 0, 0, 108, 1461, 1, 0, 0, 0, 110, 1488, 1, 0, 0, 0, 112, 1512, 1, 0, 0, 0, 114, 1514, 1, 0, 0, 0, 116, 1517, 1, 0, 0, 0, 118, 1522, 1, 0, 0, 0, 120, 1533, 1, 0, 0, 0, 122, 1565, 1, 0, 0, 0, 124, 1567, 1, 0, 0, 0, 126, 1571, 1, 0, 0, 0, 128, 1583, 1, 0, 0, 0, 130, 1587, 1, 0, 0, 0, 132, 1591, 1, 0, 0, 0, 134, 1593, 1, 0, 0, 0, 136, 1598, 1, 0, 0, 0, 138, 1603, 1, 0, 0, 0, 140, 1605, 1, 0, 0, 0, 142, 1610, 1, 0, 0, 0, 144, 1616, 1, 0, 0, 0, 146, 1620, 1, 0, 0, 0, 148, 1626, 1, 0, 0, 0, 150, 1628, 1, 0, 0, 0, 152, 1631, 1, 0, 0, 0, 154, 1634, 1, 0, 0, 0, 156, 1645, 1, 0, 0, 0, 158, 1647, 1, 0, 0, 0, 160, 1653, 1, 0, 0, 0, 162, 1661, 1, 0, 0, 0, 164, 1665, 1, 0, 0, 0, 166, 1668, 1, 0, 0, 0, 168, 1678, 1, 0, 0, 0, 170, 1680, 1, 0, 0, 0, 172, 1684, 1, 0, 0, 0, 174, 1689, 1, 0, 0, 0, 176, 1694, 1, 0, 0, 0, 178, 1702, 1, 0, 0, 0, 180, 1704, 1, 0, 0, 0, 182, 1706, 1, 0, 0, 0, 184, 1708, 1, 0, 0, 0, 186, 1722, 1, 0, 0, 0, 188, 1736, 1, 0, 0, 0, 190, 1738, 1, 0, 0, 0, 192, 1742, 1, 0, 0, 0, 194, 1754, 1, 0, 0, 0, 196, 1756, 1, 0, 0, 0, 198, 1759, 1, 0, 0, 0, 200, 1763, 1, 0, 0, 0, 202, 1766, 1, 0, 0, 0, 204, 1774, 1, 0, 0, 0, 206, 1777, 1, 0, 0, 0, 208, 1783, 1, 0, 0, 0, 210, 1790, 1, 0, 0, 0, 212, 1794, 1, 0, 0, 0, 214, 1796, 1, 0, 0, 0, 216, 1799, 1, 0, 0, 0, 218, 1811, 1, 0, 0, 0, 220, 1814, 1, 0, 0, 0, 222, 1818, 1, 0, 0, 0, 224, 1820, 1, 0, 0, 0, 226, 1825, 1, 0, 0, 0, 228, 1828, 1, 0, 0, 0, 230, 1841, 1, 0, 0, 0, 232, 1843, 1, 0, 0, 0, 234, 1848, 1, 0, 0, 0, 236, 1851, 1, 0, 0, 0, 238, 1854, 1, 0, 0, 0, 240, 1856, 1, 0, 0, 0, 242, 1872, 1, 0, 0, 0, 244, 1879, 1, 0, 0, 0, 246, 1881, 1, 0, 0, 0, 248, 1885, 1, 0, 0, 0, 250, 1894, 1, 0, 0, 0, 252, 1902, 1, 0, 0, 0, 254, 1906, 1, 0, 0, 0, 256, 1909, 1, 0, 0, 0, 258, 1938, 1, 0, 0, 0, 260, 1946, 1, 0, 0, 0, 262, 1950, 1, 0, 0, 0, 264, 1953, 1, 0, 0, 0, 266, 1956, 1, 0, 0, 0, 268, 1961, 1, 0, 0, 0, 270, 1969, 1, 0, 0, 0, 272, 1976, 1, 0, 0, 0, 274, 1979, 1, 0, 0, 0, 276, 1986, 1, 0, 0, 0, 278, 1989, 1, 0, 0, 0, 280, 1993, 1, 0, 0, 0, 282, 1999, 1, 0, 0, 0, 284, 2007, 1, 0, 0, 0, 286, 2016, 1, 0, 0, 0, 288, 2024, 1, 0, 0, 0, 290, 2026, 1, 0, 0, 0, 292, 2029, 1, 0, 0, 0, 294, 2032, 1, 0, 0, 0, 296, 2036, 1, 0, 0, 0, 298, 2039, 1, 0, 0, 0, 300, 2047, 1, 0, 0, 0, 302, 2050, 1, 0, 0, 0, 304, 2061, 1, 0, 0, 0, 306, 2063, 1, 0, 0, 0, 308, 2066, 1, 0, 0, 0, 310, 2074, 1, 0, 0, 0, 312, 2081, 1, 0, 0, 0, 314, 2083, 1, 0, 0, 0, 316, 2092, 1, 0, 0, 0, 318, 2099, 1, 0, 0, 0, 320, 2102, 1, 0, 0, 0, 322, 2105, 1, 0, 0, 0, 324, 2108, 1, 0, 0, 0, 326, 2110, 1, 0, 0, 0, 328, 2118, 1, 0, 0, 0, 330, 2127, 1, 0, 0, 0, 332, 2136, 1, 0, 0, 0, 334, 2138, 1, 0, 0, 0, 336, 2144, 1, 0, 0, 0, 338, 2150, 1, 0, 0, 0, 340, 2164, 1, 0, 0, 0, 342, 2177, 1, 0, 0, 0, 344, 2181, 1, 0, 0, 0, 346, 2183, 1, 0, 0, 0, 348, 2187, 1, 0, 0, 0, 350, 2192, 1, 0, 0, 0, 352, 2194, 1, 0, 0, 0, 354, 2201, 1, 0, 0, 0, 356, 2203, 1, 0, 0, 0, 358, 2213, 1, 0, 0, 0, 360, 2219, 1, 0, 0, 0, 362, 2221, 1, 0, 0, 0, 364, 2229, 1, 0, 0, 0, 366, 2237, 1, 0, 0, 0, 368, 2245, 1, 0, 0, 0, 370, 2257, 1, 0, 0, 0, 372, 2274, 1, 0, 0, 0, 374, 2277, 1, 0, 0, 0, 376, 2288, 1, 0, 0, 0, 378, 2293, 1, 0, 0, 0, 380, 2297, 1, 0, 0, 0, 382, 2299, 1, 0, 0, 0, 384, 2304, 1, 0, 0, 0, 386, 2312, 1, 0, 0, 0, 388, 2314, 1, 0, 0, 0, 390, 2317, 1, 0, 0, 0, 392, 2321, 1, 0, 0, 0, 394, 2323, 1, 0, 0, 0, 396, 2326, 1, 0, 0, 0, 398, 2330, 1, 0, 0, 0, 400, 2338, 1, 0, 0, 0, 402, 2344, 1, 0, 0, 0, 404, 2353, 1, 0, 0, 0, 406, 2355, 1, 0, 0, 0, 408, 2359, 1, 0, 0, 0, 410, 2363, 1, 0, 0, 0, 412, 2367, 1, 0, 0, 0, 414, 2371, 1, 0, 0, 0, 416, 2375, 1, 0, 0, 0, 418, 2379, 1, 0, 0, 0, 420, 2383, 1, 0, 0, 0, 422, 2385, 1, 0, 0, 0, 424, 2398, 1, 0, 0, 0, 426, 2401, 1, 0, 0, 0, 428, 2413, 1, 0, 0, 0, 430, 2426, 1, 0, 0, 0, 432, 2428, 1, 0, 0, 0, 434, 2434, 1, 0, 0, 0, 436, 2436, 1, 0, 0, 0, 438, 2440, 1, 0, 0, 0, 440, 2450, 1, 0, 0, 0, 442, 2452, 1, 0, 0, 0, 444, 2461, 1, 0, 0, 0, 446, 2463, 1, 0, 0, 0, 448, 2467, 1, 0, 0, 0, 450, 2471, 1, 0, 0, 0, 452, 2475, 1, 0, 0, 0, 454, 2479, 1, 0, 0, 0, 456, 2483, 1, 0, 0, 0, 458, 2487, 1, 0, 0, 0, 460, 2494, 1, 0, 0, 0, 462, 2496, 1, 0, 0, 0, 464, 2506, 1, 0, 0, 0, 466, 2516, 1, 0, 0, 0, 468, 2526, 1, 0, 0, 0, 470, 2540, 1, 0, 0, 0, 472, 2542, 1, 0, 0, 0, 474, 2545, 1, 0, 0, 0, 476, 2550, 1, 0, 0, 0, 478, 2559, 1, 0, 0, 0, 480, 2561, 1, 0, 0, 0, 482, 2564, 1, 0, 0, 0, 484, 2567, 1, 0, 0, 0, 486, 2570, 1, 0, 0, 0, 488, 2573, 1, 0, 0, 0, 490, 2577, 1, 0, 0, 0, 492, 2581, 1, 0, 0, 0, 494, 2586, 1, 0, 0, 0, 496, 2588, 1, 0, 0, 0, 498, 2596, 1, 0, 0, 0, 500, 2598, 1, 0, 0, 0, 502, 2601, 1, 0, 0, 0, 504, 2604, 1, 0, 0, 0, 506, 2612, 1, 0, 0, 0, 508, 2616, 1, 0, 0, 0, 510, 2618, 1, 0, 0, 0, 512, 2621, 1, 0, 0, 0, 514, 2634, 1, 0, 0, 0, 516, 2636, 1, 0, 0, 0, 518, 2638, 1, 0, 0, 0, 520, 2641, 1, 0, 0, 0, 522, 2645, 1, 0, 0, 0, 524, 2653, 1, 0, 0, 0, 526, 2660, 1, 0, 0, 0, 528, 2662, 1, 0, 0, 0, 530, 2668, 1, 0, 0, 0, 532, 2670, 1, 0, 0, 0, 534, 2673, 1, 0, 0, 0, 536, 2676, 1, 0, 0, 0, 538, 2681, 1, 0, 0, 0, 540, 2687, 1, 0, 0, 0, 542, 2689, 1, 0, 0, 0, 544, 2696, 1, 0, 0, 0, 546, 2698, 1, 0, 0, 0, 548, 2700, 1, 0, 0, 0, 550, 2704, 1, 0, 0, 0, 552, 2719, 1, 0, 0, 0, 554, 2729, 1, 0, 0, 0, 556, 2732, 1, 0, 0, 0, 558, 2736, 1, 0, 0, 0, 560, 2740, 1, 0, 0, 0, 562, 2743, 1, 0, 0, 0, 564, 2752, 1, 0, 0, 0, 566, 2756, 1, 0, 0, 0, 568, 2759, 1, 0, 0, 0, 570, 2782, 1, 0, 0, 0, 572, 2784, 1, 0, 0, 0, 574, 2786, 1, 0, 0, 0, 576, 2790, 1, 0, 0, 0, 578, 2792, 1, 0, 0, 0, 580, 2802, 1, 0, 0, 0, 582, 2806, 1, 0, 0, 0, 584, 2814, 1, 0, 0, 0, 586, 2825, 1, 0, 0, 0, 588, 2839, 1, 0, 0, 0, 590, 2846, 1, 0, 0, 0, 592, 2848, 1, 0, 0, 0, 594, 2855, 1, 0, 0, 0, 596, 2858, 1, 0, 0, 0, 598, 2862, 1, 0, 0, 0, 600, 2864, 1, 0, 0, 0, 602, 2868, 1, 0, 0, 0, 604, 2879, 1, 0, 0, 0, 606, 2885, 1, 0, 0, 0, 608, 2898, 1, 0, 0, 0, 610, 2905, 1, 0, 0, 0, 612, 2912, 1, 0, 0, 0, 614, 2915, 1, 0, 0, 0, 616, 2919, 1, 0, 0, 0, 618, 2921, 1, 0, 0, 0, 620, 2925, 1, 0, 0, 0, 622, 2927, 1, 0, 0, 0, 624, 2931, 1, 0, 0, 0, 626, 2935, 1, 0, 0, 0, 628, 2939, 1, 0, 0, 0, 630, 2943, 1, 0, 0, 0, 632, 2947, 1, 0, 0, 0, 634, 2960, 1, 0, 0, 0, 636, 2971, 1, 0, 0, 0, 638, 2973, 1, 0, 0, 0, 640, 2975, 1, 0, 0, 0, 642, 2980, 1, 0, 0, 0, 644, 2984, 1, 0, 0, 0, 646, 2986, 1, 0, 0, 0, 648, 2992, 1, 0, 0, 0, 650, 2998, 1, 0, 0, 0, 652, 3004, 1, 0, 0, 0, 654, 3006, 1, 0, 0, 0, 656, 3008, 1, 0, 0, 0, 658, 3010, 1, 0, 0, 0, 660, 3019, 1, 0, 0, 0, 662, 3021, 1, 0, 0, 0, 664, 3029, 1, 0, 0, 0, 666, 3035, 1, 0, 0, 0, 668, 3043, 1, 0, 0, 0, 670, 3049, 1, 0, 0, 0, 672, 3052, 1, 0, 0, 0, 674, 3114, 1, 0, 0, 0, 676, 3135, 1, 0, 0, 0, 678, 3144, 1, 0, 0, 0, 680, 3146, 1, 0, 0, 0, 682, 3185, 1, 0, 0, 0, 684, 3222, 1, 0, 0, 0, 686, 3224, 1, 0, 0, 0, 688, 3226, 1, 0, 0, 0, 690, 3228, 1, 0, 0, 0, 692, 3232, 1, 0, 0, 0, 694, 3236, 1, 0, 0, 0, 696, 3240, 1, 0, 0, 0, 698, 3288, 1, 0, 0, 0, 700, 3334, 1, 0, 0, 0, 702, 3380, 1, 0, 0, 0, 704, 3382, 1, 0, 0, 0, 706, 3395, 1, 0, 0, 0, 708, 3397, 1, 0, 0, 0, 710, 3444, 1, 0, 0, 0, 712, 3448, 1, 0, 0, 0, 714, 3455, 1, 0, 0, 0, 716, 3469, 1, 0, 0, 0, 718, 3485, 1, 0, 0, 0, 720, 3487, 1, 0, 0, 0, 722, 3503, 1, 0, 0, 0, 724, 3517, 1, 0, 0, 0, 726, 3519, 1, 0, 0, 0, 728, 3532, 1, 0, 0, 0, 730, 3538, 1, 0, 0, 0, 732, 3542, 1, 0, 0, 0, 734, 3544, 1, 0, 0, 0, 736, 3549, 1, 0, 0, 0, 738, 3553, 1, 0, 0, 0, 740, 3556, 1, 0, 0, 0, 742, 3563, 1, 0, 0, 0, 744, 3571, 1, 0, 0, 0, 746, 3577, 1, 0, 0, 0, 748, 3579, 1, 0, 0, 0, 750, 3584, 1, 0, 0, 0, 752, 3592, 1, 0, 0, 0, 754, 3594, 1, 0, 0, 0, 756, 3599, 1, 0, 0, 0, 758, 3605, 1, 0, 0, 0, 760, 3609, 1, 0, 0, 0, 762, 3611, 1, 0, 0, 0, 764, 3627, 1, 0, 0, 0, 766, 3629, 1, 0, 0, 0, 768, 3635, 1, 0, 0, 0, 770, 3643, 1, 0, 0, 0, 772, 3646, 1, 0, 0, 0, 774, 3652, 1, 0, 0, 0, 776, 3663, 1, 0, 0, 0, 778, 3665, 1, 0, 0, 0, 780, 3667, 1, 0, 0, 0, 782, 3687, 1, 0, 0, 0, 784, 3690, 1, 0, 0, 0, 786, 3696, 1, 0, 0, 0, 788, 3699, 1, 0, 0, 0, 790, 3706, 1, 0, 0, 0, 792, 3715, 1, 0, 0, 0, 794, 3718, 1, 0, 0, 0, 796, 3724, 1, 0, 0, 0, 798, 3727, 1, 0, 0, 0, 800, 3736, 1, 0, 0, 0, 802, 3744, 1, 0, 0, 0, 804, 3746, 1, 0, 0, 0, 806, 3748, 1, 0, 0, 0, 808, 3756, 1, 0, 0, 0, 810, 3764, 1, 0, 0, 0, 812, 3766, 1, 0, 0, 0, 814, 3780, 1, 0, 0, 0, 816, 3794, 1, 0, 0, 0, 818, 3819, 1, 0, 0, 0, 820, 3859, 1, 0, 0, 0, 822, 3861, 1, 0, 0, 0, 824, 3868, 1, 0, 0, 0, 826, 3870, 1, 0, 0, 0, 828, 3877, 1, 0, 0, 0, 830, 3882, 1, 0, 0, 0, 832, 3887, 1, 0, 0, 0, 834, 3896, 1, 0, 0, 0, 836, 3905, 1, 0, 0, 0, 838, 3907, 1, 0, 0, 0, 840, 3909, 1, 0, 0, 0, 842, 3922, 1, 0, 0, 0, 844, 3932, 1, 0, 0, 0, 846, 3938, 1, 0, 0, 0, 848, 3952, 1, 0, 0, 0, 850, 3956, 1, 0, 0, 0, 852, 3960, 1, 0, 0, 0, 854, 3964, 1, 0, 0, 0, 856, 3966, 1, 0, 0, 0, 858, 3968, 1, 0, 0, 0, 860, 3974, 1, 0, 0, 0, 862, 3979, 1, 0, 0, 0, 864, 3999, 1, 0, 0, 0, 866, 4003, 1, 0, 0, 0, 868, 4005, 1, 0, 0, 0, 870, 4017, 1, 0, 0, 0, 872, 4028, 1, 0, 0, 0, 874, 4033, 1, 0, 0, 0, 876, 4038, 1, 0, 0, 0, 878, 4043, 1, 0, 0, 0, 880, 4045, 1, 0, 0, 0, 882, 4064, 1, 0, 0, 0, 884, 4068, 1, 0, 0, 0, 886, 4070, 1, 0, 0, 0, 888, 4072, 1, 0, 0, 0, 890, 4081, 1, 0, 0, 0, 892, 4083, 1, 0, 0, 0, 894, 4091, 1, 0, 0, 0, 896, 4093, 1, 0, 0, 0, 898, 4101, 1, 0, 0, 0, 900, 4108, 1, 0, 0, 0, 902, 4110, 1, 0, 0, 0, 904, 4112, 1, 0, 0, 0, 906, 4115, 1, 0, 0, 0, 908, 4119, 1, 0, 0, 0, 910, 4121, 1, 0, 0, 0, 912, 4126, 1, 0, 0, 0, 914, 4128, 1, 0, 0, 0, 916, 4130, 1, 0, 0, 0, 918, 4132, 1, 0, 0, 0, 920, 4137, 1, 0, 0, 0, 922, 4144, 1, 0, 0, 0, 924, 4146, 1, 0, 0, 0, 926, 4151, 1, 0, 0, 0, 928, 4155, 1, 0, 0, 0, 930, 4157, 1, 0, 0, 0, 932, 4164, 1, 0, 0, 0, 934, 4169, 1, 0, 0, 0, 936, 4172, 1, 0, 0, 0, 938, 4180, 1, 0, 0, 0, 940, 4188, 1, 0, 0, 0, 942, 4191, 1, 0, 0, 0, 944, 4195, 1, 0, 0, 0, 946, 4201, 1, 0, 0, 0, 948, 4209, 1, 0, 0, 0, 950, 4213, 1, 0, 0, 0, 952, 4220, 1, 0, 0, 0, 954, 4246, 1, 0, 0, 0, 956, 4251, 1, 0, 0, 0, 958, 4263, 1, 0, 0, 0, 960, 4265, 1, 0, 0, 0, 962, 4267, 1, 0, 0, 0, 964, 4272, 1, 0, 0, 0, 966, 4277, 1, 0, 0, 0, 968, 4282, 1, 0, 0, 0, 970, 4287, 1, 0, 0, 0, 972, 4294, 1, 0, 0, 0, 974, 4296, 1, 0, 0, 0, 976, 4298, 1, 0, 0, 0, 978, 4303, 1, 0, 0, 0, 980, 4305, 1, 0, 0, 0, 982, 4312, 1, 0, 0, 0, 984, 4314, 1, 0, 0, 0, 986, 4316, 1, 0, 0, 0, 988, 4321, 1, 0, 0, 0, 990, 4326, 1, 0, 0, 0, 992, 4331, 1, 0, 0, 0, 994, 4338, 1, 0, 0, 0, 996, 4340, 1, 0, 0, 0, 998, 4342, 1, 0, 0, 0, 1000, 4347, 1, 0, 0, 0, 1002, 4352, 1, 0, 0, 0, 1004, 4357, 1, 0, 0, 0, 1006, 4359, 1, 0, 0, 0, 1008, 4368, 1, 0, 0, 0, 1010, 4372, 1, 0, 0, 0, 1012, 4374, 1, 0, 0, 0, 1014, 4376, 1, 0, 0, 0, 1016, 4378, 1, 0, 0, 0, 1018, 4380, 1, 0, 0, 0, 1020, 4382, 1, 0, 0, 0, 1022, 4389, 1, 0, 0, 0, 1024, 4398, 1, 0, 0, 0, 1026, 4407, 1, 0, 0, 0, 1028, 4409, 1, 0, 0, 0, 1030, 4424, 1, 0, 0, 0, 1032, 4433, 1, 0, 0, 0, 1034, 4437, 1, 0, 0, 0, 1036, 4441, 1, 0, 0, 0, 1038, 4445, 1, 0, 0, 0, 1040, 4447, 1, 0, 0, 0, 1042, 4449, 1, 0, 0, 0, 1044, 4456, 1, 0, 0, 0, 1046, 4460, 1, 0, 0, 0, 1048, 4462, 1, 0, 0, 0, 1050, 4466, 1, 0, 0, 0, 1052, 4468, 1, 0, 0, 0, 1054, 4475, 1, 0, 0, 0, 1056, 4477, 1, 0, 0, 0, 1058, 4479, 1, 0, 0, 0, 1060, 4481, 1, 0, 0, 0, 1062, 4483, 1, 0, 0, 0, 1064, 4487, 1, 0, 0, 0, 1066, 4489, 1, 0, 0, 0, 1068, 4491, 1, 0, 0, 0, 1070, 4493, 1, 0, 0, 0, 1072, 4495, 1, 0, 0, 0, 1074, 4499, 1, 0, 0, 0, 1076, 4501, 1, 0, 0, 0, 1078, 4503, 1, 0, 0, 0, 1080, 4505, 1, 0, 0, 0, 1082, 4507, 1, 0, 0, 0, 1084, 4509, 1, 0, 0, 0, 1086, 4511, 1, 0, 0, 0, 1088, 4513, 1, 0, 0, 0, 1090, 4515, 1, 0, 0, 0, 1092, 4517, 1, 0, 0, 0, 1094, 4521, 1, 0, 0, 0, 1096, 4531, 1, 0, 0, 0, 1098, 4536, 1, 0, 0, 0, 1100, 4538, 1, 0, 0, 0, 1102, 4541, 1, 0, 0, 0, 1104, 4544, 1, 0, 0, 0, 1106, 4547, 1, 0, 0, 0, 1108, 4549, 1, 0, 0, 0, 1110, 4554, 1, 0, 0, 0, 1112, 4558, 1, 0, 0, 0, 1114, 4560, 1, 0, 0, 0, 1116, 4562, 1, 0, 0, 0, 1118, 4566, 1, 0, 0, 0, 1120, 4573, 1, 0, 0, 0, 1122, 4575, 1, 0, 0, 0, 1124, 4577, 1, 0, 0, 0, 1126, 4579, 1, 0, 0, 0, 1128, 4581, 1, 0, 0, 0, 1130, 4583, 1, 0, 0, 0, 1132, 4585, 1, 0, 0, 0, 1134, 4587, 1, 0, 0, 0, 1136, 4589, 1, 0, 0, 0, 1138, 4592, 1, 0, 0, 0, 1140, 4594, 1, 0, 0, 0, 1142, 4596, 1, 0, 0, 0, 1144, 4598, 1, 0, 0, 0, 1146, 4600, 1, 0, 0, 0, 1148, 1150, 3, 2, 1, 0, 1149, 1151, 3, 34, 17, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 5, 0, 0, 1, 1153, 1158, 1, 0, 0, 0, 1154, 1155, 3, 34, 17, 0, 1155, 1156, 5, 0, 0, 1, 1156, 1158, 1, 0, 0, 0, 1157, 1148, 1, 0, 0, 0, 1157, 1154, 1, 0, 0, 0, 1158, 1, 1, 0, 0, 0, 1159, 1162, 3, 4, 2, 0, 1160, 1162, 3, 6, 3, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 3, 1, 0, 0, 0, 1163, 1165, 3, 30, 15, 0, 1164, 1163, 1, 0, 0, 0, 1165, 1166, 1, 0, 0, 0, 1166, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1180, 1, 0, 0, 0, 1168, 1170, 3, 10, 5, 0, 1169, 1168, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1176, 1, 0, 0, 0, 1173, 1175, 3, 30, 15, 0, 1174, 1173, 1, 0, 0, 0, 1175, 1178, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1180, 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1179, 1164, 1, 0, 0, 0, 1179, 1169, 1, 0, 0, 0, 1180, 5, 1, 0, 0, 0, 1181, 1186, 3, 38, 19, 0, 1182, 1184, 3, 52, 26, 0, 1183, 1185, 3, 8, 4, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1187, 1, 0, 0, 0, 1186, 1182, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1194, 1, 0, 0, 0, 1188, 1190, 3, 52, 26, 0, 1189, 1191, 3, 8, 4, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1194, 1, 0, 0, 0, 1192, 1194, 3, 8, 4, 0, 1193, 1181, 1, 0, 0, 0, 1193, 1188, 1, 0, 0, 0, 1193, 1192, 1, 0, 0, 0, 1194, 7, 1, 0, 0, 0, 1195, 1198, 3, 46, 23, 0, 1196, 1198, 3, 48, 24, 0, 1197, 1195, 1, 0, 0, 0, 1197, 1196, 1, 0, 0, 0, 1198, 9, 1, 0, 0, 0, 1199, 1200, 5, 188, 0, 0, 1200, 1205, 5, 190, 0, 0, 1201, 1206, 3, 12, 6, 0, 1202, 1206, 3, 14, 7, 0, 1203, 1206, 3, 16, 8, 0, 1204, 1206, 3, 20, 10, 0, 1205, 1201, 1, 0, 0, 0, 1205, 1202, 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1204, 1, 0, 0, 0, 1206, 11, 1, 0, 0, 0, 1207, 1208, 5, 185, 0, 0, 1208, 1209, 3, 538, 269, 0, 1209, 13, 1, 0, 0, 0, 1210, 1212, 5, 305, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 5, 289, 0, 0, 1214, 1215, 3, 88, 44, 0, 1215, 15, 1, 0, 0, 0, 1216, 1217, 5, 207, 0, 0, 1217, 1218, 5, 323, 0, 0, 1218, 1219, 3, 18, 9, 0, 1219, 17, 1, 0, 0, 0, 1220, 1221, 3, 1114, 557, 0, 1221, 19, 1, 0, 0, 0, 1222, 1226, 3, 22, 11, 0, 1223, 1226, 3, 24, 12, 0, 1224, 1226, 3, 26, 13, 0, 1225, 1222, 1, 0, 0, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 21, 1, 0, 0, 0, 1227, 1229, 5, 305, 0, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1231, 5, 289, 0, 0, 1231, 1232, 3, 28, 14, 0, 1232, 1233, 3, 72, 36, 0, 1233, 23, 1, 0, 0, 0, 1234, 1236, 5, 278, 0, 0, 1235, 1234, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, 5, 313, 0, 0, 1238, 1239, 3, 28, 14, 0, 1239, 1240, 3, 78, 39, 0, 1240, 25, 1, 0, 0, 0, 1241, 1242, 5, 225, 0, 0, 1242, 1243, 3, 28, 14, 0, 1243, 1244, 3, 84, 42, 0, 1244, 27, 1, 0, 0, 0, 1245, 1246, 5, 108, 0, 0, 1246, 1247, 5, 152, 0, 0, 1247, 1249, 5, 89, 0, 0, 1248, 1245, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 3, 36, 18, 0, 1251, 29, 1, 0, 0, 0, 1252, 1253, 5, 188, 0, 0, 1253, 1255, 5, 179, 0, 0, 1254, 1256, 3, 32, 16, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 31, 1, 0, 0, 0, 1257, 1259, 5, 22, 0, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1273, 7, 0, 0, 0, 1261, 1273, 5, 185, 0, 0, 1262, 1264, 5, 305, 0, 0, 1263, 1262, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1273, 5, 289, 0, 0, 1266, 1267, 5, 207, 0, 0, 1267, 1273, 5, 323, 0, 0, 1268, 1270, 5, 164, 0, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 3, 36, 18, 0, 1272, 1258, 1, 0, 0, 0, 1272, 1261, 1, 0, 0, 0, 1272, 1263, 1, 0, 0, 0, 1272, 1266, 1, 0, 0, 0, 1272, 1269, 1, 0, 0, 0, 1273, 33, 1, 0, 0, 0, 1274, 1275, 5, 188, 0, 0, 1275, 1276, 5, 54, 0, 0, 1276, 35, 1, 0, 0, 0, 1277, 1278, 5, 326, 0, 0, 1278, 37, 1, 0, 0, 0, 1279, 1280, 5, 199, 0, 0, 1280, 1282, 5, 316, 0, 0, 1281, 1283, 3, 40, 20, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 39, 1, 0, 0, 0, 1284, 1289, 3, 42, 21, 0, 1285, 1286, 5, 360, 0, 0, 1286, 1288, 3, 42, 21, 0, 1287, 1285, 1, 0, 0, 0, 1288, 1291, 1, 0, 0, 0, 1289, 1287, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 41, 1, 0, 0, 0, 1291, 1289, 1, 0, 0, 0, 1292, 1293, 3, 44, 22, 0, 1293, 43, 1, 0, 0, 0, 1294, 1295, 5, 306, 0, 0, 1295, 1299, 5, 303, 0, 0, 1296, 1297, 5, 306, 0, 0, 1297, 1299, 5, 322, 0, 0, 1298, 1294, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 45, 1, 0, 0, 0, 1300, 1301, 5, 182, 0, 0, 1301, 47, 1, 0, 0, 0, 1302, 1303, 5, 57, 0, 0, 1303, 49, 1, 0, 0, 0, 1304, 1305, 5, 368, 0, 0, 1305, 1306, 3, 52, 26, 0, 1306, 1307, 5, 379, 0, 0, 1307, 51, 1, 0, 0, 0, 1308, 1309, 3, 58, 29, 0, 1309, 53, 1, 0, 0, 0, 1310, 1311, 5, 368, 0, 0, 1311, 1312, 3, 58, 29, 0, 1312, 1313, 5, 379, 0, 0, 1313, 55, 1, 0, 0, 0, 1314, 1315, 5, 368, 0, 0, 1315, 1316, 3, 58, 29, 0, 1316, 1317, 5, 379, 0, 0, 1317, 57, 1, 0, 0, 0, 1318, 1320, 3, 290, 145, 0, 1319, 1318, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 1322, 1, 0, 0, 0, 1321, 1323, 3, 60, 30, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1325, 3, 64, 32, 0, 1325, 59, 1, 0, 0, 0, 1326, 1328, 3, 62, 31, 0, 1327, 1326, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 61, 1, 0, 0, 0, 1331, 1335, 3, 70, 35, 0, 1332, 1335, 3, 76, 38, 0, 1333, 1335, 3, 82, 41, 0, 1334, 1331, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1334, 1333, 1, 0, 0, 0, 1335, 63, 1, 0, 0, 0, 1336, 1340, 3, 66, 33, 0, 1337, 1339, 3, 68, 34, 0, 1338, 1337, 1, 0, 0, 0, 1339, 1342, 1, 0, 0, 0, 1340, 1338, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 65, 1, 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1343, 1347, 3, 182, 91, 0, 1344, 1347, 3, 98, 49, 0, 1345, 1347, 3, 130, 65, 0, 1346, 1343, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, 0, 1346, 1345, 1, 0, 0, 0, 1347, 67, 1, 0, 0, 0, 1348, 1350, 5, 149, 0, 0, 1349, 1351, 3, 502, 251, 0, 1350, 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1353, 3, 66, 33, 0, 1353, 69, 1, 0, 0, 0, 1354, 1356, 5, 305, 0, 0, 1355, 1354, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 5, 289, 0, 0, 1358, 1359, 3, 1092, 546, 0, 1359, 1360, 3, 72, 36, 0, 1360, 71, 1, 0, 0, 0, 1361, 1363, 3, 676, 338, 0, 1362, 1361, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1366, 3, 738, 369, 0, 1365, 1362, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 3, 74, 37, 0, 1368, 73, 1, 0, 0, 0, 1369, 1370, 5, 364, 0, 0, 1370, 1371, 3, 88, 44, 0, 1371, 75, 1, 0, 0, 0, 1372, 1374, 5, 278, 0, 0, 1373, 1372, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 5, 313, 0, 0, 1376, 1377, 3, 1092, 546, 0, 1377, 1378, 3, 78, 39, 0, 1378, 77, 1, 0, 0, 0, 1379, 1381, 3, 676, 338, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 3, 744, 372, 0, 1383, 1380, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, 3, 80, 40, 0, 1386, 79, 1, 0, 0, 0, 1387, 1388, 5, 364, 0, 0, 1388, 1389, 3, 92, 46, 0, 1389, 81, 1, 0, 0, 0, 1390, 1391, 5, 225, 0, 0, 1391, 1392, 3, 1092, 546, 0, 1392, 1393, 3, 84, 42, 0, 1393, 83, 1, 0, 0, 0, 1394, 1396, 3, 676, 338, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 1399, 3, 674, 337, 0, 1398, 1395, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 3, 86, 43, 0, 1401, 85, 1, 0, 0, 0, 1402, 1403, 5, 364, 0, 0, 1403, 1404, 3, 818, 409, 0, 1404, 87, 1, 0, 0, 0, 1405, 1410, 3, 554, 277, 0, 1406, 1410, 3, 96, 48, 0, 1407, 1410, 3, 1058, 529, 0, 1408, 1410, 3, 90, 45, 0, 1409, 1405, 1, 0, 0, 0, 1409, 1406, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1408, 1, 0, 0, 0, 1410, 89, 1, 0, 0, 0, 1411, 1412, 7, 1, 0, 0, 1412, 91, 1, 0, 0, 0, 1413, 1418, 3, 94, 47, 0, 1414, 1418, 3, 564, 282, 0, 1415, 1418, 3, 96, 48, 0, 1416, 1418, 3, 1058, 529, 0, 1417, 1413, 1, 0, 0, 0, 1417, 1414, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1416, 1, 0, 0, 0, 1418, 93, 1, 0, 0, 0, 1419, 1420, 3, 56, 28, 0, 1420, 95, 1, 0, 0, 0, 1421, 1422, 5, 228, 0, 0, 1422, 1426, 3, 842, 421, 0, 1423, 1426, 3, 844, 422, 0, 1424, 1426, 3, 848, 424, 0, 1425, 1421, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1424, 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1429, 3, 100, 50, 0, 1428, 1427, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1428, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 99, 1, 0, 0, 0, 1432, 1435, 3, 102, 51, 0, 1433, 1435, 3, 128, 64, 0, 1434, 1432, 1, 0, 0, 0, 1434, 1433, 1, 0, 0, 0, 1435, 101, 1, 0, 0, 0, 1436, 1443, 3, 104, 52, 0, 1437, 1443, 3, 106, 53, 0, 1438, 1443, 3, 108, 54, 0, 1439, 1443, 3, 118, 59, 0, 1440, 1443, 3, 120, 60, 0, 1441, 1443, 3, 126, 63, 0, 1442, 1436, 1, 0, 0, 0, 1442, 1437, 1, 0, 0, 0, 1442, 1438, 1, 0, 0, 0, 1442, 1439, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1441, 1, 0, 0, 0, 1443, 103, 1, 0, 0, 0, 1444, 1445, 5, 63, 0, 0, 1445, 1449, 5, 185, 0, 0, 1446, 1447, 5, 108, 0, 0, 1447, 1448, 5, 152, 0, 0, 1448, 1450, 5, 89, 0, 0, 1449, 1446, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 3, 542, 271, 0, 1452, 105, 1, 0, 0, 0, 1453, 1454, 5, 82, 0, 0, 1454, 1457, 5, 185, 0, 0, 1455, 1456, 5, 108, 0, 0, 1456, 1458, 5, 89, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 3, 542, 271, 0, 1460, 107, 1, 0, 0, 0, 1461, 1477, 5, 63, 0, 0, 1462, 1464, 5, 305, 0, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1469, 5, 289, 0, 0, 1466, 1467, 5, 108, 0, 0, 1467, 1468, 5, 152, 0, 0, 1468, 1470, 5, 89, 0, 0, 1469, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1478, 1, 0, 0, 0, 1471, 1472, 5, 161, 0, 0, 1472, 1474, 5, 178, 0, 0, 1473, 1475, 5, 305, 0, 0, 1474, 1473, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1476, 1, 0, 0, 0, 1476, 1478, 5, 289, 0, 0, 1477, 1463, 1, 0, 0, 0, 1477, 1471, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1482, 3, 556, 278, 0, 1480, 1483, 3, 110, 55, 0, 1481, 1483, 3, 112, 56, 0, 1482, 1480, 1, 0, 0, 0, 1482, 1481, 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1486, 3, 116, 58, 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 109, 1, 0, 0, 0, 1487, 1489, 3, 676, 338, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1495, 5, 25, 0, 0, 1491, 1493, 5, 305, 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1496, 5, 289, 0, 0, 1495, 1492, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 111, 1, 0, 0, 0, 1497, 1513, 3, 114, 57, 0, 1498, 1500, 3, 676, 338, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1513, 3, 560, 280, 0, 1502, 1504, 3, 676, 338, 0, 1503, 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1509, 1, 0, 0, 0, 1505, 1507, 5, 305, 0, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1510, 5, 289, 0, 0, 1509, 1506, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1513, 3, 574, 287, 0, 1512, 1497, 1, 0, 0, 0, 1512, 1499, 1, 0, 0, 0, 1512, 1503, 1, 0, 0, 0, 1513, 113, 1, 0, 0, 0, 1514, 1515, 5, 131, 0, 0, 1515, 1516, 3, 88, 44, 0, 1516, 115, 1, 0, 0, 0, 1517, 1518, 5, 27, 0, 0, 1518, 1519, 5, 58, 0, 0, 1519, 1520, 5, 158, 0, 0, 1520, 1521, 3, 88, 44, 0, 1521, 117, 1, 0, 0, 0, 1522, 1524, 5, 82, 0, 0, 1523, 1525, 5, 305, 0, 0, 1524, 1523, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1529, 5, 289, 0, 0, 1527, 1528, 5, 108, 0, 0, 1528, 1530, 5, 89, 0, 0, 1529, 1527, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 556, 278, 0, 1532, 119, 1, 0, 0, 0, 1533, 1551, 5, 63, 0, 0, 1534, 1536, 5, 305, 0, 0, 1535, 1534, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 1538, 5, 289, 0, 0, 1538, 1542, 5, 317, 0, 0, 1539, 1540, 5, 108, 0, 0, 1540, 1541, 5, 152, 0, 0, 1541, 1543, 5, 89, 0, 0, 1542, 1539, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1552, 1, 0, 0, 0, 1544, 1545, 5, 161, 0, 0, 1545, 1547, 5, 178, 0, 0, 1546, 1548, 5, 305, 0, 0, 1547, 1546, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 5, 289, 0, 0, 1550, 1552, 5, 317, 0, 0, 1551, 1535, 1, 0, 0, 0, 1551, 1544, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 3, 562, 281, 0, 1554, 1555, 3, 122, 61, 0, 1555, 121, 1, 0, 0, 0, 1556, 1558, 5, 27, 0, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1566, 3, 124, 62, 0, 1560, 1566, 3, 114, 57, 0, 1561, 1563, 5, 27, 0, 0, 1562, 1561, 1, 0, 0, 0, 1562, 1563, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 3, 574, 287, 0, 1565, 1557, 1, 0, 0, 0, 1565, 1560, 1, 0, 0, 0, 1565, 1562, 1, 0, 0, 0, 1566, 123, 1, 0, 0, 0, 1567, 1568, 5, 58, 0, 0, 1568, 1569, 5, 158, 0, 0, 1569, 1570, 3, 560, 280, 0, 1570, 125, 1, 0, 0, 0, 1571, 1573, 5, 82, 0, 0, 1572, 1574, 5, 305, 0, 0, 1573, 1572, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1576, 5, 289, 0, 0, 1576, 1579, 5, 317, 0, 0, 1577, 1578, 5, 108, 0, 0, 1578, 1580, 5, 89, 0, 0, 1579, 1577, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 3, 562, 281, 0, 1582, 127, 1, 0, 0, 0, 1583, 1584, 3, 274, 137, 0, 1584, 129, 1, 0, 0, 0, 1585, 1588, 3, 132, 66, 0, 1586, 1588, 3, 138, 69, 0, 1587, 1585, 1, 0, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, 131, 1, 0, 0, 0, 1589, 1592, 3, 134, 67, 0, 1590, 1592, 3, 136, 68, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1590, 1, 0, 0, 0, 1592, 133, 1, 0, 0, 0, 1593, 1594, 3, 292, 146, 0, 1594, 1596, 3, 142, 71, 0, 1595, 1597, 3, 244, 122, 0, 1596, 1595, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 135, 1, 0, 0, 0, 1598, 1599, 3, 292, 146, 0, 1599, 1600, 3, 54, 27, 0, 1600, 137, 1, 0, 0, 0, 1601, 1604, 3, 140, 70, 0, 1602, 1604, 3, 54, 27, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1602, 1, 0, 0, 0, 1604, 139, 1, 0, 0, 0, 1605, 1607, 3, 142, 71, 0, 1606, 1608, 3, 244, 122, 0, 1607, 1606, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 141, 1, 0, 0, 0, 1609, 1611, 3, 144, 72, 0, 1610, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 143, 1, 0, 0, 0, 1614, 1617, 3, 208, 104, 0, 1615, 1617, 3, 146, 73, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1615, 1, 0, 0, 0, 1617, 145, 1, 0, 0, 0, 1618, 1621, 3, 148, 74, 0, 1619, 1621, 3, 180, 90, 0, 1620, 1618, 1, 0, 0, 0, 1620, 1619, 1, 0, 0, 0, 1621, 147, 1, 0, 0, 0, 1622, 1627, 3, 150, 75, 0, 1623, 1627, 3, 152, 76, 0, 1624, 1627, 3, 164, 82, 0, 1625, 1627, 3, 174, 87, 0, 1626, 1622, 1, 0, 0, 0, 1626, 1623, 1, 0, 0, 0, 1626, 1624, 1, 0, 0, 0, 1626, 1625, 1, 0, 0, 0, 1627, 149, 1, 0, 0, 0, 1628, 1629, 5, 110, 0, 0, 1629, 1630, 3, 324, 162, 0, 1630, 151, 1, 0, 0, 0, 1631, 1632, 5, 190, 0, 0, 1632, 1633, 3, 154, 77, 0, 1633, 153, 1, 0, 0, 0, 1634, 1639, 3, 156, 78, 0, 1635, 1636, 5, 360, 0, 0, 1636, 1638, 3, 156, 78, 0, 1637, 1635, 1, 0, 0, 0, 1638, 1641, 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 155, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1646, 3, 158, 79, 0, 1643, 1646, 3, 160, 80, 0, 1644, 1646, 3, 162, 81, 0, 1645, 1642, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1644, 1, 0, 0, 0, 1646, 157, 1, 0, 0, 0, 1647, 1648, 3, 912, 456, 0, 1648, 1649, 5, 374, 0, 0, 1649, 1650, 3, 1082, 541, 0, 1650, 1651, 5, 364, 0, 0, 1651, 1652, 3, 818, 409, 0, 1652, 159, 1, 0, 0, 0, 1653, 1654, 3, 912, 456, 0, 1654, 1655, 5, 364, 0, 0, 1655, 1657, 5, 368, 0, 0, 1656, 1658, 3, 398, 199, 0, 1657, 1656, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1660, 5, 379, 0, 0, 1660, 161, 1, 0, 0, 0, 1661, 1662, 3, 912, 456, 0, 1662, 1663, 3, 390, 195, 0, 1663, 1664, 3, 1080, 540, 0, 1664, 163, 1, 0, 0, 0, 1665, 1666, 5, 177, 0, 0, 1666, 1667, 3, 166, 83, 0, 1667, 165, 1, 0, 0, 0, 1668, 1673, 3, 168, 84, 0, 1669, 1670, 5, 360, 0, 0, 1670, 1672, 3, 168, 84, 0, 1671, 1669, 1, 0, 0, 0, 1672, 1675, 1, 0, 0, 0, 1673, 1671, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 167, 1, 0, 0, 0, 1675, 1673, 1, 0, 0, 0, 1676, 1679, 3, 170, 85, 0, 1677, 1679, 3, 172, 86, 0, 1678, 1676, 1, 0, 0, 0, 1678, 1677, 1, 0, 0, 0, 1679, 169, 1, 0, 0, 0, 1680, 1681, 3, 912, 456, 0, 1681, 1682, 5, 374, 0, 0, 1682, 1683, 3, 1082, 541, 0, 1683, 171, 1, 0, 0, 0, 1684, 1685, 3, 912, 456, 0, 1685, 1686, 3, 390, 195, 0, 1686, 1687, 3, 1080, 540, 0, 1687, 173, 1, 0, 0, 0, 1688, 1690, 7, 2, 0, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 5, 76, 0, 0, 1692, 1693, 3, 176, 88, 0, 1693, 175, 1, 0, 0, 0, 1694, 1699, 3, 178, 89, 0, 1695, 1696, 5, 360, 0, 0, 1696, 1698, 3, 178, 89, 0, 1697, 1695, 1, 0, 0, 0, 1698, 1701, 1, 0, 0, 0, 1699, 1697, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 177, 1, 0, 0, 0, 1701, 1699, 1, 0, 0, 0, 1702, 1703, 3, 818, 409, 0, 1703, 179, 1, 0, 0, 0, 1704, 1705, 3, 274, 137, 0, 1705, 181, 1, 0, 0, 0, 1706, 1707, 3, 184, 92, 0, 1707, 183, 1, 0, 0, 0, 1708, 1709, 6, 92, -1, 0, 1709, 1710, 3, 190, 95, 0, 1710, 1717, 1, 0, 0, 0, 1711, 1712, 10, 2, 0, 0, 1712, 1713, 3, 186, 93, 0, 1713, 1714, 3, 190, 95, 0, 1714, 1716, 1, 0, 0, 0, 1715, 1711, 1, 0, 0, 0, 1716, 1719, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 185, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1720, 1723, 3, 188, 94, 0, 1721, 1723, 5, 163, 0, 0, 1722, 1720, 1, 0, 0, 0, 1722, 1721, 1, 0, 0, 0, 1723, 187, 1, 0, 0, 0, 1724, 1726, 5, 220, 0, 0, 1725, 1727, 3, 902, 451, 0, 1726, 1725, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1737, 1, 0, 0, 0, 1728, 1730, 5, 88, 0, 0, 1729, 1731, 3, 902, 451, 0, 1730, 1729, 1, 0, 0, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1737, 1, 0, 0, 0, 1732, 1734, 5, 125, 0, 0, 1733, 1735, 3, 902, 451, 0, 1734, 1733, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1737, 1, 0, 0, 0, 1736, 1724, 1, 0, 0, 0, 1736, 1728, 1, 0, 0, 0, 1736, 1732, 1, 0, 0, 0, 1737, 189, 1, 0, 0, 0, 1738, 1739, 3, 192, 96, 0, 1739, 191, 1, 0, 0, 0, 1740, 1743, 3, 194, 97, 0, 1741, 1743, 3, 204, 102, 0, 1742, 1740, 1, 0, 0, 0, 1742, 1741, 1, 0, 0, 0, 1743, 193, 1, 0, 0, 0, 1744, 1746, 3, 196, 98, 0, 1745, 1744, 1, 0, 0, 0, 1746, 1749, 1, 0, 0, 0, 1747, 1745, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1750, 1, 0, 0, 0, 1749, 1747, 1, 0, 0, 0, 1750, 1755, 3, 198, 99, 0, 1751, 1755, 3, 200, 100, 0, 1752, 1755, 3, 202, 101, 0, 1753, 1755, 3, 256, 128, 0, 1754, 1747, 1, 0, 0, 0, 1754, 1751, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1754, 1753, 1, 0, 0, 0, 1755, 195, 1, 0, 0, 0, 1756, 1757, 3, 292, 146, 0, 1757, 1758, 3, 206, 103, 0, 1758, 197, 1, 0, 0, 0, 1759, 1760, 3, 292, 146, 0, 1760, 1761, 3, 206, 103, 0, 1761, 1762, 3, 244, 122, 0, 1762, 199, 1, 0, 0, 0, 1763, 1764, 3, 292, 146, 0, 1764, 1765, 3, 244, 122, 0, 1765, 201, 1, 0, 0, 0, 1766, 1767, 3, 292, 146, 0, 1767, 1768, 3, 56, 28, 0, 1768, 203, 1, 0, 0, 0, 1769, 1771, 3, 206, 103, 0, 1770, 1769, 1, 0, 0, 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1775, 3, 244, 122, 0, 1773, 1775, 3, 56, 28, 0, 1774, 1770, 1, 0, 0, 0, 1774, 1773, 1, 0, 0, 0, 1775, 205, 1, 0, 0, 0, 1776, 1778, 3, 208, 104, 0, 1777, 1776, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1777, 1, 0, 0, 0, 1779, 1780, 1, 0, 0, 0, 1780, 207, 1, 0, 0, 0, 1781, 1784, 3, 210, 105, 0, 1782, 1784, 3, 222, 111, 0, 1783, 1781, 1, 0, 0, 0, 1783, 1782, 1, 0, 0, 0, 1784, 209, 1, 0, 0, 0, 1785, 1791, 3, 212, 106, 0, 1786, 1791, 3, 226, 113, 0, 1787, 1791, 3, 232, 116, 0, 1788, 1791, 3, 224, 112, 0, 1789, 1791, 3, 242, 121, 0, 1790, 1785, 1, 0, 0, 0, 1790, 1786, 1, 0, 0, 0, 1790, 1787, 1, 0, 0, 0, 1790, 1788, 1, 0, 0, 0, 1790, 1789, 1, 0, 0, 0, 1791, 211, 1, 0, 0, 0, 1792, 1795, 3, 214, 107, 0, 1793, 1795, 3, 216, 108, 0, 1794, 1792, 1, 0, 0, 0, 1794, 1793, 1, 0, 0, 0, 1795, 213, 1, 0, 0, 0, 1796, 1797, 5, 143, 0, 0, 1797, 1798, 3, 294, 147, 0, 1798, 215, 1, 0, 0, 0, 1799, 1800, 5, 160, 0, 0, 1800, 1801, 3, 218, 109, 0, 1801, 217, 1, 0, 0, 0, 1802, 1812, 3, 214, 107, 0, 1803, 1804, 5, 368, 0, 0, 1804, 1805, 3, 220, 110, 0, 1805, 1806, 5, 379, 0, 0, 1806, 1812, 1, 0, 0, 0, 1807, 1808, 5, 370, 0, 0, 1808, 1809, 3, 220, 110, 0, 1809, 1810, 5, 381, 0, 0, 1810, 1812, 1, 0, 0, 0, 1811, 1802, 1, 0, 0, 0, 1811, 1803, 1, 0, 0, 0, 1811, 1807, 1, 0, 0, 0, 1812, 219, 1, 0, 0, 0, 1813, 1815, 3, 212, 106, 0, 1814, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1814, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 221, 1, 0, 0, 0, 1818, 1819, 3, 274, 137, 0, 1819, 223, 1, 0, 0, 0, 1820, 1823, 5, 91, 0, 0, 1821, 1824, 3, 500, 250, 0, 1822, 1824, 3, 774, 387, 0, 1823, 1821, 1, 0, 0, 0, 1823, 1822, 1, 0, 0, 0, 1824, 225, 1, 0, 0, 0, 1825, 1826, 5, 130, 0, 0, 1826, 1827, 3, 228, 114, 0, 1827, 227, 1, 0, 0, 0, 1828, 1833, 3, 230, 115, 0, 1829, 1830, 5, 360, 0, 0, 1830, 1832, 3, 230, 115, 0, 1831, 1829, 1, 0, 0, 0, 1832, 1835, 1, 0, 0, 0, 1833, 1831, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 229, 1, 0, 0, 0, 1835, 1833, 1, 0, 0, 0, 1836, 1842, 3, 82, 41, 0, 1837, 1838, 3, 1092, 546, 0, 1838, 1839, 5, 364, 0, 0, 1839, 1840, 3, 818, 409, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1836, 1, 0, 0, 0, 1841, 1837, 1, 0, 0, 0, 1842, 231, 1, 0, 0, 0, 1843, 1844, 5, 100, 0, 0, 1844, 1846, 3, 234, 117, 0, 1845, 1847, 3, 240, 120, 0, 1846, 1845, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 233, 1, 0, 0, 0, 1848, 1849, 3, 236, 118, 0, 1849, 1850, 3, 238, 119, 0, 1850, 235, 1, 0, 0, 0, 1851, 1852, 3, 1092, 546, 0, 1852, 1853, 5, 109, 0, 0, 1853, 237, 1, 0, 0, 0, 1854, 1855, 3, 818, 409, 0, 1855, 239, 1, 0, 0, 0, 1856, 1857, 5, 231, 0, 0, 1857, 1858, 7, 3, 0, 0, 1858, 1859, 3, 1092, 546, 0, 1859, 241, 1, 0, 0, 0, 1860, 1862, 3, 520, 260, 0, 1861, 1863, 3, 534, 267, 0, 1862, 1861, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1865, 1, 0, 0, 0, 1864, 1866, 3, 532, 266, 0, 1865, 1864, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1873, 1, 0, 0, 0, 1867, 1869, 3, 534, 267, 0, 1868, 1870, 3, 532, 266, 0, 1869, 1868, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1873, 1, 0, 0, 0, 1871, 1873, 3, 532, 266, 0, 1872, 1860, 1, 0, 0, 0, 1872, 1867, 1, 0, 0, 0, 1872, 1871, 1, 0, 0, 0, 1873, 243, 1, 0, 0, 0, 1874, 1876, 3, 246, 123, 0, 1875, 1877, 3, 242, 121, 0, 1876, 1875, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1880, 1, 0, 0, 0, 1878, 1880, 5, 92, 0, 0, 1879, 1874, 1, 0, 0, 0, 1879, 1878, 1, 0, 0, 0, 1880, 245, 1, 0, 0, 0, 1881, 1882, 5, 180, 0, 0, 1882, 1883, 3, 248, 124, 0, 1883, 247, 1, 0, 0, 0, 1884, 1886, 3, 902, 451, 0, 1885, 1884, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1889, 1, 0, 0, 0, 1887, 1890, 5, 358, 0, 0, 1888, 1890, 3, 250, 125, 0, 1889, 1887, 1, 0, 0, 0, 1889, 1888, 1, 0, 0, 0, 1890, 1892, 1, 0, 0, 0, 1891, 1893, 3, 512, 256, 0, 1892, 1891, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 249, 1, 0, 0, 0, 1894, 1899, 3, 252, 126, 0, 1895, 1896, 5, 360, 0, 0, 1896, 1898, 3, 252, 126, 0, 1897, 1895, 1, 0, 0, 0, 1898, 1901, 1, 0, 0, 0, 1899, 1897, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 251, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1902, 1904, 3, 840, 420, 0, 1903, 1905, 3, 254, 127, 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 253, 1, 0, 0, 0, 1906, 1907, 5, 27, 0, 0, 1907, 1908, 3, 1110, 555, 0, 1908, 255, 1, 0, 0, 0, 1909, 1911, 5, 187, 0, 0, 1910, 1912, 3, 902, 451, 0, 1911, 1910, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1915, 1, 0, 0, 0, 1913, 1916, 5, 358, 0, 0, 1914, 1916, 3, 258, 129, 0, 1915, 1913, 1, 0, 0, 0, 1915, 1914, 1, 0, 0, 0, 1916, 1936, 1, 0, 0, 0, 1917, 1919, 3, 266, 133, 0, 1918, 1920, 3, 500, 250, 0, 1919, 1918, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1923, 3, 512, 256, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1925, 1, 0, 0, 0, 1924, 1926, 3, 264, 132, 0, 1925, 1924, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1928, 1, 0, 0, 0, 1927, 1929, 3, 520, 260, 0, 1928, 1927, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1931, 1, 0, 0, 0, 1930, 1932, 3, 534, 267, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1934, 1, 0, 0, 0, 1933, 1935, 3, 532, 266, 0, 1934, 1933, 1, 0, 0, 0, 1934, 1935, 1, 0, 0, 0, 1935, 1937, 1, 0, 0, 0, 1936, 1917, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 257, 1, 0, 0, 0, 1938, 1943, 3, 260, 130, 0, 1939, 1940, 5, 360, 0, 0, 1940, 1942, 3, 260, 130, 0, 1941, 1939, 1, 0, 0, 0, 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 259, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1948, 3, 840, 420, 0, 1947, 1949, 3, 262, 131, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 261, 1, 0, 0, 0, 1950, 1951, 5, 27, 0, 0, 1951, 1952, 3, 1110, 555, 0, 1952, 263, 1, 0, 0, 0, 1953, 1954, 5, 103, 0, 0, 1954, 1955, 3, 774, 387, 0, 1955, 265, 1, 0, 0, 0, 1956, 1959, 5, 101, 0, 0, 1957, 1960, 3, 268, 134, 0, 1958, 1960, 3, 272, 136, 0, 1959, 1957, 1, 0, 0, 0, 1959, 1958, 1, 0, 0, 0, 1960, 267, 1, 0, 0, 0, 1961, 1966, 3, 270, 135, 0, 1962, 1963, 5, 360, 0, 0, 1963, 1965, 3, 270, 135, 0, 1964, 1962, 1, 0, 0, 0, 1965, 1968, 1, 0, 0, 0, 1966, 1964, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 269, 1, 0, 0, 0, 1968, 1966, 1, 0, 0, 0, 1969, 1970, 3, 88, 44, 0, 1970, 1971, 3, 212, 106, 0, 1971, 271, 1, 0, 0, 0, 1972, 1977, 3, 56, 28, 0, 1973, 1974, 3, 88, 44, 0, 1974, 1975, 3, 56, 28, 0, 1975, 1977, 1, 0, 0, 0, 1976, 1972, 1, 0, 0, 0, 1976, 1973, 1, 0, 0, 0, 1977, 273, 1, 0, 0, 0, 1978, 1980, 5, 160, 0, 0, 1979, 1978, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1982, 5, 44, 0, 0, 1982, 1983, 3, 276, 138, 0, 1983, 275, 1, 0, 0, 0, 1984, 1987, 3, 278, 139, 0, 1985, 1987, 3, 284, 142, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 277, 1, 0, 0, 0, 1988, 1990, 3, 280, 140, 0, 1989, 1988, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1992, 3, 50, 25, 0, 1992, 279, 1, 0, 0, 0, 1993, 1995, 5, 370, 0, 0, 1994, 1996, 3, 282, 141, 0, 1995, 1994, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 5, 381, 0, 0, 1998, 281, 1, 0, 0, 0, 1999, 2004, 3, 912, 456, 0, 2000, 2001, 5, 360, 0, 0, 2001, 2003, 3, 912, 456, 0, 2002, 2000, 1, 0, 0, 0, 2003, 2006, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 283, 1, 0, 0, 0, 2006, 2004, 1, 0, 0, 0, 2007, 2008, 3, 566, 283, 0, 2008, 2010, 5, 370, 0, 0, 2009, 2011, 3, 286, 143, 0, 2010, 2009, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2014, 5, 381, 0, 0, 2013, 2015, 3, 502, 251, 0, 2014, 2013, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 285, 1, 0, 0, 0, 2016, 2021, 3, 288, 144, 0, 2017, 2018, 5, 360, 0, 0, 2018, 2020, 3, 288, 144, 0, 2019, 2017, 1, 0, 0, 0, 2020, 2023, 1, 0, 0, 0, 2021, 2019, 1, 0, 0, 0, 2021, 2022, 1, 0, 0, 0, 2022, 287, 1, 0, 0, 0, 2023, 2021, 1, 0, 0, 0, 2024, 2025, 3, 818, 409, 0, 2025, 289, 1, 0, 0, 0, 2026, 2027, 5, 31, 0, 0, 2027, 2028, 3, 538, 269, 0, 2028, 291, 1, 0, 0, 0, 2029, 2030, 5, 223, 0, 0, 2030, 2031, 3, 88, 44, 0, 2031, 293, 1, 0, 0, 0, 2032, 2034, 3, 302, 151, 0, 2033, 2035, 3, 296, 148, 0, 2034, 2033, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 295, 1, 0, 0, 0, 2036, 2037, 5, 234, 0, 0, 2037, 2038, 3, 298, 149, 0, 2038, 297, 1, 0, 0, 0, 2039, 2044, 3, 300, 150, 0, 2040, 2041, 5, 360, 0, 0, 2041, 2043, 3, 300, 150, 0, 2042, 2040, 1, 0, 0, 0, 2043, 2046, 1, 0, 0, 0, 2044, 2042, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 299, 1, 0, 0, 0, 2046, 2044, 1, 0, 0, 0, 2047, 2048, 3, 912, 456, 0, 2048, 301, 1, 0, 0, 0, 2049, 2051, 3, 304, 152, 0, 2050, 2049, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2054, 3, 314, 157, 0, 2053, 2055, 3, 320, 160, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2057, 1, 0, 0, 0, 2056, 2058, 3, 322, 161, 0, 2057, 2056, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 303, 1, 0, 0, 0, 2059, 2062, 3, 306, 153, 0, 2060, 2062, 3, 308, 154, 0, 2061, 2059, 1, 0, 0, 0, 2061, 2060, 1, 0, 0, 0, 2062, 305, 1, 0, 0, 0, 2063, 2064, 5, 309, 0, 0, 2064, 2065, 3, 310, 155, 0, 2065, 307, 1, 0, 0, 0, 2066, 2067, 5, 282, 0, 0, 2067, 2068, 3, 312, 156, 0, 2068, 309, 1, 0, 0, 0, 2069, 2071, 5, 286, 0, 0, 2070, 2072, 5, 279, 0, 0, 2071, 2070, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2075, 5, 287, 0, 0, 2074, 2069, 1, 0, 0, 0, 2074, 2073, 1, 0, 0, 0, 2075, 311, 1, 0, 0, 0, 2076, 2078, 3, 1144, 572, 0, 2077, 2079, 5, 279, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2082, 1, 0, 0, 0, 2080, 2082, 3, 1142, 571, 0, 2081, 2076, 1, 0, 0, 0, 2081, 2080, 1, 0, 0, 0, 2082, 313, 1, 0, 0, 0, 2083, 2088, 3, 316, 158, 0, 2084, 2085, 5, 360, 0, 0, 2085, 2087, 3, 316, 158, 0, 2086, 2084, 1, 0, 0, 0, 2087, 2090, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 315, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2093, 3, 318, 159, 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2095, 1, 0, 0, 0, 2094, 2096, 3, 344, 172, 0, 2095, 2094, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 3, 372, 186, 0, 2098, 317, 1, 0, 0, 0, 2099, 2100, 3, 1088, 544, 0, 2100, 2101, 5, 364, 0, 0, 2101, 319, 1, 0, 0, 0, 2102, 2103, 5, 291, 0, 0, 2103, 2104, 3, 344, 172, 0, 2104, 321, 1, 0, 0, 0, 2105, 2106, 5, 230, 0, 0, 2106, 2107, 3, 774, 387, 0, 2107, 323, 1, 0, 0, 0, 2108, 2109, 3, 326, 163, 0, 2109, 325, 1, 0, 0, 0, 2110, 2115, 3, 328, 164, 0, 2111, 2112, 5, 360, 0, 0, 2112, 2114, 3, 328, 164, 0, 2113, 2111, 1, 0, 0, 0, 2114, 2117, 1, 0, 0, 0, 2115, 2113, 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 327, 1, 0, 0, 0, 2117, 2115, 1, 0, 0, 0, 2118, 2124, 3, 330, 165, 0, 2119, 2120, 3, 332, 166, 0, 2120, 2121, 3, 330, 165, 0, 2121, 2123, 1, 0, 0, 0, 2122, 2119, 1, 0, 0, 0, 2123, 2126, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 329, 1, 0, 0, 0, 2126, 2124, 1, 0, 0, 0, 2127, 2129, 5, 370, 0, 0, 2128, 2130, 3, 340, 170, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2132, 5, 381, 0, 0, 2132, 331, 1, 0, 0, 0, 2133, 2137, 3, 334, 167, 0, 2134, 2137, 3, 336, 168, 0, 2135, 2137, 3, 338, 169, 0, 2136, 2133, 1, 0, 0, 0, 2136, 2134, 1, 0, 0, 0, 2136, 2135, 1, 0, 0, 0, 2137, 333, 1, 0, 0, 0, 2138, 2140, 5, 337, 0, 0, 2139, 2141, 3, 340, 170, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2143, 5, 347, 0, 0, 2143, 335, 1, 0, 0, 0, 2144, 2146, 5, 343, 0, 0, 2145, 2147, 3, 340, 170, 0, 2146, 2145, 1, 0, 0, 0, 2146, 2147, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2149, 5, 328, 0, 0, 2149, 337, 1, 0, 0, 0, 2150, 2152, 5, 354, 0, 0, 2151, 2153, 3, 340, 170, 0, 2152, 2151, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 5, 348, 0, 0, 2155, 339, 1, 0, 0, 0, 2156, 2158, 3, 386, 193, 0, 2157, 2159, 3, 342, 171, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2165, 1, 0, 0, 0, 2160, 2162, 3, 386, 193, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 3, 342, 171, 0, 2164, 2156, 1, 0, 0, 0, 2164, 2161, 1, 0, 0, 0, 2165, 341, 1, 0, 0, 0, 2166, 2167, 3, 390, 195, 0, 2167, 2169, 3, 662, 331, 0, 2168, 2170, 3, 396, 198, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2178, 1, 0, 0, 0, 2171, 2172, 3, 390, 195, 0, 2172, 2173, 3, 662, 331, 0, 2173, 2175, 1, 0, 0, 0, 2174, 2171, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2176, 1, 0, 0, 0, 2176, 2178, 3, 396, 198, 0, 2177, 2166, 1, 0, 0, 0, 2177, 2174, 1, 0, 0, 0, 2178, 343, 1, 0, 0, 0, 2179, 2182, 3, 346, 173, 0, 2180, 2182, 3, 350, 175, 0, 2181, 2179, 1, 0, 0, 0, 2181, 2180, 1, 0, 0, 0, 2182, 345, 1, 0, 0, 0, 2183, 2185, 3, 348, 174, 0, 2184, 2186, 3, 354, 177, 0, 2185, 2184, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 347, 1, 0, 0, 0, 2187, 2188, 7, 4, 0, 0, 2188, 349, 1, 0, 0, 0, 2189, 2193, 3, 352, 176, 0, 2190, 2193, 3, 356, 178, 0, 2191, 2193, 3, 360, 180, 0, 2192, 2189, 1, 0, 0, 0, 2192, 2190, 1, 0, 0, 0, 2192, 2191, 1, 0, 0, 0, 2193, 351, 1, 0, 0, 0, 2194, 2196, 5, 22, 0, 0, 2195, 2197, 3, 348, 174, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2199, 1, 0, 0, 0, 2198, 2200, 3, 354, 177, 0, 2199, 2198, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 353, 1, 0, 0, 0, 2201, 2202, 7, 5, 0, 0, 2202, 355, 1, 0, 0, 0, 2203, 2205, 5, 25, 0, 0, 2204, 2206, 3, 358, 179, 0, 2205, 2204, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2208, 1, 0, 0, 0, 2207, 2209, 3, 348, 174, 0, 2208, 2207, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2211, 1, 0, 0, 0, 2210, 2212, 3, 354, 177, 0, 2211, 2210, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 357, 1, 0, 0, 0, 2213, 2214, 3, 852, 426, 0, 2214, 359, 1, 0, 0, 0, 2215, 2220, 3, 362, 181, 0, 2216, 2220, 3, 364, 182, 0, 2217, 2220, 3, 366, 183, 0, 2218, 2220, 3, 368, 184, 0, 2219, 2215, 1, 0, 0, 0, 2219, 2216, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2218, 1, 0, 0, 0, 2220, 361, 1, 0, 0, 0, 2221, 2222, 5, 22, 0, 0, 2222, 2224, 5, 310, 0, 0, 2223, 2225, 3, 348, 174, 0, 2224, 2223, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2227, 1, 0, 0, 0, 2226, 2228, 3, 354, 177, 0, 2227, 2226, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 363, 1, 0, 0, 0, 2229, 2230, 5, 25, 0, 0, 2230, 2232, 5, 310, 0, 0, 2231, 2233, 3, 348, 174, 0, 2232, 2231, 1, 0, 0, 0, 2232, 2233, 1, 0, 0, 0, 2233, 2235, 1, 0, 0, 0, 2234, 2236, 3, 354, 177, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 365, 1, 0, 0, 0, 2237, 2238, 5, 310, 0, 0, 2238, 2240, 3, 358, 179, 0, 2239, 2241, 3, 348, 174, 0, 2240, 2239, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2243, 1, 0, 0, 0, 2242, 2244, 3, 354, 177, 0, 2243, 2242, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 367, 1, 0, 0, 0, 2245, 2247, 5, 310, 0, 0, 2246, 2248, 3, 370, 185, 0, 2247, 2246, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2250, 1, 0, 0, 0, 2249, 2251, 3, 348, 174, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2253, 1, 0, 0, 0, 2252, 2254, 3, 354, 177, 0, 2253, 2252, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255, 2256, 7, 6, 0, 0, 2256, 369, 1, 0, 0, 0, 2257, 2258, 3, 852, 426, 0, 2258, 371, 1, 0, 0, 0, 2259, 2275, 3, 374, 187, 0, 2260, 2263, 3, 374, 187, 0, 2261, 2262, 5, 327, 0, 0, 2262, 2264, 3, 374, 187, 0, 2263, 2261, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2263, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2275, 1, 0, 0, 0, 2267, 2270, 3, 374, 187, 0, 2268, 2269, 5, 385, 0, 0, 2269, 2271, 3, 374, 187, 0, 2270, 2268, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2270, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 2275, 1, 0, 0, 0, 2274, 2259, 1, 0, 0, 0, 2274, 2260, 1, 0, 0, 0, 2274, 2267, 1, 0, 0, 0, 2275, 373, 1, 0, 0, 0, 2276, 2278, 3, 376, 188, 0, 2277, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2277, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 375, 1, 0, 0, 0, 2281, 2289, 3, 378, 189, 0, 2282, 2283, 3, 378, 189, 0, 2283, 2284, 3, 434, 217, 0, 2284, 2289, 1, 0, 0, 0, 2285, 2286, 3, 378, 189, 0, 2286, 2287, 5, 376, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2281, 1, 0, 0, 0, 2288, 2282, 1, 0, 0, 0, 2288, 2285, 1, 0, 0, 0, 2289, 377, 1, 0, 0, 0, 2290, 2294, 3, 380, 190, 0, 2291, 2294, 3, 422, 211, 0, 2292, 2294, 3, 444, 222, 0, 2293, 2290, 1, 0, 0, 0, 2293, 2291, 1, 0, 0, 0, 2293, 2292, 1, 0, 0, 0, 2294, 379, 1, 0, 0, 0, 2295, 2298, 3, 382, 191, 0, 2296, 2298, 3, 402, 201, 0, 2297, 2295, 1, 0, 0, 0, 2297, 2296, 1, 0, 0, 0, 2298, 381, 1, 0, 0, 0, 2299, 2300, 5, 370, 0, 0, 2300, 2301, 3, 384, 192, 0, 2301, 2302, 5, 381, 0, 0, 2302, 383, 1, 0, 0, 0, 2303, 2305, 3, 386, 193, 0, 2304, 2303, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2308, 3, 388, 194, 0, 2307, 2306, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2310, 1, 0, 0, 0, 2309, 2311, 3, 392, 196, 0, 2310, 2309, 1, 0, 0, 0, 2310, 2311, 1, 0, 0, 0, 2311, 385, 1, 0, 0, 0, 2312, 2313, 3, 1086, 543, 0, 2313, 387, 1, 0, 0, 0, 2314, 2315, 3, 390, 195, 0, 2315, 2316, 3, 428, 214, 0, 2316, 389, 1, 0, 0, 0, 2317, 2318, 7, 7, 0, 0, 2318, 391, 1, 0, 0, 0, 2319, 2322, 3, 394, 197, 0, 2320, 2322, 3, 396, 198, 0, 2321, 2319, 1, 0, 0, 0, 2321, 2320, 1, 0, 0, 0, 2322, 393, 1, 0, 0, 0, 2323, 2324, 5, 230, 0, 0, 2324, 2325, 3, 774, 387, 0, 2325, 395, 1, 0, 0, 0, 2326, 2327, 5, 368, 0, 0, 2327, 2328, 3, 398, 199, 0, 2328, 2329, 5, 379, 0, 0, 2329, 397, 1, 0, 0, 0, 2330, 2335, 3, 400, 200, 0, 2331, 2332, 5, 360, 0, 0, 2332, 2334, 3, 400, 200, 0, 2333, 2331, 1, 0, 0, 0, 2334, 2337, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 399, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2338, 2339, 3, 1082, 541, 0, 2339, 2340, 5, 359, 0, 0, 2340, 2341, 3, 818, 409, 0, 2341, 401, 1, 0, 0, 0, 2342, 2345, 3, 404, 202, 0, 2343, 2345, 3, 420, 210, 0, 2344, 2342, 1, 0, 0, 0, 2344, 2343, 1, 0, 0, 0, 2345, 403, 1, 0, 0, 0, 2346, 2354, 3, 406, 203, 0, 2347, 2354, 3, 408, 204, 0, 2348, 2354, 3, 410, 205, 0, 2349, 2354, 3, 412, 206, 0, 2350, 2354, 3, 414, 207, 0, 2351, 2354, 3, 416, 208, 0, 2352, 2354, 3, 418, 209, 0, 2353, 2346, 1, 0, 0, 0, 2353, 2347, 1, 0, 0, 0, 2353, 2348, 1, 0, 0, 0, 2353, 2349, 1, 0, 0, 0, 2353, 2350, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2352, 1, 0, 0, 0, 2354, 405, 1, 0, 0, 0, 2355, 2356, 5, 337, 0, 0, 2356, 2357, 3, 384, 192, 0, 2357, 2358, 5, 347, 0, 0, 2358, 407, 1, 0, 0, 0, 2359, 2360, 5, 354, 0, 0, 2360, 2361, 3, 384, 192, 0, 2361, 2362, 5, 348, 0, 0, 2362, 409, 1, 0, 0, 0, 2363, 2364, 5, 343, 0, 0, 2364, 2365, 3, 384, 192, 0, 2365, 2366, 5, 328, 0, 0, 2366, 411, 1, 0, 0, 0, 2367, 2368, 5, 338, 0, 0, 2368, 2369, 3, 384, 192, 0, 2369, 2370, 5, 348, 0, 0, 2370, 413, 1, 0, 0, 0, 2371, 2372, 5, 354, 0, 0, 2372, 2373, 3, 384, 192, 0, 2373, 2374, 5, 329, 0, 0, 2374, 415, 1, 0, 0, 0, 2375, 2376, 5, 337, 0, 0, 2376, 2377, 3, 384, 192, 0, 2377, 2378, 5, 328, 0, 0, 2378, 417, 1, 0, 0, 0, 2379, 2380, 5, 343, 0, 0, 2380, 2381, 3, 384, 192, 0, 2381, 2382, 5, 347, 0, 0, 2382, 419, 1, 0, 0, 0, 2383, 2384, 7, 8, 0, 0, 2384, 421, 1, 0, 0, 0, 2385, 2387, 5, 370, 0, 0, 2386, 2388, 3, 424, 212, 0, 2387, 2386, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2390, 1, 0, 0, 0, 2389, 2391, 3, 346, 173, 0, 2390, 2389, 1, 0, 0, 0, 2390, 2391, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 3, 372, 186, 0, 2393, 2395, 3, 426, 213, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 5, 381, 0, 0, 2397, 423, 1, 0, 0, 0, 2398, 2399, 3, 1090, 545, 0, 2399, 2400, 5, 364, 0, 0, 2400, 425, 1, 0, 0, 0, 2401, 2402, 5, 230, 0, 0, 2402, 2403, 3, 774, 387, 0, 2403, 427, 1, 0, 0, 0, 2404, 2405, 6, 214, -1, 0, 2405, 2406, 5, 365, 0, 0, 2406, 2414, 3, 428, 214, 6, 2407, 2414, 3, 1080, 540, 0, 2408, 2414, 5, 373, 0, 0, 2409, 2410, 5, 370, 0, 0, 2410, 2411, 3, 428, 214, 0, 2411, 2412, 5, 381, 0, 0, 2412, 2414, 1, 0, 0, 0, 2413, 2404, 1, 0, 0, 0, 2413, 2407, 1, 0, 0, 0, 2413, 2408, 1, 0, 0, 0, 2413, 2409, 1, 0, 0, 0, 2414, 2423, 1, 0, 0, 0, 2415, 2416, 10, 5, 0, 0, 2416, 2417, 5, 357, 0, 0, 2417, 2422, 3, 428, 214, 6, 2418, 2419, 10, 4, 0, 0, 2419, 2420, 5, 385, 0, 0, 2420, 2422, 3, 428, 214, 5, 2421, 2415, 1, 0, 0, 0, 2421, 2418, 1, 0, 0, 0, 2422, 2425, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 429, 1, 0, 0, 0, 2425, 2423, 1, 0, 0, 0, 2426, 2427, 3, 912, 456, 0, 2427, 431, 1, 0, 0, 0, 2428, 2429, 3, 912, 456, 0, 2429, 433, 1, 0, 0, 0, 2430, 2435, 5, 358, 0, 0, 2431, 2435, 5, 375, 0, 0, 2432, 2435, 3, 436, 218, 0, 2433, 2435, 3, 438, 219, 0, 2434, 2430, 1, 0, 0, 0, 2434, 2431, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, 0, 2434, 2433, 1, 0, 0, 0, 2435, 435, 1, 0, 0, 0, 2436, 2437, 5, 368, 0, 0, 2437, 2438, 3, 1124, 562, 0, 2438, 2439, 5, 379, 0, 0, 2439, 437, 1, 0, 0, 0, 2440, 2442, 5, 368, 0, 0, 2441, 2443, 3, 440, 220, 0, 2442, 2441, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2444, 1, 0, 0, 0, 2444, 2446, 5, 360, 0, 0, 2445, 2447, 3, 442, 221, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 5, 379, 0, 0, 2449, 439, 1, 0, 0, 0, 2450, 2451, 3, 1124, 562, 0, 2451, 441, 1, 0, 0, 0, 2452, 2453, 3, 1124, 562, 0, 2453, 443, 1, 0, 0, 0, 2454, 2462, 3, 446, 223, 0, 2455, 2462, 3, 448, 224, 0, 2456, 2462, 3, 450, 225, 0, 2457, 2462, 3, 452, 226, 0, 2458, 2462, 3, 454, 227, 0, 2459, 2462, 3, 456, 228, 0, 2460, 2462, 3, 458, 229, 0, 2461, 2454, 1, 0, 0, 0, 2461, 2455, 1, 0, 0, 0, 2461, 2456, 1, 0, 0, 0, 2461, 2457, 1, 0, 0, 0, 2461, 2458, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2460, 1, 0, 0, 0, 2462, 445, 1, 0, 0, 0, 2463, 2464, 5, 340, 0, 0, 2464, 2465, 3, 460, 230, 0, 2465, 2466, 5, 350, 0, 0, 2466, 447, 1, 0, 0, 0, 2467, 2468, 5, 356, 0, 0, 2468, 2469, 3, 460, 230, 0, 2469, 2470, 5, 352, 0, 0, 2470, 449, 1, 0, 0, 0, 2471, 2472, 5, 344, 0, 0, 2472, 2473, 3, 460, 230, 0, 2473, 2474, 5, 351, 0, 0, 2474, 451, 1, 0, 0, 0, 2475, 2476, 5, 341, 0, 0, 2476, 2477, 3, 460, 230, 0, 2477, 2478, 5, 352, 0, 0, 2478, 453, 1, 0, 0, 0, 2479, 2480, 5, 356, 0, 0, 2480, 2481, 3, 460, 230, 0, 2481, 2482, 5, 353, 0, 0, 2482, 455, 1, 0, 0, 0, 2483, 2484, 5, 340, 0, 0, 2484, 2485, 3, 460, 230, 0, 2485, 2486, 5, 351, 0, 0, 2486, 457, 1, 0, 0, 0, 2487, 2488, 5, 344, 0, 0, 2488, 2489, 3, 460, 230, 0, 2489, 2490, 5, 350, 0, 0, 2490, 459, 1, 0, 0, 0, 2491, 2495, 3, 466, 233, 0, 2492, 2495, 3, 462, 231, 0, 2493, 2495, 3, 464, 232, 0, 2494, 2491, 1, 0, 0, 0, 2494, 2492, 1, 0, 0, 0, 2494, 2493, 1, 0, 0, 0, 2495, 461, 1, 0, 0, 0, 2496, 2497, 3, 466, 233, 0, 2497, 2498, 5, 385, 0, 0, 2498, 2503, 3, 466, 233, 0, 2499, 2500, 5, 385, 0, 0, 2500, 2502, 3, 466, 233, 0, 2501, 2499, 1, 0, 0, 0, 2502, 2505, 1, 0, 0, 0, 2503, 2501, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 463, 1, 0, 0, 0, 2505, 2503, 1, 0, 0, 0, 2506, 2507, 3, 466, 233, 0, 2507, 2508, 5, 327, 0, 0, 2508, 2513, 3, 466, 233, 0, 2509, 2510, 5, 327, 0, 0, 2510, 2512, 3, 466, 233, 0, 2511, 2509, 1, 0, 0, 0, 2512, 2515, 1, 0, 0, 0, 2513, 2511, 1, 0, 0, 0, 2513, 2514, 1, 0, 0, 0, 2514, 465, 1, 0, 0, 0, 2515, 2513, 1, 0, 0, 0, 2516, 2517, 6, 233, -1, 0, 2517, 2518, 3, 468, 234, 0, 2518, 2523, 1, 0, 0, 0, 2519, 2520, 10, 1, 0, 0, 2520, 2522, 3, 468, 234, 0, 2521, 2519, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 467, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2526, 2527, 6, 234, -1, 0, 2527, 2528, 3, 470, 235, 0, 2528, 2534, 1, 0, 0, 0, 2529, 2530, 10, 1, 0, 0, 2530, 2531, 5, 357, 0, 0, 2531, 2533, 3, 470, 235, 0, 2532, 2529, 1, 0, 0, 0, 2533, 2536, 1, 0, 0, 0, 2534, 2532, 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 469, 1, 0, 0, 0, 2536, 2534, 1, 0, 0, 0, 2537, 2541, 3, 476, 238, 0, 2538, 2541, 3, 472, 236, 0, 2539, 2541, 3, 474, 237, 0, 2540, 2537, 1, 0, 0, 0, 2540, 2538, 1, 0, 0, 0, 2540, 2539, 1, 0, 0, 0, 2541, 471, 1, 0, 0, 0, 2542, 2543, 3, 476, 238, 0, 2543, 2544, 3, 434, 217, 0, 2544, 473, 1, 0, 0, 0, 2545, 2546, 3, 476, 238, 0, 2546, 2547, 5, 376, 0, 0, 2547, 475, 1, 0, 0, 0, 2548, 2551, 3, 478, 239, 0, 2549, 2551, 3, 494, 247, 0, 2550, 2548, 1, 0, 0, 0, 2550, 2549, 1, 0, 0, 0, 2551, 477, 1, 0, 0, 0, 2552, 2560, 3, 480, 240, 0, 2553, 2560, 3, 482, 241, 0, 2554, 2560, 3, 484, 242, 0, 2555, 2560, 3, 486, 243, 0, 2556, 2560, 3, 488, 244, 0, 2557, 2560, 3, 490, 245, 0, 2558, 2560, 3, 492, 246, 0, 2559, 2552, 1, 0, 0, 0, 2559, 2553, 1, 0, 0, 0, 2559, 2554, 1, 0, 0, 0, 2559, 2555, 1, 0, 0, 0, 2559, 2556, 1, 0, 0, 0, 2559, 2557, 1, 0, 0, 0, 2559, 2558, 1, 0, 0, 0, 2560, 479, 1, 0, 0, 0, 2561, 2562, 5, 371, 0, 0, 2562, 2563, 3, 494, 247, 0, 2563, 481, 1, 0, 0, 0, 2564, 2565, 5, 383, 0, 0, 2565, 2566, 3, 494, 247, 0, 2566, 483, 1, 0, 0, 0, 2567, 2568, 3, 494, 247, 0, 2568, 2569, 5, 366, 0, 0, 2569, 485, 1, 0, 0, 0, 2570, 2571, 5, 336, 0, 0, 2571, 2572, 3, 494, 247, 0, 2572, 487, 1, 0, 0, 0, 2573, 2574, 5, 383, 0, 0, 2574, 2575, 3, 494, 247, 0, 2575, 2576, 5, 366, 0, 0, 2576, 489, 1, 0, 0, 0, 2577, 2578, 5, 371, 0, 0, 2578, 2579, 3, 494, 247, 0, 2579, 2580, 5, 366, 0, 0, 2580, 491, 1, 0, 0, 0, 2581, 2582, 5, 372, 0, 0, 2582, 2583, 3, 494, 247, 0, 2583, 493, 1, 0, 0, 0, 2584, 2587, 3, 498, 249, 0, 2585, 2587, 3, 496, 248, 0, 2586, 2584, 1, 0, 0, 0, 2586, 2585, 1, 0, 0, 0, 2587, 495, 1, 0, 0, 0, 2588, 2589, 5, 365, 0, 0, 2589, 2590, 3, 498, 249, 0, 2590, 497, 1, 0, 0, 0, 2591, 2597, 3, 1080, 540, 0, 2592, 2593, 5, 370, 0, 0, 2593, 2594, 3, 460, 230, 0, 2594, 2595, 5, 381, 0, 0, 2595, 2597, 1, 0, 0, 0, 2596, 2591, 1, 0, 0, 0, 2596, 2592, 1, 0, 0, 0, 2597, 499, 1, 0, 0, 0, 2598, 2599, 5, 230, 0, 0, 2599, 2600, 3, 774, 387, 0, 2600, 501, 1, 0, 0, 0, 2601, 2602, 5, 234, 0, 0, 2602, 2603, 3, 504, 252, 0, 2603, 503, 1, 0, 0, 0, 2604, 2609, 3, 506, 253, 0, 2605, 2606, 5, 360, 0, 0, 2606, 2608, 3, 506, 253, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2611, 1, 0, 0, 0, 2609, 2607, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 505, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2614, 3, 508, 254, 0, 2613, 2615, 3, 510, 255, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 507, 1, 0, 0, 0, 2616, 2617, 3, 1084, 542, 0, 2617, 509, 1, 0, 0, 0, 2618, 2619, 5, 27, 0, 0, 2619, 2620, 3, 1092, 546, 0, 2620, 511, 1, 0, 0, 0, 2621, 2622, 5, 102, 0, 0, 2622, 2623, 5, 41, 0, 0, 2623, 2624, 3, 514, 257, 0, 2624, 513, 1, 0, 0, 0, 2625, 2630, 3, 516, 258, 0, 2626, 2627, 5, 360, 0, 0, 2627, 2629, 3, 516, 258, 0, 2628, 2626, 1, 0, 0, 0, 2629, 2632, 1, 0, 0, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2635, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2633, 2635, 3, 518, 259, 0, 2634, 2625, 1, 0, 0, 0, 2634, 2633, 1, 0, 0, 0, 2635, 515, 1, 0, 0, 0, 2636, 2637, 3, 912, 456, 0, 2637, 517, 1, 0, 0, 0, 2638, 2639, 5, 370, 0, 0, 2639, 2640, 5, 381, 0, 0, 2640, 519, 1, 0, 0, 0, 2641, 2642, 5, 162, 0, 0, 2642, 2643, 5, 41, 0, 0, 2643, 2644, 3, 522, 261, 0, 2644, 521, 1, 0, 0, 0, 2645, 2650, 3, 524, 262, 0, 2646, 2647, 5, 360, 0, 0, 2647, 2649, 3, 524, 262, 0, 2648, 2646, 1, 0, 0, 0, 2649, 2652, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 523, 1, 0, 0, 0, 2652, 2650, 1, 0, 0, 0, 2653, 2655, 3, 526, 263, 0, 2654, 2656, 3, 528, 264, 0, 2655, 2654, 1, 0, 0, 0, 2655, 2656, 1, 0, 0, 0, 2656, 2658, 1, 0, 0, 0, 2657, 2659, 3, 530, 265, 0, 2658, 2657, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 525, 1, 0, 0, 0, 2660, 2661, 3, 840, 420, 0, 2661, 527, 1, 0, 0, 0, 2662, 2663, 7, 9, 0, 0, 2663, 529, 1, 0, 0, 0, 2664, 2665, 5, 155, 0, 0, 2665, 2669, 5, 288, 0, 0, 2666, 2667, 5, 155, 0, 0, 2667, 2669, 5, 295, 0, 0, 2668, 2664, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, 531, 1, 0, 0, 0, 2670, 2671, 5, 132, 0, 0, 2671, 2672, 3, 852, 426, 0, 2672, 533, 1, 0, 0, 0, 2673, 2674, 3, 536, 268, 0, 2674, 2675, 3, 852, 426, 0, 2675, 535, 1, 0, 0, 0, 2676, 2677, 7, 10, 0, 0, 2677, 537, 1, 0, 0, 0, 2678, 2682, 3, 540, 270, 0, 2679, 2682, 3, 544, 272, 0, 2680, 2682, 3, 572, 286, 0, 2681, 2678, 1, 0, 0, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2680, 1, 0, 0, 0, 2682, 539, 1, 0, 0, 0, 2683, 2688, 5, 382, 0, 0, 2684, 2685, 3, 548, 274, 0, 2685, 2686, 3, 1062, 531, 0, 2686, 2688, 1, 0, 0, 0, 2687, 2683, 1, 0, 0, 0, 2687, 2684, 1, 0, 0, 0, 2688, 541, 1, 0, 0, 0, 2689, 2690, 3, 548, 274, 0, 2690, 2691, 3, 1062, 531, 0, 2691, 543, 1, 0, 0, 0, 2692, 2697, 3, 546, 273, 0, 2693, 2694, 3, 550, 275, 0, 2694, 2695, 3, 1062, 531, 0, 2695, 2697, 1, 0, 0, 0, 2696, 2692, 1, 0, 0, 0, 2696, 2693, 1, 0, 0, 0, 2697, 545, 1, 0, 0, 0, 2698, 2699, 7, 11, 0, 0, 2699, 547, 1, 0, 0, 0, 2700, 2702, 5, 382, 0, 0, 2701, 2703, 3, 552, 276, 0, 2702, 2701, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 549, 1, 0, 0, 0, 2704, 2709, 5, 333, 0, 0, 2705, 2706, 5, 382, 0, 0, 2706, 2708, 5, 333, 0, 0, 2707, 2705, 1, 0, 0, 0, 2708, 2711, 1, 0, 0, 0, 2709, 2707, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2712, 1, 0, 0, 0, 2711, 2709, 1, 0, 0, 0, 2712, 2714, 5, 382, 0, 0, 2713, 2715, 3, 552, 276, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 551, 1, 0, 0, 0, 2716, 2717, 3, 1060, 530, 0, 2717, 2718, 5, 382, 0, 0, 2718, 2720, 1, 0, 0, 0, 2719, 2716, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2719, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 553, 1, 0, 0, 0, 2723, 2724, 3, 570, 285, 0, 2724, 2725, 3, 1064, 532, 0, 2725, 2730, 1, 0, 0, 0, 2726, 2730, 3, 1066, 533, 0, 2727, 2730, 3, 558, 279, 0, 2728, 2730, 3, 572, 286, 0, 2729, 2723, 1, 0, 0, 0, 2729, 2726, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2728, 1, 0, 0, 0, 2730, 555, 1, 0, 0, 0, 2731, 2733, 3, 570, 285, 0, 2732, 2731, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2735, 3, 1064, 532, 0, 2735, 557, 1, 0, 0, 0, 2736, 2737, 7, 12, 0, 0, 2737, 559, 1, 0, 0, 0, 2738, 2741, 3, 562, 281, 0, 2739, 2741, 3, 572, 286, 0, 2740, 2738, 1, 0, 0, 0, 2740, 2739, 1, 0, 0, 0, 2741, 561, 1, 0, 0, 0, 2742, 2744, 3, 570, 285, 0, 2743, 2742, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2745, 1, 0, 0, 0, 2745, 2746, 3, 1068, 534, 0, 2746, 563, 1, 0, 0, 0, 2747, 2748, 3, 570, 285, 0, 2748, 2749, 3, 1074, 537, 0, 2749, 2753, 1, 0, 0, 0, 2750, 2753, 3, 1076, 538, 0, 2751, 2753, 3, 572, 286, 0, 2752, 2747, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2751, 1, 0, 0, 0, 2753, 565, 1, 0, 0, 0, 2754, 2757, 3, 568, 284, 0, 2755, 2757, 3, 572, 286, 0, 2756, 2754, 1, 0, 0, 0, 2756, 2755, 1, 0, 0, 0, 2757, 567, 1, 0, 0, 0, 2758, 2760, 3, 570, 285, 0, 2759, 2758, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2762, 3, 1078, 539, 0, 2762, 569, 1, 0, 0, 0, 2763, 2765, 3, 538, 269, 0, 2764, 2766, 5, 382, 0, 0, 2765, 2764, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2772, 1, 0, 0, 0, 2767, 2768, 3, 1056, 528, 0, 2768, 2769, 5, 374, 0, 0, 2769, 2771, 1, 0, 0, 0, 2770, 2767, 1, 0, 0, 0, 2771, 2774, 1, 0, 0, 0, 2772, 2770, 1, 0, 0, 0, 2772, 2773, 1, 0, 0, 0, 2773, 2783, 1, 0, 0, 0, 2774, 2772, 1, 0, 0, 0, 2775, 2776, 3, 1056, 528, 0, 2776, 2777, 5, 374, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2775, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2778, 1, 0, 0, 0, 2780, 2781, 1, 0, 0, 0, 2781, 2783, 1, 0, 0, 0, 2782, 2763, 1, 0, 0, 0, 2782, 2778, 1, 0, 0, 0, 2783, 571, 1, 0, 0, 0, 2784, 2785, 5, 325, 0, 0, 2785, 573, 1, 0, 0, 0, 2786, 2787, 5, 368, 0, 0, 2787, 2788, 3, 576, 288, 0, 2788, 2789, 5, 379, 0, 0, 2789, 575, 1, 0, 0, 0, 2790, 2791, 3, 578, 289, 0, 2791, 577, 1, 0, 0, 0, 2792, 2797, 3, 580, 290, 0, 2793, 2794, 5, 360, 0, 0, 2794, 2796, 3, 580, 290, 0, 2795, 2793, 1, 0, 0, 0, 2796, 2799, 1, 0, 0, 0, 2797, 2795, 1, 0, 0, 0, 2797, 2798, 1, 0, 0, 0, 2798, 579, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, 0, 2800, 2803, 3, 582, 291, 0, 2801, 2803, 3, 602, 301, 0, 2802, 2800, 1, 0, 0, 0, 2802, 2801, 1, 0, 0, 0, 2803, 581, 1, 0, 0, 0, 2804, 2807, 3, 584, 292, 0, 2805, 2807, 3, 586, 293, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2805, 1, 0, 0, 0, 2807, 583, 1, 0, 0, 0, 2808, 2810, 3, 1140, 570, 0, 2809, 2811, 5, 317, 0, 0, 2810, 2809, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2813, 3, 1070, 535, 0, 2813, 2815, 1, 0, 0, 0, 2814, 2808, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2818, 5, 370, 0, 0, 2817, 2819, 3, 592, 296, 0, 2818, 2817, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2821, 1, 0, 0, 0, 2820, 2822, 3, 590, 295, 0, 2821, 2820, 1, 0, 0, 0, 2821, 2822, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2824, 5, 381, 0, 0, 2824, 585, 1, 0, 0, 0, 2825, 2827, 3, 1140, 570, 0, 2826, 2828, 5, 317, 0, 0, 2827, 2826, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2832, 3, 588, 294, 0, 2830, 2831, 5, 27, 0, 0, 2831, 2833, 3, 592, 296, 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 587, 1, 0, 0, 0, 2834, 2836, 3, 1070, 535, 0, 2835, 2837, 3, 590, 295, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2840, 3, 590, 295, 0, 2839, 2834, 1, 0, 0, 0, 2839, 2838, 1, 0, 0, 0, 2840, 589, 1, 0, 0, 0, 2841, 2843, 3, 596, 298, 0, 2842, 2844, 3, 594, 297, 0, 2843, 2842, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2847, 1, 0, 0, 0, 2845, 2847, 3, 594, 297, 0, 2846, 2841, 1, 0, 0, 0, 2846, 2845, 1, 0, 0, 0, 2847, 591, 1, 0, 0, 0, 2848, 2849, 3, 1112, 556, 0, 2849, 593, 1, 0, 0, 0, 2850, 2856, 3, 598, 299, 0, 2851, 2856, 3, 600, 300, 0, 2852, 2853, 3, 598, 299, 0, 2853, 2854, 3, 600, 300, 0, 2854, 2856, 1, 0, 0, 0, 2855, 2850, 1, 0, 0, 0, 2855, 2851, 1, 0, 0, 0, 2855, 2852, 1, 0, 0, 0, 2856, 595, 1, 0, 0, 0, 2857, 2859, 3, 660, 330, 0, 2858, 2857, 1, 0, 0, 0, 2858, 2859, 1, 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 2861, 5, 1, 0, 0, 2861, 597, 1, 0, 0, 0, 2862, 2863, 3, 660, 330, 0, 2863, 599, 1, 0, 0, 0, 2864, 2865, 3, 664, 332, 0, 2865, 601, 1, 0, 0, 0, 2866, 2869, 3, 604, 302, 0, 2867, 2869, 3, 606, 303, 0, 2868, 2866, 1, 0, 0, 0, 2868, 2867, 1, 0, 0, 0, 2869, 603, 1, 0, 0, 0, 2870, 2872, 3, 638, 319, 0, 2871, 2870, 1, 0, 0, 0, 2871, 2872, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2875, 3, 1144, 572, 0, 2874, 2876, 5, 317, 0, 0, 2875, 2874, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2877, 1, 0, 0, 0, 2877, 2878, 3, 1072, 536, 0, 2878, 2880, 1, 0, 0, 0, 2879, 2871, 1, 0, 0, 0, 2879, 2880, 1, 0, 0, 0, 2880, 2883, 1, 0, 0, 0, 2881, 2884, 3, 620, 310, 0, 2882, 2884, 3, 626, 313, 0, 2883, 2881, 1, 0, 0, 0, 2883, 2882, 1, 0, 0, 0, 2884, 605, 1, 0, 0, 0, 2885, 2886, 3, 638, 319, 0, 2886, 2888, 3, 1144, 572, 0, 2887, 2889, 5, 317, 0, 0, 2888, 2887, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2891, 3, 608, 304, 0, 2891, 2892, 3, 640, 320, 0, 2892, 607, 1, 0, 0, 0, 2893, 2895, 3, 1072, 536, 0, 2894, 2896, 3, 610, 305, 0, 2895, 2894, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2899, 1, 0, 0, 0, 2897, 2899, 3, 610, 305, 0, 2898, 2893, 1, 0, 0, 0, 2898, 2897, 1, 0, 0, 0, 2899, 609, 1, 0, 0, 0, 2900, 2902, 3, 614, 307, 0, 2901, 2903, 3, 612, 306, 0, 2902, 2901, 1, 0, 0, 0, 2902, 2903, 1, 0, 0, 0, 2903, 2906, 1, 0, 0, 0, 2904, 2906, 3, 612, 306, 0, 2905, 2900, 1, 0, 0, 0, 2905, 2904, 1, 0, 0, 0, 2906, 611, 1, 0, 0, 0, 2907, 2913, 3, 616, 308, 0, 2908, 2913, 3, 618, 309, 0, 2909, 2910, 3, 616, 308, 0, 2910, 2911, 3, 618, 309, 0, 2911, 2913, 1, 0, 0, 0, 2912, 2907, 1, 0, 0, 0, 2912, 2908, 1, 0, 0, 0, 2912, 2909, 1, 0, 0, 0, 2913, 613, 1, 0, 0, 0, 2914, 2916, 3, 660, 330, 0, 2915, 2914, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2918, 5, 1, 0, 0, 2918, 615, 1, 0, 0, 0, 2919, 2920, 3, 660, 330, 0, 2920, 617, 1, 0, 0, 0, 2921, 2922, 3, 664, 332, 0, 2922, 619, 1, 0, 0, 0, 2923, 2926, 3, 622, 311, 0, 2924, 2926, 3, 624, 312, 0, 2925, 2923, 1, 0, 0, 0, 2925, 2924, 1, 0, 0, 0, 2926, 621, 1, 0, 0, 0, 2927, 2928, 3, 634, 317, 0, 2928, 2929, 3, 628, 314, 0, 2929, 2930, 3, 636, 318, 0, 2930, 623, 1, 0, 0, 0, 2931, 2932, 3, 636, 318, 0, 2932, 2933, 3, 630, 315, 0, 2933, 2934, 3, 634, 317, 0, 2934, 625, 1, 0, 0, 0, 2935, 2936, 3, 634, 317, 0, 2936, 2937, 3, 632, 316, 0, 2937, 2938, 3, 636, 318, 0, 2938, 627, 1, 0, 0, 0, 2939, 2940, 5, 343, 0, 0, 2940, 2941, 3, 610, 305, 0, 2941, 2942, 5, 328, 0, 0, 2942, 629, 1, 0, 0, 0, 2943, 2944, 5, 337, 0, 0, 2944, 2945, 3, 610, 305, 0, 2945, 2946, 5, 347, 0, 0, 2946, 631, 1, 0, 0, 0, 2947, 2948, 5, 354, 0, 0, 2948, 2949, 3, 610, 305, 0, 2949, 2950, 5, 348, 0, 0, 2950, 633, 1, 0, 0, 0, 2951, 2952, 5, 370, 0, 0, 2952, 2953, 3, 656, 328, 0, 2953, 2954, 5, 381, 0, 0, 2954, 2961, 1, 0, 0, 0, 2955, 2957, 5, 370, 0, 0, 2956, 2958, 3, 590, 295, 0, 2957, 2956, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2961, 5, 381, 0, 0, 2960, 2951, 1, 0, 0, 0, 2960, 2955, 1, 0, 0, 0, 2961, 635, 1, 0, 0, 0, 2962, 2963, 5, 370, 0, 0, 2963, 2964, 3, 658, 329, 0, 2964, 2965, 5, 381, 0, 0, 2965, 2972, 1, 0, 0, 0, 2966, 2968, 5, 370, 0, 0, 2967, 2969, 3, 590, 295, 0, 2968, 2967, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2972, 5, 381, 0, 0, 2971, 2962, 1, 0, 0, 0, 2971, 2966, 1, 0, 0, 0, 2972, 637, 1, 0, 0, 0, 2973, 2974, 7, 13, 0, 0, 2974, 639, 1, 0, 0, 0, 2975, 2976, 5, 280, 0, 0, 2976, 2977, 3, 642, 321, 0, 2977, 641, 1, 0, 0, 0, 2978, 2981, 3, 644, 322, 0, 2979, 2981, 3, 650, 325, 0, 2980, 2978, 1, 0, 0, 0, 2980, 2979, 1, 0, 0, 0, 2981, 643, 1, 0, 0, 0, 2982, 2985, 3, 646, 323, 0, 2983, 2985, 3, 648, 324, 0, 2984, 2982, 1, 0, 0, 0, 2984, 2983, 1, 0, 0, 0, 2985, 645, 1, 0, 0, 0, 2986, 2987, 5, 370, 0, 0, 2987, 2988, 3, 656, 328, 0, 2988, 2989, 3, 652, 326, 0, 2989, 2990, 3, 658, 329, 0, 2990, 2991, 5, 381, 0, 0, 2991, 647, 1, 0, 0, 0, 2992, 2993, 5, 370, 0, 0, 2993, 2994, 3, 658, 329, 0, 2994, 2995, 5, 335, 0, 0, 2995, 2996, 3, 656, 328, 0, 2996, 2997, 5, 381, 0, 0, 2997, 649, 1, 0, 0, 0, 2998, 2999, 5, 370, 0, 0, 2999, 3000, 3, 656, 328, 0, 3000, 3001, 3, 654, 327, 0, 3001, 3002, 3, 658, 329, 0, 3002, 3003, 5, 381, 0, 0, 3003, 651, 1, 0, 0, 0, 3004, 3005, 7, 14, 0, 0, 3005, 653, 1, 0, 0, 0, 3006, 3007, 7, 15, 0, 0, 3007, 655, 1, 0, 0, 0, 3008, 3009, 3, 1112, 556, 0, 3009, 657, 1, 0, 0, 0, 3010, 3011, 3, 1112, 556, 0, 3011, 659, 1, 0, 0, 0, 3012, 3013, 5, 292, 0, 0, 3013, 3020, 3, 1080, 540, 0, 3014, 3015, 5, 294, 0, 0, 3015, 3020, 3, 662, 331, 0, 3016, 3017, 3, 390, 195, 0, 3017, 3018, 3, 662, 331, 0, 3018, 3020, 1, 0, 0, 0, 3019, 3012, 1, 0, 0, 0, 3019, 3014, 1, 0, 0, 0, 3019, 3016, 1, 0, 0, 0, 3020, 661, 1, 0, 0, 0, 3021, 3026, 3, 1080, 540, 0, 3022, 3023, 5, 357, 0, 0, 3023, 3025, 3, 1080, 540, 0, 3024, 3022, 1, 0, 0, 0, 3025, 3028, 1, 0, 0, 0, 3026, 3024, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 663, 1, 0, 0, 0, 3028, 3026, 1, 0, 0, 0, 3029, 3031, 5, 368, 0, 0, 3030, 3032, 3, 666, 333, 0, 3031, 3030, 1, 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 5, 379, 0, 0, 3034, 665, 1, 0, 0, 0, 3035, 3040, 3, 668, 334, 0, 3036, 3037, 5, 360, 0, 0, 3037, 3039, 3, 668, 334, 0, 3038, 3036, 1, 0, 0, 0, 3039, 3042, 1, 0, 0, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 667, 1, 0, 0, 0, 3042, 3040, 1, 0, 0, 0, 3043, 3045, 3, 1082, 541, 0, 3044, 3046, 3, 676, 338, 0, 3045, 3044, 1, 0, 0, 0, 3045, 3046, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 3, 670, 335, 0, 3048, 669, 1, 0, 0, 0, 3049, 3050, 3, 674, 337, 0, 3050, 671, 1, 0, 0, 0, 3051, 3053, 5, 278, 0, 0, 3052, 3051, 1, 0, 0, 0, 3052, 3053, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 5, 313, 0, 0, 3055, 3056, 3, 766, 383, 0, 3056, 673, 1, 0, 0, 0, 3057, 3058, 6, 337, -1, 0, 3058, 3115, 3, 678, 339, 0, 3059, 3115, 3, 758, 379, 0, 3060, 3061, 3, 760, 380, 0, 3061, 3062, 5, 371, 0, 0, 3062, 3063, 3, 674, 337, 0, 3063, 3068, 5, 366, 0, 0, 3064, 3065, 5, 369, 0, 0, 3065, 3066, 3, 688, 344, 0, 3066, 3067, 5, 380, 0, 0, 3067, 3069, 1, 0, 0, 0, 3068, 3064, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3071, 1, 0, 0, 0, 3070, 3072, 3, 770, 385, 0, 3071, 3070, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 3115, 1, 0, 0, 0, 3073, 3078, 3, 760, 380, 0, 3074, 3075, 5, 369, 0, 0, 3075, 3076, 3, 688, 344, 0, 3076, 3077, 5, 380, 0, 0, 3077, 3079, 1, 0, 0, 0, 3078, 3074, 1, 0, 0, 0, 3078, 3079, 1, 0, 0, 0, 3079, 3081, 1, 0, 0, 0, 3080, 3082, 3, 770, 385, 0, 3081, 3080, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3115, 1, 0, 0, 0, 3083, 3115, 3, 764, 382, 0, 3084, 3086, 5, 25, 0, 0, 3085, 3087, 5, 225, 0, 0, 3086, 3085, 1, 0, 0, 0, 3086, 3087, 1, 0, 0, 0, 3087, 3089, 1, 0, 0, 0, 3088, 3090, 3, 770, 385, 0, 3089, 3088, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 3115, 1, 0, 0, 0, 3091, 3093, 5, 25, 0, 0, 3092, 3091, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, 3094, 1, 0, 0, 0, 3094, 3095, 5, 305, 0, 0, 3095, 3097, 5, 225, 0, 0, 3096, 3098, 3, 770, 385, 0, 3097, 3096, 1, 0, 0, 0, 3097, 3098, 1, 0, 0, 0, 3098, 3115, 1, 0, 0, 0, 3099, 3101, 5, 25, 0, 0, 3100, 3102, 5, 225, 0, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, 3104, 5, 371, 0, 0, 3104, 3109, 3, 674, 337, 0, 3105, 3106, 5, 385, 0, 0, 3106, 3108, 3, 674, 337, 0, 3107, 3105, 1, 0, 0, 0, 3108, 3111, 1, 0, 0, 0, 3109, 3107, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3112, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3112, 3113, 5, 366, 0, 0, 3113, 3115, 1, 0, 0, 0, 3114, 3057, 1, 0, 0, 0, 3114, 3059, 1, 0, 0, 0, 3114, 3060, 1, 0, 0, 0, 3114, 3073, 1, 0, 0, 0, 3114, 3083, 1, 0, 0, 0, 3114, 3084, 1, 0, 0, 0, 3114, 3092, 1, 0, 0, 0, 3114, 3099, 1, 0, 0, 0, 3115, 3132, 1, 0, 0, 0, 3116, 3117, 10, 1, 0, 0, 3117, 3118, 5, 385, 0, 0, 3118, 3131, 3, 674, 337, 2, 3119, 3120, 10, 7, 0, 0, 3120, 3125, 3, 760, 380, 0, 3121, 3122, 5, 369, 0, 0, 3122, 3123, 3, 688, 344, 0, 3123, 3124, 5, 380, 0, 0, 3124, 3126, 1, 0, 0, 0, 3125, 3121, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, 0, 3126, 3128, 1, 0, 0, 0, 3127, 3129, 3, 770, 385, 0, 3128, 3127, 1, 0, 0, 0, 3128, 3129, 1, 0, 0, 0, 3129, 3131, 1, 0, 0, 0, 3130, 3116, 1, 0, 0, 0, 3130, 3119, 1, 0, 0, 0, 3131, 3134, 1, 0, 0, 0, 3132, 3130, 1, 0, 0, 0, 3132, 3133, 1, 0, 0, 0, 3133, 675, 1, 0, 0, 0, 3134, 3132, 1, 0, 0, 0, 3135, 3136, 7, 16, 0, 0, 3136, 677, 1, 0, 0, 0, 3137, 3145, 3, 680, 340, 0, 3138, 3145, 3, 682, 341, 0, 3139, 3145, 3, 684, 342, 0, 3140, 3145, 3, 692, 346, 0, 3141, 3145, 3, 712, 356, 0, 3142, 3145, 3, 730, 365, 0, 3143, 3145, 3, 732, 366, 0, 3144, 3137, 1, 0, 0, 0, 3144, 3138, 1, 0, 0, 0, 3144, 3139, 1, 0, 0, 0, 3144, 3140, 1, 0, 0, 0, 3144, 3141, 1, 0, 0, 0, 3144, 3142, 1, 0, 0, 0, 3144, 3143, 1, 0, 0, 0, 3145, 679, 1, 0, 0, 0, 3146, 3148, 7, 17, 0, 0, 3147, 3149, 3, 770, 385, 0, 3148, 3147, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 681, 1, 0, 0, 0, 3150, 3160, 5, 202, 0, 0, 3151, 3155, 5, 370, 0, 0, 3152, 3153, 3, 686, 343, 0, 3153, 3154, 5, 360, 0, 0, 3154, 3156, 1, 0, 0, 0, 3155, 3152, 1, 0, 0, 0, 3155, 3156, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 3, 688, 344, 0, 3158, 3159, 5, 381, 0, 0, 3159, 3161, 1, 0, 0, 0, 3160, 3151, 1, 0, 0, 0, 3160, 3161, 1, 0, 0, 0, 3161, 3163, 1, 0, 0, 0, 3162, 3164, 3, 770, 385, 0, 3163, 3162, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3186, 1, 0, 0, 0, 3165, 3170, 5, 50, 0, 0, 3166, 3167, 5, 370, 0, 0, 3167, 3168, 3, 690, 345, 0, 3168, 3169, 5, 381, 0, 0, 3169, 3171, 1, 0, 0, 0, 3170, 3166, 1, 0, 0, 0, 3170, 3171, 1, 0, 0, 0, 3171, 3173, 1, 0, 0, 0, 3172, 3174, 3, 770, 385, 0, 3173, 3172, 1, 0, 0, 0, 3173, 3174, 1, 0, 0, 0, 3174, 3186, 1, 0, 0, 0, 3175, 3180, 5, 227, 0, 0, 3176, 3177, 5, 370, 0, 0, 3177, 3178, 3, 688, 344, 0, 3178, 3179, 5, 381, 0, 0, 3179, 3181, 1, 0, 0, 0, 3180, 3176, 1, 0, 0, 0, 3180, 3181, 1, 0, 0, 0, 3181, 3183, 1, 0, 0, 0, 3182, 3184, 3, 770, 385, 0, 3183, 3182, 1, 0, 0, 0, 3183, 3184, 1, 0, 0, 0, 3184, 3186, 1, 0, 0, 0, 3185, 3150, 1, 0, 0, 0, 3185, 3165, 1, 0, 0, 0, 3185, 3175, 1, 0, 0, 0, 3186, 683, 1, 0, 0, 0, 3187, 3197, 5, 43, 0, 0, 3188, 3192, 5, 370, 0, 0, 3189, 3190, 3, 686, 343, 0, 3190, 3191, 5, 360, 0, 0, 3191, 3193, 1, 0, 0, 0, 3192, 3189, 1, 0, 0, 0, 3192, 3193, 1, 0, 0, 0, 3193, 3194, 1, 0, 0, 0, 3194, 3195, 3, 688, 344, 0, 3195, 3196, 5, 381, 0, 0, 3196, 3198, 1, 0, 0, 0, 3197, 3188, 1, 0, 0, 0, 3197, 3198, 1, 0, 0, 0, 3198, 3200, 1, 0, 0, 0, 3199, 3201, 3, 770, 385, 0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3223, 1, 0, 0, 0, 3202, 3207, 5, 36, 0, 0, 3203, 3204, 5, 370, 0, 0, 3204, 3205, 3, 690, 345, 0, 3205, 3206, 5, 381, 0, 0, 3206, 3208, 1, 0, 0, 0, 3207, 3203, 1, 0, 0, 0, 3207, 3208, 1, 0, 0, 0, 3208, 3210, 1, 0, 0, 0, 3209, 3211, 3, 770, 385, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3223, 1, 0, 0, 0, 3212, 3217, 5, 226, 0, 0, 3213, 3214, 5, 370, 0, 0, 3214, 3215, 3, 688, 344, 0, 3215, 3216, 5, 381, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3213, 1, 0, 0, 0, 3217, 3218, 1, 0, 0, 0, 3218, 3220, 1, 0, 0, 0, 3219, 3221, 3, 770, 385, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3223, 1, 0, 0, 0, 3222, 3187, 1, 0, 0, 0, 3222, 3202, 1, 0, 0, 0, 3222, 3212, 1, 0, 0, 0, 3223, 685, 1, 0, 0, 0, 3224, 3225, 3, 1124, 562, 0, 3225, 687, 1, 0, 0, 0, 3226, 3227, 3, 1124, 562, 0, 3227, 689, 1, 0, 0, 0, 3228, 3229, 3, 1124, 562, 0, 3229, 691, 1, 0, 0, 0, 3230, 3233, 3, 694, 347, 0, 3231, 3233, 3, 710, 355, 0, 3232, 3230, 1, 0, 0, 0, 3232, 3231, 1, 0, 0, 0, 3233, 693, 1, 0, 0, 0, 3234, 3237, 3, 696, 348, 0, 3235, 3237, 3, 704, 352, 0, 3236, 3234, 1, 0, 0, 0, 3236, 3235, 1, 0, 0, 0, 3237, 695, 1, 0, 0, 0, 3238, 3241, 3, 698, 349, 0, 3239, 3241, 3, 700, 350, 0, 3240, 3238, 1, 0, 0, 0, 3240, 3239, 1, 0, 0, 0, 3241, 697, 1, 0, 0, 0, 3242, 3244, 5, 113, 0, 0, 3243, 3245, 3, 770, 385, 0, 3244, 3243, 1, 0, 0, 0, 3244, 3245, 1, 0, 0, 0, 3245, 3289, 1, 0, 0, 0, 3246, 3248, 5, 115, 0, 0, 3247, 3249, 3, 770, 385, 0, 3248, 3247, 1, 0, 0, 0, 3248, 3249, 1, 0, 0, 0, 3249, 3289, 1, 0, 0, 0, 3250, 3252, 5, 117, 0, 0, 3251, 3253, 3, 770, 385, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3289, 1, 0, 0, 0, 3254, 3256, 5, 119, 0, 0, 3255, 3257, 3, 770, 385, 0, 3256, 3255, 1, 0, 0, 0, 3256, 3257, 1, 0, 0, 0, 3257, 3289, 1, 0, 0, 0, 3258, 3260, 5, 121, 0, 0, 3259, 3261, 3, 770, 385, 0, 3260, 3259, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3289, 1, 0, 0, 0, 3262, 3264, 5, 123, 0, 0, 3263, 3265, 3, 770, 385, 0, 3264, 3263, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 3289, 1, 0, 0, 0, 3266, 3268, 5, 197, 0, 0, 3267, 3269, 3, 770, 385, 0, 3268, 3267, 1, 0, 0, 0, 3268, 3269, 1, 0, 0, 0, 3269, 3289, 1, 0, 0, 0, 3270, 3275, 5, 111, 0, 0, 3271, 3272, 5, 370, 0, 0, 3272, 3273, 3, 706, 353, 0, 3273, 3274, 5, 381, 0, 0, 3274, 3276, 1, 0, 0, 0, 3275, 3271, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3279, 3, 770, 385, 0, 3278, 3277, 1, 0, 0, 0, 3278, 3279, 1, 0, 0, 0, 3279, 3289, 1, 0, 0, 0, 3280, 3282, 5, 35, 0, 0, 3281, 3283, 3, 770, 385, 0, 3282, 3281, 1, 0, 0, 0, 3282, 3283, 1, 0, 0, 0, 3283, 3289, 1, 0, 0, 0, 3284, 3286, 5, 191, 0, 0, 3285, 3284, 1, 0, 0, 0, 3285, 3286, 1, 0, 0, 0, 3286, 3287, 1, 0, 0, 0, 3287, 3289, 3, 702, 351, 0, 3288, 3242, 1, 0, 0, 0, 3288, 3246, 1, 0, 0, 0, 3288, 3250, 1, 0, 0, 0, 3288, 3254, 1, 0, 0, 0, 3288, 3258, 1, 0, 0, 0, 3288, 3262, 1, 0, 0, 0, 3288, 3266, 1, 0, 0, 0, 3288, 3270, 1, 0, 0, 0, 3288, 3280, 1, 0, 0, 0, 3288, 3285, 1, 0, 0, 0, 3289, 699, 1, 0, 0, 0, 3290, 3292, 5, 214, 0, 0, 3291, 3293, 3, 770, 385, 0, 3292, 3291, 1, 0, 0, 0, 3292, 3293, 1, 0, 0, 0, 3293, 3335, 1, 0, 0, 0, 3294, 3296, 5, 215, 0, 0, 3295, 3297, 3, 770, 385, 0, 3296, 3295, 1, 0, 0, 0, 3296, 3297, 1, 0, 0, 0, 3297, 3335, 1, 0, 0, 0, 3298, 3300, 5, 216, 0, 0, 3299, 3301, 3, 770, 385, 0, 3300, 3299, 1, 0, 0, 0, 3300, 3301, 1, 0, 0, 0, 3301, 3335, 1, 0, 0, 0, 3302, 3304, 5, 217, 0, 0, 3303, 3305, 3, 770, 385, 0, 3304, 3303, 1, 0, 0, 0, 3304, 3305, 1, 0, 0, 0, 3305, 3335, 1, 0, 0, 0, 3306, 3308, 5, 218, 0, 0, 3307, 3309, 3, 770, 385, 0, 3308, 3307, 1, 0, 0, 0, 3308, 3309, 1, 0, 0, 0, 3309, 3335, 1, 0, 0, 0, 3310, 3312, 5, 219, 0, 0, 3311, 3313, 3, 770, 385, 0, 3312, 3311, 1, 0, 0, 0, 3312, 3313, 1, 0, 0, 0, 3313, 3335, 1, 0, 0, 0, 3314, 3316, 5, 224, 0, 0, 3315, 3317, 3, 770, 385, 0, 3316, 3315, 1, 0, 0, 0, 3316, 3317, 1, 0, 0, 0, 3317, 3335, 1, 0, 0, 0, 3318, 3323, 5, 213, 0, 0, 3319, 3320, 5, 370, 0, 0, 3320, 3321, 3, 706, 353, 0, 3321, 3322, 5, 381, 0, 0, 3322, 3324, 1, 0, 0, 0, 3323, 3319, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0, 3324, 3326, 1, 0, 0, 0, 3325, 3327, 3, 770, 385, 0, 3326, 3325, 1, 0, 0, 0, 3326, 3327, 1, 0, 0, 0, 3327, 3335, 1, 0, 0, 0, 3328, 3330, 5, 212, 0, 0, 3329, 3331, 3, 770, 385, 0, 3330, 3329, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3335, 1, 0, 0, 0, 3332, 3333, 5, 221, 0, 0, 3333, 3335, 3, 702, 351, 0, 3334, 3290, 1, 0, 0, 0, 3334, 3294, 1, 0, 0, 0, 3334, 3298, 1, 0, 0, 0, 3334, 3302, 1, 0, 0, 0, 3334, 3306, 1, 0, 0, 0, 3334, 3310, 1, 0, 0, 0, 3334, 3314, 1, 0, 0, 0, 3334, 3318, 1, 0, 0, 0, 3334, 3328, 1, 0, 0, 0, 3334, 3332, 1, 0, 0, 0, 3335, 701, 1, 0, 0, 0, 3336, 3338, 5, 114, 0, 0, 3337, 3339, 3, 770, 385, 0, 3338, 3337, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 3381, 1, 0, 0, 0, 3340, 3342, 5, 116, 0, 0, 3341, 3343, 3, 770, 385, 0, 3342, 3341, 1, 0, 0, 0, 3342, 3343, 1, 0, 0, 0, 3343, 3381, 1, 0, 0, 0, 3344, 3346, 5, 118, 0, 0, 3345, 3347, 3, 770, 385, 0, 3346, 3345, 1, 0, 0, 0, 3346, 3347, 1, 0, 0, 0, 3347, 3381, 1, 0, 0, 0, 3348, 3350, 5, 120, 0, 0, 3349, 3351, 3, 770, 385, 0, 3350, 3349, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3381, 1, 0, 0, 0, 3352, 3354, 5, 122, 0, 0, 3353, 3355, 3, 770, 385, 0, 3354, 3353, 1, 0, 0, 0, 3354, 3355, 1, 0, 0, 0, 3355, 3381, 1, 0, 0, 0, 3356, 3358, 5, 124, 0, 0, 3357, 3359, 3, 770, 385, 0, 3358, 3357, 1, 0, 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 3381, 1, 0, 0, 0, 3360, 3361, 5, 196, 0, 0, 3361, 3363, 5, 112, 0, 0, 3362, 3364, 3, 770, 385, 0, 3363, 3362, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3381, 1, 0, 0, 0, 3365, 3370, 5, 112, 0, 0, 3366, 3367, 5, 370, 0, 0, 3367, 3368, 3, 706, 353, 0, 3368, 3369, 5, 381, 0, 0, 3369, 3371, 1, 0, 0, 0, 3370, 3366, 1, 0, 0, 0, 3370, 3371, 1, 0, 0, 0, 3371, 3373, 1, 0, 0, 0, 3372, 3374, 3, 770, 385, 0, 3373, 3372, 1, 0, 0, 0, 3373, 3374, 1, 0, 0, 0, 3374, 3381, 1, 0, 0, 0, 3375, 3376, 5, 34, 0, 0, 3376, 3378, 5, 112, 0, 0, 3377, 3379, 3, 770, 385, 0, 3378, 3377, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3381, 1, 0, 0, 0, 3380, 3336, 1, 0, 0, 0, 3380, 3340, 1, 0, 0, 0, 3380, 3344, 1, 0, 0, 0, 3380, 3348, 1, 0, 0, 0, 3380, 3352, 1, 0, 0, 0, 3380, 3356, 1, 0, 0, 0, 3380, 3360, 1, 0, 0, 0, 3380, 3365, 1, 0, 0, 0, 3380, 3375, 1, 0, 0, 0, 3381, 703, 1, 0, 0, 0, 3382, 3393, 7, 18, 0, 0, 3383, 3384, 5, 370, 0, 0, 3384, 3387, 3, 706, 353, 0, 3385, 3386, 5, 360, 0, 0, 3386, 3388, 3, 708, 354, 0, 3387, 3385, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3389, 1, 0, 0, 0, 3389, 3391, 5, 381, 0, 0, 3390, 3392, 3, 770, 385, 0, 3391, 3390, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3394, 1, 0, 0, 0, 3393, 3383, 1, 0, 0, 0, 3393, 3394, 1, 0, 0, 0, 3394, 705, 1, 0, 0, 0, 3395, 3396, 3, 1126, 563, 0, 3396, 707, 1, 0, 0, 0, 3397, 3398, 3, 1126, 563, 0, 3398, 709, 1, 0, 0, 0, 3399, 3401, 5, 94, 0, 0, 3400, 3402, 3, 770, 385, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3445, 1, 0, 0, 0, 3403, 3405, 5, 95, 0, 0, 3404, 3406, 3, 770, 385, 0, 3405, 3404, 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 3445, 1, 0, 0, 0, 3407, 3409, 5, 96, 0, 0, 3408, 3410, 3, 770, 385, 0, 3409, 3408, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3445, 1, 0, 0, 0, 3411, 3413, 5, 97, 0, 0, 3412, 3414, 3, 770, 385, 0, 3413, 3412, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3445, 1, 0, 0, 0, 3415, 3417, 5, 98, 0, 0, 3416, 3418, 3, 770, 385, 0, 3417, 3416, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3445, 1, 0, 0, 0, 3419, 3428, 5, 93, 0, 0, 3420, 3421, 5, 370, 0, 0, 3421, 3424, 3, 706, 353, 0, 3422, 3423, 5, 360, 0, 0, 3423, 3425, 3, 708, 354, 0, 3424, 3422, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3427, 5, 381, 0, 0, 3427, 3429, 1, 0, 0, 0, 3428, 3420, 1, 0, 0, 0, 3428, 3429, 1, 0, 0, 0, 3429, 3431, 1, 0, 0, 0, 3430, 3432, 3, 770, 385, 0, 3431, 3430, 1, 0, 0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 3445, 1, 0, 0, 0, 3433, 3435, 5, 175, 0, 0, 3434, 3436, 3, 770, 385, 0, 3435, 3434, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3445, 1, 0, 0, 0, 3437, 3439, 5, 81, 0, 0, 3438, 3440, 5, 172, 0, 0, 3439, 3438, 1, 0, 0, 0, 3439, 3440, 1, 0, 0, 0, 3440, 3442, 1, 0, 0, 0, 3441, 3443, 3, 770, 385, 0, 3442, 3441, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3445, 1, 0, 0, 0, 3444, 3399, 1, 0, 0, 0, 3444, 3403, 1, 0, 0, 0, 3444, 3407, 1, 0, 0, 0, 3444, 3411, 1, 0, 0, 0, 3444, 3415, 1, 0, 0, 0, 3444, 3419, 1, 0, 0, 0, 3444, 3433, 1, 0, 0, 0, 3444, 3437, 1, 0, 0, 0, 3445, 711, 1, 0, 0, 0, 3446, 3449, 3, 714, 357, 0, 3447, 3449, 3, 726, 363, 0, 3448, 3446, 1, 0, 0, 0, 3448, 3447, 1, 0, 0, 0, 3449, 713, 1, 0, 0, 0, 3450, 3456, 3, 716, 358, 0, 3451, 3456, 3, 718, 359, 0, 3452, 3456, 3, 720, 360, 0, 3453, 3456, 3, 722, 361, 0, 3454, 3456, 3, 724, 362, 0, 3455, 3450, 1, 0, 0, 0, 3455, 3451, 1, 0, 0, 0, 3455, 3452, 1, 0, 0, 0, 3455, 3453, 1, 0, 0, 0, 3455, 3454, 1, 0, 0, 0, 3456, 715, 1, 0, 0, 0, 3457, 3458, 5, 235, 0, 0, 3458, 3460, 5, 71, 0, 0, 3459, 3461, 3, 770, 385, 0, 3460, 3459, 1, 0, 0, 0, 3460, 3461, 1, 0, 0, 0, 3461, 3470, 1, 0, 0, 0, 3462, 3463, 5, 208, 0, 0, 3463, 3464, 5, 231, 0, 0, 3464, 3465, 5, 207, 0, 0, 3465, 3467, 5, 323, 0, 0, 3466, 3468, 3, 770, 385, 0, 3467, 3466, 1, 0, 0, 0, 3467, 3468, 1, 0, 0, 0, 3468, 3470, 1, 0, 0, 0, 3469, 3457, 1, 0, 0, 0, 3469, 3462, 1, 0, 0, 0, 3470, 717, 1, 0, 0, 0, 3471, 3472, 5, 135, 0, 0, 3472, 3474, 5, 71, 0, 0, 3473, 3475, 3, 770, 385, 0, 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3486, 1, 0, 0, 0, 3476, 3480, 5, 208, 0, 0, 3477, 3478, 5, 321, 0, 0, 3478, 3479, 5, 207, 0, 0, 3479, 3481, 5, 323, 0, 0, 3480, 3477, 1, 0, 0, 0, 3480, 3481, 1, 0, 0, 0, 3481, 3483, 1, 0, 0, 0, 3482, 3484, 3, 770, 385, 0, 3483, 3482, 1, 0, 0, 0, 3483, 3484, 1, 0, 0, 0, 3484, 3486, 1, 0, 0, 0, 3485, 3471, 1, 0, 0, 0, 3485, 3476, 1, 0, 0, 0, 3486, 719, 1, 0, 0, 0, 3487, 3489, 5, 70, 0, 0, 3488, 3490, 3, 770, 385, 0, 3489, 3488, 1, 0, 0, 0, 3489, 3490, 1, 0, 0, 0, 3490, 721, 1, 0, 0, 0, 3491, 3492, 5, 235, 0, 0, 3492, 3494, 5, 207, 0, 0, 3493, 3495, 3, 770, 385, 0, 3494, 3493, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3504, 1, 0, 0, 0, 3496, 3497, 5, 207, 0, 0, 3497, 3498, 5, 231, 0, 0, 3498, 3499, 5, 207, 0, 0, 3499, 3501, 5, 323, 0, 0, 3500, 3502, 3, 770, 385, 0, 3501, 3500, 1, 0, 0, 0, 3501, 3502, 1, 0, 0, 0, 3502, 3504, 1, 0, 0, 0, 3503, 3491, 1, 0, 0, 0, 3503, 3496, 1, 0, 0, 0, 3504, 723, 1, 0, 0, 0, 3505, 3506, 5, 135, 0, 0, 3506, 3508, 5, 207, 0, 0, 3507, 3509, 3, 770, 385, 0, 3508, 3507, 1, 0, 0, 0, 3508, 3509, 1, 0, 0, 0, 3509, 3518, 1, 0, 0, 0, 3510, 3511, 5, 207, 0, 0, 3511, 3512, 5, 321, 0, 0, 3512, 3513, 5, 207, 0, 0, 3513, 3515, 5, 323, 0, 0, 3514, 3516, 3, 770, 385, 0, 3515, 3514, 1, 0, 0, 0, 3515, 3516, 1, 0, 0, 0, 3516, 3518, 1, 0, 0, 0, 3517, 3505, 1, 0, 0, 0, 3517, 3510, 1, 0, 0, 0, 3518, 725, 1, 0, 0, 0, 3519, 3520, 5, 83, 0, 0, 3520, 3521, 5, 370, 0, 0, 3521, 3522, 3, 728, 364, 0, 3522, 3524, 5, 381, 0, 0, 3523, 3525, 3, 770, 385, 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 727, 1, 0, 0, 0, 3526, 3527, 5, 233, 0, 0, 3527, 3528, 5, 314, 0, 0, 3528, 3533, 5, 148, 0, 0, 3529, 3530, 5, 72, 0, 0, 3530, 3531, 5, 314, 0, 0, 3531, 3533, 5, 186, 0, 0, 3532, 3526, 1, 0, 0, 0, 3532, 3529, 1, 0, 0, 0, 3533, 729, 1, 0, 0, 0, 3534, 3539, 3, 738, 369, 0, 3535, 3539, 3, 744, 372, 0, 3536, 3539, 3, 746, 373, 0, 3537, 3539, 3, 752, 376, 0, 3538, 3534, 1, 0, 0, 0, 3538, 3535, 1, 0, 0, 0, 3538, 3536, 1, 0, 0, 0, 3538, 3537, 1, 0, 0, 0, 3539, 731, 1, 0, 0, 0, 3540, 3543, 3, 734, 367, 0, 3541, 3543, 3, 736, 368, 0, 3542, 3540, 1, 0, 0, 0, 3542, 3541, 1, 0, 0, 0, 3543, 733, 1, 0, 0, 0, 3544, 3545, 5, 154, 0, 0, 3545, 735, 1, 0, 0, 0, 3546, 3547, 5, 154, 0, 0, 3547, 3550, 3, 770, 385, 0, 3548, 3550, 5, 153, 0, 0, 3549, 3546, 1, 0, 0, 0, 3549, 3548, 1, 0, 0, 0, 3550, 737, 1, 0, 0, 0, 3551, 3554, 3, 742, 371, 0, 3552, 3554, 3, 740, 370, 0, 3553, 3551, 1, 0, 0, 0, 3553, 3552, 1, 0, 0, 0, 3554, 739, 1, 0, 0, 0, 3555, 3557, 5, 305, 0, 0, 3556, 3555, 1, 0, 0, 0, 3556, 3557, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, 3559, 5, 289, 0, 0, 3559, 3561, 3, 574, 287, 0, 3560, 3562, 3, 770, 385, 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 741, 1, 0, 0, 0, 3563, 3565, 5, 25, 0, 0, 3564, 3566, 5, 305, 0, 0, 3565, 3564, 1, 0, 0, 0, 3565, 3566, 1, 0, 0, 0, 3566, 3567, 1, 0, 0, 0, 3567, 3569, 5, 289, 0, 0, 3568, 3570, 3, 770, 385, 0, 3569, 3568, 1, 0, 0, 0, 3569, 3570, 1, 0, 0, 0, 3570, 743, 1, 0, 0, 0, 3571, 3573, 3, 672, 336, 0, 3572, 3574, 3, 770, 385, 0, 3573, 3572, 1, 0, 0, 0, 3573, 3574, 1, 0, 0, 0, 3574, 745, 1, 0, 0, 0, 3575, 3578, 3, 750, 375, 0, 3576, 3578, 3, 748, 374, 0, 3577, 3575, 1, 0, 0, 0, 3577, 3576, 1, 0, 0, 0, 3578, 747, 1, 0, 0, 0, 3579, 3581, 3, 582, 291, 0, 3580, 3582, 3, 770, 385, 0, 3581, 3580, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 749, 1, 0, 0, 0, 3583, 3585, 5, 25, 0, 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, 0, 3586, 3588, 3, 1140, 570, 0, 3587, 3589, 3, 770, 385, 0, 3588, 3587, 1, 0, 0, 0, 3588, 3589, 1, 0, 0, 0, 3589, 751, 1, 0, 0, 0, 3590, 3593, 3, 756, 378, 0, 3591, 3593, 3, 754, 377, 0, 3592, 3590, 1, 0, 0, 0, 3592, 3591, 1, 0, 0, 0, 3593, 753, 1, 0, 0, 0, 3594, 3596, 3, 602, 301, 0, 3595, 3597, 3, 770, 385, 0, 3596, 3595, 1, 0, 0, 0, 3596, 3597, 1, 0, 0, 0, 3597, 755, 1, 0, 0, 0, 3598, 3600, 5, 25, 0, 0, 3599, 3598, 1, 0, 0, 0, 3599, 3600, 1, 0, 0, 0, 3600, 3601, 1, 0, 0, 0, 3601, 3603, 3, 1144, 572, 0, 3602, 3604, 3, 770, 385, 0, 3603, 3602, 1, 0, 0, 0, 3603, 3604, 1, 0, 0, 0, 3604, 757, 1, 0, 0, 0, 3605, 3607, 5, 166, 0, 0, 3606, 3608, 3, 770, 385, 0, 3607, 3606, 1, 0, 0, 0, 3607, 3608, 1, 0, 0, 0, 3608, 759, 1, 0, 0, 0, 3609, 3610, 3, 762, 381, 0, 3610, 761, 1, 0, 0, 0, 3611, 3612, 7, 19, 0, 0, 3612, 763, 1, 0, 0, 0, 3613, 3615, 5, 25, 0, 0, 3614, 3613, 1, 0, 0, 0, 3614, 3615, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3618, 5, 176, 0, 0, 3617, 3619, 3, 770, 385, 0, 3618, 3617, 1, 0, 0, 0, 3618, 3619, 1, 0, 0, 0, 3619, 3628, 1, 0, 0, 0, 3620, 3622, 5, 176, 0, 0, 3621, 3620, 1, 0, 0, 0, 3621, 3622, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3625, 3, 766, 383, 0, 3624, 3626, 3, 770, 385, 0, 3625, 3624, 1, 0, 0, 0, 3625, 3626, 1, 0, 0, 0, 3626, 3628, 1, 0, 0, 0, 3627, 3614, 1, 0, 0, 0, 3627, 3621, 1, 0, 0, 0, 3628, 765, 1, 0, 0, 0, 3629, 3631, 5, 368, 0, 0, 3630, 3632, 3, 768, 384, 0, 3631, 3630, 1, 0, 0, 0, 3631, 3632, 1, 0, 0, 0, 3632, 3633, 1, 0, 0, 0, 3633, 3634, 5, 379, 0, 0, 3634, 767, 1, 0, 0, 0, 3635, 3640, 3, 772, 386, 0, 3636, 3637, 5, 360, 0, 0, 3637, 3639, 3, 772, 386, 0, 3638, 3636, 1, 0, 0, 0, 3639, 3642, 1, 0, 0, 0, 3640, 3638, 1, 0, 0, 0, 3640, 3641, 1, 0, 0, 0, 3641, 769, 1, 0, 0, 0, 3642, 3640, 1, 0, 0, 0, 3643, 3644, 5, 152, 0, 0, 3644, 3645, 5, 154, 0, 0, 3645, 771, 1, 0, 0, 0, 3646, 3648, 3, 1084, 542, 0, 3647, 3649, 3, 676, 338, 0, 3648, 3647, 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3651, 3, 674, 337, 0, 3651, 773, 1, 0, 0, 0, 3652, 3653, 3, 822, 411, 0, 3653, 775, 1, 0, 0, 0, 3654, 3664, 3, 780, 390, 0, 3655, 3664, 3, 782, 391, 0, 3656, 3664, 3, 786, 393, 0, 3657, 3664, 3, 792, 396, 0, 3658, 3664, 3, 796, 398, 0, 3659, 3664, 3, 802, 401, 0, 3660, 3664, 3, 812, 406, 0, 3661, 3664, 3, 814, 407, 0, 3662, 3664, 3, 816, 408, 0, 3663, 3654, 1, 0, 0, 0, 3663, 3655, 1, 0, 0, 0, 3663, 3656, 1, 0, 0, 0, 3663, 3657, 1, 0, 0, 0, 3663, 3658, 1, 0, 0, 0, 3663, 3659, 1, 0, 0, 0, 3663, 3660, 1, 0, 0, 0, 3663, 3661, 1, 0, 0, 0, 3663, 3662, 1, 0, 0, 0, 3664, 777, 1, 0, 0, 0, 3665, 3666, 7, 20, 0, 0, 3666, 779, 1, 0, 0, 0, 3667, 3685, 5, 89, 0, 0, 3668, 3669, 5, 368, 0, 0, 3669, 3670, 3, 302, 151, 0, 3670, 3671, 5, 379, 0, 0, 3671, 3686, 1, 0, 0, 0, 3672, 3673, 5, 370, 0, 0, 3673, 3674, 3, 302, 151, 0, 3674, 3675, 5, 381, 0, 0, 3675, 3686, 1, 0, 0, 0, 3676, 3677, 5, 368, 0, 0, 3677, 3678, 3, 220, 110, 0, 3678, 3679, 5, 379, 0, 0, 3679, 3686, 1, 0, 0, 0, 3680, 3681, 5, 370, 0, 0, 3681, 3682, 3, 220, 110, 0, 3682, 3683, 5, 381, 0, 0, 3683, 3686, 1, 0, 0, 0, 3684, 3686, 3, 56, 28, 0, 3685, 3668, 1, 0, 0, 0, 3685, 3672, 1, 0, 0, 0, 3685, 3676, 1, 0, 0, 0, 3685, 3680, 1, 0, 0, 0, 3685, 3684, 1, 0, 0, 0, 3686, 781, 1, 0, 0, 0, 3687, 3688, 3, 842, 421, 0, 3688, 3689, 3, 784, 392, 0, 3689, 783, 1, 0, 0, 0, 3690, 3692, 5, 127, 0, 0, 3691, 3693, 5, 152, 0, 0, 3692, 3691, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, 3695, 5, 154, 0, 0, 3695, 785, 1, 0, 0, 0, 3696, 3697, 3, 842, 421, 0, 3697, 3698, 3, 788, 394, 0, 3698, 787, 1, 0, 0, 0, 3699, 3701, 5, 127, 0, 0, 3700, 3702, 5, 152, 0, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3704, 3, 676, 338, 0, 3704, 3705, 3, 674, 337, 0, 3705, 789, 1, 0, 0, 0, 3706, 3708, 5, 127, 0, 0, 3707, 3709, 5, 152, 0, 0, 3708, 3707, 1, 0, 0, 0, 3708, 3709, 1, 0, 0, 0, 3709, 3711, 1, 0, 0, 0, 3710, 3712, 3, 1016, 508, 0, 3711, 3710, 1, 0, 0, 0, 3711, 3712, 1, 0, 0, 0, 3712, 3713, 1, 0, 0, 0, 3713, 3714, 5, 302, 0, 0, 3714, 791, 1, 0, 0, 0, 3715, 3716, 3, 432, 216, 0, 3716, 3717, 3, 794, 397, 0, 3717, 793, 1, 0, 0, 0, 3718, 3720, 5, 127, 0, 0, 3719, 3721, 5, 152, 0, 0, 3720, 3719, 1, 0, 0, 0, 3720, 3721, 1, 0, 0, 0, 3721, 3722, 1, 0, 0, 0, 3722, 3723, 5, 283, 0, 0, 3723, 795, 1, 0, 0, 0, 3724, 3725, 3, 432, 216, 0, 3725, 3726, 3, 798, 399, 0, 3726, 797, 1, 0, 0, 0, 3727, 3728, 3, 800, 400, 0, 3728, 3729, 3, 428, 214, 0, 3729, 799, 1, 0, 0, 0, 3730, 3732, 5, 127, 0, 0, 3731, 3733, 5, 152, 0, 0, 3732, 3731, 1, 0, 0, 0, 3732, 3733, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 3737, 5, 293, 0, 0, 3735, 3737, 5, 359, 0, 0, 3736, 3730, 1, 0, 0, 0, 3736, 3735, 1, 0, 0, 0, 3737, 801, 1, 0, 0, 0, 3738, 3739, 3, 804, 402, 0, 3739, 3740, 3, 806, 403, 0, 3740, 3745, 1, 0, 0, 0, 3741, 3742, 3, 804, 402, 0, 3742, 3743, 3, 808, 404, 0, 3743, 3745, 1, 0, 0, 0, 3744, 3738, 1, 0, 0, 0, 3744, 3741, 1, 0, 0, 0, 3745, 803, 1, 0, 0, 0, 3746, 3747, 3, 432, 216, 0, 3747, 805, 1, 0, 0, 0, 3748, 3750, 5, 127, 0, 0, 3749, 3751, 5, 152, 0, 0, 3750, 3749, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 3752, 1, 0, 0, 0, 3752, 3753, 5, 312, 0, 0, 3753, 3754, 5, 158, 0, 0, 3754, 3755, 3, 810, 405, 0, 3755, 807, 1, 0, 0, 0, 3756, 3758, 5, 127, 0, 0, 3757, 3759, 5, 152, 0, 0, 3758, 3757, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3760, 1, 0, 0, 0, 3760, 3761, 5, 281, 0, 0, 3761, 3762, 5, 158, 0, 0, 3762, 3763, 3, 810, 405, 0, 3763, 809, 1, 0, 0, 0, 3764, 3765, 3, 432, 216, 0, 3765, 811, 1, 0, 0, 0, 3766, 3767, 5, 23, 0, 0, 3767, 3768, 5, 370, 0, 0, 3768, 3769, 3, 432, 216, 0, 3769, 3770, 5, 360, 0, 0, 3770, 3775, 3, 432, 216, 0, 3771, 3772, 5, 360, 0, 0, 3772, 3774, 3, 432, 216, 0, 3773, 3771, 1, 0, 0, 0, 3774, 3777, 1, 0, 0, 0, 3775, 3773, 1, 0, 0, 0, 3775, 3776, 1, 0, 0, 0, 3776, 3778, 1, 0, 0, 0, 3777, 3775, 1, 0, 0, 0, 3778, 3779, 5, 381, 0, 0, 3779, 813, 1, 0, 0, 0, 3780, 3781, 5, 184, 0, 0, 3781, 3782, 5, 370, 0, 0, 3782, 3783, 3, 432, 216, 0, 3783, 3784, 5, 360, 0, 0, 3784, 3789, 3, 432, 216, 0, 3785, 3786, 5, 360, 0, 0, 3786, 3788, 3, 432, 216, 0, 3787, 3785, 1, 0, 0, 0, 3788, 3791, 1, 0, 0, 0, 3789, 3787, 1, 0, 0, 0, 3789, 3790, 1, 0, 0, 0, 3790, 3792, 1, 0, 0, 0, 3791, 3789, 1, 0, 0, 0, 3792, 3793, 5, 381, 0, 0, 3793, 815, 1, 0, 0, 0, 3794, 3795, 5, 173, 0, 0, 3795, 3796, 5, 370, 0, 0, 3796, 3797, 3, 432, 216, 0, 3797, 3798, 5, 360, 0, 0, 3798, 3799, 3, 1082, 541, 0, 3799, 3800, 5, 381, 0, 0, 3800, 817, 1, 0, 0, 0, 3801, 3802, 6, 409, -1, 0, 3802, 3803, 7, 21, 0, 0, 3803, 3820, 3, 818, 409, 15, 3804, 3820, 3, 776, 388, 0, 3805, 3806, 5, 152, 0, 0, 3806, 3820, 3, 818, 409, 8, 3807, 3809, 5, 305, 0, 0, 3808, 3807, 1, 0, 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3811, 5, 289, 0, 0, 3811, 3820, 3, 88, 44, 0, 3812, 3814, 5, 278, 0, 0, 3813, 3812, 1, 0, 0, 0, 3813, 3814, 1, 0, 0, 0, 3814, 3815, 1, 0, 0, 0, 3815, 3816, 5, 313, 0, 0, 3816, 3820, 3, 92, 46, 0, 3817, 3820, 3, 820, 410, 0, 3818, 3820, 3, 842, 421, 0, 3819, 3801, 1, 0, 0, 0, 3819, 3804, 1, 0, 0, 0, 3819, 3805, 1, 0, 0, 0, 3819, 3808, 1, 0, 0, 0, 3819, 3813, 1, 0, 0, 0, 3819, 3817, 1, 0, 0, 0, 3819, 3818, 1, 0, 0, 0, 3820, 3850, 1, 0, 0, 0, 3821, 3822, 10, 14, 0, 0, 3822, 3823, 7, 22, 0, 0, 3823, 3849, 3, 818, 409, 15, 3824, 3825, 10, 13, 0, 0, 3825, 3826, 7, 21, 0, 0, 3826, 3849, 3, 818, 409, 14, 3827, 3828, 10, 12, 0, 0, 3828, 3829, 5, 330, 0, 0, 3829, 3849, 3, 818, 409, 13, 3830, 3831, 10, 11, 0, 0, 3831, 3832, 3, 778, 389, 0, 3832, 3833, 3, 818, 409, 12, 3833, 3849, 1, 0, 0, 0, 3834, 3835, 10, 6, 0, 0, 3835, 3836, 5, 24, 0, 0, 3836, 3849, 3, 818, 409, 7, 3837, 3838, 10, 5, 0, 0, 3838, 3839, 7, 23, 0, 0, 3839, 3849, 3, 818, 409, 6, 3840, 3841, 10, 9, 0, 0, 3841, 3849, 3, 790, 395, 0, 3842, 3843, 10, 7, 0, 0, 3843, 3845, 5, 127, 0, 0, 3844, 3846, 5, 152, 0, 0, 3845, 3844, 1, 0, 0, 0, 3845, 3846, 1, 0, 0, 0, 3846, 3847, 1, 0, 0, 0, 3847, 3849, 3, 950, 475, 0, 3848, 3821, 1, 0, 0, 0, 3848, 3824, 1, 0, 0, 0, 3848, 3827, 1, 0, 0, 0, 3848, 3830, 1, 0, 0, 0, 3848, 3834, 1, 0, 0, 0, 3848, 3837, 1, 0, 0, 0, 3848, 3840, 1, 0, 0, 0, 3848, 3842, 1, 0, 0, 0, 3849, 3852, 1, 0, 0, 0, 3850, 3848, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 819, 1, 0, 0, 0, 3852, 3850, 1, 0, 0, 0, 3853, 3860, 3, 954, 477, 0, 3854, 3860, 3, 1042, 521, 0, 3855, 3860, 3, 1022, 511, 0, 3856, 3860, 3, 1050, 525, 0, 3857, 3860, 3, 824, 412, 0, 3858, 3860, 3, 928, 464, 0, 3859, 3853, 1, 0, 0, 0, 3859, 3854, 1, 0, 0, 0, 3859, 3855, 1, 0, 0, 0, 3859, 3856, 1, 0, 0, 0, 3859, 3857, 1, 0, 0, 0, 3859, 3858, 1, 0, 0, 0, 3860, 821, 1, 0, 0, 0, 3861, 3862, 3, 818, 409, 0, 3862, 823, 1, 0, 0, 0, 3863, 3869, 3, 826, 413, 0, 3864, 3869, 3, 828, 414, 0, 3865, 3869, 3, 830, 415, 0, 3866, 3869, 3, 832, 416, 0, 3867, 3869, 3, 834, 417, 0, 3868, 3863, 1, 0, 0, 0, 3868, 3864, 1, 0, 0, 0, 3868, 3865, 1, 0, 0, 0, 3868, 3866, 1, 0, 0, 0, 3868, 3867, 1, 0, 0, 0, 3869, 825, 1, 0, 0, 0, 3870, 3871, 7, 24, 0, 0, 3871, 3872, 5, 370, 0, 0, 3872, 3873, 3, 818, 409, 0, 3873, 3874, 5, 360, 0, 0, 3874, 3875, 3, 1018, 509, 0, 3875, 3876, 5, 381, 0, 0, 3876, 827, 1, 0, 0, 0, 3877, 3878, 5, 210, 0, 0, 3878, 3879, 5, 370, 0, 0, 3879, 3880, 3, 1008, 504, 0, 3880, 3881, 5, 381, 0, 0, 3881, 829, 1, 0, 0, 0, 3882, 3883, 7, 25, 0, 0, 3883, 3884, 5, 370, 0, 0, 3884, 3885, 3, 818, 409, 0, 3885, 3886, 5, 381, 0, 0, 3886, 831, 1, 0, 0, 0, 3887, 3888, 7, 26, 0, 0, 3888, 3889, 5, 370, 0, 0, 3889, 3892, 3, 818, 409, 0, 3890, 3891, 5, 360, 0, 0, 3891, 3893, 3, 818, 409, 0, 3892, 3890, 1, 0, 0, 0, 3892, 3893, 1, 0, 0, 0, 3893, 3894, 1, 0, 0, 0, 3894, 3895, 5, 381, 0, 0, 3895, 833, 1, 0, 0, 0, 3896, 3897, 5, 151, 0, 0, 3897, 3898, 5, 370, 0, 0, 3898, 3901, 3, 818, 409, 0, 3899, 3900, 5, 360, 0, 0, 3900, 3902, 3, 1016, 508, 0, 3901, 3899, 1, 0, 0, 0, 3901, 3902, 1, 0, 0, 0, 3902, 3903, 1, 0, 0, 0, 3903, 3904, 5, 381, 0, 0, 3904, 835, 1, 0, 0, 0, 3905, 3906, 3, 842, 421, 0, 3906, 837, 1, 0, 0, 0, 3907, 3908, 3, 842, 421, 0, 3908, 839, 1, 0, 0, 0, 3909, 3910, 3, 818, 409, 0, 3910, 841, 1, 0, 0, 0, 3911, 3912, 6, 421, -1, 0, 3912, 3923, 3, 844, 422, 0, 3913, 3923, 3, 894, 447, 0, 3914, 3923, 3, 850, 425, 0, 3915, 3923, 3, 916, 458, 0, 3916, 3923, 3, 860, 430, 0, 3917, 3923, 3, 862, 431, 0, 3918, 3923, 3, 888, 444, 0, 3919, 3923, 3, 910, 455, 0, 3920, 3923, 3, 858, 429, 0, 3921, 3923, 3, 912, 456, 0, 3922, 3911, 1, 0, 0, 0, 3922, 3913, 1, 0, 0, 0, 3922, 3914, 1, 0, 0, 0, 3922, 3915, 1, 0, 0, 0, 3922, 3916, 1, 0, 0, 0, 3922, 3917, 1, 0, 0, 0, 3922, 3918, 1, 0, 0, 0, 3922, 3919, 1, 0, 0, 0, 3922, 3920, 1, 0, 0, 0, 3922, 3921, 1, 0, 0, 0, 3923, 3929, 1, 0, 0, 0, 3924, 3925, 10, 7, 0, 0, 3925, 3926, 5, 374, 0, 0, 3926, 3928, 3, 1082, 541, 0, 3927, 3924, 1, 0, 0, 0, 3928, 3931, 1, 0, 0, 0, 3929, 3927, 1, 0, 0, 0, 3929, 3930, 1, 0, 0, 0, 3930, 843, 1, 0, 0, 0, 3931, 3929, 1, 0, 0, 0, 3932, 3933, 5, 370, 0, 0, 3933, 3934, 3, 818, 409, 0, 3934, 3935, 5, 381, 0, 0, 3935, 845, 1, 0, 0, 0, 3936, 3939, 3, 848, 424, 0, 3937, 3939, 3, 912, 456, 0, 3938, 3936, 1, 0, 0, 0, 3938, 3937, 1, 0, 0, 0, 3939, 847, 1, 0, 0, 0, 3940, 3953, 3, 894, 447, 0, 3941, 3953, 3, 850, 425, 0, 3942, 3953, 3, 916, 458, 0, 3943, 3944, 3, 842, 421, 0, 3944, 3945, 5, 374, 0, 0, 3945, 3946, 3, 1082, 541, 0, 3946, 3953, 1, 0, 0, 0, 3947, 3953, 3, 860, 430, 0, 3948, 3953, 3, 862, 431, 0, 3949, 3953, 3, 888, 444, 0, 3950, 3953, 3, 910, 455, 0, 3951, 3953, 3, 858, 429, 0, 3952, 3940, 1, 0, 0, 0, 3952, 3941, 1, 0, 0, 0, 3952, 3942, 1, 0, 0, 0, 3952, 3943, 1, 0, 0, 0, 3952, 3947, 1, 0, 0, 0, 3952, 3948, 1, 0, 0, 0, 3952, 3949, 1, 0, 0, 0, 3952, 3950, 1, 0, 0, 0, 3952, 3951, 1, 0, 0, 0, 3953, 849, 1, 0, 0, 0, 3954, 3957, 3, 1094, 547, 0, 3955, 3957, 3, 854, 427, 0, 3956, 3954, 1, 0, 0, 0, 3956, 3955, 1, 0, 0, 0, 3957, 851, 1, 0, 0, 0, 3958, 3961, 3, 1124, 562, 0, 3959, 3961, 3, 856, 428, 0, 3960, 3958, 1, 0, 0, 0, 3960, 3959, 1, 0, 0, 0, 3961, 853, 1, 0, 0, 0, 3962, 3965, 3, 856, 428, 0, 3963, 3965, 5, 189, 0, 0, 3964, 3962, 1, 0, 0, 0, 3964, 3963, 1, 0, 0, 0, 3965, 855, 1, 0, 0, 0, 3966, 3967, 5, 326, 0, 0, 3967, 857, 1, 0, 0, 0, 3968, 3969, 5, 130, 0, 0, 3969, 3970, 3, 228, 114, 0, 3970, 3971, 5, 109, 0, 0, 3971, 3972, 3, 818, 409, 0, 3972, 3973, 5, 87, 0, 0, 3973, 859, 1, 0, 0, 0, 3974, 3975, 5, 225, 0, 0, 3975, 3976, 3, 56, 28, 0, 3976, 861, 1, 0, 0, 0, 3977, 3980, 3, 864, 432, 0, 3978, 3980, 3, 866, 433, 0, 3979, 3977, 1, 0, 0, 0, 3979, 3978, 1, 0, 0, 0, 3980, 863, 1, 0, 0, 0, 3981, 3982, 5, 156, 0, 0, 3982, 3983, 5, 370, 0, 0, 3983, 3984, 3, 818, 409, 0, 3984, 3985, 5, 360, 0, 0, 3985, 3986, 3, 818, 409, 0, 3986, 3987, 5, 381, 0, 0, 3987, 4000, 1, 0, 0, 0, 3988, 3989, 5, 55, 0, 0, 3989, 3990, 5, 370, 0, 0, 3990, 3993, 3, 818, 409, 0, 3991, 3992, 5, 360, 0, 0, 3992, 3994, 3, 818, 409, 0, 3993, 3991, 1, 0, 0, 0, 3994, 3995, 1, 0, 0, 0, 3995, 3993, 1, 0, 0, 0, 3995, 3996, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 3998, 5, 381, 0, 0, 3998, 4000, 1, 0, 0, 0, 3999, 3981, 1, 0, 0, 0, 3999, 3988, 1, 0, 0, 0, 4000, 865, 1, 0, 0, 0, 4001, 4004, 3, 868, 434, 0, 4002, 4004, 3, 870, 435, 0, 4003, 4001, 1, 0, 0, 0, 4003, 4002, 1, 0, 0, 0, 4004, 867, 1, 0, 0, 0, 4005, 4006, 5, 46, 0, 0, 4006, 4008, 3, 878, 439, 0, 4007, 4009, 3, 872, 436, 0, 4008, 4007, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 4008, 1, 0, 0, 0, 4010, 4011, 1, 0, 0, 0, 4011, 4013, 1, 0, 0, 0, 4012, 4014, 3, 876, 438, 0, 4013, 4012, 1, 0, 0, 0, 4013, 4014, 1, 0, 0, 0, 4014, 4015, 1, 0, 0, 0, 4015, 4016, 5, 87, 0, 0, 4016, 869, 1, 0, 0, 0, 4017, 4019, 5, 46, 0, 0, 4018, 4020, 3, 874, 437, 0, 4019, 4018, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4019, 1, 0, 0, 0, 4021, 4022, 1, 0, 0, 0, 4022, 4024, 1, 0, 0, 0, 4023, 4025, 3, 876, 438, 0, 4024, 4023, 1, 0, 0, 0, 4024, 4025, 1, 0, 0, 0, 4025, 4026, 1, 0, 0, 0, 4026, 4027, 5, 87, 0, 0, 4027, 871, 1, 0, 0, 0, 4028, 4029, 5, 229, 0, 0, 4029, 4030, 3, 880, 440, 0, 4030, 4031, 5, 206, 0, 0, 4031, 4032, 3, 884, 442, 0, 4032, 873, 1, 0, 0, 0, 4033, 4034, 5, 229, 0, 0, 4034, 4035, 3, 774, 387, 0, 4035, 4036, 5, 206, 0, 0, 4036, 4037, 3, 884, 442, 0, 4037, 875, 1, 0, 0, 0, 4038, 4039, 5, 86, 0, 0, 4039, 4040, 3, 884, 442, 0, 4040, 877, 1, 0, 0, 0, 4041, 4044, 3, 846, 423, 0, 4042, 4044, 3, 432, 216, 0, 4043, 4041, 1, 0, 0, 0, 4043, 4042, 1, 0, 0, 0, 4044, 879, 1, 0, 0, 0, 4045, 4050, 3, 882, 441, 0, 4046, 4047, 5, 360, 0, 0, 4047, 4049, 3, 882, 441, 0, 4048, 4046, 1, 0, 0, 0, 4049, 4052, 1, 0, 0, 0, 4050, 4048, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 881, 1, 0, 0, 0, 4052, 4050, 1, 0, 0, 0, 4053, 4065, 3, 846, 423, 0, 4054, 4055, 3, 778, 389, 0, 4055, 4056, 3, 818, 409, 0, 4056, 4065, 1, 0, 0, 0, 4057, 4065, 3, 784, 392, 0, 4058, 4065, 3, 788, 394, 0, 4059, 4065, 3, 790, 395, 0, 4060, 4065, 3, 794, 397, 0, 4061, 4065, 3, 798, 399, 0, 4062, 4065, 3, 806, 403, 0, 4063, 4065, 3, 808, 404, 0, 4064, 4053, 1, 0, 0, 0, 4064, 4054, 1, 0, 0, 0, 4064, 4057, 1, 0, 0, 0, 4064, 4058, 1, 0, 0, 0, 4064, 4059, 1, 0, 0, 0, 4064, 4060, 1, 0, 0, 0, 4064, 4061, 1, 0, 0, 0, 4064, 4062, 1, 0, 0, 0, 4064, 4063, 1, 0, 0, 0, 4065, 883, 1, 0, 0, 0, 4066, 4069, 3, 886, 443, 0, 4067, 4069, 3, 1128, 564, 0, 4068, 4066, 1, 0, 0, 0, 4068, 4067, 1, 0, 0, 0, 4069, 885, 1, 0, 0, 0, 4070, 4071, 3, 818, 409, 0, 4071, 887, 1, 0, 0, 0, 4072, 4073, 5, 47, 0, 0, 4073, 4074, 5, 370, 0, 0, 4074, 4075, 3, 890, 445, 0, 4075, 4076, 5, 27, 0, 0, 4076, 4077, 3, 892, 446, 0, 4077, 4078, 5, 381, 0, 0, 4078, 889, 1, 0, 0, 0, 4079, 4082, 3, 818, 409, 0, 4080, 4082, 3, 1128, 564, 0, 4081, 4079, 1, 0, 0, 0, 4081, 4080, 1, 0, 0, 0, 4082, 891, 1, 0, 0, 0, 4083, 4084, 3, 674, 337, 0, 4084, 893, 1, 0, 0, 0, 4085, 4086, 5, 62, 0, 0, 4086, 4087, 5, 370, 0, 0, 4087, 4088, 5, 358, 0, 0, 4088, 4092, 5, 381, 0, 0, 4089, 4092, 3, 896, 448, 0, 4090, 4092, 3, 898, 449, 0, 4091, 4085, 1, 0, 0, 0, 4091, 4089, 1, 0, 0, 0, 4091, 4090, 1, 0, 0, 0, 4092, 895, 1, 0, 0, 0, 4093, 4094, 3, 900, 450, 0, 4094, 4096, 5, 370, 0, 0, 4095, 4097, 3, 902, 451, 0, 4096, 4095, 1, 0, 0, 0, 4096, 4097, 1, 0, 0, 0, 4097, 4098, 1, 0, 0, 0, 4098, 4099, 3, 818, 409, 0, 4099, 4100, 5, 381, 0, 0, 4100, 897, 1, 0, 0, 0, 4101, 4102, 3, 904, 452, 0, 4102, 4103, 5, 370, 0, 0, 4103, 4104, 3, 906, 453, 0, 4104, 4105, 5, 360, 0, 0, 4105, 4106, 3, 908, 454, 0, 4106, 4107, 5, 381, 0, 0, 4107, 899, 1, 0, 0, 0, 4108, 4109, 7, 27, 0, 0, 4109, 901, 1, 0, 0, 0, 4110, 4111, 7, 28, 0, 0, 4111, 903, 1, 0, 0, 0, 4112, 4113, 7, 29, 0, 0, 4113, 905, 1, 0, 0, 0, 4114, 4116, 3, 902, 451, 0, 4115, 4114, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4117, 1, 0, 0, 0, 4117, 4118, 3, 952, 476, 0, 4118, 907, 1, 0, 0, 0, 4119, 4120, 3, 952, 476, 0, 4120, 909, 1, 0, 0, 0, 4121, 4122, 5, 85, 0, 0, 4122, 4123, 5, 370, 0, 0, 4123, 4124, 3, 432, 216, 0, 4124, 4125, 5, 381, 0, 0, 4125, 911, 1, 0, 0, 0, 4126, 4127, 3, 1092, 546, 0, 4127, 913, 1, 0, 0, 0, 4128, 4129, 3, 818, 409, 0, 4129, 915, 1, 0, 0, 0, 4130, 4131, 3, 918, 459, 0, 4131, 917, 1, 0, 0, 0, 4132, 4133, 5, 166, 0, 0, 4133, 4134, 5, 369, 0, 0, 4134, 4135, 3, 920, 460, 0, 4135, 4136, 5, 380, 0, 0, 4136, 919, 1, 0, 0, 0, 4137, 4141, 3, 922, 461, 0, 4138, 4140, 3, 924, 462, 0, 4139, 4138, 1, 0, 0, 0, 4140, 4143, 1, 0, 0, 0, 4141, 4139, 1, 0, 0, 0, 4141, 4142, 1, 0, 0, 0, 4142, 921, 1, 0, 0, 0, 4143, 4141, 1, 0, 0, 0, 4144, 4145, 3, 836, 418, 0, 4145, 923, 1, 0, 0, 0, 4146, 4147, 5, 360, 0, 0, 4147, 4148, 3, 838, 419, 0, 4148, 4149, 5, 360, 0, 0, 4149, 4150, 3, 836, 418, 0, 4150, 925, 1, 0, 0, 0, 4151, 4152, 3, 818, 409, 0, 4152, 927, 1, 0, 0, 0, 4153, 4156, 3, 930, 465, 0, 4154, 4156, 3, 932, 466, 0, 4155, 4153, 1, 0, 0, 0, 4155, 4154, 1, 0, 0, 0, 4156, 929, 1, 0, 0, 0, 4157, 4158, 5, 210, 0, 0, 4158, 4159, 5, 370, 0, 0, 4159, 4160, 3, 926, 463, 0, 4160, 4161, 5, 360, 0, 0, 4161, 4162, 3, 952, 476, 0, 4162, 4163, 5, 381, 0, 0, 4163, 931, 1, 0, 0, 0, 4164, 4165, 5, 287, 0, 0, 4165, 4166, 5, 370, 0, 0, 4166, 4167, 3, 914, 457, 0, 4167, 4168, 5, 381, 0, 0, 4168, 933, 1, 0, 0, 0, 4169, 4170, 3, 936, 468, 0, 4170, 935, 1, 0, 0, 0, 4171, 4173, 3, 760, 380, 0, 4172, 4171, 1, 0, 0, 0, 4172, 4173, 1, 0, 0, 0, 4173, 4174, 1, 0, 0, 0, 4174, 4176, 5, 369, 0, 0, 4175, 4177, 3, 938, 469, 0, 4176, 4175, 1, 0, 0, 0, 4176, 4177, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 4179, 5, 380, 0, 0, 4179, 937, 1, 0, 0, 0, 4180, 4185, 3, 940, 470, 0, 4181, 4182, 5, 360, 0, 0, 4182, 4184, 3, 940, 470, 0, 4183, 4181, 1, 0, 0, 0, 4184, 4187, 1, 0, 0, 0, 4185, 4183, 1, 0, 0, 0, 4185, 4186, 1, 0, 0, 0, 4186, 939, 1, 0, 0, 0, 4187, 4185, 1, 0, 0, 0, 4188, 4189, 3, 818, 409, 0, 4189, 941, 1, 0, 0, 0, 4190, 4192, 5, 176, 0, 0, 4191, 4190, 1, 0, 0, 0, 4191, 4192, 1, 0, 0, 0, 4192, 4193, 1, 0, 0, 0, 4193, 4194, 3, 944, 472, 0, 4194, 943, 1, 0, 0, 0, 4195, 4197, 5, 368, 0, 0, 4196, 4198, 3, 946, 473, 0, 4197, 4196, 1, 0, 0, 0, 4197, 4198, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4200, 5, 379, 0, 0, 4200, 945, 1, 0, 0, 0, 4201, 4206, 3, 948, 474, 0, 4202, 4203, 5, 360, 0, 0, 4203, 4205, 3, 948, 474, 0, 4204, 4202, 1, 0, 0, 0, 4205, 4208, 1, 0, 0, 0, 4206, 4204, 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 947, 1, 0, 0, 0, 4208, 4206, 1, 0, 0, 0, 4209, 4210, 3, 1084, 542, 0, 4210, 4211, 5, 359, 0, 0, 4211, 4212, 3, 818, 409, 0, 4212, 949, 1, 0, 0, 0, 4213, 4214, 5, 2, 0, 0, 4214, 951, 1, 0, 0, 0, 4215, 4216, 6, 476, -1, 0, 4216, 4217, 7, 21, 0, 0, 4217, 4221, 3, 952, 476, 5, 4218, 4221, 3, 842, 421, 0, 4219, 4221, 3, 954, 477, 0, 4220, 4215, 1, 0, 0, 0, 4220, 4218, 1, 0, 0, 0, 4220, 4219, 1, 0, 0, 0, 4221, 4230, 1, 0, 0, 0, 4222, 4223, 10, 4, 0, 0, 4223, 4224, 7, 22, 0, 0, 4224, 4229, 3, 952, 476, 5, 4225, 4226, 10, 3, 0, 0, 4226, 4227, 7, 21, 0, 0, 4227, 4229, 3, 952, 476, 4, 4228, 4222, 1, 0, 0, 0, 4228, 4225, 1, 0, 0, 0, 4229, 4232, 1, 0, 0, 0, 4230, 4228, 1, 0, 0, 0, 4230, 4231, 1, 0, 0, 0, 4231, 953, 1, 0, 0, 0, 4232, 4230, 1, 0, 0, 0, 4233, 4247, 3, 956, 478, 0, 4234, 4247, 3, 958, 479, 0, 4235, 4247, 3, 968, 484, 0, 4236, 4247, 3, 970, 485, 0, 4237, 4247, 3, 976, 488, 0, 4238, 4247, 3, 980, 490, 0, 4239, 4247, 3, 986, 493, 0, 4240, 4247, 3, 988, 494, 0, 4241, 4247, 3, 990, 495, 0, 4242, 4247, 3, 992, 496, 0, 4243, 4247, 3, 998, 499, 0, 4244, 4247, 3, 1000, 500, 0, 4245, 4247, 3, 1002, 501, 0, 4246, 4233, 1, 0, 0, 0, 4246, 4234, 1, 0, 0, 0, 4246, 4235, 1, 0, 0, 0, 4246, 4236, 1, 0, 0, 0, 4246, 4237, 1, 0, 0, 0, 4246, 4238, 1, 0, 0, 0, 4246, 4239, 1, 0, 0, 0, 4246, 4240, 1, 0, 0, 0, 4246, 4241, 1, 0, 0, 0, 4246, 4242, 1, 0, 0, 0, 4246, 4243, 1, 0, 0, 0, 4246, 4244, 1, 0, 0, 0, 4246, 4245, 1, 0, 0, 0, 4247, 955, 1, 0, 0, 0, 4248, 4252, 3, 962, 481, 0, 4249, 4252, 3, 964, 482, 0, 4250, 4252, 3, 966, 483, 0, 4251, 4248, 1, 0, 0, 0, 4251, 4249, 1, 0, 0, 0, 4251, 4250, 1, 0, 0, 0, 4252, 957, 1, 0, 0, 0, 4253, 4254, 5, 45, 0, 0, 4254, 4255, 5, 370, 0, 0, 4255, 4256, 3, 960, 480, 0, 4256, 4257, 5, 381, 0, 0, 4257, 4264, 1, 0, 0, 0, 4258, 4259, 5, 194, 0, 0, 4259, 4260, 5, 370, 0, 0, 4260, 4261, 3, 926, 463, 0, 4261, 4262, 5, 381, 0, 0, 4262, 4264, 1, 0, 0, 0, 4263, 4253, 1, 0, 0, 0, 4263, 4258, 1, 0, 0, 0, 4264, 959, 1, 0, 0, 0, 4265, 4266, 3, 818, 409, 0, 4266, 961, 1, 0, 0, 0, 4267, 4268, 7, 30, 0, 0, 4268, 4269, 5, 370, 0, 0, 4269, 4270, 3, 1004, 502, 0, 4270, 4271, 5, 381, 0, 0, 4271, 963, 1, 0, 0, 0, 4272, 4273, 7, 31, 0, 0, 4273, 4274, 5, 370, 0, 0, 4274, 4275, 3, 1006, 503, 0, 4275, 4276, 5, 381, 0, 0, 4276, 965, 1, 0, 0, 0, 4277, 4278, 5, 167, 0, 0, 4278, 4279, 5, 370, 0, 0, 4279, 4280, 3, 914, 457, 0, 4280, 4281, 5, 381, 0, 0, 4281, 967, 1, 0, 0, 0, 4282, 4283, 5, 20, 0, 0, 4283, 4284, 5, 370, 0, 0, 4284, 4285, 3, 818, 409, 0, 4285, 4286, 5, 381, 0, 0, 4286, 969, 1, 0, 0, 0, 4287, 4288, 5, 147, 0, 0, 4288, 4289, 5, 370, 0, 0, 4289, 4290, 3, 972, 486, 0, 4290, 4291, 5, 360, 0, 0, 4291, 4292, 3, 974, 487, 0, 4292, 4293, 5, 381, 0, 0, 4293, 971, 1, 0, 0, 0, 4294, 4295, 3, 952, 476, 0, 4295, 973, 1, 0, 0, 0, 4296, 4297, 3, 952, 476, 0, 4297, 975, 1, 0, 0, 0, 4298, 4299, 3, 978, 489, 0, 4299, 4300, 5, 370, 0, 0, 4300, 4301, 3, 952, 476, 0, 4301, 4302, 5, 381, 0, 0, 4302, 977, 1, 0, 0, 0, 4303, 4304, 7, 32, 0, 0, 4304, 979, 1, 0, 0, 0, 4305, 4306, 5, 139, 0, 0, 4306, 4307, 5, 370, 0, 0, 4307, 4308, 3, 982, 491, 0, 4308, 4309, 5, 360, 0, 0, 4309, 4310, 3, 984, 492, 0, 4310, 4311, 5, 381, 0, 0, 4311, 981, 1, 0, 0, 0, 4312, 4313, 3, 952, 476, 0, 4313, 983, 1, 0, 0, 0, 4314, 4315, 3, 952, 476, 0, 4315, 985, 1, 0, 0, 0, 4316, 4317, 5, 140, 0, 0, 4317, 4318, 5, 370, 0, 0, 4318, 4319, 3, 952, 476, 0, 4319, 4320, 5, 381, 0, 0, 4320, 987, 1, 0, 0, 0, 4321, 4322, 5, 134, 0, 0, 4322, 4323, 5, 370, 0, 0, 4323, 4324, 3, 952, 476, 0, 4324, 4325, 5, 381, 0, 0, 4325, 989, 1, 0, 0, 0, 4326, 4327, 5, 90, 0, 0, 4327, 4328, 5, 370, 0, 0, 4328, 4329, 3, 952, 476, 0, 4329, 4330, 5, 381, 0, 0, 4330, 991, 1, 0, 0, 0, 4331, 4332, 5, 171, 0, 0, 4332, 4333, 5, 370, 0, 0, 4333, 4334, 3, 994, 497, 0, 4334, 4335, 5, 360, 0, 0, 4335, 4336, 3, 996, 498, 0, 4336, 4337, 5, 381, 0, 0, 4337, 993, 1, 0, 0, 0, 4338, 4339, 3, 952, 476, 0, 4339, 995, 1, 0, 0, 0, 4340, 4341, 3, 952, 476, 0, 4341, 997, 1, 0, 0, 0, 4342, 4343, 5, 198, 0, 0, 4343, 4344, 5, 370, 0, 0, 4344, 4345, 3, 952, 476, 0, 4345, 4346, 5, 381, 0, 0, 4346, 999, 1, 0, 0, 0, 4347, 4348, 5, 99, 0, 0, 4348, 4349, 5, 370, 0, 0, 4349, 4350, 3, 952, 476, 0, 4350, 4351, 5, 381, 0, 0, 4351, 1001, 1, 0, 0, 0, 4352, 4353, 7, 33, 0, 0, 4353, 4354, 5, 370, 0, 0, 4354, 4355, 3, 952, 476, 0, 4355, 4356, 5, 381, 0, 0, 4356, 1003, 1, 0, 0, 0, 4357, 4358, 3, 818, 409, 0, 4358, 1005, 1, 0, 0, 0, 4359, 4360, 3, 818, 409, 0, 4360, 1007, 1, 0, 0, 0, 4361, 4363, 3, 1012, 506, 0, 4362, 4361, 1, 0, 0, 0, 4362, 4363, 1, 0, 0, 0, 4363, 4365, 1, 0, 0, 0, 4364, 4366, 3, 1014, 507, 0, 4365, 4364, 1, 0, 0, 0, 4365, 4366, 1, 0, 0, 0, 4366, 4367, 1, 0, 0, 0, 4367, 4369, 5, 101, 0, 0, 4368, 4362, 1, 0, 0, 0, 4368, 4369, 1, 0, 0, 0, 4369, 4370, 1, 0, 0, 0, 4370, 4371, 3, 1010, 505, 0, 4371, 1009, 1, 0, 0, 0, 4372, 4373, 3, 818, 409, 0, 4373, 1011, 1, 0, 0, 0, 4374, 4375, 7, 34, 0, 0, 4375, 1013, 1, 0, 0, 0, 4376, 4377, 3, 818, 409, 0, 4377, 1015, 1, 0, 0, 0, 4378, 4379, 7, 35, 0, 0, 4379, 1017, 1, 0, 0, 0, 4380, 4381, 3, 952, 476, 0, 4381, 1019, 1, 0, 0, 0, 4382, 4383, 3, 818, 409, 0, 4383, 1021, 1, 0, 0, 0, 4384, 4390, 3, 1024, 512, 0, 4385, 4390, 3, 1026, 513, 0, 4386, 4390, 3, 1030, 515, 0, 4387, 4390, 3, 1028, 514, 0, 4388, 4390, 3, 1032, 516, 0, 4389, 4384, 1, 0, 0, 0, 4389, 4385, 1, 0, 0, 0, 4389, 4386, 1, 0, 0, 0, 4389, 4387, 1, 0, 0, 0, 4389, 4388, 1, 0, 0, 0, 4390, 1023, 1, 0, 0, 0, 4391, 4399, 5, 64, 0, 0, 4392, 4393, 5, 70, 0, 0, 4393, 4395, 5, 370, 0, 0, 4394, 4396, 3, 1034, 517, 0, 4395, 4394, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4397, 1, 0, 0, 0, 4397, 4399, 5, 381, 0, 0, 4398, 4391, 1, 0, 0, 0, 4398, 4392, 1, 0, 0, 0, 4399, 1025, 1, 0, 0, 0, 4400, 4408, 5, 68, 0, 0, 4401, 4402, 5, 237, 0, 0, 4402, 4404, 5, 370, 0, 0, 4403, 4405, 3, 1036, 518, 0, 4404, 4403, 1, 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 5, 381, 0, 0, 4407, 4400, 1, 0, 0, 0, 4407, 4401, 1, 0, 0, 0, 4408, 1027, 1, 0, 0, 0, 4409, 4415, 5, 137, 0, 0, 4410, 4412, 5, 370, 0, 0, 4411, 4413, 3, 1036, 518, 0, 4412, 4411, 1, 0, 0, 0, 4412, 4413, 1, 0, 0, 0, 4413, 4414, 1, 0, 0, 0, 4414, 4416, 5, 381, 0, 0, 4415, 4410, 1, 0, 0, 0, 4415, 4416, 1, 0, 0, 0, 4416, 1029, 1, 0, 0, 0, 4417, 4425, 5, 69, 0, 0, 4418, 4419, 5, 236, 0, 0, 4419, 4421, 5, 370, 0, 0, 4420, 4422, 3, 1038, 519, 0, 4421, 4420, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 4423, 1, 0, 0, 0, 4423, 4425, 5, 381, 0, 0, 4424, 4417, 1, 0, 0, 0, 4424, 4418, 1, 0, 0, 0, 4425, 1031, 1, 0, 0, 0, 4426, 4434, 5, 138, 0, 0, 4427, 4428, 5, 136, 0, 0, 4428, 4430, 5, 370, 0, 0, 4429, 4431, 3, 1038, 519, 0, 4430, 4429, 1, 0, 0, 0, 4430, 4431, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, 4434, 5, 381, 0, 0, 4433, 4426, 1, 0, 0, 0, 4433, 4427, 1, 0, 0, 0, 4434, 1033, 1, 0, 0, 0, 4435, 4438, 3, 1130, 565, 0, 4436, 4438, 3, 942, 471, 0, 4437, 4435, 1, 0, 0, 0, 4437, 4436, 1, 0, 0, 0, 4438, 1035, 1, 0, 0, 0, 4439, 4442, 3, 1132, 566, 0, 4440, 4442, 3, 942, 471, 0, 4441, 4439, 1, 0, 0, 0, 4441, 4440, 1, 0, 0, 0, 4442, 1037, 1, 0, 0, 0, 4443, 4446, 3, 1134, 567, 0, 4444, 4446, 3, 942, 471, 0, 4445, 4443, 1, 0, 0, 0, 4445, 4444, 1, 0, 0, 0, 4446, 1039, 1, 0, 0, 0, 4447, 4448, 3, 818, 409, 0, 4448, 1041, 1, 0, 0, 0, 4449, 4450, 5, 84, 0, 0, 4450, 4451, 5, 370, 0, 0, 4451, 4452, 3, 1044, 522, 0, 4452, 4454, 5, 381, 0, 0, 4453, 4455, 3, 728, 364, 0, 4454, 4453, 1, 0, 0, 0, 4454, 4455, 1, 0, 0, 0, 4455, 1043, 1, 0, 0, 0, 4456, 4457, 3, 1046, 523, 0, 4457, 4458, 5, 360, 0, 0, 4458, 4459, 3, 1048, 524, 0, 4459, 1045, 1, 0, 0, 0, 4460, 4461, 3, 1020, 510, 0, 4461, 1047, 1, 0, 0, 0, 4462, 4463, 3, 1020, 510, 0, 4463, 1049, 1, 0, 0, 0, 4464, 4467, 3, 1052, 526, 0, 4465, 4467, 3, 968, 484, 0, 4466, 4464, 1, 0, 0, 0, 4466, 4465, 1, 0, 0, 0, 4467, 1051, 1, 0, 0, 0, 4468, 4469, 5, 83, 0, 0, 4469, 4470, 5, 370, 0, 0, 4470, 4471, 3, 1054, 527, 0, 4471, 4472, 5, 381, 0, 0, 4472, 1053, 1, 0, 0, 0, 4473, 4476, 3, 1138, 569, 0, 4474, 4476, 3, 942, 471, 0, 4475, 4473, 1, 0, 0, 0, 4475, 4474, 1, 0, 0, 0, 4476, 1055, 1, 0, 0, 0, 4477, 4478, 3, 1110, 555, 0, 4478, 1057, 1, 0, 0, 0, 4479, 4480, 3, 1112, 556, 0, 4480, 1059, 1, 0, 0, 0, 4481, 4482, 3, 1110, 555, 0, 4482, 1061, 1, 0, 0, 0, 4483, 4484, 3, 1110, 555, 0, 4484, 1063, 1, 0, 0, 0, 4485, 4488, 3, 1112, 556, 0, 4486, 4488, 3, 1066, 533, 0, 4487, 4485, 1, 0, 0, 0, 4487, 4486, 1, 0, 0, 0, 4488, 1065, 1, 0, 0, 0, 4489, 4490, 7, 36, 0, 0, 4490, 1067, 1, 0, 0, 0, 4491, 4492, 3, 1110, 555, 0, 4492, 1069, 1, 0, 0, 0, 4493, 4494, 3, 1110, 555, 0, 4494, 1071, 1, 0, 0, 0, 4495, 4496, 3, 1110, 555, 0, 4496, 1073, 1, 0, 0, 0, 4497, 4500, 3, 1112, 556, 0, 4498, 4500, 3, 1076, 538, 0, 4499, 4497, 1, 0, 0, 0, 4499, 4498, 1, 0, 0, 0, 4500, 1075, 1, 0, 0, 0, 4501, 4502, 7, 36, 0, 0, 4502, 1077, 1, 0, 0, 0, 4503, 4504, 3, 1110, 555, 0, 4504, 1079, 1, 0, 0, 0, 4505, 4506, 3, 1110, 555, 0, 4506, 1081, 1, 0, 0, 0, 4507, 4508, 3, 1110, 555, 0, 4508, 1083, 1, 0, 0, 0, 4509, 4510, 3, 1110, 555, 0, 4510, 1085, 1, 0, 0, 0, 4511, 4512, 3, 1092, 546, 0, 4512, 1087, 1, 0, 0, 0, 4513, 4514, 3, 1092, 546, 0, 4514, 1089, 1, 0, 0, 0, 4515, 4516, 3, 1112, 556, 0, 4516, 1091, 1, 0, 0, 0, 4517, 4518, 3, 1112, 556, 0, 4518, 1093, 1, 0, 0, 0, 4519, 4522, 3, 1118, 559, 0, 4520, 4522, 3, 1096, 548, 0, 4521, 4519, 1, 0, 0, 0, 4521, 4520, 1, 0, 0, 0, 4522, 1095, 1, 0, 0, 0, 4523, 4532, 5, 2, 0, 0, 4524, 4532, 3, 1116, 558, 0, 4525, 4532, 5, 7, 0, 0, 4526, 4532, 3, 1098, 549, 0, 4527, 4532, 3, 1136, 568, 0, 4528, 4532, 3, 1128, 564, 0, 4529, 4532, 3, 1106, 553, 0, 4530, 4532, 3, 1108, 554, 0, 4531, 4523, 1, 0, 0, 0, 4531, 4524, 1, 0, 0, 0, 4531, 4525, 1, 0, 0, 0, 4531, 4526, 1, 0, 0, 0, 4531, 4527, 1, 0, 0, 0, 4531, 4528, 1, 0, 0, 0, 4531, 4529, 1, 0, 0, 0, 4531, 4530, 1, 0, 0, 0, 4532, 1097, 1, 0, 0, 0, 4533, 4537, 3, 1100, 550, 0, 4534, 4537, 3, 1102, 551, 0, 4535, 4537, 3, 1104, 552, 0, 4536, 4533, 1, 0, 0, 0, 4536, 4534, 1, 0, 0, 0, 4536, 4535, 1, 0, 0, 0, 4537, 1099, 1, 0, 0, 0, 4538, 4539, 5, 70, 0, 0, 4539, 4540, 3, 1130, 565, 0, 4540, 1101, 1, 0, 0, 0, 4541, 4542, 5, 207, 0, 0, 4542, 4543, 3, 1132, 566, 0, 4543, 1103, 1, 0, 0, 0, 4544, 4545, 7, 37, 0, 0, 4545, 4546, 3, 1134, 567, 0, 4546, 1105, 1, 0, 0, 0, 4547, 4548, 3, 936, 468, 0, 4548, 1107, 1, 0, 0, 0, 4549, 4550, 3, 942, 471, 0, 4550, 1109, 1, 0, 0, 0, 4551, 4555, 3, 1112, 556, 0, 4552, 4555, 5, 4, 0, 0, 4553, 4555, 5, 5, 0, 0, 4554, 4551, 1, 0, 0, 0, 4554, 4552, 1, 0, 0, 0, 4554, 4553, 1, 0, 0, 0, 4555, 1111, 1, 0, 0, 0, 4556, 4559, 5, 324, 0, 0, 4557, 4559, 3, 1146, 573, 0, 4558, 4556, 1, 0, 0, 0, 4558, 4557, 1, 0, 0, 0, 4559, 1113, 1, 0, 0, 0, 4560, 4561, 3, 1116, 558, 0, 4561, 1115, 1, 0, 0, 0, 4562, 4563, 7, 38, 0, 0, 4563, 1117, 1, 0, 0, 0, 4564, 4567, 3, 1120, 560, 0, 4565, 4567, 3, 1122, 561, 0, 4566, 4564, 1, 0, 0, 0, 4566, 4565, 1, 0, 0, 0, 4567, 1119, 1, 0, 0, 0, 4568, 4574, 5, 8, 0, 0, 4569, 4574, 5, 11, 0, 0, 4570, 4574, 5, 12, 0, 0, 4571, 4574, 5, 14, 0, 0, 4572, 4574, 3, 1124, 562, 0, 4573, 4568, 1, 0, 0, 0, 4573, 4569, 1, 0, 0, 0, 4573, 4570, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4573, 4572, 1, 0, 0, 0, 4574, 1121, 1, 0, 0, 0, 4575, 4576, 7, 39, 0, 0, 4576, 1123, 1, 0, 0, 0, 4577, 4578, 7, 40, 0, 0, 4578, 1125, 1, 0, 0, 0, 4579, 4580, 5, 16, 0, 0, 4580, 1127, 1, 0, 0, 0, 4581, 4582, 5, 154, 0, 0, 4582, 1129, 1, 0, 0, 0, 4583, 4584, 3, 1116, 558, 0, 4584, 1131, 1, 0, 0, 0, 4585, 4586, 3, 1116, 558, 0, 4586, 1133, 1, 0, 0, 0, 4587, 4588, 3, 1116, 558, 0, 4588, 1135, 1, 0, 0, 0, 4589, 4590, 5, 83, 0, 0, 4590, 4591, 3, 1138, 569, 0, 4591, 1137, 1, 0, 0, 0, 4592, 4593, 3, 1116, 558, 0, 4593, 1139, 1, 0, 0, 0, 4594, 4595, 7, 41, 0, 0, 4595, 1141, 1, 0, 0, 0, 4596, 4597, 7, 42, 0, 0, 4597, 1143, 1, 0, 0, 0, 4598, 4599, 7, 43, 0, 0, 4599, 1145, 1, 0, 0, 0, 4600, 4601, 7, 44, 0, 0, 4601, 1147, 1, 0, 0, 0, 507, 1150, 1157, 1161, 1166, 1171, 1176, 1179, 1184, 1186, 1190, 1193, 1197, 1205, 1211, 1225, 1228, 1235, 1248, 1255, 1258, 1263, 1269, 1272, 1282, 1289, 1298, 1319, 1322, 1329, 1334, 1340, 1346, 1350, 1355, 1362, 1365, 1373, 1380, 1383, 1395, 1398, 1409, 1417, 1425, 1430, 1434, 1442, 1449, 1457, 1463, 1469, 1474, 1477, 1482, 1485, 1488, 1492, 1495, 1499, 1503, 1506, 1509, 1512, 1524, 1529, 1535, 1542, 1547, 1551, 1557, 1562, 1565, 1573, 1579, 1587, 1591, 1596, 1603, 1607, 1612, 1616, 1620, 1626, 1639, 1645, 1657, 1673, 1678, 1689, 1699, 1717, 1722, 1726, 1730, 1734, 1736, 1742, 1747, 1754, 1770, 1774, 1779, 1783, 1790, 1794, 1811, 1816, 1823, 1833, 1841, 1846, 1862, 1865, 1869, 1872, 1876, 1879, 1885, 1889, 1892, 1899, 1904, 1911, 1915, 1919, 1922, 1925, 1928, 1931, 1934, 1936, 1943, 1948, 1959, 1966, 1976, 1979, 1986, 1989, 1995, 2004, 2010, 2014, 2021, 2034, 2044, 2050, 2054, 2057, 2061, 2071, 2074, 2078, 2081, 2088, 2092, 2095, 2115, 2124, 2129, 2136, 2140, 2146, 2152, 2158, 2161, 2164, 2169, 2174, 2177, 2181, 2185, 2192, 2196, 2199, 2205, 2208, 2211, 2219, 2224, 2227, 2232, 2235, 2240, 2243, 2247, 2250, 2253, 2265, 2272, 2274, 2279, 2288, 2293, 2297, 2304, 2307, 2310, 2321, 2335, 2344, 2353, 2387, 2390, 2394, 2413, 2421, 2423, 2434, 2442, 2446, 2461, 2494, 2503, 2513, 2523, 2534, 2540, 2550, 2559, 2586, 2596, 2609, 2614, 2630, 2634, 2650, 2655, 2658, 2668, 2681, 2687, 2696, 2702, 2709, 2714, 2721, 2729, 2732, 2740, 2743, 2752, 2756, 2759, 2765, 2772, 2780, 2782, 2797, 2802, 2806, 2810, 2814, 2818, 2821, 2827, 2832, 2836, 2839, 2843, 2846, 2855, 2858, 2868, 2871, 2875, 2879, 2883, 2888, 2895, 2898, 2902, 2905, 2912, 2915, 2925, 2957, 2960, 2968, 2971, 2980, 2984, 3019, 3026, 3031, 3040, 3045, 3052, 3068, 3071, 3078, 3081, 3086, 3089, 3092, 3097, 3101, 3109, 3114, 3125, 3128, 3130, 3132, 3144, 3148, 3155, 3160, 3163, 3170, 3173, 3180, 3183, 3185, 3192, 3197, 3200, 3207, 3210, 3217, 3220, 3222, 3232, 3236, 3240, 3244, 3248, 3252, 3256, 3260, 3264, 3268, 3275, 3278, 3282, 3285, 3288, 3292, 3296, 3300, 3304, 3308, 3312, 3316, 3323, 3326, 3330, 3334, 3338, 3342, 3346, 3350, 3354, 3358, 3363, 3370, 3373, 3378, 3380, 3387, 3391, 3393, 3401, 3405, 3409, 3413, 3417, 3424, 3428, 3431, 3435, 3439, 3442, 3444, 3448, 3455, 3460, 3467, 3469, 3474, 3480, 3483, 3485, 3489, 3494, 3501, 3503, 3508, 3515, 3517, 3524, 3532, 3538, 3542, 3549, 3553, 3556, 3561, 3565, 3569, 3573, 3577, 3581, 3584, 3588, 3592, 3596, 3599, 3603, 3607, 3614, 3618, 3621, 3625, 3627, 3631, 3640, 3648, 3663, 3685, 3692, 3701, 3708, 3711, 3720, 3732, 3736, 3744, 3750, 3758, 3775, 3789, 3808, 3813, 3819, 3845, 3848, 3850, 3859, 3868, 3892, 3901, 3922, 3929, 3938, 3952, 3956, 3960, 3964, 3979, 3995, 3999, 4003, 4010, 4013, 4021, 4024, 4043, 4050, 4064, 4068, 4081, 4091, 4096, 4115, 4141, 4155, 4172, 4176, 4185, 4191, 4197, 4206, 4220, 4228, 4230, 4246, 4251, 4263, 4362, 4365, 4368, 4389, 4395, 4398, 4404, 4407, 4412, 4415, 4421, 4424, 4430, 4433, 4437, 4441, 4445, 4454, 4466, 4475, 4487, 4499, 4521, 4531, 4536, 4554, 4558, 4566, 4573] \ No newline at end of file diff --git a/endpoints/gql/parser/GQL.tokens b/endpoints/gql/parser/GQL.tokens new file mode 100644 index 00000000..4ad05bf4 --- /dev/null +++ b/endpoints/gql/parser/GQL.tokens @@ -0,0 +1,753 @@ +IMPLIES=1 +BOOLEAN_LITERAL=2 +SINGLE_QUOTED_CHARACTER_SEQUENCE=3 +DOUBLE_QUOTED_CHARACTER_SEQUENCE=4 +ACCENT_QUOTED_CHARACTER_SEQUENCE=5 +NO_ESCAPE=6 +BYTE_STRING_LITERAL=7 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX=8 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX=9 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX=10 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX=11 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX=12 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX=13 +UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX=14 +UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX=15 +UNSIGNED_DECIMAL_INTEGER=16 +UNSIGNED_HEXADECIMAL_INTEGER=17 +UNSIGNED_OCTAL_INTEGER=18 +UNSIGNED_BINARY_INTEGER=19 +ABS=20 +ACOS=21 +ALL=22 +ALL_DIFFERENT=23 +AND=24 +ANY=25 +ARRAY=26 +AS=27 +ASC=28 +ASCENDING=29 +ASIN=30 +AT=31 +ATAN=32 +AVG=33 +BIG=34 +BIGINT=35 +BINARY=36 +BOOL=37 +BOOLEAN=38 +BOTH=39 +BTRIM=40 +BY=41 +BYTE_LENGTH=42 +BYTES=43 +CALL=44 +CARDINALITY=45 +CASE=46 +CAST=47 +CEIL=48 +CEILING=49 +CHAR=50 +CHAR_LENGTH=51 +CHARACTER_LENGTH=52 +CHARACTERISTICS=53 +CLOSE=54 +COALESCE=55 +COLLECT_LIST=56 +COMMIT=57 +COPY=58 +COS=59 +COSH=60 +COT=61 +COUNT=62 +CREATE=63 +CURRENT_DATE=64 +CURRENT_GRAPH=65 +CURRENT_PROPERTY_GRAPH=66 +CURRENT_SCHEMA=67 +CURRENT_TIME=68 +CURRENT_TIMESTAMP=69 +DATE=70 +DATETIME=71 +DAY=72 +DEC=73 +DECIMAL=74 +DEGREES=75 +DELETE=76 +DESC=77 +DESCENDING=78 +DETACH=79 +DISTINCT=80 +DOUBLE=81 +DROP=82 +DURATION=83 +DURATION_BETWEEN=84 +ELEMENT_ID=85 +ELSE=86 +END=87 +EXCEPT=88 +EXISTS=89 +EXP=90 +FILTER=91 +FINISH=92 +FLOAT=93 +FLOAT16=94 +FLOAT32=95 +FLOAT64=96 +FLOAT128=97 +FLOAT256=98 +FLOOR=99 +FOR=100 +FROM=101 +GROUP=102 +HAVING=103 +HOME_GRAPH=104 +HOME_PROPERTY_GRAPH=105 +HOME_SCHEMA=106 +HOUR=107 +IF=108 +IN=109 +INSERT=110 +INT=111 +INTEGER=112 +INT8=113 +INTEGER8=114 +INT16=115 +INTEGER16=116 +INT32=117 +INTEGER32=118 +INT64=119 +INTEGER64=120 +INT128=121 +INTEGER128=122 +INT256=123 +INTEGER256=124 +INTERSECT=125 +INTERVAL=126 +IS=127 +LEADING=128 +LEFT=129 +LET=130 +LIKE=131 +LIMIT=132 +LIST=133 +LN=134 +LOCAL=135 +LOCAL_DATETIME=136 +LOCAL_TIME=137 +LOCAL_TIMESTAMP=138 +LOG_KW=139 +LOG10=140 +LOWER=141 +LTRIM=142 +MATCH=143 +MAX=144 +MIN=145 +MINUTE=146 +MOD=147 +MONTH=148 +NEXT=149 +NODETACH=150 +NORMALIZE=151 +NOT=152 +NOTHING=153 +NULL_KW=154 +NULLS=155 +NULLIF=156 +OCTET_LENGTH=157 +OF=158 +OFFSET=159 +OPTIONAL=160 +OR=161 +ORDER=162 +OTHERWISE=163 +PARAMETER=164 +PARAMETERS=165 +PATH=166 +PATH_LENGTH=167 +PATHS=168 +PERCENTILE_CONT=169 +PERCENTILE_DISC=170 +POWER=171 +PRECISION=172 +PROPERTY_EXISTS=173 +RADIANS=174 +REAL=175 +RECORD=176 +REMOVE=177 +REPLACE=178 +RESET=179 +RETURN=180 +RIGHT=181 +ROLLBACK=182 +RTRIM=183 +SAME=184 +SCHEMA=185 +SECOND=186 +SELECT=187 +SESSION=188 +SESSION_USER=189 +SET=190 +SIGNED=191 +SIN=192 +SINH=193 +SIZE=194 +SKIP_RESERVED_WORD=195 +SMALL=196 +SMALLINT=197 +SQRT=198 +START=199 +STDDEV_POP=200 +STDDEV_SAMP=201 +STRING=202 +SUM=203 +TAN=204 +TANH=205 +THEN=206 +TIME=207 +TIMESTAMP=208 +TRAILING=209 +TRIM=210 +TYPED=211 +UBIGINT=212 +UINT=213 +UINT8=214 +UINT16=215 +UINT32=216 +UINT64=217 +UINT128=218 +UINT256=219 +UNION=220 +UNSIGNED=221 +UPPER=222 +USE=223 +USMALLINT=224 +VALUE=225 +VARBINARY=226 +VARCHAR=227 +VARIABLE=228 +WHEN=229 +WHERE=230 +WITH=231 +XOR=232 +YEAR=233 +YIELD=234 +ZONED=235 +ZONED_DATETIME=236 +ZONED_TIME=237 +ABSTRACT=238 +AGGREGATE=239 +AGGREGATES=240 +ALTER=241 +CATALOG=242 +CLEAR=243 +CLONE=244 +CONSTRAINT=245 +CURRENT_ROLE=246 +CURRENT_USER=247 +DATA=248 +DIRECTORY=249 +DRYRUN=250 +EXACT=251 +EXISTING=252 +FUNCTION=253 +GQLSTATUS=254 +GRANT=255 +INSTANT=256 +INFINITY_KW=257 +NUMBER=258 +NUMERIC=259 +ON=260 +OPEN=261 +PARTITION=262 +PROCEDURE=263 +PRODUCT=264 +PROJECT=265 +QUERY=266 +RECORDS=267 +REFERENCE=268 +RENAME=269 +REVOKE=270 +SUBSTRING=271 +SYSTEM_USER=272 +TEMPORAL=273 +UNIQUE=274 +UNIT=275 +VALUES=276 +ACYCLIC=277 +BINDING=278 +BINDINGS=279 +CONNECTING=280 +DESTINATION=281 +DIFFERENT=282 +DIRECTED=283 +EDGE=284 +EDGES=285 +ELEMENT=286 +ELEMENTS=287 +FIRST=288 +GRAPH=289 +GROUPS=290 +KEEP=291 +LABEL=292 +LABELED=293 +LABELS=294 +LAST=295 +NFC=296 +NFD=297 +NFKC=298 +NFKD=299 +NO=300 +NODE=301 +NORMALIZED=302 +ONLY=303 +ORDINALITY=304 +PROPERTY=305 +READ=306 +RELATIONSHIP=307 +RELATIONSHIPS=308 +REPEATABLE=309 +SHORTEST=310 +SIMPLE=311 +SOURCE=312 +TABLE=313 +TO=314 +TRAIL=315 +TRANSACTION=316 +TYPE=317 +UNDIRECTED=318 +VERTEX=319 +WALK=320 +WITHOUT=321 +WRITE=322 +ZONE=323 +REGULAR_IDENTIFIER=324 +SUBSTITUTED_PARAMETER_REFERENCE=325 +GENERAL_PARAMETER_REFERENCE=326 +MULTISET_ALTERNATION_OPERATOR=327 +BRACKET_RIGHT_ARROW=328 +BRACKET_TILDE_RIGHT_ARROW=329 +CONCATENATION_OPERATOR=330 +DOUBLE_COLON=331 +DOUBLE_DOLLAR_SIGN=332 +DOUBLE_PERIOD=333 +GREATER_THAN_OR_EQUALS_OPERATOR=334 +LEFT_ARROW=335 +LEFT_ARROW_TILDE=336 +LEFT_ARROW_BRACKET=337 +LEFT_ARROW_TILDE_BRACKET=338 +LEFT_MINUS_RIGHT=339 +LEFT_MINUS_SLASH=340 +LEFT_TILDE_SLASH=341 +LESS_THAN_OR_EQUALS_OPERATOR=342 +MINUS_LEFT_BRACKET=343 +MINUS_SLASH=344 +NOT_EQUALS_OPERATOR=345 +RIGHT_ARROW=346 +RIGHT_BRACKET_MINUS=347 +RIGHT_BRACKET_TILDE=348 +RIGHT_DOUBLE_ARROW=349 +SLASH_MINUS=350 +SLASH_MINUS_RIGHT=351 +SLASH_TILDE=352 +SLASH_TILDE_RIGHT=353 +TILDE_LEFT_BRACKET=354 +TILDE_RIGHT_ARROW=355 +TILDE_SLASH=356 +AMPERSAND=357 +ASTERISK=358 +COLON=359 +COMMA=360 +COMMERCIAL_AT=361 +DOLLAR_SIGN=362 +DOUBLE_QUOTE=363 +EQUALS_OPERATOR=364 +EXCLAMATION_MARK=365 +RIGHT_ANGLE_BRACKET=366 +GRAVE_ACCENT=367 +LEFT_BRACE=368 +LEFT_BRACKET=369 +LEFT_PAREN=370 +LEFT_ANGLE_BRACKET=371 +MINUS_SIGN=372 +PERCENT=373 +PERIOD=374 +PLUS_SIGN=375 +QUESTION_MARK=376 +QUOTE=377 +REVERSE_SOLIDUS=378 +RIGHT_BRACE=379 +RIGHT_BRACKET=380 +RIGHT_PAREN=381 +SOLIDUS=382 +TILDE=383 +UNDERSCORE=384 +VERTICAL_BAR=385 +SP=386 +WHITESPACE=387 +BRACKETED_COMMENT=388 +SIMPLE_COMMENT_SOLIDUS=389 +SIMPLE_COMMENT_MINUS=390 +'ABS'=20 +'ACOS'=21 +'ALL'=22 +'ALL_DIFFERENT'=23 +'AND'=24 +'ANY'=25 +'ARRAY'=26 +'AS'=27 +'ASC'=28 +'ASCENDING'=29 +'ASIN'=30 +'AT'=31 +'ATAN'=32 +'AVG'=33 +'BIG'=34 +'BIGINT'=35 +'BINARY'=36 +'BOOL'=37 +'BOOLEAN'=38 +'BOTH'=39 +'BTRIM'=40 +'BY'=41 +'BYTE_LENGTH'=42 +'BYTES'=43 +'CALL'=44 +'CARDINALITY'=45 +'CASE'=46 +'CAST'=47 +'CEIL'=48 +'CEILING'=49 +'CHAR'=50 +'CHAR_LENGTH'=51 +'CHARACTER_LENGTH'=52 +'CHARACTERISTICS'=53 +'CLOSE'=54 +'COALESCE'=55 +'COLLECT_LIST'=56 +'COMMIT'=57 +'COPY'=58 +'COS'=59 +'COSH'=60 +'COT'=61 +'COUNT'=62 +'CREATE'=63 +'CURRENT_DATE'=64 +'CURRENT_GRAPH'=65 +'CURRENT_PROPERTY_GRAPH'=66 +'CURRENT_SCHEMA'=67 +'CURRENT_TIME'=68 +'CURRENT_TIMESTAMP'=69 +'DATE'=70 +'DATETIME'=71 +'DAY'=72 +'DEC'=73 +'DECIMAL'=74 +'DEGREES'=75 +'DELETE'=76 +'DESC'=77 +'DESCENDING'=78 +'DETACH'=79 +'DISTINCT'=80 +'DOUBLE'=81 +'DROP'=82 +'DURATION'=83 +'DURATION_BETWEEN'=84 +'ELEMENT_ID'=85 +'ELSE'=86 +'END'=87 +'EXCEPT'=88 +'EXISTS'=89 +'EXP'=90 +'FILTER'=91 +'FINISH'=92 +'FLOAT'=93 +'FLOAT16'=94 +'FLOAT32'=95 +'FLOAT64'=96 +'FLOAT128'=97 +'FLOAT256'=98 +'FLOOR'=99 +'FOR'=100 +'FROM'=101 +'GROUP'=102 +'HAVING'=103 +'HOME_GRAPH'=104 +'HOME_PROPERTY_GRAPH'=105 +'HOME_SCHEMA'=106 +'HOUR'=107 +'IF'=108 +'IN'=109 +'INSERT'=110 +'INT'=111 +'INTEGER'=112 +'INT8'=113 +'INTEGER8'=114 +'INT16'=115 +'INTEGER16'=116 +'INT32'=117 +'INTEGER32'=118 +'INT64'=119 +'INTEGER64'=120 +'INT128'=121 +'INTEGER128'=122 +'INT256'=123 +'INTEGER256'=124 +'INTERSECT'=125 +'INTERVAL'=126 +'IS'=127 +'LEADING'=128 +'LEFT'=129 +'LET'=130 +'LIKE'=131 +'LIMIT'=132 +'LIST'=133 +'LN'=134 +'LOCAL'=135 +'LOCAL_DATETIME'=136 +'LOCAL_TIME'=137 +'LOCAL_TIMESTAMP'=138 +'LOG'=139 +'LOG10'=140 +'LOWER'=141 +'LTRIM'=142 +'MATCH'=143 +'MAX'=144 +'MIN'=145 +'MINUTE'=146 +'MOD'=147 +'MONTH'=148 +'NEXT'=149 +'NODETACH'=150 +'NORMALIZE'=151 +'NOT'=152 +'NOTHING'=153 +'NULL'=154 +'NULLS'=155 +'NULLIF'=156 +'OCTET_LENGTH'=157 +'OF'=158 +'OFFSET'=159 +'OPTIONAL'=160 +'OR'=161 +'ORDER'=162 +'OTHERWISE'=163 +'PARAMETER'=164 +'PARAMETERS'=165 +'PATH'=166 +'PATH_LENGTH'=167 +'PATHS'=168 +'PERCENTILE_CONT'=169 +'PERCENTILE_DISC'=170 +'POWER'=171 +'PRECISION'=172 +'PROPERTY_EXISTS'=173 +'RADIANS'=174 +'REAL'=175 +'RECORD'=176 +'REMOVE'=177 +'REPLACE'=178 +'RESET'=179 +'RETURN'=180 +'RIGHT'=181 +'ROLLBACK'=182 +'RTRIM'=183 +'SAME'=184 +'SCHEMA'=185 +'SECOND'=186 +'SELECT'=187 +'SESSION'=188 +'SESSION_USER'=189 +'SET'=190 +'SIGNED'=191 +'SIN'=192 +'SINH'=193 +'SIZE'=194 +'SKIP'=195 +'SMALL'=196 +'SMALLINT'=197 +'SQRT'=198 +'START'=199 +'STDDEV_POP'=200 +'STDDEV_SAMP'=201 +'STRING'=202 +'SUM'=203 +'TAN'=204 +'TANH'=205 +'THEN'=206 +'TIME'=207 +'TIMESTAMP'=208 +'TRAILING'=209 +'TRIM'=210 +'TYPED'=211 +'UBIGINT'=212 +'UINT'=213 +'UINT8'=214 +'UINT16'=215 +'UINT32'=216 +'UINT64'=217 +'UINT128'=218 +'UINT256'=219 +'UNION'=220 +'UNSIGNED'=221 +'UPPER'=222 +'USE'=223 +'USMALLINT'=224 +'VALUE'=225 +'VARBINARY'=226 +'VARCHAR'=227 +'VARIABLE'=228 +'WHEN'=229 +'WHERE'=230 +'WITH'=231 +'XOR'=232 +'YEAR'=233 +'YIELD'=234 +'ZONED'=235 +'ZONED_DATETIME'=236 +'ZONED_TIME'=237 +'ABSTRACT'=238 +'AGGREGATE'=239 +'AGGREGATES'=240 +'ALTER'=241 +'CATALOG'=242 +'CLEAR'=243 +'CLONE'=244 +'CONSTRAINT'=245 +'CURRENT_ROLE'=246 +'CURRENT_USER'=247 +'DATA'=248 +'DIRECTORY'=249 +'DRYRUN'=250 +'EXACT'=251 +'EXISTING'=252 +'FUNCTION'=253 +'GQLSTATUS'=254 +'GRANT'=255 +'INSTANT'=256 +'INFINITY'=257 +'NUMBER'=258 +'NUMERIC'=259 +'ON'=260 +'OPEN'=261 +'PARTITION'=262 +'PROCEDURE'=263 +'PRODUCT'=264 +'PROJECT'=265 +'QUERY'=266 +'RECORDS'=267 +'REFERENCE'=268 +'RENAME'=269 +'REVOKE'=270 +'SUBSTRING'=271 +'SYSTEM_USER'=272 +'TEMPORAL'=273 +'UNIQUE'=274 +'UNIT'=275 +'VALUES'=276 +'ACYCLIC'=277 +'BINDING'=278 +'BINDINGS'=279 +'CONNECTING'=280 +'DESTINATION'=281 +'DIFFERENT'=282 +'DIRECTED'=283 +'EDGE'=284 +'EDGES'=285 +'ELEMENT'=286 +'ELEMENTS'=287 +'FIRST'=288 +'GRAPH'=289 +'GROUPS'=290 +'KEEP'=291 +'LABEL'=292 +'LABELED'=293 +'LABELS'=294 +'LAST'=295 +'NFC'=296 +'NFD'=297 +'NFKC'=298 +'NFKD'=299 +'NO'=300 +'NODE'=301 +'NORMALIZED'=302 +'ONLY'=303 +'ORDINALITY'=304 +'PROPERTY'=305 +'READ'=306 +'RELATIONSHIP'=307 +'RELATIONSHIPS'=308 +'REPEATABLE'=309 +'SHORTEST'=310 +'SIMPLE'=311 +'SOURCE'=312 +'TABLE'=313 +'TO'=314 +'TRAIL'=315 +'TRANSACTION'=316 +'TYPE'=317 +'UNDIRECTED'=318 +'VERTEX'=319 +'WALK'=320 +'WITHOUT'=321 +'WRITE'=322 +'ZONE'=323 +'|+|'=327 +']->'=328 +']~>'=329 +'||'=330 +'::'=331 +'$$'=332 +'..'=333 +'>='=334 +'<-'=335 +'<~'=336 +'<-['=337 +'<~['=338 +'<->'=339 +'<-/'=340 +'<~/'=341 +'<='=342 +'-['=343 +'-/'=344 +'<>'=345 +'->'=346 +']-'=347 +']~'=348 +'=>'=349 +'/-'=350 +'/->'=351 +'/~'=352 +'/~>'=353 +'~['=354 +'~>'=355 +'~/'=356 +'&'=357 +'*'=358 +':'=359 +','=360 +'@'=361 +'$'=362 +'"'=363 +'='=364 +'!'=365 +'>'=366 +'`'=367 +'{'=368 +'['=369 +'('=370 +'<'=371 +'-'=372 +'%'=373 +'.'=374 +'+'=375 +'?'=376 +'\''=377 +'\\'=378 +'}'=379 +']'=380 +')'=381 +'/'=382 +'~'=383 +'_'=384 +'|'=385 diff --git a/endpoints/gql/parser/GQLLexer.interp b/endpoints/gql/parser/GQLLexer.interp new file mode 100644 index 00000000..315ed7a1 --- /dev/null +++ b/endpoints/gql/parser/GQLLexer.interp @@ -0,0 +1,1241 @@ +token literal names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'ABS' +'ACOS' +'ALL' +'ALL_DIFFERENT' +'AND' +'ANY' +'ARRAY' +'AS' +'ASC' +'ASCENDING' +'ASIN' +'AT' +'ATAN' +'AVG' +'BIG' +'BIGINT' +'BINARY' +'BOOL' +'BOOLEAN' +'BOTH' +'BTRIM' +'BY' +'BYTE_LENGTH' +'BYTES' +'CALL' +'CARDINALITY' +'CASE' +'CAST' +'CEIL' +'CEILING' +'CHAR' +'CHAR_LENGTH' +'CHARACTER_LENGTH' +'CHARACTERISTICS' +'CLOSE' +'COALESCE' +'COLLECT_LIST' +'COMMIT' +'COPY' +'COS' +'COSH' +'COT' +'COUNT' +'CREATE' +'CURRENT_DATE' +'CURRENT_GRAPH' +'CURRENT_PROPERTY_GRAPH' +'CURRENT_SCHEMA' +'CURRENT_TIME' +'CURRENT_TIMESTAMP' +'DATE' +'DATETIME' +'DAY' +'DEC' +'DECIMAL' +'DEGREES' +'DELETE' +'DESC' +'DESCENDING' +'DETACH' +'DISTINCT' +'DOUBLE' +'DROP' +'DURATION' +'DURATION_BETWEEN' +'ELEMENT_ID' +'ELSE' +'END' +'EXCEPT' +'EXISTS' +'EXP' +'FILTER' +'FINISH' +'FLOAT' +'FLOAT16' +'FLOAT32' +'FLOAT64' +'FLOAT128' +'FLOAT256' +'FLOOR' +'FOR' +'FROM' +'GROUP' +'HAVING' +'HOME_GRAPH' +'HOME_PROPERTY_GRAPH' +'HOME_SCHEMA' +'HOUR' +'IF' +'IN' +'INSERT' +'INT' +'INTEGER' +'INT8' +'INTEGER8' +'INT16' +'INTEGER16' +'INT32' +'INTEGER32' +'INT64' +'INTEGER64' +'INT128' +'INTEGER128' +'INT256' +'INTEGER256' +'INTERSECT' +'INTERVAL' +'IS' +'LEADING' +'LEFT' +'LET' +'LIKE' +'LIMIT' +'LIST' +'LN' +'LOCAL' +'LOCAL_DATETIME' +'LOCAL_TIME' +'LOCAL_TIMESTAMP' +'LOG' +'LOG10' +'LOWER' +'LTRIM' +'MATCH' +'MAX' +'MIN' +'MINUTE' +'MOD' +'MONTH' +'NEXT' +'NODETACH' +'NORMALIZE' +'NOT' +'NOTHING' +'NULL' +'NULLS' +'NULLIF' +'OCTET_LENGTH' +'OF' +'OFFSET' +'OPTIONAL' +'OR' +'ORDER' +'OTHERWISE' +'PARAMETER' +'PARAMETERS' +'PATH' +'PATH_LENGTH' +'PATHS' +'PERCENTILE_CONT' +'PERCENTILE_DISC' +'POWER' +'PRECISION' +'PROPERTY_EXISTS' +'RADIANS' +'REAL' +'RECORD' +'REMOVE' +'REPLACE' +'RESET' +'RETURN' +'RIGHT' +'ROLLBACK' +'RTRIM' +'SAME' +'SCHEMA' +'SECOND' +'SELECT' +'SESSION' +'SESSION_USER' +'SET' +'SIGNED' +'SIN' +'SINH' +'SIZE' +'SKIP' +'SMALL' +'SMALLINT' +'SQRT' +'START' +'STDDEV_POP' +'STDDEV_SAMP' +'STRING' +'SUM' +'TAN' +'TANH' +'THEN' +'TIME' +'TIMESTAMP' +'TRAILING' +'TRIM' +'TYPED' +'UBIGINT' +'UINT' +'UINT8' +'UINT16' +'UINT32' +'UINT64' +'UINT128' +'UINT256' +'UNION' +'UNSIGNED' +'UPPER' +'USE' +'USMALLINT' +'VALUE' +'VARBINARY' +'VARCHAR' +'VARIABLE' +'WHEN' +'WHERE' +'WITH' +'XOR' +'YEAR' +'YIELD' +'ZONED' +'ZONED_DATETIME' +'ZONED_TIME' +'ABSTRACT' +'AGGREGATE' +'AGGREGATES' +'ALTER' +'CATALOG' +'CLEAR' +'CLONE' +'CONSTRAINT' +'CURRENT_ROLE' +'CURRENT_USER' +'DATA' +'DIRECTORY' +'DRYRUN' +'EXACT' +'EXISTING' +'FUNCTION' +'GQLSTATUS' +'GRANT' +'INSTANT' +'INFINITY' +'NUMBER' +'NUMERIC' +'ON' +'OPEN' +'PARTITION' +'PROCEDURE' +'PRODUCT' +'PROJECT' +'QUERY' +'RECORDS' +'REFERENCE' +'RENAME' +'REVOKE' +'SUBSTRING' +'SYSTEM_USER' +'TEMPORAL' +'UNIQUE' +'UNIT' +'VALUES' +'ACYCLIC' +'BINDING' +'BINDINGS' +'CONNECTING' +'DESTINATION' +'DIFFERENT' +'DIRECTED' +'EDGE' +'EDGES' +'ELEMENT' +'ELEMENTS' +'FIRST' +'GRAPH' +'GROUPS' +'KEEP' +'LABEL' +'LABELED' +'LABELS' +'LAST' +'NFC' +'NFD' +'NFKC' +'NFKD' +'NO' +'NODE' +'NORMALIZED' +'ONLY' +'ORDINALITY' +'PROPERTY' +'READ' +'RELATIONSHIP' +'RELATIONSHIPS' +'REPEATABLE' +'SHORTEST' +'SIMPLE' +'SOURCE' +'TABLE' +'TO' +'TRAIL' +'TRANSACTION' +'TYPE' +'UNDIRECTED' +'VERTEX' +'WALK' +'WITHOUT' +'WRITE' +'ZONE' +null +null +null +'|+|' +']->' +']~>' +'||' +'::' +'$$' +'..' +'>=' +'<-' +'<~' +'<-[' +'<~[' +'<->' +'<-/' +'<~/' +'<=' +'-[' +'-/' +'<>' +'->' +']-' +']~' +'=>' +'/-' +'/->' +'/~' +'/~>' +'~[' +'~>' +'~/' +'&' +'*' +':' +',' +'@' +'$' +'"' +'=' +'!' +'>' +'`' +'{' +'[' +'(' +'<' +'-' +'%' +'.' +'+' +'?' +'\'' +'\\' +'}' +']' +')' +'/' +'~' +'_' +'|' +null +null +null +null +null + +token symbolic names: +null +IMPLIES +BOOLEAN_LITERAL +SINGLE_QUOTED_CHARACTER_SEQUENCE +DOUBLE_QUOTED_CHARACTER_SEQUENCE +ACCENT_QUOTED_CHARACTER_SEQUENCE +NO_ESCAPE +BYTE_STRING_LITERAL +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER +UNSIGNED_HEXADECIMAL_INTEGER +UNSIGNED_OCTAL_INTEGER +UNSIGNED_BINARY_INTEGER +ABS +ACOS +ALL +ALL_DIFFERENT +AND +ANY +ARRAY +AS +ASC +ASCENDING +ASIN +AT +ATAN +AVG +BIG +BIGINT +BINARY +BOOL +BOOLEAN +BOTH +BTRIM +BY +BYTE_LENGTH +BYTES +CALL +CARDINALITY +CASE +CAST +CEIL +CEILING +CHAR +CHAR_LENGTH +CHARACTER_LENGTH +CHARACTERISTICS +CLOSE +COALESCE +COLLECT_LIST +COMMIT +COPY +COS +COSH +COT +COUNT +CREATE +CURRENT_DATE +CURRENT_GRAPH +CURRENT_PROPERTY_GRAPH +CURRENT_SCHEMA +CURRENT_TIME +CURRENT_TIMESTAMP +DATE +DATETIME +DAY +DEC +DECIMAL +DEGREES +DELETE +DESC +DESCENDING +DETACH +DISTINCT +DOUBLE +DROP +DURATION +DURATION_BETWEEN +ELEMENT_ID +ELSE +END +EXCEPT +EXISTS +EXP +FILTER +FINISH +FLOAT +FLOAT16 +FLOAT32 +FLOAT64 +FLOAT128 +FLOAT256 +FLOOR +FOR +FROM +GROUP +HAVING +HOME_GRAPH +HOME_PROPERTY_GRAPH +HOME_SCHEMA +HOUR +IF +IN +INSERT +INT +INTEGER +INT8 +INTEGER8 +INT16 +INTEGER16 +INT32 +INTEGER32 +INT64 +INTEGER64 +INT128 +INTEGER128 +INT256 +INTEGER256 +INTERSECT +INTERVAL +IS +LEADING +LEFT +LET +LIKE +LIMIT +LIST +LN +LOCAL +LOCAL_DATETIME +LOCAL_TIME +LOCAL_TIMESTAMP +LOG_KW +LOG10 +LOWER +LTRIM +MATCH +MAX +MIN +MINUTE +MOD +MONTH +NEXT +NODETACH +NORMALIZE +NOT +NOTHING +NULL_KW +NULLS +NULLIF +OCTET_LENGTH +OF +OFFSET +OPTIONAL +OR +ORDER +OTHERWISE +PARAMETER +PARAMETERS +PATH +PATH_LENGTH +PATHS +PERCENTILE_CONT +PERCENTILE_DISC +POWER +PRECISION +PROPERTY_EXISTS +RADIANS +REAL +RECORD +REMOVE +REPLACE +RESET +RETURN +RIGHT +ROLLBACK +RTRIM +SAME +SCHEMA +SECOND +SELECT +SESSION +SESSION_USER +SET +SIGNED +SIN +SINH +SIZE +SKIP_RESERVED_WORD +SMALL +SMALLINT +SQRT +START +STDDEV_POP +STDDEV_SAMP +STRING +SUM +TAN +TANH +THEN +TIME +TIMESTAMP +TRAILING +TRIM +TYPED +UBIGINT +UINT +UINT8 +UINT16 +UINT32 +UINT64 +UINT128 +UINT256 +UNION +UNSIGNED +UPPER +USE +USMALLINT +VALUE +VARBINARY +VARCHAR +VARIABLE +WHEN +WHERE +WITH +XOR +YEAR +YIELD +ZONED +ZONED_DATETIME +ZONED_TIME +ABSTRACT +AGGREGATE +AGGREGATES +ALTER +CATALOG +CLEAR +CLONE +CONSTRAINT +CURRENT_ROLE +CURRENT_USER +DATA +DIRECTORY +DRYRUN +EXACT +EXISTING +FUNCTION +GQLSTATUS +GRANT +INSTANT +INFINITY_KW +NUMBER +NUMERIC +ON +OPEN +PARTITION +PROCEDURE +PRODUCT +PROJECT +QUERY +RECORDS +REFERENCE +RENAME +REVOKE +SUBSTRING +SYSTEM_USER +TEMPORAL +UNIQUE +UNIT +VALUES +ACYCLIC +BINDING +BINDINGS +CONNECTING +DESTINATION +DIFFERENT +DIRECTED +EDGE +EDGES +ELEMENT +ELEMENTS +FIRST +GRAPH +GROUPS +KEEP +LABEL +LABELED +LABELS +LAST +NFC +NFD +NFKC +NFKD +NO +NODE +NORMALIZED +ONLY +ORDINALITY +PROPERTY +READ +RELATIONSHIP +RELATIONSHIPS +REPEATABLE +SHORTEST +SIMPLE +SOURCE +TABLE +TO +TRAIL +TRANSACTION +TYPE +UNDIRECTED +VERTEX +WALK +WITHOUT +WRITE +ZONE +REGULAR_IDENTIFIER +SUBSTITUTED_PARAMETER_REFERENCE +GENERAL_PARAMETER_REFERENCE +MULTISET_ALTERNATION_OPERATOR +BRACKET_RIGHT_ARROW +BRACKET_TILDE_RIGHT_ARROW +CONCATENATION_OPERATOR +DOUBLE_COLON +DOUBLE_DOLLAR_SIGN +DOUBLE_PERIOD +GREATER_THAN_OR_EQUALS_OPERATOR +LEFT_ARROW +LEFT_ARROW_TILDE +LEFT_ARROW_BRACKET +LEFT_ARROW_TILDE_BRACKET +LEFT_MINUS_RIGHT +LEFT_MINUS_SLASH +LEFT_TILDE_SLASH +LESS_THAN_OR_EQUALS_OPERATOR +MINUS_LEFT_BRACKET +MINUS_SLASH +NOT_EQUALS_OPERATOR +RIGHT_ARROW +RIGHT_BRACKET_MINUS +RIGHT_BRACKET_TILDE +RIGHT_DOUBLE_ARROW +SLASH_MINUS +SLASH_MINUS_RIGHT +SLASH_TILDE +SLASH_TILDE_RIGHT +TILDE_LEFT_BRACKET +TILDE_RIGHT_ARROW +TILDE_SLASH +AMPERSAND +ASTERISK +COLON +COMMA +COMMERCIAL_AT +DOLLAR_SIGN +DOUBLE_QUOTE +EQUALS_OPERATOR +EXCLAMATION_MARK +RIGHT_ANGLE_BRACKET +GRAVE_ACCENT +LEFT_BRACE +LEFT_BRACKET +LEFT_PAREN +LEFT_ANGLE_BRACKET +MINUS_SIGN +PERCENT +PERIOD +PLUS_SIGN +QUESTION_MARK +QUOTE +REVERSE_SOLIDUS +RIGHT_BRACE +RIGHT_BRACKET +RIGHT_PAREN +SOLIDUS +TILDE +UNDERSCORE +VERTICAL_BAR +SP +WHITESPACE +BRACKETED_COMMENT +SIMPLE_COMMENT_SOLIDUS +SIMPLE_COMMENT_MINUS + +rule names: +IMPLIES +PARAMETER_NAME +BOOLEAN_LITERAL +SINGLE_QUOTED_CHARACTER_SEQUENCE +DOUBLE_QUOTED_CHARACTER_SEQUENCE +ACCENT_QUOTED_CHARACTER_SEQUENCE +NO_ESCAPE +UNBROKEN_SINGLE_QUOTED_CHARACTER_SEQUENCE +UNBROKEN_DOUBLE_QUOTED_CHARACTER_SEQUENCE +UNBROKEN_ACCENT_QUOTED_CHARACTER_SEQUENCE +SINGLE_QUOTED_CHARACTER_REPRESENTATION +DOUBLE_QUOTED_CHARACTER_REPRESENTATION +ACCENT_QUOTED_CHARACTER_REPRESENTATION +ESCAPED_CHARACTER +ESCAPED_REVERSE_SOLIDUS +ESCAPED_QUOTE +ESCAPED_DOUBLE_QUOTE +ESCAPED_GRAVE_ACCENT +ESCAPED_TAB +ESCAPED_BACKSPACE +ESCAPED_NEW_LINE +ESCAPED_CARRIAGE_RETURN +ESCAPED_FORM_FEED +ESCAPED_UNICODE4_DIGIT_VALUE +ESCAPED_UNICODE6_DIGIT_VALUE +START_UNICODE4 +START_UNICODE6 +BYTE_STRING_LITERAL +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX +UNSIGNED_DECIMAL_INTEGER +EXACT_NUMBER_SUFFIX +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION +MANTISSA +EXPONENT +UNSIGNED_DECIMAL_IN_COMMON_NOTATION +SIGNED_DECIMAL_INTEGER +UNSIGNED_HEXADECIMAL_INTEGER +START_HEX +UNSIGNED_OCTAL_INTEGER +START_OCTAL +UNSIGNED_BINARY_INTEGER +START_BIN +APPROXIMATE_NUMBER_SUFFIX +ABS +ACOS +ALL +ALL_DIFFERENT +AND +ANY +ARRAY +AS +ASC +ASCENDING +ASIN +AT +ATAN +AVG +BIG +BIGINT +BINARY +BOOL +BOOLEAN +BOTH +BTRIM +BY +BYTE_LENGTH +BYTES +CALL +CARDINALITY +CASE +CAST +CEIL +CEILING +CHAR +CHAR_LENGTH +CHARACTER_LENGTH +CHARACTERISTICS +CLOSE +COALESCE +COLLECT_LIST +COMMIT +COPY +COS +COSH +COT +COUNT +CREATE +CURRENT_DATE +CURRENT_GRAPH +CURRENT_PROPERTY_GRAPH +CURRENT_SCHEMA +CURRENT_TIME +CURRENT_TIMESTAMP +DATE +DATETIME +DAY +DEC +DECIMAL +DEGREES +DELETE +DESC +DESCENDING +DETACH +DISTINCT +DOUBLE +DROP +DURATION +DURATION_BETWEEN +ELEMENT_ID +ELSE +END +EXCEPT +EXISTS +EXP +FILTER +FINISH +FLOAT +FLOAT16 +FLOAT32 +FLOAT64 +FLOAT128 +FLOAT256 +FLOOR +FOR +FROM +GROUP +HAVING +HOME_GRAPH +HOME_PROPERTY_GRAPH +HOME_SCHEMA +HOUR +IF +IN +INSERT +INT +INTEGER +INT8 +INTEGER8 +INT16 +INTEGER16 +INT32 +INTEGER32 +INT64 +INTEGER64 +INT128 +INTEGER128 +INT256 +INTEGER256 +INTERSECT +INTERVAL +IS +LEADING +LEFT +LET +LIKE +LIMIT +LIST +LN +LOCAL +LOCAL_DATETIME +LOCAL_TIME +LOCAL_TIMESTAMP +LOG_KW +LOG10 +LOWER +LTRIM +MATCH +MAX +MIN +MINUTE +MOD +MONTH +NEXT +NODETACH +NORMALIZE +NOT +NOTHING +NULL_KW +NULLS +NULLIF +OCTET_LENGTH +OF +OFFSET +OPTIONAL +OR +ORDER +OTHERWISE +PARAMETER +PARAMETERS +PATH +PATH_LENGTH +PATHS +PERCENTILE_CONT +PERCENTILE_DISC +POWER +PRECISION +PROPERTY_EXISTS +RADIANS +REAL +RECORD +REMOVE +REPLACE +RESET +RETURN +RIGHT +ROLLBACK +RTRIM +SAME +SCHEMA +SECOND +SELECT +SESSION +SESSION_USER +SET +SIGNED +SIN +SINH +SIZE +SKIP_RESERVED_WORD +SMALL +SMALLINT +SQRT +START +STDDEV_POP +STDDEV_SAMP +STRING +SUM +TAN +TANH +THEN +TIME +TIMESTAMP +TRAILING +TRIM +TYPED +UBIGINT +UINT +UINT8 +UINT16 +UINT32 +UINT64 +UINT128 +UINT256 +UNION +UNSIGNED +UPPER +USE +USMALLINT +VALUE +VARBINARY +VARCHAR +VARIABLE +WHEN +WHERE +WITH +XOR +YEAR +YIELD +ZONED +ZONED_DATETIME +ZONED_TIME +ABSTRACT +AGGREGATE +AGGREGATES +ALTER +CATALOG +CLEAR +CLONE +CONSTRAINT +CURRENT_ROLE +CURRENT_USER +DATA +DIRECTORY +DRYRUN +EXACT +EXISTING +FUNCTION +GQLSTATUS +GRANT +INSTANT +INFINITY_KW +NUMBER +NUMERIC +ON +OPEN +PARTITION +PROCEDURE +PRODUCT +PROJECT +QUERY +RECORDS +REFERENCE +RENAME +REVOKE +SUBSTRING +SYSTEM_USER +TEMPORAL +UNIQUE +UNIT +VALUES +ACYCLIC +BINDING +BINDINGS +CONNECTING +DESTINATION +DIFFERENT +DIRECTED +EDGE +EDGES +ELEMENT +ELEMENTS +FIRST +GRAPH +GROUPS +KEEP +LABEL +LABELED +LABELS +LAST +NFC +NFD +NFKC +NFKD +NO +NODE +NORMALIZED +ONLY +ORDINALITY +PROPERTY +READ +RELATIONSHIP +RELATIONSHIPS +REPEATABLE +SHORTEST +SIMPLE +SOURCE +TABLE +TO +TRAIL +TRANSACTION +TYPE +UNDIRECTED +VERTEX +WALK +WITHOUT +WRITE +ZONE +SEPARATED_IDENTIFIER +REGULAR_IDENTIFIER +EXTENDED_IDENTIFIER +DELIMITED_IDENTIFIER +SUBSTITUTED_PARAMETER_REFERENCE +GENERAL_PARAMETER_REFERENCE +IDENTIFIER_START +IDENTIFIER_EXTEND +ID_Start +ID_Continue +MULTISET_ALTERNATION_OPERATOR +BRACKET_RIGHT_ARROW +BRACKET_TILDE_RIGHT_ARROW +CONCATENATION_OPERATOR +DOUBLE_COLON +DOUBLE_DOLLAR_SIGN +DOUBLE_PERIOD +GREATER_THAN_OR_EQUALS_OPERATOR +LEFT_ARROW +LEFT_ARROW_TILDE +LEFT_ARROW_BRACKET +LEFT_ARROW_TILDE_BRACKET +LEFT_MINUS_RIGHT +LEFT_MINUS_SLASH +LEFT_TILDE_SLASH +LESS_THAN_OR_EQUALS_OPERATOR +MINUS_LEFT_BRACKET +MINUS_SLASH +NOT_EQUALS_OPERATOR +RIGHT_ARROW +RIGHT_BRACKET_MINUS +RIGHT_BRACKET_TILDE +RIGHT_DOUBLE_ARROW +SLASH_MINUS +SLASH_MINUS_RIGHT +SLASH_TILDE +SLASH_TILDE_RIGHT +TILDE_LEFT_BRACKET +TILDE_RIGHT_ARROW +TILDE_SLASH +AMPERSAND +ASTERISK +COLON +COMMA +COMMERCIAL_AT +DOLLAR_SIGN +DOUBLE_QUOTE +EQUALS_OPERATOR +EXCLAMATION_MARK +RIGHT_ANGLE_BRACKET +GRAVE_ACCENT +LEFT_BRACE +LEFT_BRACKET +LEFT_PAREN +LEFT_ANGLE_BRACKET +MINUS_SIGN +PERCENT +PERIOD +PLUS_SIGN +QUESTION_MARK +QUOTE +REVERSE_SOLIDUS +RIGHT_BRACE +RIGHT_BRACKET +RIGHT_PAREN +SOLIDUS +TILDE +UNDERSCORE +VERTICAL_BAR +HEX_DIGIT +DIGIT +OCTAL_DIGIT +BINARY_DIGIT +SP +WHITESPACE +BRACKETED_COMMENT +SIMPLE_COMMENT_SOLIDUS +SIMPLE_COMMENT_MINUS +GS +FS +CR +Sc +SPACE +Pc +TAB +LF +VT +US +FF +RS + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 390, 3740, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 898, 8, 0, 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, 3, 2, 918, 8, 2, 1, 3, 3, 3, 921, 8, 3, 1, 3, 1, 3, 1, 4, 3, 4, 926, 8, 4, 1, 4, 1, 4, 1, 5, 3, 5, 931, 8, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 5, 7, 939, 8, 7, 10, 7, 12, 7, 942, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 5, 8, 948, 8, 8, 10, 8, 12, 8, 951, 9, 8, 1, 8, 1, 8, 1, 9, 1, 9, 5, 9, 957, 8, 9, 10, 9, 12, 9, 960, 9, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 4, 10, 968, 8, 10, 11, 10, 12, 10, 969, 1, 11, 1, 11, 1, 11, 1, 11, 4, 11, 976, 8, 11, 11, 11, 12, 11, 977, 1, 12, 1, 12, 1, 12, 1, 12, 4, 12, 984, 8, 12, 11, 12, 12, 12, 985, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 999, 8, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 5, 27, 1051, 8, 27, 10, 27, 12, 27, 1054, 9, 27, 1, 27, 1, 27, 5, 27, 1058, 8, 27, 10, 27, 12, 27, 1061, 9, 27, 1, 27, 1, 27, 5, 27, 1065, 8, 27, 10, 27, 12, 27, 1068, 9, 27, 5, 27, 1070, 8, 27, 10, 27, 12, 27, 1073, 9, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 1101, 8, 36, 1, 36, 5, 36, 1104, 8, 36, 10, 36, 12, 36, 1107, 9, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 1117, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 3, 41, 1124, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1129, 8, 41, 1, 42, 1, 42, 3, 42, 1133, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 3, 43, 1139, 8, 43, 1, 43, 4, 43, 1142, 8, 43, 11, 43, 12, 43, 1143, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1151, 8, 45, 1, 45, 4, 45, 1154, 8, 45, 11, 45, 12, 45, 1155, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1163, 8, 47, 1, 47, 4, 47, 1166, 8, 47, 11, 47, 12, 47, 1167, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 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, 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, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 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, 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, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 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, 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, 82, 1, 82, 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, 83, 1, 83, 1, 83, 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, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 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, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 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, 93, 1, 93, 1, 94, 1, 94, 1, 94, 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, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 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, 98, 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, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 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, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, 353, 1, 353, 1, 354, 1, 354, 3, 354, 3461, 8, 354, 1, 355, 1, 355, 5, 355, 3465, 8, 355, 10, 355, 12, 355, 3468, 9, 355, 1, 356, 4, 356, 3471, 8, 356, 11, 356, 12, 356, 3472, 1, 357, 1, 357, 3, 357, 3477, 8, 357, 1, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 3487, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 363, 1, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 399, 1, 399, 1, 400, 1, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 403, 1, 403, 1, 404, 1, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 407, 1, 407, 1, 408, 1, 408, 1, 409, 1, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 1, 418, 1, 419, 1, 419, 1, 420, 1, 420, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 424, 1, 424, 1, 425, 1, 425, 1, 426, 1, 426, 1, 427, 4, 427, 3662, 8, 427, 11, 427, 12, 427, 3663, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 3, 428, 3679, 8, 428, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 3685, 8, 429, 10, 429, 12, 429, 3688, 9, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 3699, 8, 430, 10, 430, 12, 430, 3702, 9, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, 431, 1, 431, 5, 431, 3710, 8, 431, 10, 431, 12, 431, 3713, 9, 431, 1, 431, 1, 431, 1, 432, 1, 432, 1, 433, 1, 433, 1, 434, 1, 434, 1, 435, 1, 435, 1, 436, 1, 436, 1, 437, 1, 437, 1, 438, 1, 438, 1, 439, 1, 439, 1, 440, 1, 440, 1, 441, 1, 441, 1, 442, 1, 442, 1, 443, 1, 443, 1, 3686, 0, 444, 1, 1, 3, 0, 5, 2, 7, 3, 9, 4, 11, 5, 13, 6, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 35, 0, 37, 0, 39, 0, 41, 0, 43, 0, 45, 0, 47, 0, 49, 0, 51, 0, 53, 0, 55, 7, 57, 8, 59, 9, 61, 10, 63, 11, 65, 12, 67, 13, 69, 14, 71, 15, 73, 16, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 17, 89, 0, 91, 18, 93, 0, 95, 19, 97, 0, 99, 0, 101, 20, 103, 21, 105, 22, 107, 23, 109, 24, 111, 25, 113, 26, 115, 27, 117, 28, 119, 29, 121, 30, 123, 31, 125, 32, 127, 33, 129, 34, 131, 35, 133, 36, 135, 37, 137, 38, 139, 39, 141, 40, 143, 41, 145, 42, 147, 43, 149, 44, 151, 45, 153, 46, 155, 47, 157, 48, 159, 49, 161, 50, 163, 51, 165, 52, 167, 53, 169, 54, 171, 55, 173, 56, 175, 57, 177, 58, 179, 59, 181, 60, 183, 61, 185, 62, 187, 63, 189, 64, 191, 65, 193, 66, 195, 67, 197, 68, 199, 69, 201, 70, 203, 71, 205, 72, 207, 73, 209, 74, 211, 75, 213, 76, 215, 77, 217, 78, 219, 79, 221, 80, 223, 81, 225, 82, 227, 83, 229, 84, 231, 85, 233, 86, 235, 87, 237, 88, 239, 89, 241, 90, 243, 91, 245, 92, 247, 93, 249, 94, 251, 95, 253, 96, 255, 97, 257, 98, 259, 99, 261, 100, 263, 101, 265, 102, 267, 103, 269, 104, 271, 105, 273, 106, 275, 107, 277, 108, 279, 109, 281, 110, 283, 111, 285, 112, 287, 113, 289, 114, 291, 115, 293, 116, 295, 117, 297, 118, 299, 119, 301, 120, 303, 121, 305, 122, 307, 123, 309, 124, 311, 125, 313, 126, 315, 127, 317, 128, 319, 129, 321, 130, 323, 131, 325, 132, 327, 133, 329, 134, 331, 135, 333, 136, 335, 137, 337, 138, 339, 139, 341, 140, 343, 141, 345, 142, 347, 143, 349, 144, 351, 145, 353, 146, 355, 147, 357, 148, 359, 149, 361, 150, 363, 151, 365, 152, 367, 153, 369, 154, 371, 155, 373, 156, 375, 157, 377, 158, 379, 159, 381, 160, 383, 161, 385, 162, 387, 163, 389, 164, 391, 165, 393, 166, 395, 167, 397, 168, 399, 169, 401, 170, 403, 171, 405, 172, 407, 173, 409, 174, 411, 175, 413, 176, 415, 177, 417, 178, 419, 179, 421, 180, 423, 181, 425, 182, 427, 183, 429, 184, 431, 185, 433, 186, 435, 187, 437, 188, 439, 189, 441, 190, 443, 191, 445, 192, 447, 193, 449, 194, 451, 195, 453, 196, 455, 197, 457, 198, 459, 199, 461, 200, 463, 201, 465, 202, 467, 203, 469, 204, 471, 205, 473, 206, 475, 207, 477, 208, 479, 209, 481, 210, 483, 211, 485, 212, 487, 213, 489, 214, 491, 215, 493, 216, 495, 217, 497, 218, 499, 219, 501, 220, 503, 221, 505, 222, 507, 223, 509, 224, 511, 225, 513, 226, 515, 227, 517, 228, 519, 229, 521, 230, 523, 231, 525, 232, 527, 233, 529, 234, 531, 235, 533, 236, 535, 237, 537, 238, 539, 239, 541, 240, 543, 241, 545, 242, 547, 243, 549, 244, 551, 245, 553, 246, 555, 247, 557, 248, 559, 249, 561, 250, 563, 251, 565, 252, 567, 253, 569, 254, 571, 255, 573, 256, 575, 257, 577, 258, 579, 259, 581, 260, 583, 261, 585, 262, 587, 263, 589, 264, 591, 265, 593, 266, 595, 267, 597, 268, 599, 269, 601, 270, 603, 271, 605, 272, 607, 273, 609, 274, 611, 275, 613, 276, 615, 277, 617, 278, 619, 279, 621, 280, 623, 281, 625, 282, 627, 283, 629, 284, 631, 285, 633, 286, 635, 287, 637, 288, 639, 289, 641, 290, 643, 291, 645, 292, 647, 293, 649, 294, 651, 295, 653, 296, 655, 297, 657, 298, 659, 299, 661, 300, 663, 301, 665, 302, 667, 303, 669, 304, 671, 305, 673, 306, 675, 307, 677, 308, 679, 309, 681, 310, 683, 311, 685, 312, 687, 313, 689, 314, 691, 315, 693, 316, 695, 317, 697, 318, 699, 319, 701, 320, 703, 321, 705, 322, 707, 323, 709, 0, 711, 324, 713, 0, 715, 0, 717, 325, 719, 326, 721, 0, 723, 0, 725, 0, 727, 0, 729, 327, 731, 328, 733, 329, 735, 330, 737, 331, 739, 332, 741, 333, 743, 334, 745, 335, 747, 336, 749, 337, 751, 338, 753, 339, 755, 340, 757, 341, 759, 342, 761, 343, 763, 344, 765, 345, 767, 346, 769, 347, 771, 348, 773, 349, 775, 350, 777, 351, 779, 352, 781, 353, 783, 354, 785, 355, 787, 356, 789, 357, 791, 358, 793, 359, 795, 360, 797, 361, 799, 362, 801, 363, 803, 364, 805, 365, 807, 366, 809, 367, 811, 368, 813, 369, 815, 370, 817, 371, 819, 372, 821, 373, 823, 374, 825, 375, 827, 376, 829, 377, 831, 378, 833, 379, 835, 380, 837, 381, 839, 382, 841, 383, 843, 384, 845, 385, 847, 0, 849, 0, 851, 0, 853, 0, 855, 386, 857, 387, 859, 388, 861, 389, 863, 390, 865, 0, 867, 0, 869, 0, 871, 0, 873, 0, 875, 0, 877, 0, 879, 0, 881, 0, 883, 0, 885, 0, 887, 0, 1, 0, 50, 2, 0, 73, 73, 105, 105, 2, 0, 77, 77, 109, 109, 2, 0, 80, 80, 112, 112, 2, 0, 76, 76, 108, 108, 2, 0, 69, 69, 101, 101, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, 114, 114, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 65, 65, 97, 97, 2, 0, 78, 78, 110, 110, 2, 0, 75, 75, 107, 107, 2, 0, 79, 79, 111, 111, 2, 0, 87, 87, 119, 119, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 92, 92, 96, 96, 2, 0, 88, 88, 120, 120, 4, 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 89, 89, 121, 121, 2, 0, 71, 71, 103, 103, 2, 0, 86, 86, 118, 118, 2, 0, 72, 72, 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, 81, 81, 113, 113, 2, 0, 74, 74, 106, 106, 659, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 768, 0, 48, 57, 65, 90, 95, 95, 97, 122, 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 201552, 205743, 917760, 917999, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 1, 0, 48, 55, 1, 0, 48, 49, 8, 0, 160, 160, 5760, 5760, 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, 2, 0, 10, 10, 13, 13, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8384, 43064, 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, 9, 9, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 1, 0, 12, 12, 1, 0, 30, 30, 3749, 0, 1, 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, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 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, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 717, 1, 0, 0, 0, 0, 719, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, 0, 0, 0, 1, 897, 1, 0, 0, 0, 3, 899, 1, 0, 0, 0, 5, 917, 1, 0, 0, 0, 7, 920, 1, 0, 0, 0, 9, 925, 1, 0, 0, 0, 11, 930, 1, 0, 0, 0, 13, 934, 1, 0, 0, 0, 15, 936, 1, 0, 0, 0, 17, 945, 1, 0, 0, 0, 19, 954, 1, 0, 0, 0, 21, 967, 1, 0, 0, 0, 23, 975, 1, 0, 0, 0, 25, 983, 1, 0, 0, 0, 27, 998, 1, 0, 0, 0, 29, 1000, 1, 0, 0, 0, 31, 1003, 1, 0, 0, 0, 33, 1006, 1, 0, 0, 0, 35, 1009, 1, 0, 0, 0, 37, 1012, 1, 0, 0, 0, 39, 1015, 1, 0, 0, 0, 41, 1018, 1, 0, 0, 0, 43, 1021, 1, 0, 0, 0, 45, 1024, 1, 0, 0, 0, 47, 1027, 1, 0, 0, 0, 49, 1033, 1, 0, 0, 0, 51, 1041, 1, 0, 0, 0, 53, 1044, 1, 0, 0, 0, 55, 1047, 1, 0, 0, 0, 57, 1076, 1, 0, 0, 0, 59, 1079, 1, 0, 0, 0, 61, 1081, 1, 0, 0, 0, 63, 1084, 1, 0, 0, 0, 65, 1087, 1, 0, 0, 0, 67, 1089, 1, 0, 0, 0, 69, 1092, 1, 0, 0, 0, 71, 1095, 1, 0, 0, 0, 73, 1098, 1, 0, 0, 0, 75, 1108, 1, 0, 0, 0, 77, 1110, 1, 0, 0, 0, 79, 1116, 1, 0, 0, 0, 81, 1118, 1, 0, 0, 0, 83, 1128, 1, 0, 0, 0, 85, 1132, 1, 0, 0, 0, 87, 1136, 1, 0, 0, 0, 89, 1145, 1, 0, 0, 0, 91, 1148, 1, 0, 0, 0, 93, 1157, 1, 0, 0, 0, 95, 1160, 1, 0, 0, 0, 97, 1169, 1, 0, 0, 0, 99, 1172, 1, 0, 0, 0, 101, 1174, 1, 0, 0, 0, 103, 1178, 1, 0, 0, 0, 105, 1183, 1, 0, 0, 0, 107, 1187, 1, 0, 0, 0, 109, 1201, 1, 0, 0, 0, 111, 1205, 1, 0, 0, 0, 113, 1209, 1, 0, 0, 0, 115, 1215, 1, 0, 0, 0, 117, 1218, 1, 0, 0, 0, 119, 1222, 1, 0, 0, 0, 121, 1232, 1, 0, 0, 0, 123, 1237, 1, 0, 0, 0, 125, 1240, 1, 0, 0, 0, 127, 1245, 1, 0, 0, 0, 129, 1249, 1, 0, 0, 0, 131, 1253, 1, 0, 0, 0, 133, 1260, 1, 0, 0, 0, 135, 1267, 1, 0, 0, 0, 137, 1272, 1, 0, 0, 0, 139, 1280, 1, 0, 0, 0, 141, 1285, 1, 0, 0, 0, 143, 1291, 1, 0, 0, 0, 145, 1294, 1, 0, 0, 0, 147, 1306, 1, 0, 0, 0, 149, 1312, 1, 0, 0, 0, 151, 1317, 1, 0, 0, 0, 153, 1329, 1, 0, 0, 0, 155, 1334, 1, 0, 0, 0, 157, 1339, 1, 0, 0, 0, 159, 1344, 1, 0, 0, 0, 161, 1352, 1, 0, 0, 0, 163, 1357, 1, 0, 0, 0, 165, 1369, 1, 0, 0, 0, 167, 1386, 1, 0, 0, 0, 169, 1402, 1, 0, 0, 0, 171, 1408, 1, 0, 0, 0, 173, 1417, 1, 0, 0, 0, 175, 1430, 1, 0, 0, 0, 177, 1437, 1, 0, 0, 0, 179, 1442, 1, 0, 0, 0, 181, 1446, 1, 0, 0, 0, 183, 1451, 1, 0, 0, 0, 185, 1455, 1, 0, 0, 0, 187, 1461, 1, 0, 0, 0, 189, 1468, 1, 0, 0, 0, 191, 1481, 1, 0, 0, 0, 193, 1495, 1, 0, 0, 0, 195, 1518, 1, 0, 0, 0, 197, 1533, 1, 0, 0, 0, 199, 1546, 1, 0, 0, 0, 201, 1564, 1, 0, 0, 0, 203, 1569, 1, 0, 0, 0, 205, 1578, 1, 0, 0, 0, 207, 1582, 1, 0, 0, 0, 209, 1586, 1, 0, 0, 0, 211, 1594, 1, 0, 0, 0, 213, 1602, 1, 0, 0, 0, 215, 1609, 1, 0, 0, 0, 217, 1614, 1, 0, 0, 0, 219, 1625, 1, 0, 0, 0, 221, 1632, 1, 0, 0, 0, 223, 1641, 1, 0, 0, 0, 225, 1648, 1, 0, 0, 0, 227, 1653, 1, 0, 0, 0, 229, 1662, 1, 0, 0, 0, 231, 1679, 1, 0, 0, 0, 233, 1690, 1, 0, 0, 0, 235, 1695, 1, 0, 0, 0, 237, 1699, 1, 0, 0, 0, 239, 1706, 1, 0, 0, 0, 241, 1713, 1, 0, 0, 0, 243, 1717, 1, 0, 0, 0, 245, 1724, 1, 0, 0, 0, 247, 1731, 1, 0, 0, 0, 249, 1737, 1, 0, 0, 0, 251, 1745, 1, 0, 0, 0, 253, 1753, 1, 0, 0, 0, 255, 1761, 1, 0, 0, 0, 257, 1770, 1, 0, 0, 0, 259, 1779, 1, 0, 0, 0, 261, 1785, 1, 0, 0, 0, 263, 1789, 1, 0, 0, 0, 265, 1794, 1, 0, 0, 0, 267, 1800, 1, 0, 0, 0, 269, 1807, 1, 0, 0, 0, 271, 1818, 1, 0, 0, 0, 273, 1838, 1, 0, 0, 0, 275, 1850, 1, 0, 0, 0, 277, 1855, 1, 0, 0, 0, 279, 1858, 1, 0, 0, 0, 281, 1861, 1, 0, 0, 0, 283, 1868, 1, 0, 0, 0, 285, 1872, 1, 0, 0, 0, 287, 1880, 1, 0, 0, 0, 289, 1885, 1, 0, 0, 0, 291, 1894, 1, 0, 0, 0, 293, 1900, 1, 0, 0, 0, 295, 1910, 1, 0, 0, 0, 297, 1916, 1, 0, 0, 0, 299, 1926, 1, 0, 0, 0, 301, 1932, 1, 0, 0, 0, 303, 1942, 1, 0, 0, 0, 305, 1949, 1, 0, 0, 0, 307, 1960, 1, 0, 0, 0, 309, 1967, 1, 0, 0, 0, 311, 1978, 1, 0, 0, 0, 313, 1988, 1, 0, 0, 0, 315, 1997, 1, 0, 0, 0, 317, 2000, 1, 0, 0, 0, 319, 2008, 1, 0, 0, 0, 321, 2013, 1, 0, 0, 0, 323, 2017, 1, 0, 0, 0, 325, 2022, 1, 0, 0, 0, 327, 2028, 1, 0, 0, 0, 329, 2033, 1, 0, 0, 0, 331, 2036, 1, 0, 0, 0, 333, 2042, 1, 0, 0, 0, 335, 2057, 1, 0, 0, 0, 337, 2068, 1, 0, 0, 0, 339, 2084, 1, 0, 0, 0, 341, 2088, 1, 0, 0, 0, 343, 2094, 1, 0, 0, 0, 345, 2100, 1, 0, 0, 0, 347, 2106, 1, 0, 0, 0, 349, 2112, 1, 0, 0, 0, 351, 2116, 1, 0, 0, 0, 353, 2120, 1, 0, 0, 0, 355, 2127, 1, 0, 0, 0, 357, 2131, 1, 0, 0, 0, 359, 2137, 1, 0, 0, 0, 361, 2142, 1, 0, 0, 0, 363, 2151, 1, 0, 0, 0, 365, 2161, 1, 0, 0, 0, 367, 2165, 1, 0, 0, 0, 369, 2173, 1, 0, 0, 0, 371, 2178, 1, 0, 0, 0, 373, 2184, 1, 0, 0, 0, 375, 2191, 1, 0, 0, 0, 377, 2204, 1, 0, 0, 0, 379, 2207, 1, 0, 0, 0, 381, 2214, 1, 0, 0, 0, 383, 2223, 1, 0, 0, 0, 385, 2226, 1, 0, 0, 0, 387, 2232, 1, 0, 0, 0, 389, 2242, 1, 0, 0, 0, 391, 2252, 1, 0, 0, 0, 393, 2263, 1, 0, 0, 0, 395, 2268, 1, 0, 0, 0, 397, 2280, 1, 0, 0, 0, 399, 2286, 1, 0, 0, 0, 401, 2302, 1, 0, 0, 0, 403, 2318, 1, 0, 0, 0, 405, 2324, 1, 0, 0, 0, 407, 2334, 1, 0, 0, 0, 409, 2350, 1, 0, 0, 0, 411, 2358, 1, 0, 0, 0, 413, 2363, 1, 0, 0, 0, 415, 2370, 1, 0, 0, 0, 417, 2377, 1, 0, 0, 0, 419, 2385, 1, 0, 0, 0, 421, 2391, 1, 0, 0, 0, 423, 2398, 1, 0, 0, 0, 425, 2404, 1, 0, 0, 0, 427, 2413, 1, 0, 0, 0, 429, 2419, 1, 0, 0, 0, 431, 2424, 1, 0, 0, 0, 433, 2431, 1, 0, 0, 0, 435, 2438, 1, 0, 0, 0, 437, 2445, 1, 0, 0, 0, 439, 2453, 1, 0, 0, 0, 441, 2466, 1, 0, 0, 0, 443, 2470, 1, 0, 0, 0, 445, 2477, 1, 0, 0, 0, 447, 2481, 1, 0, 0, 0, 449, 2486, 1, 0, 0, 0, 451, 2491, 1, 0, 0, 0, 453, 2496, 1, 0, 0, 0, 455, 2502, 1, 0, 0, 0, 457, 2511, 1, 0, 0, 0, 459, 2516, 1, 0, 0, 0, 461, 2522, 1, 0, 0, 0, 463, 2533, 1, 0, 0, 0, 465, 2545, 1, 0, 0, 0, 467, 2552, 1, 0, 0, 0, 469, 2556, 1, 0, 0, 0, 471, 2560, 1, 0, 0, 0, 473, 2565, 1, 0, 0, 0, 475, 2570, 1, 0, 0, 0, 477, 2575, 1, 0, 0, 0, 479, 2585, 1, 0, 0, 0, 481, 2594, 1, 0, 0, 0, 483, 2599, 1, 0, 0, 0, 485, 2605, 1, 0, 0, 0, 487, 2613, 1, 0, 0, 0, 489, 2618, 1, 0, 0, 0, 491, 2624, 1, 0, 0, 0, 493, 2631, 1, 0, 0, 0, 495, 2638, 1, 0, 0, 0, 497, 2645, 1, 0, 0, 0, 499, 2653, 1, 0, 0, 0, 501, 2661, 1, 0, 0, 0, 503, 2667, 1, 0, 0, 0, 505, 2676, 1, 0, 0, 0, 507, 2682, 1, 0, 0, 0, 509, 2686, 1, 0, 0, 0, 511, 2696, 1, 0, 0, 0, 513, 2702, 1, 0, 0, 0, 515, 2712, 1, 0, 0, 0, 517, 2720, 1, 0, 0, 0, 519, 2729, 1, 0, 0, 0, 521, 2734, 1, 0, 0, 0, 523, 2740, 1, 0, 0, 0, 525, 2745, 1, 0, 0, 0, 527, 2749, 1, 0, 0, 0, 529, 2754, 1, 0, 0, 0, 531, 2760, 1, 0, 0, 0, 533, 2766, 1, 0, 0, 0, 535, 2781, 1, 0, 0, 0, 537, 2792, 1, 0, 0, 0, 539, 2801, 1, 0, 0, 0, 541, 2811, 1, 0, 0, 0, 543, 2822, 1, 0, 0, 0, 545, 2828, 1, 0, 0, 0, 547, 2836, 1, 0, 0, 0, 549, 2842, 1, 0, 0, 0, 551, 2848, 1, 0, 0, 0, 553, 2859, 1, 0, 0, 0, 555, 2872, 1, 0, 0, 0, 557, 2885, 1, 0, 0, 0, 559, 2890, 1, 0, 0, 0, 561, 2900, 1, 0, 0, 0, 563, 2907, 1, 0, 0, 0, 565, 2913, 1, 0, 0, 0, 567, 2922, 1, 0, 0, 0, 569, 2931, 1, 0, 0, 0, 571, 2941, 1, 0, 0, 0, 573, 2947, 1, 0, 0, 0, 575, 2955, 1, 0, 0, 0, 577, 2964, 1, 0, 0, 0, 579, 2971, 1, 0, 0, 0, 581, 2979, 1, 0, 0, 0, 583, 2982, 1, 0, 0, 0, 585, 2987, 1, 0, 0, 0, 587, 2997, 1, 0, 0, 0, 589, 3007, 1, 0, 0, 0, 591, 3015, 1, 0, 0, 0, 593, 3023, 1, 0, 0, 0, 595, 3029, 1, 0, 0, 0, 597, 3037, 1, 0, 0, 0, 599, 3047, 1, 0, 0, 0, 601, 3054, 1, 0, 0, 0, 603, 3061, 1, 0, 0, 0, 605, 3071, 1, 0, 0, 0, 607, 3083, 1, 0, 0, 0, 609, 3092, 1, 0, 0, 0, 611, 3099, 1, 0, 0, 0, 613, 3104, 1, 0, 0, 0, 615, 3111, 1, 0, 0, 0, 617, 3119, 1, 0, 0, 0, 619, 3127, 1, 0, 0, 0, 621, 3136, 1, 0, 0, 0, 623, 3147, 1, 0, 0, 0, 625, 3159, 1, 0, 0, 0, 627, 3169, 1, 0, 0, 0, 629, 3178, 1, 0, 0, 0, 631, 3183, 1, 0, 0, 0, 633, 3189, 1, 0, 0, 0, 635, 3197, 1, 0, 0, 0, 637, 3206, 1, 0, 0, 0, 639, 3212, 1, 0, 0, 0, 641, 3218, 1, 0, 0, 0, 643, 3225, 1, 0, 0, 0, 645, 3230, 1, 0, 0, 0, 647, 3236, 1, 0, 0, 0, 649, 3244, 1, 0, 0, 0, 651, 3251, 1, 0, 0, 0, 653, 3256, 1, 0, 0, 0, 655, 3260, 1, 0, 0, 0, 657, 3264, 1, 0, 0, 0, 659, 3269, 1, 0, 0, 0, 661, 3274, 1, 0, 0, 0, 663, 3277, 1, 0, 0, 0, 665, 3282, 1, 0, 0, 0, 667, 3293, 1, 0, 0, 0, 669, 3298, 1, 0, 0, 0, 671, 3309, 1, 0, 0, 0, 673, 3318, 1, 0, 0, 0, 675, 3323, 1, 0, 0, 0, 677, 3336, 1, 0, 0, 0, 679, 3350, 1, 0, 0, 0, 681, 3361, 1, 0, 0, 0, 683, 3370, 1, 0, 0, 0, 685, 3377, 1, 0, 0, 0, 687, 3384, 1, 0, 0, 0, 689, 3390, 1, 0, 0, 0, 691, 3393, 1, 0, 0, 0, 693, 3399, 1, 0, 0, 0, 695, 3411, 1, 0, 0, 0, 697, 3416, 1, 0, 0, 0, 699, 3427, 1, 0, 0, 0, 701, 3434, 1, 0, 0, 0, 703, 3439, 1, 0, 0, 0, 705, 3447, 1, 0, 0, 0, 707, 3453, 1, 0, 0, 0, 709, 3460, 1, 0, 0, 0, 711, 3462, 1, 0, 0, 0, 713, 3470, 1, 0, 0, 0, 715, 3476, 1, 0, 0, 0, 717, 3478, 1, 0, 0, 0, 719, 3481, 1, 0, 0, 0, 721, 3486, 1, 0, 0, 0, 723, 3488, 1, 0, 0, 0, 725, 3490, 1, 0, 0, 0, 727, 3492, 1, 0, 0, 0, 729, 3494, 1, 0, 0, 0, 731, 3498, 1, 0, 0, 0, 733, 3502, 1, 0, 0, 0, 735, 3506, 1, 0, 0, 0, 737, 3509, 1, 0, 0, 0, 739, 3512, 1, 0, 0, 0, 741, 3515, 1, 0, 0, 0, 743, 3518, 1, 0, 0, 0, 745, 3521, 1, 0, 0, 0, 747, 3524, 1, 0, 0, 0, 749, 3527, 1, 0, 0, 0, 751, 3531, 1, 0, 0, 0, 753, 3535, 1, 0, 0, 0, 755, 3539, 1, 0, 0, 0, 757, 3543, 1, 0, 0, 0, 759, 3547, 1, 0, 0, 0, 761, 3550, 1, 0, 0, 0, 763, 3553, 1, 0, 0, 0, 765, 3556, 1, 0, 0, 0, 767, 3559, 1, 0, 0, 0, 769, 3562, 1, 0, 0, 0, 771, 3565, 1, 0, 0, 0, 773, 3568, 1, 0, 0, 0, 775, 3571, 1, 0, 0, 0, 777, 3574, 1, 0, 0, 0, 779, 3578, 1, 0, 0, 0, 781, 3581, 1, 0, 0, 0, 783, 3585, 1, 0, 0, 0, 785, 3588, 1, 0, 0, 0, 787, 3591, 1, 0, 0, 0, 789, 3594, 1, 0, 0, 0, 791, 3596, 1, 0, 0, 0, 793, 3598, 1, 0, 0, 0, 795, 3600, 1, 0, 0, 0, 797, 3602, 1, 0, 0, 0, 799, 3604, 1, 0, 0, 0, 801, 3606, 1, 0, 0, 0, 803, 3608, 1, 0, 0, 0, 805, 3610, 1, 0, 0, 0, 807, 3612, 1, 0, 0, 0, 809, 3614, 1, 0, 0, 0, 811, 3616, 1, 0, 0, 0, 813, 3618, 1, 0, 0, 0, 815, 3620, 1, 0, 0, 0, 817, 3622, 1, 0, 0, 0, 819, 3624, 1, 0, 0, 0, 821, 3626, 1, 0, 0, 0, 823, 3628, 1, 0, 0, 0, 825, 3630, 1, 0, 0, 0, 827, 3632, 1, 0, 0, 0, 829, 3634, 1, 0, 0, 0, 831, 3636, 1, 0, 0, 0, 833, 3638, 1, 0, 0, 0, 835, 3640, 1, 0, 0, 0, 837, 3642, 1, 0, 0, 0, 839, 3644, 1, 0, 0, 0, 841, 3646, 1, 0, 0, 0, 843, 3648, 1, 0, 0, 0, 845, 3650, 1, 0, 0, 0, 847, 3652, 1, 0, 0, 0, 849, 3654, 1, 0, 0, 0, 851, 3656, 1, 0, 0, 0, 853, 3658, 1, 0, 0, 0, 855, 3661, 1, 0, 0, 0, 857, 3678, 1, 0, 0, 0, 859, 3680, 1, 0, 0, 0, 861, 3694, 1, 0, 0, 0, 863, 3705, 1, 0, 0, 0, 865, 3716, 1, 0, 0, 0, 867, 3718, 1, 0, 0, 0, 869, 3720, 1, 0, 0, 0, 871, 3722, 1, 0, 0, 0, 873, 3724, 1, 0, 0, 0, 875, 3726, 1, 0, 0, 0, 877, 3728, 1, 0, 0, 0, 879, 3730, 1, 0, 0, 0, 881, 3732, 1, 0, 0, 0, 883, 3734, 1, 0, 0, 0, 885, 3736, 1, 0, 0, 0, 887, 3738, 1, 0, 0, 0, 889, 898, 3, 773, 386, 0, 890, 891, 7, 0, 0, 0, 891, 892, 7, 1, 0, 0, 892, 893, 7, 2, 0, 0, 893, 894, 7, 3, 0, 0, 894, 895, 7, 0, 0, 0, 895, 896, 7, 4, 0, 0, 896, 898, 7, 5, 0, 0, 897, 889, 1, 0, 0, 0, 897, 890, 1, 0, 0, 0, 898, 2, 1, 0, 0, 0, 899, 900, 3, 709, 354, 0, 900, 4, 1, 0, 0, 0, 901, 902, 7, 6, 0, 0, 902, 903, 7, 7, 0, 0, 903, 904, 7, 8, 0, 0, 904, 918, 7, 4, 0, 0, 905, 906, 7, 9, 0, 0, 906, 907, 7, 10, 0, 0, 907, 908, 7, 3, 0, 0, 908, 909, 7, 5, 0, 0, 909, 918, 7, 4, 0, 0, 910, 911, 7, 8, 0, 0, 911, 912, 7, 11, 0, 0, 912, 913, 7, 12, 0, 0, 913, 914, 7, 11, 0, 0, 914, 915, 7, 13, 0, 0, 915, 916, 7, 14, 0, 0, 916, 918, 7, 11, 0, 0, 917, 901, 1, 0, 0, 0, 917, 905, 1, 0, 0, 0, 917, 910, 1, 0, 0, 0, 918, 6, 1, 0, 0, 0, 919, 921, 3, 13, 6, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 3, 15, 7, 0, 923, 8, 1, 0, 0, 0, 924, 926, 3, 13, 6, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 3, 17, 8, 0, 928, 10, 1, 0, 0, 0, 929, 931, 3, 13, 6, 0, 930, 929, 1, 0, 0, 0, 930, 931, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 933, 3, 19, 9, 0, 933, 12, 1, 0, 0, 0, 934, 935, 3, 797, 398, 0, 935, 14, 1, 0, 0, 0, 936, 940, 3, 829, 414, 0, 937, 939, 3, 21, 10, 0, 938, 937, 1, 0, 0, 0, 939, 942, 1, 0, 0, 0, 940, 938, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 943, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 943, 944, 3, 829, 414, 0, 944, 16, 1, 0, 0, 0, 945, 949, 3, 801, 400, 0, 946, 948, 3, 23, 11, 0, 947, 946, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 952, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 953, 3, 801, 400, 0, 953, 18, 1, 0, 0, 0, 954, 958, 3, 809, 404, 0, 955, 957, 3, 25, 12, 0, 956, 955, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 961, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 962, 3, 809, 404, 0, 962, 20, 1, 0, 0, 0, 963, 968, 3, 27, 13, 0, 964, 968, 8, 15, 0, 0, 965, 966, 5, 39, 0, 0, 966, 968, 5, 39, 0, 0, 967, 963, 1, 0, 0, 0, 967, 964, 1, 0, 0, 0, 967, 965, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 967, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 22, 1, 0, 0, 0, 971, 976, 3, 27, 13, 0, 972, 976, 8, 16, 0, 0, 973, 974, 5, 34, 0, 0, 974, 976, 5, 34, 0, 0, 975, 971, 1, 0, 0, 0, 975, 972, 1, 0, 0, 0, 975, 973, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 975, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 24, 1, 0, 0, 0, 979, 984, 3, 27, 13, 0, 980, 984, 8, 17, 0, 0, 981, 982, 5, 96, 0, 0, 982, 984, 5, 96, 0, 0, 983, 979, 1, 0, 0, 0, 983, 980, 1, 0, 0, 0, 983, 981, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 983, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 26, 1, 0, 0, 0, 987, 999, 3, 29, 14, 0, 988, 999, 3, 31, 15, 0, 989, 999, 3, 33, 16, 0, 990, 999, 3, 35, 17, 0, 991, 999, 3, 37, 18, 0, 992, 999, 3, 39, 19, 0, 993, 999, 3, 41, 20, 0, 994, 999, 3, 43, 21, 0, 995, 999, 3, 45, 22, 0, 996, 999, 3, 47, 23, 0, 997, 999, 3, 49, 24, 0, 998, 987, 1, 0, 0, 0, 998, 988, 1, 0, 0, 0, 998, 989, 1, 0, 0, 0, 998, 990, 1, 0, 0, 0, 998, 991, 1, 0, 0, 0, 998, 992, 1, 0, 0, 0, 998, 993, 1, 0, 0, 0, 998, 994, 1, 0, 0, 0, 998, 995, 1, 0, 0, 0, 998, 996, 1, 0, 0, 0, 998, 997, 1, 0, 0, 0, 999, 28, 1, 0, 0, 0, 1000, 1001, 3, 831, 415, 0, 1001, 1002, 3, 831, 415, 0, 1002, 30, 1, 0, 0, 0, 1003, 1004, 3, 831, 415, 0, 1004, 1005, 3, 829, 414, 0, 1005, 32, 1, 0, 0, 0, 1006, 1007, 3, 831, 415, 0, 1007, 1008, 3, 801, 400, 0, 1008, 34, 1, 0, 0, 0, 1009, 1010, 3, 831, 415, 0, 1010, 1011, 3, 809, 404, 0, 1011, 36, 1, 0, 0, 0, 1012, 1013, 3, 831, 415, 0, 1013, 1014, 5, 116, 0, 0, 1014, 38, 1, 0, 0, 0, 1015, 1016, 3, 831, 415, 0, 1016, 1017, 5, 98, 0, 0, 1017, 40, 1, 0, 0, 0, 1018, 1019, 3, 831, 415, 0, 1019, 1020, 5, 110, 0, 0, 1020, 42, 1, 0, 0, 0, 1021, 1022, 3, 831, 415, 0, 1022, 1023, 5, 114, 0, 0, 1023, 44, 1, 0, 0, 0, 1024, 1025, 3, 831, 415, 0, 1025, 1026, 5, 102, 0, 0, 1026, 46, 1, 0, 0, 0, 1027, 1028, 3, 51, 25, 0, 1028, 1029, 3, 847, 423, 0, 1029, 1030, 3, 847, 423, 0, 1030, 1031, 3, 847, 423, 0, 1031, 1032, 3, 847, 423, 0, 1032, 48, 1, 0, 0, 0, 1033, 1034, 3, 53, 26, 0, 1034, 1035, 3, 847, 423, 0, 1035, 1036, 3, 847, 423, 0, 1036, 1037, 3, 847, 423, 0, 1037, 1038, 3, 847, 423, 0, 1038, 1039, 3, 847, 423, 0, 1039, 1040, 3, 847, 423, 0, 1040, 50, 1, 0, 0, 0, 1041, 1042, 3, 831, 415, 0, 1042, 1043, 5, 117, 0, 0, 1043, 52, 1, 0, 0, 0, 1044, 1045, 3, 831, 415, 0, 1045, 1046, 5, 85, 0, 0, 1046, 54, 1, 0, 0, 0, 1047, 1048, 7, 18, 0, 0, 1048, 1052, 3, 829, 414, 0, 1049, 1051, 3, 873, 436, 0, 1050, 1049, 1, 0, 0, 0, 1051, 1054, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1071, 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1055, 1059, 3, 847, 423, 0, 1056, 1058, 3, 873, 436, 0, 1057, 1056, 1, 0, 0, 0, 1058, 1061, 1, 0, 0, 0, 1059, 1057, 1, 0, 0, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1062, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1062, 1066, 3, 847, 423, 0, 1063, 1065, 3, 873, 436, 0, 1064, 1063, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1070, 1, 0, 0, 0, 1068, 1066, 1, 0, 0, 0, 1069, 1055, 1, 0, 0, 0, 1070, 1073, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1074, 1, 0, 0, 0, 1073, 1071, 1, 0, 0, 0, 1074, 1075, 3, 829, 414, 0, 1075, 56, 1, 0, 0, 0, 1076, 1077, 3, 77, 38, 0, 1077, 1078, 3, 75, 37, 0, 1078, 58, 1, 0, 0, 0, 1079, 1080, 3, 77, 38, 0, 1080, 60, 1, 0, 0, 0, 1081, 1082, 3, 77, 38, 0, 1082, 1083, 3, 99, 49, 0, 1083, 62, 1, 0, 0, 0, 1084, 1085, 3, 83, 41, 0, 1085, 1086, 3, 75, 37, 0, 1086, 64, 1, 0, 0, 0, 1087, 1088, 3, 83, 41, 0, 1088, 66, 1, 0, 0, 0, 1089, 1090, 3, 83, 41, 0, 1090, 1091, 3, 99, 49, 0, 1091, 68, 1, 0, 0, 0, 1092, 1093, 3, 73, 36, 0, 1093, 1094, 3, 75, 37, 0, 1094, 70, 1, 0, 0, 0, 1095, 1096, 3, 73, 36, 0, 1096, 1097, 3, 99, 49, 0, 1097, 72, 1, 0, 0, 0, 1098, 1105, 3, 849, 424, 0, 1099, 1101, 3, 843, 421, 0, 1100, 1099, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1104, 3, 849, 424, 0, 1103, 1100, 1, 0, 0, 0, 1104, 1107, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 74, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1108, 1109, 7, 1, 0, 0, 1109, 76, 1, 0, 0, 0, 1110, 1111, 3, 79, 39, 0, 1111, 1112, 7, 4, 0, 0, 1112, 1113, 3, 81, 40, 0, 1113, 78, 1, 0, 0, 0, 1114, 1117, 3, 83, 41, 0, 1115, 1117, 3, 73, 36, 0, 1116, 1114, 1, 0, 0, 0, 1116, 1115, 1, 0, 0, 0, 1117, 80, 1, 0, 0, 0, 1118, 1119, 3, 85, 42, 0, 1119, 82, 1, 0, 0, 0, 1120, 1121, 3, 73, 36, 0, 1121, 1123, 3, 823, 411, 0, 1122, 1124, 3, 73, 36, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1129, 1, 0, 0, 0, 1125, 1126, 3, 823, 411, 0, 1126, 1127, 3, 73, 36, 0, 1127, 1129, 1, 0, 0, 0, 1128, 1120, 1, 0, 0, 0, 1128, 1125, 1, 0, 0, 0, 1129, 84, 1, 0, 0, 0, 1130, 1133, 3, 825, 412, 0, 1131, 1133, 3, 819, 409, 0, 1132, 1130, 1, 0, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1135, 3, 73, 36, 0, 1135, 86, 1, 0, 0, 0, 1136, 1141, 3, 89, 44, 0, 1137, 1139, 5, 95, 0, 0, 1138, 1137, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 3, 847, 423, 0, 1141, 1138, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 88, 1, 0, 0, 0, 1145, 1146, 5, 48, 0, 0, 1146, 1147, 5, 120, 0, 0, 1147, 90, 1, 0, 0, 0, 1148, 1153, 3, 93, 46, 0, 1149, 1151, 5, 95, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1154, 3, 851, 425, 0, 1153, 1150, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 92, 1, 0, 0, 0, 1157, 1158, 5, 48, 0, 0, 1158, 1159, 5, 111, 0, 0, 1159, 94, 1, 0, 0, 0, 1160, 1165, 3, 97, 48, 0, 1161, 1163, 5, 95, 0, 0, 1162, 1161, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 1, 0, 0, 0, 1164, 1166, 3, 853, 426, 0, 1165, 1162, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 96, 1, 0, 0, 0, 1169, 1170, 5, 48, 0, 0, 1170, 1171, 5, 98, 0, 0, 1171, 98, 1, 0, 0, 0, 1172, 1173, 7, 19, 0, 0, 1173, 100, 1, 0, 0, 0, 1174, 1175, 7, 10, 0, 0, 1175, 1176, 7, 20, 0, 0, 1176, 1177, 7, 5, 0, 0, 1177, 102, 1, 0, 0, 0, 1178, 1179, 7, 10, 0, 0, 1179, 1180, 7, 21, 0, 0, 1180, 1181, 7, 13, 0, 0, 1181, 1182, 7, 5, 0, 0, 1182, 104, 1, 0, 0, 0, 1183, 1184, 7, 10, 0, 0, 1184, 1185, 7, 3, 0, 0, 1185, 1186, 7, 3, 0, 0, 1186, 106, 1, 0, 0, 0, 1187, 1188, 7, 10, 0, 0, 1188, 1189, 7, 3, 0, 0, 1189, 1190, 7, 3, 0, 0, 1190, 1191, 5, 95, 0, 0, 1191, 1192, 7, 22, 0, 0, 1192, 1193, 7, 0, 0, 0, 1193, 1194, 7, 9, 0, 0, 1194, 1195, 7, 9, 0, 0, 1195, 1196, 7, 4, 0, 0, 1196, 1197, 7, 7, 0, 0, 1197, 1198, 7, 4, 0, 0, 1198, 1199, 7, 11, 0, 0, 1199, 1200, 7, 6, 0, 0, 1200, 108, 1, 0, 0, 0, 1201, 1202, 7, 10, 0, 0, 1202, 1203, 7, 11, 0, 0, 1203, 1204, 7, 22, 0, 0, 1204, 110, 1, 0, 0, 0, 1205, 1206, 7, 10, 0, 0, 1206, 1207, 7, 11, 0, 0, 1207, 1208, 7, 23, 0, 0, 1208, 112, 1, 0, 0, 0, 1209, 1210, 7, 10, 0, 0, 1210, 1211, 7, 7, 0, 0, 1211, 1212, 7, 7, 0, 0, 1212, 1213, 7, 10, 0, 0, 1213, 1214, 7, 23, 0, 0, 1214, 114, 1, 0, 0, 0, 1215, 1216, 7, 10, 0, 0, 1216, 1217, 7, 5, 0, 0, 1217, 116, 1, 0, 0, 0, 1218, 1219, 7, 10, 0, 0, 1219, 1220, 7, 5, 0, 0, 1220, 1221, 7, 21, 0, 0, 1221, 118, 1, 0, 0, 0, 1222, 1223, 7, 10, 0, 0, 1223, 1224, 7, 5, 0, 0, 1224, 1225, 7, 21, 0, 0, 1225, 1226, 7, 4, 0, 0, 1226, 1227, 7, 11, 0, 0, 1227, 1228, 7, 22, 0, 0, 1228, 1229, 7, 0, 0, 0, 1229, 1230, 7, 11, 0, 0, 1230, 1231, 7, 24, 0, 0, 1231, 120, 1, 0, 0, 0, 1232, 1233, 7, 10, 0, 0, 1233, 1234, 7, 5, 0, 0, 1234, 1235, 7, 0, 0, 0, 1235, 1236, 7, 11, 0, 0, 1236, 122, 1, 0, 0, 0, 1237, 1238, 7, 10, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 124, 1, 0, 0, 0, 1240, 1241, 7, 10, 0, 0, 1241, 1242, 7, 6, 0, 0, 1242, 1243, 7, 10, 0, 0, 1243, 1244, 7, 11, 0, 0, 1244, 126, 1, 0, 0, 0, 1245, 1246, 7, 10, 0, 0, 1246, 1247, 7, 25, 0, 0, 1247, 1248, 7, 24, 0, 0, 1248, 128, 1, 0, 0, 0, 1249, 1250, 7, 20, 0, 0, 1250, 1251, 7, 0, 0, 0, 1251, 1252, 7, 24, 0, 0, 1252, 130, 1, 0, 0, 0, 1253, 1254, 7, 20, 0, 0, 1254, 1255, 7, 0, 0, 0, 1255, 1256, 7, 24, 0, 0, 1256, 1257, 7, 0, 0, 0, 1257, 1258, 7, 11, 0, 0, 1258, 1259, 7, 6, 0, 0, 1259, 132, 1, 0, 0, 0, 1260, 1261, 7, 20, 0, 0, 1261, 1262, 7, 0, 0, 0, 1262, 1263, 7, 11, 0, 0, 1263, 1264, 7, 10, 0, 0, 1264, 1265, 7, 7, 0, 0, 1265, 1266, 7, 23, 0, 0, 1266, 134, 1, 0, 0, 0, 1267, 1268, 7, 20, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 13, 0, 0, 1270, 1271, 7, 3, 0, 0, 1271, 136, 1, 0, 0, 0, 1272, 1273, 7, 20, 0, 0, 1273, 1274, 7, 13, 0, 0, 1274, 1275, 7, 13, 0, 0, 1275, 1276, 7, 3, 0, 0, 1276, 1277, 7, 4, 0, 0, 1277, 1278, 7, 10, 0, 0, 1278, 1279, 7, 11, 0, 0, 1279, 138, 1, 0, 0, 0, 1280, 1281, 7, 20, 0, 0, 1281, 1282, 7, 13, 0, 0, 1282, 1283, 7, 6, 0, 0, 1283, 1284, 7, 26, 0, 0, 1284, 140, 1, 0, 0, 0, 1285, 1286, 7, 20, 0, 0, 1286, 1287, 7, 6, 0, 0, 1287, 1288, 7, 7, 0, 0, 1288, 1289, 7, 0, 0, 0, 1289, 1290, 7, 1, 0, 0, 1290, 142, 1, 0, 0, 0, 1291, 1292, 7, 20, 0, 0, 1292, 1293, 7, 23, 0, 0, 1293, 144, 1, 0, 0, 0, 1294, 1295, 7, 20, 0, 0, 1295, 1296, 7, 23, 0, 0, 1296, 1297, 7, 6, 0, 0, 1297, 1298, 7, 4, 0, 0, 1298, 1299, 5, 95, 0, 0, 1299, 1300, 7, 3, 0, 0, 1300, 1301, 7, 4, 0, 0, 1301, 1302, 7, 11, 0, 0, 1302, 1303, 7, 24, 0, 0, 1303, 1304, 7, 6, 0, 0, 1304, 1305, 7, 26, 0, 0, 1305, 146, 1, 0, 0, 0, 1306, 1307, 7, 20, 0, 0, 1307, 1308, 7, 23, 0, 0, 1308, 1309, 7, 6, 0, 0, 1309, 1310, 7, 4, 0, 0, 1310, 1311, 7, 5, 0, 0, 1311, 148, 1, 0, 0, 0, 1312, 1313, 7, 21, 0, 0, 1313, 1314, 7, 10, 0, 0, 1314, 1315, 7, 3, 0, 0, 1315, 1316, 7, 3, 0, 0, 1316, 150, 1, 0, 0, 0, 1317, 1318, 7, 21, 0, 0, 1318, 1319, 7, 10, 0, 0, 1319, 1320, 7, 7, 0, 0, 1320, 1321, 7, 22, 0, 0, 1321, 1322, 7, 0, 0, 0, 1322, 1323, 7, 11, 0, 0, 1323, 1324, 7, 10, 0, 0, 1324, 1325, 7, 3, 0, 0, 1325, 1326, 7, 0, 0, 0, 1326, 1327, 7, 6, 0, 0, 1327, 1328, 7, 23, 0, 0, 1328, 152, 1, 0, 0, 0, 1329, 1330, 7, 21, 0, 0, 1330, 1331, 7, 10, 0, 0, 1331, 1332, 7, 5, 0, 0, 1332, 1333, 7, 4, 0, 0, 1333, 154, 1, 0, 0, 0, 1334, 1335, 7, 21, 0, 0, 1335, 1336, 7, 10, 0, 0, 1336, 1337, 7, 5, 0, 0, 1337, 1338, 7, 6, 0, 0, 1338, 156, 1, 0, 0, 0, 1339, 1340, 7, 21, 0, 0, 1340, 1341, 7, 4, 0, 0, 1341, 1342, 7, 0, 0, 0, 1342, 1343, 7, 3, 0, 0, 1343, 158, 1, 0, 0, 0, 1344, 1345, 7, 21, 0, 0, 1345, 1346, 7, 4, 0, 0, 1346, 1347, 7, 0, 0, 0, 1347, 1348, 7, 3, 0, 0, 1348, 1349, 7, 0, 0, 0, 1349, 1350, 7, 11, 0, 0, 1350, 1351, 7, 24, 0, 0, 1351, 160, 1, 0, 0, 0, 1352, 1353, 7, 21, 0, 0, 1353, 1354, 7, 26, 0, 0, 1354, 1355, 7, 10, 0, 0, 1355, 1356, 7, 7, 0, 0, 1356, 162, 1, 0, 0, 0, 1357, 1358, 7, 21, 0, 0, 1358, 1359, 7, 26, 0, 0, 1359, 1360, 7, 10, 0, 0, 1360, 1361, 7, 7, 0, 0, 1361, 1362, 5, 95, 0, 0, 1362, 1363, 7, 3, 0, 0, 1363, 1364, 7, 4, 0, 0, 1364, 1365, 7, 11, 0, 0, 1365, 1366, 7, 24, 0, 0, 1366, 1367, 7, 6, 0, 0, 1367, 1368, 7, 26, 0, 0, 1368, 164, 1, 0, 0, 0, 1369, 1370, 7, 21, 0, 0, 1370, 1371, 7, 26, 0, 0, 1371, 1372, 7, 10, 0, 0, 1372, 1373, 7, 7, 0, 0, 1373, 1374, 7, 10, 0, 0, 1374, 1375, 7, 21, 0, 0, 1375, 1376, 7, 6, 0, 0, 1376, 1377, 7, 4, 0, 0, 1377, 1378, 7, 7, 0, 0, 1378, 1379, 5, 95, 0, 0, 1379, 1380, 7, 3, 0, 0, 1380, 1381, 7, 4, 0, 0, 1381, 1382, 7, 11, 0, 0, 1382, 1383, 7, 24, 0, 0, 1383, 1384, 7, 6, 0, 0, 1384, 1385, 7, 26, 0, 0, 1385, 166, 1, 0, 0, 0, 1386, 1387, 7, 21, 0, 0, 1387, 1388, 7, 26, 0, 0, 1388, 1389, 7, 10, 0, 0, 1389, 1390, 7, 7, 0, 0, 1390, 1391, 7, 10, 0, 0, 1391, 1392, 7, 21, 0, 0, 1392, 1393, 7, 6, 0, 0, 1393, 1394, 7, 4, 0, 0, 1394, 1395, 7, 7, 0, 0, 1395, 1396, 7, 0, 0, 0, 1396, 1397, 7, 5, 0, 0, 1397, 1398, 7, 6, 0, 0, 1398, 1399, 7, 0, 0, 0, 1399, 1400, 7, 21, 0, 0, 1400, 1401, 7, 5, 0, 0, 1401, 168, 1, 0, 0, 0, 1402, 1403, 7, 21, 0, 0, 1403, 1404, 7, 3, 0, 0, 1404, 1405, 7, 13, 0, 0, 1405, 1406, 7, 5, 0, 0, 1406, 1407, 7, 4, 0, 0, 1407, 170, 1, 0, 0, 0, 1408, 1409, 7, 21, 0, 0, 1409, 1410, 7, 13, 0, 0, 1410, 1411, 7, 10, 0, 0, 1411, 1412, 7, 3, 0, 0, 1412, 1413, 7, 4, 0, 0, 1413, 1414, 7, 5, 0, 0, 1414, 1415, 7, 21, 0, 0, 1415, 1416, 7, 4, 0, 0, 1416, 172, 1, 0, 0, 0, 1417, 1418, 7, 21, 0, 0, 1418, 1419, 7, 13, 0, 0, 1419, 1420, 7, 3, 0, 0, 1420, 1421, 7, 3, 0, 0, 1421, 1422, 7, 4, 0, 0, 1422, 1423, 7, 21, 0, 0, 1423, 1424, 7, 6, 0, 0, 1424, 1425, 5, 95, 0, 0, 1425, 1426, 7, 3, 0, 0, 1426, 1427, 7, 0, 0, 0, 1427, 1428, 7, 5, 0, 0, 1428, 1429, 7, 6, 0, 0, 1429, 174, 1, 0, 0, 0, 1430, 1431, 7, 21, 0, 0, 1431, 1432, 7, 13, 0, 0, 1432, 1433, 7, 1, 0, 0, 1433, 1434, 7, 1, 0, 0, 1434, 1435, 7, 0, 0, 0, 1435, 1436, 7, 6, 0, 0, 1436, 176, 1, 0, 0, 0, 1437, 1438, 7, 21, 0, 0, 1438, 1439, 7, 13, 0, 0, 1439, 1440, 7, 2, 0, 0, 1440, 1441, 7, 23, 0, 0, 1441, 178, 1, 0, 0, 0, 1442, 1443, 7, 21, 0, 0, 1443, 1444, 7, 13, 0, 0, 1444, 1445, 7, 5, 0, 0, 1445, 180, 1, 0, 0, 0, 1446, 1447, 7, 21, 0, 0, 1447, 1448, 7, 13, 0, 0, 1448, 1449, 7, 5, 0, 0, 1449, 1450, 7, 26, 0, 0, 1450, 182, 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 1453, 7, 13, 0, 0, 1453, 1454, 7, 6, 0, 0, 1454, 184, 1, 0, 0, 0, 1455, 1456, 7, 21, 0, 0, 1456, 1457, 7, 13, 0, 0, 1457, 1458, 7, 8, 0, 0, 1458, 1459, 7, 11, 0, 0, 1459, 1460, 7, 6, 0, 0, 1460, 186, 1, 0, 0, 0, 1461, 1462, 7, 21, 0, 0, 1462, 1463, 7, 7, 0, 0, 1463, 1464, 7, 4, 0, 0, 1464, 1465, 7, 10, 0, 0, 1465, 1466, 7, 6, 0, 0, 1466, 1467, 7, 4, 0, 0, 1467, 188, 1, 0, 0, 0, 1468, 1469, 7, 21, 0, 0, 1469, 1470, 7, 8, 0, 0, 1470, 1471, 7, 7, 0, 0, 1471, 1472, 7, 7, 0, 0, 1472, 1473, 7, 4, 0, 0, 1473, 1474, 7, 11, 0, 0, 1474, 1475, 7, 6, 0, 0, 1475, 1476, 5, 95, 0, 0, 1476, 1477, 7, 22, 0, 0, 1477, 1478, 7, 10, 0, 0, 1478, 1479, 7, 6, 0, 0, 1479, 1480, 7, 4, 0, 0, 1480, 190, 1, 0, 0, 0, 1481, 1482, 7, 21, 0, 0, 1482, 1483, 7, 8, 0, 0, 1483, 1484, 7, 7, 0, 0, 1484, 1485, 7, 7, 0, 0, 1485, 1486, 7, 4, 0, 0, 1486, 1487, 7, 11, 0, 0, 1487, 1488, 7, 6, 0, 0, 1488, 1489, 5, 95, 0, 0, 1489, 1490, 7, 24, 0, 0, 1490, 1491, 7, 7, 0, 0, 1491, 1492, 7, 10, 0, 0, 1492, 1493, 7, 2, 0, 0, 1493, 1494, 7, 26, 0, 0, 1494, 192, 1, 0, 0, 0, 1495, 1496, 7, 21, 0, 0, 1496, 1497, 7, 8, 0, 0, 1497, 1498, 7, 7, 0, 0, 1498, 1499, 7, 7, 0, 0, 1499, 1500, 7, 4, 0, 0, 1500, 1501, 7, 11, 0, 0, 1501, 1502, 7, 6, 0, 0, 1502, 1503, 5, 95, 0, 0, 1503, 1504, 7, 2, 0, 0, 1504, 1505, 7, 7, 0, 0, 1505, 1506, 7, 13, 0, 0, 1506, 1507, 7, 2, 0, 0, 1507, 1508, 7, 4, 0, 0, 1508, 1509, 7, 7, 0, 0, 1509, 1510, 7, 6, 0, 0, 1510, 1511, 7, 23, 0, 0, 1511, 1512, 5, 95, 0, 0, 1512, 1513, 7, 24, 0, 0, 1513, 1514, 7, 7, 0, 0, 1514, 1515, 7, 10, 0, 0, 1515, 1516, 7, 2, 0, 0, 1516, 1517, 7, 26, 0, 0, 1517, 194, 1, 0, 0, 0, 1518, 1519, 7, 21, 0, 0, 1519, 1520, 7, 8, 0, 0, 1520, 1521, 7, 7, 0, 0, 1521, 1522, 7, 7, 0, 0, 1522, 1523, 7, 4, 0, 0, 1523, 1524, 7, 11, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, 5, 95, 0, 0, 1526, 1527, 7, 5, 0, 0, 1527, 1528, 7, 21, 0, 0, 1528, 1529, 7, 26, 0, 0, 1529, 1530, 7, 4, 0, 0, 1530, 1531, 7, 1, 0, 0, 1531, 1532, 7, 10, 0, 0, 1532, 196, 1, 0, 0, 0, 1533, 1534, 7, 21, 0, 0, 1534, 1535, 7, 8, 0, 0, 1535, 1536, 7, 7, 0, 0, 1536, 1537, 7, 7, 0, 0, 1537, 1538, 7, 4, 0, 0, 1538, 1539, 7, 11, 0, 0, 1539, 1540, 7, 6, 0, 0, 1540, 1541, 5, 95, 0, 0, 1541, 1542, 7, 6, 0, 0, 1542, 1543, 7, 0, 0, 0, 1543, 1544, 7, 1, 0, 0, 1544, 1545, 7, 4, 0, 0, 1545, 198, 1, 0, 0, 0, 1546, 1547, 7, 21, 0, 0, 1547, 1548, 7, 8, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, 7, 7, 0, 0, 1550, 1551, 7, 4, 0, 0, 1551, 1552, 7, 11, 0, 0, 1552, 1553, 7, 6, 0, 0, 1553, 1554, 5, 95, 0, 0, 1554, 1555, 7, 6, 0, 0, 1555, 1556, 7, 0, 0, 0, 1556, 1557, 7, 1, 0, 0, 1557, 1558, 7, 4, 0, 0, 1558, 1559, 7, 5, 0, 0, 1559, 1560, 7, 6, 0, 0, 1560, 1561, 7, 10, 0, 0, 1561, 1562, 7, 1, 0, 0, 1562, 1563, 7, 2, 0, 0, 1563, 200, 1, 0, 0, 0, 1564, 1565, 7, 22, 0, 0, 1565, 1566, 7, 10, 0, 0, 1566, 1567, 7, 6, 0, 0, 1567, 1568, 7, 4, 0, 0, 1568, 202, 1, 0, 0, 0, 1569, 1570, 7, 22, 0, 0, 1570, 1571, 7, 10, 0, 0, 1571, 1572, 7, 6, 0, 0, 1572, 1573, 7, 4, 0, 0, 1573, 1574, 7, 6, 0, 0, 1574, 1575, 7, 0, 0, 0, 1575, 1576, 7, 1, 0, 0, 1576, 1577, 7, 4, 0, 0, 1577, 204, 1, 0, 0, 0, 1578, 1579, 7, 22, 0, 0, 1579, 1580, 7, 10, 0, 0, 1580, 1581, 7, 23, 0, 0, 1581, 206, 1, 0, 0, 0, 1582, 1583, 7, 22, 0, 0, 1583, 1584, 7, 4, 0, 0, 1584, 1585, 7, 21, 0, 0, 1585, 208, 1, 0, 0, 0, 1586, 1587, 7, 22, 0, 0, 1587, 1588, 7, 4, 0, 0, 1588, 1589, 7, 21, 0, 0, 1589, 1590, 7, 0, 0, 0, 1590, 1591, 7, 1, 0, 0, 1591, 1592, 7, 10, 0, 0, 1592, 1593, 7, 3, 0, 0, 1593, 210, 1, 0, 0, 0, 1594, 1595, 7, 22, 0, 0, 1595, 1596, 7, 4, 0, 0, 1596, 1597, 7, 24, 0, 0, 1597, 1598, 7, 7, 0, 0, 1598, 1599, 7, 4, 0, 0, 1599, 1600, 7, 4, 0, 0, 1600, 1601, 7, 5, 0, 0, 1601, 212, 1, 0, 0, 0, 1602, 1603, 7, 22, 0, 0, 1603, 1604, 7, 4, 0, 0, 1604, 1605, 7, 3, 0, 0, 1605, 1606, 7, 4, 0, 0, 1606, 1607, 7, 6, 0, 0, 1607, 1608, 7, 4, 0, 0, 1608, 214, 1, 0, 0, 0, 1609, 1610, 7, 22, 0, 0, 1610, 1611, 7, 4, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, 7, 21, 0, 0, 1613, 216, 1, 0, 0, 0, 1614, 1615, 7, 22, 0, 0, 1615, 1616, 7, 4, 0, 0, 1616, 1617, 7, 5, 0, 0, 1617, 1618, 7, 21, 0, 0, 1618, 1619, 7, 4, 0, 0, 1619, 1620, 7, 11, 0, 0, 1620, 1621, 7, 22, 0, 0, 1621, 1622, 7, 0, 0, 0, 1622, 1623, 7, 11, 0, 0, 1623, 1624, 7, 24, 0, 0, 1624, 218, 1, 0, 0, 0, 1625, 1626, 7, 22, 0, 0, 1626, 1627, 7, 4, 0, 0, 1627, 1628, 7, 6, 0, 0, 1628, 1629, 7, 10, 0, 0, 1629, 1630, 7, 21, 0, 0, 1630, 1631, 7, 26, 0, 0, 1631, 220, 1, 0, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, 7, 0, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, 7, 0, 0, 0, 1637, 1638, 7, 11, 0, 0, 1638, 1639, 7, 21, 0, 0, 1639, 1640, 7, 6, 0, 0, 1640, 222, 1, 0, 0, 0, 1641, 1642, 7, 22, 0, 0, 1642, 1643, 7, 13, 0, 0, 1643, 1644, 7, 8, 0, 0, 1644, 1645, 7, 20, 0, 0, 1645, 1646, 7, 3, 0, 0, 1646, 1647, 7, 4, 0, 0, 1647, 224, 1, 0, 0, 0, 1648, 1649, 7, 22, 0, 0, 1649, 1650, 7, 7, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, 7, 2, 0, 0, 1652, 226, 1, 0, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, 7, 8, 0, 0, 1655, 1656, 7, 7, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, 7, 6, 0, 0, 1658, 1659, 7, 0, 0, 0, 1659, 1660, 7, 13, 0, 0, 1660, 1661, 7, 11, 0, 0, 1661, 228, 1, 0, 0, 0, 1662, 1663, 7, 22, 0, 0, 1663, 1664, 7, 8, 0, 0, 1664, 1665, 7, 7, 0, 0, 1665, 1666, 7, 10, 0, 0, 1666, 1667, 7, 6, 0, 0, 1667, 1668, 7, 0, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, 7, 11, 0, 0, 1670, 1671, 5, 95, 0, 0, 1671, 1672, 7, 20, 0, 0, 1672, 1673, 7, 4, 0, 0, 1673, 1674, 7, 6, 0, 0, 1674, 1675, 7, 14, 0, 0, 1675, 1676, 7, 4, 0, 0, 1676, 1677, 7, 4, 0, 0, 1677, 1678, 7, 11, 0, 0, 1678, 230, 1, 0, 0, 0, 1679, 1680, 7, 4, 0, 0, 1680, 1681, 7, 3, 0, 0, 1681, 1682, 7, 4, 0, 0, 1682, 1683, 7, 1, 0, 0, 1683, 1684, 7, 4, 0, 0, 1684, 1685, 7, 11, 0, 0, 1685, 1686, 7, 6, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, 7, 0, 0, 0, 1688, 1689, 7, 22, 0, 0, 1689, 232, 1, 0, 0, 0, 1690, 1691, 7, 4, 0, 0, 1691, 1692, 7, 3, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, 7, 4, 0, 0, 1694, 234, 1, 0, 0, 0, 1695, 1696, 7, 4, 0, 0, 1696, 1697, 7, 11, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 236, 1, 0, 0, 0, 1699, 1700, 7, 4, 0, 0, 1700, 1701, 7, 18, 0, 0, 1701, 1702, 7, 21, 0, 0, 1702, 1703, 7, 4, 0, 0, 1703, 1704, 7, 2, 0, 0, 1704, 1705, 7, 6, 0, 0, 1705, 238, 1, 0, 0, 0, 1706, 1707, 7, 4, 0, 0, 1707, 1708, 7, 18, 0, 0, 1708, 1709, 7, 0, 0, 0, 1709, 1710, 7, 5, 0, 0, 1710, 1711, 7, 6, 0, 0, 1711, 1712, 7, 5, 0, 0, 1712, 240, 1, 0, 0, 0, 1713, 1714, 7, 4, 0, 0, 1714, 1715, 7, 18, 0, 0, 1715, 1716, 7, 2, 0, 0, 1716, 242, 1, 0, 0, 0, 1717, 1718, 7, 9, 0, 0, 1718, 1719, 7, 0, 0, 0, 1719, 1720, 7, 3, 0, 0, 1720, 1721, 7, 6, 0, 0, 1721, 1722, 7, 4, 0, 0, 1722, 1723, 7, 7, 0, 0, 1723, 244, 1, 0, 0, 0, 1724, 1725, 7, 9, 0, 0, 1725, 1726, 7, 0, 0, 0, 1726, 1727, 7, 11, 0, 0, 1727, 1728, 7, 0, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, 7, 26, 0, 0, 1730, 246, 1, 0, 0, 0, 1731, 1732, 7, 9, 0, 0, 1732, 1733, 7, 3, 0, 0, 1733, 1734, 7, 13, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, 7, 6, 0, 0, 1736, 248, 1, 0, 0, 0, 1737, 1738, 7, 9, 0, 0, 1738, 1739, 7, 3, 0, 0, 1739, 1740, 7, 13, 0, 0, 1740, 1741, 7, 10, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 1743, 5, 49, 0, 0, 1743, 1744, 5, 54, 0, 0, 1744, 250, 1, 0, 0, 0, 1745, 1746, 7, 9, 0, 0, 1746, 1747, 7, 3, 0, 0, 1747, 1748, 7, 13, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, 5, 51, 0, 0, 1751, 1752, 5, 50, 0, 0, 1752, 252, 1, 0, 0, 0, 1753, 1754, 7, 9, 0, 0, 1754, 1755, 7, 3, 0, 0, 1755, 1756, 7, 13, 0, 0, 1756, 1757, 7, 10, 0, 0, 1757, 1758, 7, 6, 0, 0, 1758, 1759, 5, 54, 0, 0, 1759, 1760, 5, 52, 0, 0, 1760, 254, 1, 0, 0, 0, 1761, 1762, 7, 9, 0, 0, 1762, 1763, 7, 3, 0, 0, 1763, 1764, 7, 13, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 6, 0, 0, 1766, 1767, 5, 49, 0, 0, 1767, 1768, 5, 50, 0, 0, 1768, 1769, 5, 56, 0, 0, 1769, 256, 1, 0, 0, 0, 1770, 1771, 7, 9, 0, 0, 1771, 1772, 7, 3, 0, 0, 1772, 1773, 7, 13, 0, 0, 1773, 1774, 7, 10, 0, 0, 1774, 1775, 7, 6, 0, 0, 1775, 1776, 5, 50, 0, 0, 1776, 1777, 5, 53, 0, 0, 1777, 1778, 5, 54, 0, 0, 1778, 258, 1, 0, 0, 0, 1779, 1780, 7, 9, 0, 0, 1780, 1781, 7, 3, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, 7, 7, 0, 0, 1784, 260, 1, 0, 0, 0, 1785, 1786, 7, 9, 0, 0, 1786, 1787, 7, 13, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 262, 1, 0, 0, 0, 1789, 1790, 7, 9, 0, 0, 1790, 1791, 7, 7, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, 7, 1, 0, 0, 1793, 264, 1, 0, 0, 0, 1794, 1795, 7, 24, 0, 0, 1795, 1796, 7, 7, 0, 0, 1796, 1797, 7, 13, 0, 0, 1797, 1798, 7, 8, 0, 0, 1798, 1799, 7, 2, 0, 0, 1799, 266, 1, 0, 0, 0, 1800, 1801, 7, 26, 0, 0, 1801, 1802, 7, 10, 0, 0, 1802, 1803, 7, 25, 0, 0, 1803, 1804, 7, 0, 0, 0, 1804, 1805, 7, 11, 0, 0, 1805, 1806, 7, 24, 0, 0, 1806, 268, 1, 0, 0, 0, 1807, 1808, 7, 26, 0, 0, 1808, 1809, 7, 13, 0, 0, 1809, 1810, 7, 1, 0, 0, 1810, 1811, 7, 4, 0, 0, 1811, 1812, 5, 95, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 1814, 7, 7, 0, 0, 1814, 1815, 7, 10, 0, 0, 1815, 1816, 7, 2, 0, 0, 1816, 1817, 7, 26, 0, 0, 1817, 270, 1, 0, 0, 0, 1818, 1819, 7, 26, 0, 0, 1819, 1820, 7, 13, 0, 0, 1820, 1821, 7, 1, 0, 0, 1821, 1822, 7, 4, 0, 0, 1822, 1823, 5, 95, 0, 0, 1823, 1824, 7, 2, 0, 0, 1824, 1825, 7, 7, 0, 0, 1825, 1826, 7, 13, 0, 0, 1826, 1827, 7, 2, 0, 0, 1827, 1828, 7, 4, 0, 0, 1828, 1829, 7, 7, 0, 0, 1829, 1830, 7, 6, 0, 0, 1830, 1831, 7, 23, 0, 0, 1831, 1832, 5, 95, 0, 0, 1832, 1833, 7, 24, 0, 0, 1833, 1834, 7, 7, 0, 0, 1834, 1835, 7, 10, 0, 0, 1835, 1836, 7, 2, 0, 0, 1836, 1837, 7, 26, 0, 0, 1837, 272, 1, 0, 0, 0, 1838, 1839, 7, 26, 0, 0, 1839, 1840, 7, 13, 0, 0, 1840, 1841, 7, 1, 0, 0, 1841, 1842, 7, 4, 0, 0, 1842, 1843, 5, 95, 0, 0, 1843, 1844, 7, 5, 0, 0, 1844, 1845, 7, 21, 0, 0, 1845, 1846, 7, 26, 0, 0, 1846, 1847, 7, 4, 0, 0, 1847, 1848, 7, 1, 0, 0, 1848, 1849, 7, 10, 0, 0, 1849, 274, 1, 0, 0, 0, 1850, 1851, 7, 26, 0, 0, 1851, 1852, 7, 13, 0, 0, 1852, 1853, 7, 8, 0, 0, 1853, 1854, 7, 7, 0, 0, 1854, 276, 1, 0, 0, 0, 1855, 1856, 7, 0, 0, 0, 1856, 1857, 7, 9, 0, 0, 1857, 278, 1, 0, 0, 0, 1858, 1859, 7, 0, 0, 0, 1859, 1860, 7, 11, 0, 0, 1860, 280, 1, 0, 0, 0, 1861, 1862, 7, 0, 0, 0, 1862, 1863, 7, 11, 0, 0, 1863, 1864, 7, 5, 0, 0, 1864, 1865, 7, 4, 0, 0, 1865, 1866, 7, 7, 0, 0, 1866, 1867, 7, 6, 0, 0, 1867, 282, 1, 0, 0, 0, 1868, 1869, 7, 0, 0, 0, 1869, 1870, 7, 11, 0, 0, 1870, 1871, 7, 6, 0, 0, 1871, 284, 1, 0, 0, 0, 1872, 1873, 7, 0, 0, 0, 1873, 1874, 7, 11, 0, 0, 1874, 1875, 7, 6, 0, 0, 1875, 1876, 7, 4, 0, 0, 1876, 1877, 7, 24, 0, 0, 1877, 1878, 7, 4, 0, 0, 1878, 1879, 7, 7, 0, 0, 1879, 286, 1, 0, 0, 0, 1880, 1881, 7, 0, 0, 0, 1881, 1882, 7, 11, 0, 0, 1882, 1883, 7, 6, 0, 0, 1883, 1884, 5, 56, 0, 0, 1884, 288, 1, 0, 0, 0, 1885, 1886, 7, 0, 0, 0, 1886, 1887, 7, 11, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 1889, 7, 4, 0, 0, 1889, 1890, 7, 24, 0, 0, 1890, 1891, 7, 4, 0, 0, 1891, 1892, 7, 7, 0, 0, 1892, 1893, 5, 56, 0, 0, 1893, 290, 1, 0, 0, 0, 1894, 1895, 7, 0, 0, 0, 1895, 1896, 7, 11, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 1898, 5, 49, 0, 0, 1898, 1899, 5, 54, 0, 0, 1899, 292, 1, 0, 0, 0, 1900, 1901, 7, 0, 0, 0, 1901, 1902, 7, 11, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, 7, 4, 0, 0, 1904, 1905, 7, 24, 0, 0, 1905, 1906, 7, 4, 0, 0, 1906, 1907, 7, 7, 0, 0, 1907, 1908, 5, 49, 0, 0, 1908, 1909, 5, 54, 0, 0, 1909, 294, 1, 0, 0, 0, 1910, 1911, 7, 0, 0, 0, 1911, 1912, 7, 11, 0, 0, 1912, 1913, 7, 6, 0, 0, 1913, 1914, 5, 51, 0, 0, 1914, 1915, 5, 50, 0, 0, 1915, 296, 1, 0, 0, 0, 1916, 1917, 7, 0, 0, 0, 1917, 1918, 7, 11, 0, 0, 1918, 1919, 7, 6, 0, 0, 1919, 1920, 7, 4, 0, 0, 1920, 1921, 7, 24, 0, 0, 1921, 1922, 7, 4, 0, 0, 1922, 1923, 7, 7, 0, 0, 1923, 1924, 5, 51, 0, 0, 1924, 1925, 5, 50, 0, 0, 1925, 298, 1, 0, 0, 0, 1926, 1927, 7, 0, 0, 0, 1927, 1928, 7, 11, 0, 0, 1928, 1929, 7, 6, 0, 0, 1929, 1930, 5, 54, 0, 0, 1930, 1931, 5, 52, 0, 0, 1931, 300, 1, 0, 0, 0, 1932, 1933, 7, 0, 0, 0, 1933, 1934, 7, 11, 0, 0, 1934, 1935, 7, 6, 0, 0, 1935, 1936, 7, 4, 0, 0, 1936, 1937, 7, 24, 0, 0, 1937, 1938, 7, 4, 0, 0, 1938, 1939, 7, 7, 0, 0, 1939, 1940, 5, 54, 0, 0, 1940, 1941, 5, 52, 0, 0, 1941, 302, 1, 0, 0, 0, 1942, 1943, 7, 0, 0, 0, 1943, 1944, 7, 11, 0, 0, 1944, 1945, 7, 6, 0, 0, 1945, 1946, 5, 49, 0, 0, 1946, 1947, 5, 50, 0, 0, 1947, 1948, 5, 56, 0, 0, 1948, 304, 1, 0, 0, 0, 1949, 1950, 7, 0, 0, 0, 1950, 1951, 7, 11, 0, 0, 1951, 1952, 7, 6, 0, 0, 1952, 1953, 7, 4, 0, 0, 1953, 1954, 7, 24, 0, 0, 1954, 1955, 7, 4, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 5, 49, 0, 0, 1957, 1958, 5, 50, 0, 0, 1958, 1959, 5, 56, 0, 0, 1959, 306, 1, 0, 0, 0, 1960, 1961, 7, 0, 0, 0, 1961, 1962, 7, 11, 0, 0, 1962, 1963, 7, 6, 0, 0, 1963, 1964, 5, 50, 0, 0, 1964, 1965, 5, 53, 0, 0, 1965, 1966, 5, 54, 0, 0, 1966, 308, 1, 0, 0, 0, 1967, 1968, 7, 0, 0, 0, 1968, 1969, 7, 11, 0, 0, 1969, 1970, 7, 6, 0, 0, 1970, 1971, 7, 4, 0, 0, 1971, 1972, 7, 24, 0, 0, 1972, 1973, 7, 4, 0, 0, 1973, 1974, 7, 7, 0, 0, 1974, 1975, 5, 50, 0, 0, 1975, 1976, 5, 53, 0, 0, 1976, 1977, 5, 54, 0, 0, 1977, 310, 1, 0, 0, 0, 1978, 1979, 7, 0, 0, 0, 1979, 1980, 7, 11, 0, 0, 1980, 1981, 7, 6, 0, 0, 1981, 1982, 7, 4, 0, 0, 1982, 1983, 7, 7, 0, 0, 1983, 1984, 7, 5, 0, 0, 1984, 1985, 7, 4, 0, 0, 1985, 1986, 7, 21, 0, 0, 1986, 1987, 7, 6, 0, 0, 1987, 312, 1, 0, 0, 0, 1988, 1989, 7, 0, 0, 0, 1989, 1990, 7, 11, 0, 0, 1990, 1991, 7, 6, 0, 0, 1991, 1992, 7, 4, 0, 0, 1992, 1993, 7, 7, 0, 0, 1993, 1994, 7, 25, 0, 0, 1994, 1995, 7, 10, 0, 0, 1995, 1996, 7, 3, 0, 0, 1996, 314, 1, 0, 0, 0, 1997, 1998, 7, 0, 0, 0, 1998, 1999, 7, 5, 0, 0, 1999, 316, 1, 0, 0, 0, 2000, 2001, 7, 3, 0, 0, 2001, 2002, 7, 4, 0, 0, 2002, 2003, 7, 10, 0, 0, 2003, 2004, 7, 22, 0, 0, 2004, 2005, 7, 0, 0, 0, 2005, 2006, 7, 11, 0, 0, 2006, 2007, 7, 24, 0, 0, 2007, 318, 1, 0, 0, 0, 2008, 2009, 7, 3, 0, 0, 2009, 2010, 7, 4, 0, 0, 2010, 2011, 7, 9, 0, 0, 2011, 2012, 7, 6, 0, 0, 2012, 320, 1, 0, 0, 0, 2013, 2014, 7, 3, 0, 0, 2014, 2015, 7, 4, 0, 0, 2015, 2016, 7, 6, 0, 0, 2016, 322, 1, 0, 0, 0, 2017, 2018, 7, 3, 0, 0, 2018, 2019, 7, 0, 0, 0, 2019, 2020, 7, 12, 0, 0, 2020, 2021, 7, 4, 0, 0, 2021, 324, 1, 0, 0, 0, 2022, 2023, 7, 3, 0, 0, 2023, 2024, 7, 0, 0, 0, 2024, 2025, 7, 1, 0, 0, 2025, 2026, 7, 0, 0, 0, 2026, 2027, 7, 6, 0, 0, 2027, 326, 1, 0, 0, 0, 2028, 2029, 7, 3, 0, 0, 2029, 2030, 7, 0, 0, 0, 2030, 2031, 7, 5, 0, 0, 2031, 2032, 7, 6, 0, 0, 2032, 328, 1, 0, 0, 0, 2033, 2034, 7, 3, 0, 0, 2034, 2035, 7, 11, 0, 0, 2035, 330, 1, 0, 0, 0, 2036, 2037, 7, 3, 0, 0, 2037, 2038, 7, 13, 0, 0, 2038, 2039, 7, 21, 0, 0, 2039, 2040, 7, 10, 0, 0, 2040, 2041, 7, 3, 0, 0, 2041, 332, 1, 0, 0, 0, 2042, 2043, 7, 3, 0, 0, 2043, 2044, 7, 13, 0, 0, 2044, 2045, 7, 21, 0, 0, 2045, 2046, 7, 10, 0, 0, 2046, 2047, 7, 3, 0, 0, 2047, 2048, 5, 95, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 10, 0, 0, 2050, 2051, 7, 6, 0, 0, 2051, 2052, 7, 4, 0, 0, 2052, 2053, 7, 6, 0, 0, 2053, 2054, 7, 0, 0, 0, 2054, 2055, 7, 1, 0, 0, 2055, 2056, 7, 4, 0, 0, 2056, 334, 1, 0, 0, 0, 2057, 2058, 7, 3, 0, 0, 2058, 2059, 7, 13, 0, 0, 2059, 2060, 7, 21, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 3, 0, 0, 2062, 2063, 5, 95, 0, 0, 2063, 2064, 7, 6, 0, 0, 2064, 2065, 7, 0, 0, 0, 2065, 2066, 7, 1, 0, 0, 2066, 2067, 7, 4, 0, 0, 2067, 336, 1, 0, 0, 0, 2068, 2069, 7, 3, 0, 0, 2069, 2070, 7, 13, 0, 0, 2070, 2071, 7, 21, 0, 0, 2071, 2072, 7, 10, 0, 0, 2072, 2073, 7, 3, 0, 0, 2073, 2074, 5, 95, 0, 0, 2074, 2075, 7, 6, 0, 0, 2075, 2076, 7, 0, 0, 0, 2076, 2077, 7, 1, 0, 0, 2077, 2078, 7, 4, 0, 0, 2078, 2079, 7, 5, 0, 0, 2079, 2080, 7, 6, 0, 0, 2080, 2081, 7, 10, 0, 0, 2081, 2082, 7, 1, 0, 0, 2082, 2083, 7, 2, 0, 0, 2083, 338, 1, 0, 0, 0, 2084, 2085, 7, 3, 0, 0, 2085, 2086, 7, 13, 0, 0, 2086, 2087, 7, 24, 0, 0, 2087, 340, 1, 0, 0, 0, 2088, 2089, 7, 3, 0, 0, 2089, 2090, 7, 13, 0, 0, 2090, 2091, 7, 24, 0, 0, 2091, 2092, 5, 49, 0, 0, 2092, 2093, 5, 48, 0, 0, 2093, 342, 1, 0, 0, 0, 2094, 2095, 7, 3, 0, 0, 2095, 2096, 7, 13, 0, 0, 2096, 2097, 7, 14, 0, 0, 2097, 2098, 7, 4, 0, 0, 2098, 2099, 7, 7, 0, 0, 2099, 344, 1, 0, 0, 0, 2100, 2101, 7, 3, 0, 0, 2101, 2102, 7, 6, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 0, 0, 0, 2104, 2105, 7, 1, 0, 0, 2105, 346, 1, 0, 0, 0, 2106, 2107, 7, 1, 0, 0, 2107, 2108, 7, 10, 0, 0, 2108, 2109, 7, 6, 0, 0, 2109, 2110, 7, 21, 0, 0, 2110, 2111, 7, 26, 0, 0, 2111, 348, 1, 0, 0, 0, 2112, 2113, 7, 1, 0, 0, 2113, 2114, 7, 10, 0, 0, 2114, 2115, 7, 18, 0, 0, 2115, 350, 1, 0, 0, 0, 2116, 2117, 7, 1, 0, 0, 2117, 2118, 7, 0, 0, 0, 2118, 2119, 7, 11, 0, 0, 2119, 352, 1, 0, 0, 0, 2120, 2121, 7, 1, 0, 0, 2121, 2122, 7, 0, 0, 0, 2122, 2123, 7, 11, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 2125, 7, 6, 0, 0, 2125, 2126, 7, 4, 0, 0, 2126, 354, 1, 0, 0, 0, 2127, 2128, 7, 1, 0, 0, 2128, 2129, 7, 13, 0, 0, 2129, 2130, 7, 22, 0, 0, 2130, 356, 1, 0, 0, 0, 2131, 2132, 7, 1, 0, 0, 2132, 2133, 7, 13, 0, 0, 2133, 2134, 7, 11, 0, 0, 2134, 2135, 7, 6, 0, 0, 2135, 2136, 7, 26, 0, 0, 2136, 358, 1, 0, 0, 0, 2137, 2138, 7, 11, 0, 0, 2138, 2139, 7, 4, 0, 0, 2139, 2140, 7, 18, 0, 0, 2140, 2141, 7, 6, 0, 0, 2141, 360, 1, 0, 0, 0, 2142, 2143, 7, 11, 0, 0, 2143, 2144, 7, 13, 0, 0, 2144, 2145, 7, 22, 0, 0, 2145, 2146, 7, 4, 0, 0, 2146, 2147, 7, 6, 0, 0, 2147, 2148, 7, 10, 0, 0, 2148, 2149, 7, 21, 0, 0, 2149, 2150, 7, 26, 0, 0, 2150, 362, 1, 0, 0, 0, 2151, 2152, 7, 11, 0, 0, 2152, 2153, 7, 13, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 1, 0, 0, 2155, 2156, 7, 10, 0, 0, 2156, 2157, 7, 3, 0, 0, 2157, 2158, 7, 0, 0, 0, 2158, 2159, 7, 27, 0, 0, 2159, 2160, 7, 4, 0, 0, 2160, 364, 1, 0, 0, 0, 2161, 2162, 7, 11, 0, 0, 2162, 2163, 7, 13, 0, 0, 2163, 2164, 7, 6, 0, 0, 2164, 366, 1, 0, 0, 0, 2165, 2166, 7, 11, 0, 0, 2166, 2167, 7, 13, 0, 0, 2167, 2168, 7, 6, 0, 0, 2168, 2169, 7, 26, 0, 0, 2169, 2170, 7, 0, 0, 0, 2170, 2171, 7, 11, 0, 0, 2171, 2172, 7, 24, 0, 0, 2172, 368, 1, 0, 0, 0, 2173, 2174, 7, 11, 0, 0, 2174, 2175, 7, 8, 0, 0, 2175, 2176, 7, 3, 0, 0, 2176, 2177, 7, 3, 0, 0, 2177, 370, 1, 0, 0, 0, 2178, 2179, 7, 11, 0, 0, 2179, 2180, 7, 8, 0, 0, 2180, 2181, 7, 3, 0, 0, 2181, 2182, 7, 3, 0, 0, 2182, 2183, 7, 5, 0, 0, 2183, 372, 1, 0, 0, 0, 2184, 2185, 7, 11, 0, 0, 2185, 2186, 7, 8, 0, 0, 2186, 2187, 7, 3, 0, 0, 2187, 2188, 7, 3, 0, 0, 2188, 2189, 7, 0, 0, 0, 2189, 2190, 7, 9, 0, 0, 2190, 374, 1, 0, 0, 0, 2191, 2192, 7, 13, 0, 0, 2192, 2193, 7, 21, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, 7, 4, 0, 0, 2195, 2196, 7, 6, 0, 0, 2196, 2197, 5, 95, 0, 0, 2197, 2198, 7, 3, 0, 0, 2198, 2199, 7, 4, 0, 0, 2199, 2200, 7, 11, 0, 0, 2200, 2201, 7, 24, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 2203, 7, 26, 0, 0, 2203, 376, 1, 0, 0, 0, 2204, 2205, 7, 13, 0, 0, 2205, 2206, 7, 9, 0, 0, 2206, 378, 1, 0, 0, 0, 2207, 2208, 7, 13, 0, 0, 2208, 2209, 7, 9, 0, 0, 2209, 2210, 7, 9, 0, 0, 2210, 2211, 7, 5, 0, 0, 2211, 2212, 7, 4, 0, 0, 2212, 2213, 7, 6, 0, 0, 2213, 380, 1, 0, 0, 0, 2214, 2215, 7, 13, 0, 0, 2215, 2216, 7, 2, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 0, 0, 0, 2218, 2219, 7, 13, 0, 0, 2219, 2220, 7, 11, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, 7, 3, 0, 0, 2222, 382, 1, 0, 0, 0, 2223, 2224, 7, 13, 0, 0, 2224, 2225, 7, 7, 0, 0, 2225, 384, 1, 0, 0, 0, 2226, 2227, 7, 13, 0, 0, 2227, 2228, 7, 7, 0, 0, 2228, 2229, 7, 22, 0, 0, 2229, 2230, 7, 4, 0, 0, 2230, 2231, 7, 7, 0, 0, 2231, 386, 1, 0, 0, 0, 2232, 2233, 7, 13, 0, 0, 2233, 2234, 7, 6, 0, 0, 2234, 2235, 7, 26, 0, 0, 2235, 2236, 7, 4, 0, 0, 2236, 2237, 7, 7, 0, 0, 2237, 2238, 7, 14, 0, 0, 2238, 2239, 7, 0, 0, 0, 2239, 2240, 7, 5, 0, 0, 2240, 2241, 7, 4, 0, 0, 2241, 388, 1, 0, 0, 0, 2242, 2243, 7, 2, 0, 0, 2243, 2244, 7, 10, 0, 0, 2244, 2245, 7, 7, 0, 0, 2245, 2246, 7, 10, 0, 0, 2246, 2247, 7, 1, 0, 0, 2247, 2248, 7, 4, 0, 0, 2248, 2249, 7, 6, 0, 0, 2249, 2250, 7, 4, 0, 0, 2250, 2251, 7, 7, 0, 0, 2251, 390, 1, 0, 0, 0, 2252, 2253, 7, 2, 0, 0, 2253, 2254, 7, 10, 0, 0, 2254, 2255, 7, 7, 0, 0, 2255, 2256, 7, 10, 0, 0, 2256, 2257, 7, 1, 0, 0, 2257, 2258, 7, 4, 0, 0, 2258, 2259, 7, 6, 0, 0, 2259, 2260, 7, 4, 0, 0, 2260, 2261, 7, 7, 0, 0, 2261, 2262, 7, 5, 0, 0, 2262, 392, 1, 0, 0, 0, 2263, 2264, 7, 2, 0, 0, 2264, 2265, 7, 10, 0, 0, 2265, 2266, 7, 6, 0, 0, 2266, 2267, 7, 26, 0, 0, 2267, 394, 1, 0, 0, 0, 2268, 2269, 7, 2, 0, 0, 2269, 2270, 7, 10, 0, 0, 2270, 2271, 7, 6, 0, 0, 2271, 2272, 7, 26, 0, 0, 2272, 2273, 5, 95, 0, 0, 2273, 2274, 7, 3, 0, 0, 2274, 2275, 7, 4, 0, 0, 2275, 2276, 7, 11, 0, 0, 2276, 2277, 7, 24, 0, 0, 2277, 2278, 7, 6, 0, 0, 2278, 2279, 7, 26, 0, 0, 2279, 396, 1, 0, 0, 0, 2280, 2281, 7, 2, 0, 0, 2281, 2282, 7, 10, 0, 0, 2282, 2283, 7, 6, 0, 0, 2283, 2284, 7, 26, 0, 0, 2284, 2285, 7, 5, 0, 0, 2285, 398, 1, 0, 0, 0, 2286, 2287, 7, 2, 0, 0, 2287, 2288, 7, 4, 0, 0, 2288, 2289, 7, 7, 0, 0, 2289, 2290, 7, 21, 0, 0, 2290, 2291, 7, 4, 0, 0, 2291, 2292, 7, 11, 0, 0, 2292, 2293, 7, 6, 0, 0, 2293, 2294, 7, 0, 0, 0, 2294, 2295, 7, 3, 0, 0, 2295, 2296, 7, 4, 0, 0, 2296, 2297, 5, 95, 0, 0, 2297, 2298, 7, 21, 0, 0, 2298, 2299, 7, 13, 0, 0, 2299, 2300, 7, 11, 0, 0, 2300, 2301, 7, 6, 0, 0, 2301, 400, 1, 0, 0, 0, 2302, 2303, 7, 2, 0, 0, 2303, 2304, 7, 4, 0, 0, 2304, 2305, 7, 7, 0, 0, 2305, 2306, 7, 21, 0, 0, 2306, 2307, 7, 4, 0, 0, 2307, 2308, 7, 11, 0, 0, 2308, 2309, 7, 6, 0, 0, 2309, 2310, 7, 0, 0, 0, 2310, 2311, 7, 3, 0, 0, 2311, 2312, 7, 4, 0, 0, 2312, 2313, 5, 95, 0, 0, 2313, 2314, 7, 22, 0, 0, 2314, 2315, 7, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 21, 0, 0, 2317, 402, 1, 0, 0, 0, 2318, 2319, 7, 2, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 2321, 7, 14, 0, 0, 2321, 2322, 7, 4, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 404, 1, 0, 0, 0, 2324, 2325, 7, 2, 0, 0, 2325, 2326, 7, 7, 0, 0, 2326, 2327, 7, 4, 0, 0, 2327, 2328, 7, 21, 0, 0, 2328, 2329, 7, 0, 0, 0, 2329, 2330, 7, 5, 0, 0, 2330, 2331, 7, 0, 0, 0, 2331, 2332, 7, 13, 0, 0, 2332, 2333, 7, 11, 0, 0, 2333, 406, 1, 0, 0, 0, 2334, 2335, 7, 2, 0, 0, 2335, 2336, 7, 7, 0, 0, 2336, 2337, 7, 13, 0, 0, 2337, 2338, 7, 2, 0, 0, 2338, 2339, 7, 4, 0, 0, 2339, 2340, 7, 7, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 23, 0, 0, 2342, 2343, 5, 95, 0, 0, 2343, 2344, 7, 4, 0, 0, 2344, 2345, 7, 18, 0, 0, 2345, 2346, 7, 0, 0, 0, 2346, 2347, 7, 5, 0, 0, 2347, 2348, 7, 6, 0, 0, 2348, 2349, 7, 5, 0, 0, 2349, 408, 1, 0, 0, 0, 2350, 2351, 7, 7, 0, 0, 2351, 2352, 7, 10, 0, 0, 2352, 2353, 7, 22, 0, 0, 2353, 2354, 7, 0, 0, 0, 2354, 2355, 7, 10, 0, 0, 2355, 2356, 7, 11, 0, 0, 2356, 2357, 7, 5, 0, 0, 2357, 410, 1, 0, 0, 0, 2358, 2359, 7, 7, 0, 0, 2359, 2360, 7, 4, 0, 0, 2360, 2361, 7, 10, 0, 0, 2361, 2362, 7, 3, 0, 0, 2362, 412, 1, 0, 0, 0, 2363, 2364, 7, 7, 0, 0, 2364, 2365, 7, 4, 0, 0, 2365, 2366, 7, 21, 0, 0, 2366, 2367, 7, 13, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, 7, 22, 0, 0, 2369, 414, 1, 0, 0, 0, 2370, 2371, 7, 7, 0, 0, 2371, 2372, 7, 4, 0, 0, 2372, 2373, 7, 1, 0, 0, 2373, 2374, 7, 13, 0, 0, 2374, 2375, 7, 25, 0, 0, 2375, 2376, 7, 4, 0, 0, 2376, 416, 1, 0, 0, 0, 2377, 2378, 7, 7, 0, 0, 2378, 2379, 7, 4, 0, 0, 2379, 2380, 7, 2, 0, 0, 2380, 2381, 7, 3, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 2383, 7, 21, 0, 0, 2383, 2384, 7, 4, 0, 0, 2384, 418, 1, 0, 0, 0, 2385, 2386, 7, 7, 0, 0, 2386, 2387, 7, 4, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 4, 0, 0, 2389, 2390, 7, 6, 0, 0, 2390, 420, 1, 0, 0, 0, 2391, 2392, 7, 7, 0, 0, 2392, 2393, 7, 4, 0, 0, 2393, 2394, 7, 6, 0, 0, 2394, 2395, 7, 8, 0, 0, 2395, 2396, 7, 7, 0, 0, 2396, 2397, 7, 11, 0, 0, 2397, 422, 1, 0, 0, 0, 2398, 2399, 7, 7, 0, 0, 2399, 2400, 7, 0, 0, 0, 2400, 2401, 7, 24, 0, 0, 2401, 2402, 7, 26, 0, 0, 2402, 2403, 7, 6, 0, 0, 2403, 424, 1, 0, 0, 0, 2404, 2405, 7, 7, 0, 0, 2405, 2406, 7, 13, 0, 0, 2406, 2407, 7, 3, 0, 0, 2407, 2408, 7, 3, 0, 0, 2408, 2409, 7, 20, 0, 0, 2409, 2410, 7, 10, 0, 0, 2410, 2411, 7, 21, 0, 0, 2411, 2412, 7, 12, 0, 0, 2412, 426, 1, 0, 0, 0, 2413, 2414, 7, 7, 0, 0, 2414, 2415, 7, 6, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 2417, 7, 0, 0, 0, 2417, 2418, 7, 1, 0, 0, 2418, 428, 1, 0, 0, 0, 2419, 2420, 7, 5, 0, 0, 2420, 2421, 7, 10, 0, 0, 2421, 2422, 7, 1, 0, 0, 2422, 2423, 7, 4, 0, 0, 2423, 430, 1, 0, 0, 0, 2424, 2425, 7, 5, 0, 0, 2425, 2426, 7, 21, 0, 0, 2426, 2427, 7, 26, 0, 0, 2427, 2428, 7, 4, 0, 0, 2428, 2429, 7, 1, 0, 0, 2429, 2430, 7, 10, 0, 0, 2430, 432, 1, 0, 0, 0, 2431, 2432, 7, 5, 0, 0, 2432, 2433, 7, 4, 0, 0, 2433, 2434, 7, 21, 0, 0, 2434, 2435, 7, 13, 0, 0, 2435, 2436, 7, 11, 0, 0, 2436, 2437, 7, 22, 0, 0, 2437, 434, 1, 0, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 4, 0, 0, 2440, 2441, 7, 3, 0, 0, 2441, 2442, 7, 4, 0, 0, 2442, 2443, 7, 21, 0, 0, 2443, 2444, 7, 6, 0, 0, 2444, 436, 1, 0, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, 7, 4, 0, 0, 2447, 2448, 7, 5, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, 7, 0, 0, 0, 2450, 2451, 7, 13, 0, 0, 2451, 2452, 7, 11, 0, 0, 2452, 438, 1, 0, 0, 0, 2453, 2454, 7, 5, 0, 0, 2454, 2455, 7, 4, 0, 0, 2455, 2456, 7, 5, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 0, 0, 0, 2458, 2459, 7, 13, 0, 0, 2459, 2460, 7, 11, 0, 0, 2460, 2461, 5, 95, 0, 0, 2461, 2462, 7, 8, 0, 0, 2462, 2463, 7, 5, 0, 0, 2463, 2464, 7, 4, 0, 0, 2464, 2465, 7, 7, 0, 0, 2465, 440, 1, 0, 0, 0, 2466, 2467, 7, 5, 0, 0, 2467, 2468, 7, 4, 0, 0, 2468, 2469, 7, 6, 0, 0, 2469, 442, 1, 0, 0, 0, 2470, 2471, 7, 5, 0, 0, 2471, 2472, 7, 0, 0, 0, 2472, 2473, 7, 24, 0, 0, 2473, 2474, 7, 11, 0, 0, 2474, 2475, 7, 4, 0, 0, 2475, 2476, 7, 22, 0, 0, 2476, 444, 1, 0, 0, 0, 2477, 2478, 7, 5, 0, 0, 2478, 2479, 7, 0, 0, 0, 2479, 2480, 7, 11, 0, 0, 2480, 446, 1, 0, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, 7, 0, 0, 0, 2483, 2484, 7, 11, 0, 0, 2484, 2485, 7, 26, 0, 0, 2485, 448, 1, 0, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 0, 0, 0, 2488, 2489, 7, 27, 0, 0, 2489, 2490, 7, 4, 0, 0, 2490, 450, 1, 0, 0, 0, 2491, 2492, 7, 5, 0, 0, 2492, 2493, 7, 12, 0, 0, 2493, 2494, 7, 0, 0, 0, 2494, 2495, 7, 2, 0, 0, 2495, 452, 1, 0, 0, 0, 2496, 2497, 7, 5, 0, 0, 2497, 2498, 7, 1, 0, 0, 2498, 2499, 7, 10, 0, 0, 2499, 2500, 7, 3, 0, 0, 2500, 2501, 7, 3, 0, 0, 2501, 454, 1, 0, 0, 0, 2502, 2503, 7, 5, 0, 0, 2503, 2504, 7, 1, 0, 0, 2504, 2505, 7, 10, 0, 0, 2505, 2506, 7, 3, 0, 0, 2506, 2507, 7, 3, 0, 0, 2507, 2508, 7, 0, 0, 0, 2508, 2509, 7, 11, 0, 0, 2509, 2510, 7, 6, 0, 0, 2510, 456, 1, 0, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, 7, 28, 0, 0, 2513, 2514, 7, 7, 0, 0, 2514, 2515, 7, 6, 0, 0, 2515, 458, 1, 0, 0, 0, 2516, 2517, 7, 5, 0, 0, 2517, 2518, 7, 6, 0, 0, 2518, 2519, 7, 10, 0, 0, 2519, 2520, 7, 7, 0, 0, 2520, 2521, 7, 6, 0, 0, 2521, 460, 1, 0, 0, 0, 2522, 2523, 7, 5, 0, 0, 2523, 2524, 7, 6, 0, 0, 2524, 2525, 7, 22, 0, 0, 2525, 2526, 7, 22, 0, 0, 2526, 2527, 7, 4, 0, 0, 2527, 2528, 7, 25, 0, 0, 2528, 2529, 5, 95, 0, 0, 2529, 2530, 7, 2, 0, 0, 2530, 2531, 7, 13, 0, 0, 2531, 2532, 7, 2, 0, 0, 2532, 462, 1, 0, 0, 0, 2533, 2534, 7, 5, 0, 0, 2534, 2535, 7, 6, 0, 0, 2535, 2536, 7, 22, 0, 0, 2536, 2537, 7, 22, 0, 0, 2537, 2538, 7, 4, 0, 0, 2538, 2539, 7, 25, 0, 0, 2539, 2540, 5, 95, 0, 0, 2540, 2541, 7, 5, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, 7, 1, 0, 0, 2543, 2544, 7, 2, 0, 0, 2544, 464, 1, 0, 0, 0, 2545, 2546, 7, 5, 0, 0, 2546, 2547, 7, 6, 0, 0, 2547, 2548, 7, 7, 0, 0, 2548, 2549, 7, 0, 0, 0, 2549, 2550, 7, 11, 0, 0, 2550, 2551, 7, 24, 0, 0, 2551, 466, 1, 0, 0, 0, 2552, 2553, 7, 5, 0, 0, 2553, 2554, 7, 8, 0, 0, 2554, 2555, 7, 1, 0, 0, 2555, 468, 1, 0, 0, 0, 2556, 2557, 7, 6, 0, 0, 2557, 2558, 7, 10, 0, 0, 2558, 2559, 7, 11, 0, 0, 2559, 470, 1, 0, 0, 0, 2560, 2561, 7, 6, 0, 0, 2561, 2562, 7, 10, 0, 0, 2562, 2563, 7, 11, 0, 0, 2563, 2564, 7, 26, 0, 0, 2564, 472, 1, 0, 0, 0, 2565, 2566, 7, 6, 0, 0, 2566, 2567, 7, 26, 0, 0, 2567, 2568, 7, 4, 0, 0, 2568, 2569, 7, 11, 0, 0, 2569, 474, 1, 0, 0, 0, 2570, 2571, 7, 6, 0, 0, 2571, 2572, 7, 0, 0, 0, 2572, 2573, 7, 1, 0, 0, 2573, 2574, 7, 4, 0, 0, 2574, 476, 1, 0, 0, 0, 2575, 2576, 7, 6, 0, 0, 2576, 2577, 7, 0, 0, 0, 2577, 2578, 7, 1, 0, 0, 2578, 2579, 7, 4, 0, 0, 2579, 2580, 7, 5, 0, 0, 2580, 2581, 7, 6, 0, 0, 2581, 2582, 7, 10, 0, 0, 2582, 2583, 7, 1, 0, 0, 2583, 2584, 7, 2, 0, 0, 2584, 478, 1, 0, 0, 0, 2585, 2586, 7, 6, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 2588, 7, 10, 0, 0, 2588, 2589, 7, 0, 0, 0, 2589, 2590, 7, 3, 0, 0, 2590, 2591, 7, 0, 0, 0, 2591, 2592, 7, 11, 0, 0, 2592, 2593, 7, 24, 0, 0, 2593, 480, 1, 0, 0, 0, 2594, 2595, 7, 6, 0, 0, 2595, 2596, 7, 7, 0, 0, 2596, 2597, 7, 0, 0, 0, 2597, 2598, 7, 1, 0, 0, 2598, 482, 1, 0, 0, 0, 2599, 2600, 7, 6, 0, 0, 2600, 2601, 7, 23, 0, 0, 2601, 2602, 7, 2, 0, 0, 2602, 2603, 7, 4, 0, 0, 2603, 2604, 7, 22, 0, 0, 2604, 484, 1, 0, 0, 0, 2605, 2606, 7, 8, 0, 0, 2606, 2607, 7, 20, 0, 0, 2607, 2608, 7, 0, 0, 0, 2608, 2609, 7, 24, 0, 0, 2609, 2610, 7, 0, 0, 0, 2610, 2611, 7, 11, 0, 0, 2611, 2612, 7, 6, 0, 0, 2612, 486, 1, 0, 0, 0, 2613, 2614, 7, 8, 0, 0, 2614, 2615, 7, 0, 0, 0, 2615, 2616, 7, 11, 0, 0, 2616, 2617, 7, 6, 0, 0, 2617, 488, 1, 0, 0, 0, 2618, 2619, 7, 8, 0, 0, 2619, 2620, 7, 0, 0, 0, 2620, 2621, 7, 11, 0, 0, 2621, 2622, 7, 6, 0, 0, 2622, 2623, 5, 56, 0, 0, 2623, 490, 1, 0, 0, 0, 2624, 2625, 7, 8, 0, 0, 2625, 2626, 7, 0, 0, 0, 2626, 2627, 7, 11, 0, 0, 2627, 2628, 7, 6, 0, 0, 2628, 2629, 5, 49, 0, 0, 2629, 2630, 5, 54, 0, 0, 2630, 492, 1, 0, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 2633, 7, 0, 0, 0, 2633, 2634, 7, 11, 0, 0, 2634, 2635, 7, 6, 0, 0, 2635, 2636, 5, 51, 0, 0, 2636, 2637, 5, 50, 0, 0, 2637, 494, 1, 0, 0, 0, 2638, 2639, 7, 8, 0, 0, 2639, 2640, 7, 0, 0, 0, 2640, 2641, 7, 11, 0, 0, 2641, 2642, 7, 6, 0, 0, 2642, 2643, 5, 54, 0, 0, 2643, 2644, 5, 52, 0, 0, 2644, 496, 1, 0, 0, 0, 2645, 2646, 7, 8, 0, 0, 2646, 2647, 7, 0, 0, 0, 2647, 2648, 7, 11, 0, 0, 2648, 2649, 7, 6, 0, 0, 2649, 2650, 5, 49, 0, 0, 2650, 2651, 5, 50, 0, 0, 2651, 2652, 5, 56, 0, 0, 2652, 498, 1, 0, 0, 0, 2653, 2654, 7, 8, 0, 0, 2654, 2655, 7, 0, 0, 0, 2655, 2656, 7, 11, 0, 0, 2656, 2657, 7, 6, 0, 0, 2657, 2658, 5, 50, 0, 0, 2658, 2659, 5, 53, 0, 0, 2659, 2660, 5, 54, 0, 0, 2660, 500, 1, 0, 0, 0, 2661, 2662, 7, 8, 0, 0, 2662, 2663, 7, 11, 0, 0, 2663, 2664, 7, 0, 0, 0, 2664, 2665, 7, 13, 0, 0, 2665, 2666, 7, 11, 0, 0, 2666, 502, 1, 0, 0, 0, 2667, 2668, 7, 8, 0, 0, 2668, 2669, 7, 11, 0, 0, 2669, 2670, 7, 5, 0, 0, 2670, 2671, 7, 0, 0, 0, 2671, 2672, 7, 24, 0, 0, 2672, 2673, 7, 11, 0, 0, 2673, 2674, 7, 4, 0, 0, 2674, 2675, 7, 22, 0, 0, 2675, 504, 1, 0, 0, 0, 2676, 2677, 7, 8, 0, 0, 2677, 2678, 7, 2, 0, 0, 2678, 2679, 7, 2, 0, 0, 2679, 2680, 7, 4, 0, 0, 2680, 2681, 7, 7, 0, 0, 2681, 506, 1, 0, 0, 0, 2682, 2683, 7, 8, 0, 0, 2683, 2684, 7, 5, 0, 0, 2684, 2685, 7, 4, 0, 0, 2685, 508, 1, 0, 0, 0, 2686, 2687, 7, 8, 0, 0, 2687, 2688, 7, 5, 0, 0, 2688, 2689, 7, 1, 0, 0, 2689, 2690, 7, 10, 0, 0, 2690, 2691, 7, 3, 0, 0, 2691, 2692, 7, 3, 0, 0, 2692, 2693, 7, 0, 0, 0, 2693, 2694, 7, 11, 0, 0, 2694, 2695, 7, 6, 0, 0, 2695, 510, 1, 0, 0, 0, 2696, 2697, 7, 25, 0, 0, 2697, 2698, 7, 10, 0, 0, 2698, 2699, 7, 3, 0, 0, 2699, 2700, 7, 8, 0, 0, 2700, 2701, 7, 4, 0, 0, 2701, 512, 1, 0, 0, 0, 2702, 2703, 7, 25, 0, 0, 2703, 2704, 7, 10, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 20, 0, 0, 2706, 2707, 7, 0, 0, 0, 2707, 2708, 7, 11, 0, 0, 2708, 2709, 7, 10, 0, 0, 2709, 2710, 7, 7, 0, 0, 2710, 2711, 7, 23, 0, 0, 2711, 514, 1, 0, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 21, 0, 0, 2716, 2717, 7, 26, 0, 0, 2717, 2718, 7, 10, 0, 0, 2718, 2719, 7, 7, 0, 0, 2719, 516, 1, 0, 0, 0, 2720, 2721, 7, 25, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, 7, 7, 0, 0, 2723, 2724, 7, 0, 0, 0, 2724, 2725, 7, 10, 0, 0, 2725, 2726, 7, 20, 0, 0, 2726, 2727, 7, 3, 0, 0, 2727, 2728, 7, 4, 0, 0, 2728, 518, 1, 0, 0, 0, 2729, 2730, 7, 14, 0, 0, 2730, 2731, 7, 26, 0, 0, 2731, 2732, 7, 4, 0, 0, 2732, 2733, 7, 11, 0, 0, 2733, 520, 1, 0, 0, 0, 2734, 2735, 7, 14, 0, 0, 2735, 2736, 7, 26, 0, 0, 2736, 2737, 7, 4, 0, 0, 2737, 2738, 7, 7, 0, 0, 2738, 2739, 7, 4, 0, 0, 2739, 522, 1, 0, 0, 0, 2740, 2741, 7, 14, 0, 0, 2741, 2742, 7, 0, 0, 0, 2742, 2743, 7, 6, 0, 0, 2743, 2744, 7, 26, 0, 0, 2744, 524, 1, 0, 0, 0, 2745, 2746, 7, 18, 0, 0, 2746, 2747, 7, 13, 0, 0, 2747, 2748, 7, 7, 0, 0, 2748, 526, 1, 0, 0, 0, 2749, 2750, 7, 23, 0, 0, 2750, 2751, 7, 4, 0, 0, 2751, 2752, 7, 10, 0, 0, 2752, 2753, 7, 7, 0, 0, 2753, 528, 1, 0, 0, 0, 2754, 2755, 7, 23, 0, 0, 2755, 2756, 7, 0, 0, 0, 2756, 2757, 7, 4, 0, 0, 2757, 2758, 7, 3, 0, 0, 2758, 2759, 7, 22, 0, 0, 2759, 530, 1, 0, 0, 0, 2760, 2761, 7, 27, 0, 0, 2761, 2762, 7, 13, 0, 0, 2762, 2763, 7, 11, 0, 0, 2763, 2764, 7, 4, 0, 0, 2764, 2765, 7, 22, 0, 0, 2765, 532, 1, 0, 0, 0, 2766, 2767, 7, 27, 0, 0, 2767, 2768, 7, 13, 0, 0, 2768, 2769, 7, 11, 0, 0, 2769, 2770, 7, 4, 0, 0, 2770, 2771, 7, 22, 0, 0, 2771, 2772, 5, 95, 0, 0, 2772, 2773, 7, 22, 0, 0, 2773, 2774, 7, 10, 0, 0, 2774, 2775, 7, 6, 0, 0, 2775, 2776, 7, 4, 0, 0, 2776, 2777, 7, 6, 0, 0, 2777, 2778, 7, 0, 0, 0, 2778, 2779, 7, 1, 0, 0, 2779, 2780, 7, 4, 0, 0, 2780, 534, 1, 0, 0, 0, 2781, 2782, 7, 27, 0, 0, 2782, 2783, 7, 13, 0, 0, 2783, 2784, 7, 11, 0, 0, 2784, 2785, 7, 4, 0, 0, 2785, 2786, 7, 22, 0, 0, 2786, 2787, 5, 95, 0, 0, 2787, 2788, 7, 6, 0, 0, 2788, 2789, 7, 0, 0, 0, 2789, 2790, 7, 1, 0, 0, 2790, 2791, 7, 4, 0, 0, 2791, 536, 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 20, 0, 0, 2794, 2795, 7, 5, 0, 0, 2795, 2796, 7, 6, 0, 0, 2796, 2797, 7, 7, 0, 0, 2797, 2798, 7, 10, 0, 0, 2798, 2799, 7, 21, 0, 0, 2799, 2800, 7, 6, 0, 0, 2800, 538, 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 24, 0, 0, 2803, 2804, 7, 24, 0, 0, 2804, 2805, 7, 7, 0, 0, 2805, 2806, 7, 4, 0, 0, 2806, 2807, 7, 24, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 6, 0, 0, 2809, 2810, 7, 4, 0, 0, 2810, 540, 1, 0, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 2813, 7, 24, 0, 0, 2813, 2814, 7, 24, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, 7, 4, 0, 0, 2816, 2817, 7, 24, 0, 0, 2817, 2818, 7, 10, 0, 0, 2818, 2819, 7, 6, 0, 0, 2819, 2820, 7, 4, 0, 0, 2820, 2821, 7, 5, 0, 0, 2821, 542, 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 3, 0, 0, 2824, 2825, 7, 6, 0, 0, 2825, 2826, 7, 4, 0, 0, 2826, 2827, 7, 7, 0, 0, 2827, 544, 1, 0, 0, 0, 2828, 2829, 7, 21, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, 7, 6, 0, 0, 2831, 2832, 7, 10, 0, 0, 2832, 2833, 7, 3, 0, 0, 2833, 2834, 7, 13, 0, 0, 2834, 2835, 7, 24, 0, 0, 2835, 546, 1, 0, 0, 0, 2836, 2837, 7, 21, 0, 0, 2837, 2838, 7, 3, 0, 0, 2838, 2839, 7, 4, 0, 0, 2839, 2840, 7, 10, 0, 0, 2840, 2841, 7, 7, 0, 0, 2841, 548, 1, 0, 0, 0, 2842, 2843, 7, 21, 0, 0, 2843, 2844, 7, 3, 0, 0, 2844, 2845, 7, 13, 0, 0, 2845, 2846, 7, 11, 0, 0, 2846, 2847, 7, 4, 0, 0, 2847, 550, 1, 0, 0, 0, 2848, 2849, 7, 21, 0, 0, 2849, 2850, 7, 13, 0, 0, 2850, 2851, 7, 11, 0, 0, 2851, 2852, 7, 5, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 7, 0, 0, 2854, 2855, 7, 10, 0, 0, 2855, 2856, 7, 0, 0, 0, 2856, 2857, 7, 11, 0, 0, 2857, 2858, 7, 6, 0, 0, 2858, 552, 1, 0, 0, 0, 2859, 2860, 7, 21, 0, 0, 2860, 2861, 7, 8, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 2864, 7, 4, 0, 0, 2864, 2865, 7, 11, 0, 0, 2865, 2866, 7, 6, 0, 0, 2866, 2867, 5, 95, 0, 0, 2867, 2868, 7, 7, 0, 0, 2868, 2869, 7, 13, 0, 0, 2869, 2870, 7, 3, 0, 0, 2870, 2871, 7, 4, 0, 0, 2871, 554, 1, 0, 0, 0, 2872, 2873, 7, 21, 0, 0, 2873, 2874, 7, 8, 0, 0, 2874, 2875, 7, 7, 0, 0, 2875, 2876, 7, 7, 0, 0, 2876, 2877, 7, 4, 0, 0, 2877, 2878, 7, 11, 0, 0, 2878, 2879, 7, 6, 0, 0, 2879, 2880, 5, 95, 0, 0, 2880, 2881, 7, 8, 0, 0, 2881, 2882, 7, 5, 0, 0, 2882, 2883, 7, 4, 0, 0, 2883, 2884, 7, 7, 0, 0, 2884, 556, 1, 0, 0, 0, 2885, 2886, 7, 22, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, 7, 6, 0, 0, 2888, 2889, 7, 10, 0, 0, 2889, 558, 1, 0, 0, 0, 2890, 2891, 7, 22, 0, 0, 2891, 2892, 7, 0, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 2894, 7, 4, 0, 0, 2894, 2895, 7, 21, 0, 0, 2895, 2896, 7, 6, 0, 0, 2896, 2897, 7, 13, 0, 0, 2897, 2898, 7, 7, 0, 0, 2898, 2899, 7, 23, 0, 0, 2899, 560, 1, 0, 0, 0, 2900, 2901, 7, 22, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, 7, 23, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 8, 0, 0, 2905, 2906, 7, 11, 0, 0, 2906, 562, 1, 0, 0, 0, 2907, 2908, 7, 4, 0, 0, 2908, 2909, 7, 18, 0, 0, 2909, 2910, 7, 10, 0, 0, 2910, 2911, 7, 21, 0, 0, 2911, 2912, 7, 6, 0, 0, 2912, 564, 1, 0, 0, 0, 2913, 2914, 7, 4, 0, 0, 2914, 2915, 7, 18, 0, 0, 2915, 2916, 7, 0, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, 7, 6, 0, 0, 2918, 2919, 7, 0, 0, 0, 2919, 2920, 7, 11, 0, 0, 2920, 2921, 7, 24, 0, 0, 2921, 566, 1, 0, 0, 0, 2922, 2923, 7, 9, 0, 0, 2923, 2924, 7, 8, 0, 0, 2924, 2925, 7, 11, 0, 0, 2925, 2926, 7, 21, 0, 0, 2926, 2927, 7, 6, 0, 0, 2927, 2928, 7, 0, 0, 0, 2928, 2929, 7, 13, 0, 0, 2929, 2930, 7, 11, 0, 0, 2930, 568, 1, 0, 0, 0, 2931, 2932, 7, 24, 0, 0, 2932, 2933, 7, 28, 0, 0, 2933, 2934, 7, 3, 0, 0, 2934, 2935, 7, 5, 0, 0, 2935, 2936, 7, 6, 0, 0, 2936, 2937, 7, 10, 0, 0, 2937, 2938, 7, 6, 0, 0, 2938, 2939, 7, 8, 0, 0, 2939, 2940, 7, 5, 0, 0, 2940, 570, 1, 0, 0, 0, 2941, 2942, 7, 24, 0, 0, 2942, 2943, 7, 7, 0, 0, 2943, 2944, 7, 10, 0, 0, 2944, 2945, 7, 11, 0, 0, 2945, 2946, 7, 6, 0, 0, 2946, 572, 1, 0, 0, 0, 2947, 2948, 7, 0, 0, 0, 2948, 2949, 7, 11, 0, 0, 2949, 2950, 7, 5, 0, 0, 2950, 2951, 7, 6, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 11, 0, 0, 2953, 2954, 7, 6, 0, 0, 2954, 574, 1, 0, 0, 0, 2955, 2956, 7, 0, 0, 0, 2956, 2957, 7, 11, 0, 0, 2957, 2958, 7, 9, 0, 0, 2958, 2959, 7, 0, 0, 0, 2959, 2960, 7, 11, 0, 0, 2960, 2961, 7, 0, 0, 0, 2961, 2962, 7, 6, 0, 0, 2962, 2963, 7, 23, 0, 0, 2963, 576, 1, 0, 0, 0, 2964, 2965, 7, 11, 0, 0, 2965, 2966, 7, 8, 0, 0, 2966, 2967, 7, 1, 0, 0, 2967, 2968, 7, 20, 0, 0, 2968, 2969, 7, 4, 0, 0, 2969, 2970, 7, 7, 0, 0, 2970, 578, 1, 0, 0, 0, 2971, 2972, 7, 11, 0, 0, 2972, 2973, 7, 8, 0, 0, 2973, 2974, 7, 1, 0, 0, 2974, 2975, 7, 4, 0, 0, 2975, 2976, 7, 7, 0, 0, 2976, 2977, 7, 0, 0, 0, 2977, 2978, 7, 21, 0, 0, 2978, 580, 1, 0, 0, 0, 2979, 2980, 7, 13, 0, 0, 2980, 2981, 7, 11, 0, 0, 2981, 582, 1, 0, 0, 0, 2982, 2983, 7, 13, 0, 0, 2983, 2984, 7, 2, 0, 0, 2984, 2985, 7, 4, 0, 0, 2985, 2986, 7, 11, 0, 0, 2986, 584, 1, 0, 0, 0, 2987, 2988, 7, 2, 0, 0, 2988, 2989, 7, 10, 0, 0, 2989, 2990, 7, 7, 0, 0, 2990, 2991, 7, 6, 0, 0, 2991, 2992, 7, 0, 0, 0, 2992, 2993, 7, 6, 0, 0, 2993, 2994, 7, 0, 0, 0, 2994, 2995, 7, 13, 0, 0, 2995, 2996, 7, 11, 0, 0, 2996, 586, 1, 0, 0, 0, 2997, 2998, 7, 2, 0, 0, 2998, 2999, 7, 7, 0, 0, 2999, 3000, 7, 13, 0, 0, 3000, 3001, 7, 21, 0, 0, 3001, 3002, 7, 4, 0, 0, 3002, 3003, 7, 22, 0, 0, 3003, 3004, 7, 8, 0, 0, 3004, 3005, 7, 7, 0, 0, 3005, 3006, 7, 4, 0, 0, 3006, 588, 1, 0, 0, 0, 3007, 3008, 7, 2, 0, 0, 3008, 3009, 7, 7, 0, 0, 3009, 3010, 7, 13, 0, 0, 3010, 3011, 7, 22, 0, 0, 3011, 3012, 7, 8, 0, 0, 3012, 3013, 7, 21, 0, 0, 3013, 3014, 7, 6, 0, 0, 3014, 590, 1, 0, 0, 0, 3015, 3016, 7, 2, 0, 0, 3016, 3017, 7, 7, 0, 0, 3017, 3018, 7, 13, 0, 0, 3018, 3019, 7, 29, 0, 0, 3019, 3020, 7, 4, 0, 0, 3020, 3021, 7, 21, 0, 0, 3021, 3022, 7, 6, 0, 0, 3022, 592, 1, 0, 0, 0, 3023, 3024, 7, 28, 0, 0, 3024, 3025, 7, 8, 0, 0, 3025, 3026, 7, 4, 0, 0, 3026, 3027, 7, 7, 0, 0, 3027, 3028, 7, 23, 0, 0, 3028, 594, 1, 0, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 4, 0, 0, 3031, 3032, 7, 21, 0, 0, 3032, 3033, 7, 13, 0, 0, 3033, 3034, 7, 7, 0, 0, 3034, 3035, 7, 22, 0, 0, 3035, 3036, 7, 5, 0, 0, 3036, 596, 1, 0, 0, 0, 3037, 3038, 7, 7, 0, 0, 3038, 3039, 7, 4, 0, 0, 3039, 3040, 7, 9, 0, 0, 3040, 3041, 7, 4, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 4, 0, 0, 3043, 3044, 7, 11, 0, 0, 3044, 3045, 7, 21, 0, 0, 3045, 3046, 7, 4, 0, 0, 3046, 598, 1, 0, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 4, 0, 0, 3049, 3050, 7, 11, 0, 0, 3050, 3051, 7, 10, 0, 0, 3051, 3052, 7, 1, 0, 0, 3052, 3053, 7, 4, 0, 0, 3053, 600, 1, 0, 0, 0, 3054, 3055, 7, 7, 0, 0, 3055, 3056, 7, 4, 0, 0, 3056, 3057, 7, 25, 0, 0, 3057, 3058, 7, 13, 0, 0, 3058, 3059, 7, 12, 0, 0, 3059, 3060, 7, 4, 0, 0, 3060, 602, 1, 0, 0, 0, 3061, 3062, 7, 5, 0, 0, 3062, 3063, 7, 8, 0, 0, 3063, 3064, 7, 20, 0, 0, 3064, 3065, 7, 5, 0, 0, 3065, 3066, 7, 6, 0, 0, 3066, 3067, 7, 7, 0, 0, 3067, 3068, 7, 0, 0, 0, 3068, 3069, 7, 11, 0, 0, 3069, 3070, 7, 24, 0, 0, 3070, 604, 1, 0, 0, 0, 3071, 3072, 7, 5, 0, 0, 3072, 3073, 7, 23, 0, 0, 3073, 3074, 7, 5, 0, 0, 3074, 3075, 7, 6, 0, 0, 3075, 3076, 7, 4, 0, 0, 3076, 3077, 7, 1, 0, 0, 3077, 3078, 5, 95, 0, 0, 3078, 3079, 7, 8, 0, 0, 3079, 3080, 7, 5, 0, 0, 3080, 3081, 7, 4, 0, 0, 3081, 3082, 7, 7, 0, 0, 3082, 606, 1, 0, 0, 0, 3083, 3084, 7, 6, 0, 0, 3084, 3085, 7, 4, 0, 0, 3085, 3086, 7, 1, 0, 0, 3086, 3087, 7, 2, 0, 0, 3087, 3088, 7, 13, 0, 0, 3088, 3089, 7, 7, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 3, 0, 0, 3091, 608, 1, 0, 0, 0, 3092, 3093, 7, 8, 0, 0, 3093, 3094, 7, 11, 0, 0, 3094, 3095, 7, 0, 0, 0, 3095, 3096, 7, 28, 0, 0, 3096, 3097, 7, 8, 0, 0, 3097, 3098, 7, 4, 0, 0, 3098, 610, 1, 0, 0, 0, 3099, 3100, 7, 8, 0, 0, 3100, 3101, 7, 11, 0, 0, 3101, 3102, 7, 0, 0, 0, 3102, 3103, 7, 6, 0, 0, 3103, 612, 1, 0, 0, 0, 3104, 3105, 7, 25, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 3107, 7, 3, 0, 0, 3107, 3108, 7, 8, 0, 0, 3108, 3109, 7, 4, 0, 0, 3109, 3110, 7, 5, 0, 0, 3110, 614, 1, 0, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, 7, 21, 0, 0, 3113, 3114, 7, 23, 0, 0, 3114, 3115, 7, 21, 0, 0, 3115, 3116, 7, 3, 0, 0, 3116, 3117, 7, 0, 0, 0, 3117, 3118, 7, 21, 0, 0, 3118, 616, 1, 0, 0, 0, 3119, 3120, 7, 20, 0, 0, 3120, 3121, 7, 0, 0, 0, 3121, 3122, 7, 11, 0, 0, 3122, 3123, 7, 22, 0, 0, 3123, 3124, 7, 0, 0, 0, 3124, 3125, 7, 11, 0, 0, 3125, 3126, 7, 24, 0, 0, 3126, 618, 1, 0, 0, 0, 3127, 3128, 7, 20, 0, 0, 3128, 3129, 7, 0, 0, 0, 3129, 3130, 7, 11, 0, 0, 3130, 3131, 7, 22, 0, 0, 3131, 3132, 7, 0, 0, 0, 3132, 3133, 7, 11, 0, 0, 3133, 3134, 7, 24, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 620, 1, 0, 0, 0, 3136, 3137, 7, 21, 0, 0, 3137, 3138, 7, 13, 0, 0, 3138, 3139, 7, 11, 0, 0, 3139, 3140, 7, 11, 0, 0, 3140, 3141, 7, 4, 0, 0, 3141, 3142, 7, 21, 0, 0, 3142, 3143, 7, 6, 0, 0, 3143, 3144, 7, 0, 0, 0, 3144, 3145, 7, 11, 0, 0, 3145, 3146, 7, 24, 0, 0, 3146, 622, 1, 0, 0, 0, 3147, 3148, 7, 22, 0, 0, 3148, 3149, 7, 4, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 3152, 7, 0, 0, 0, 3152, 3153, 7, 11, 0, 0, 3153, 3154, 7, 10, 0, 0, 3154, 3155, 7, 6, 0, 0, 3155, 3156, 7, 0, 0, 0, 3156, 3157, 7, 13, 0, 0, 3157, 3158, 7, 11, 0, 0, 3158, 624, 1, 0, 0, 0, 3159, 3160, 7, 22, 0, 0, 3160, 3161, 7, 0, 0, 0, 3161, 3162, 7, 9, 0, 0, 3162, 3163, 7, 9, 0, 0, 3163, 3164, 7, 4, 0, 0, 3164, 3165, 7, 7, 0, 0, 3165, 3166, 7, 4, 0, 0, 3166, 3167, 7, 11, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 626, 1, 0, 0, 0, 3169, 3170, 7, 22, 0, 0, 3170, 3171, 7, 0, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, 7, 4, 0, 0, 3173, 3174, 7, 21, 0, 0, 3174, 3175, 7, 6, 0, 0, 3175, 3176, 7, 4, 0, 0, 3176, 3177, 7, 22, 0, 0, 3177, 628, 1, 0, 0, 0, 3178, 3179, 7, 4, 0, 0, 3179, 3180, 7, 22, 0, 0, 3180, 3181, 7, 24, 0, 0, 3181, 3182, 7, 4, 0, 0, 3182, 630, 1, 0, 0, 0, 3183, 3184, 7, 4, 0, 0, 3184, 3185, 7, 22, 0, 0, 3185, 3186, 7, 24, 0, 0, 3186, 3187, 7, 4, 0, 0, 3187, 3188, 7, 5, 0, 0, 3188, 632, 1, 0, 0, 0, 3189, 3190, 7, 4, 0, 0, 3190, 3191, 7, 3, 0, 0, 3191, 3192, 7, 4, 0, 0, 3192, 3193, 7, 1, 0, 0, 3193, 3194, 7, 4, 0, 0, 3194, 3195, 7, 11, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 634, 1, 0, 0, 0, 3197, 3198, 7, 4, 0, 0, 3198, 3199, 7, 3, 0, 0, 3199, 3200, 7, 4, 0, 0, 3200, 3201, 7, 1, 0, 0, 3201, 3202, 7, 4, 0, 0, 3202, 3203, 7, 11, 0, 0, 3203, 3204, 7, 6, 0, 0, 3204, 3205, 7, 5, 0, 0, 3205, 636, 1, 0, 0, 0, 3206, 3207, 7, 9, 0, 0, 3207, 3208, 7, 0, 0, 0, 3208, 3209, 7, 7, 0, 0, 3209, 3210, 7, 5, 0, 0, 3210, 3211, 7, 6, 0, 0, 3211, 638, 1, 0, 0, 0, 3212, 3213, 7, 24, 0, 0, 3213, 3214, 7, 7, 0, 0, 3214, 3215, 7, 10, 0, 0, 3215, 3216, 7, 2, 0, 0, 3216, 3217, 7, 26, 0, 0, 3217, 640, 1, 0, 0, 0, 3218, 3219, 7, 24, 0, 0, 3219, 3220, 7, 7, 0, 0, 3220, 3221, 7, 13, 0, 0, 3221, 3222, 7, 8, 0, 0, 3222, 3223, 7, 2, 0, 0, 3223, 3224, 7, 5, 0, 0, 3224, 642, 1, 0, 0, 0, 3225, 3226, 7, 12, 0, 0, 3226, 3227, 7, 4, 0, 0, 3227, 3228, 7, 4, 0, 0, 3228, 3229, 7, 2, 0, 0, 3229, 644, 1, 0, 0, 0, 3230, 3231, 7, 3, 0, 0, 3231, 3232, 7, 10, 0, 0, 3232, 3233, 7, 20, 0, 0, 3233, 3234, 7, 4, 0, 0, 3234, 3235, 7, 3, 0, 0, 3235, 646, 1, 0, 0, 0, 3236, 3237, 7, 3, 0, 0, 3237, 3238, 7, 10, 0, 0, 3238, 3239, 7, 20, 0, 0, 3239, 3240, 7, 4, 0, 0, 3240, 3241, 7, 3, 0, 0, 3241, 3242, 7, 4, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 648, 1, 0, 0, 0, 3244, 3245, 7, 3, 0, 0, 3245, 3246, 7, 10, 0, 0, 3246, 3247, 7, 20, 0, 0, 3247, 3248, 7, 4, 0, 0, 3248, 3249, 7, 3, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 650, 1, 0, 0, 0, 3251, 3252, 7, 3, 0, 0, 3252, 3253, 7, 10, 0, 0, 3253, 3254, 7, 5, 0, 0, 3254, 3255, 7, 6, 0, 0, 3255, 652, 1, 0, 0, 0, 3256, 3257, 7, 11, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 3259, 7, 21, 0, 0, 3259, 654, 1, 0, 0, 0, 3260, 3261, 7, 11, 0, 0, 3261, 3262, 7, 9, 0, 0, 3262, 3263, 7, 22, 0, 0, 3263, 656, 1, 0, 0, 0, 3264, 3265, 7, 11, 0, 0, 3265, 3266, 7, 9, 0, 0, 3266, 3267, 7, 12, 0, 0, 3267, 3268, 7, 21, 0, 0, 3268, 658, 1, 0, 0, 0, 3269, 3270, 7, 11, 0, 0, 3270, 3271, 7, 9, 0, 0, 3271, 3272, 7, 12, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 660, 1, 0, 0, 0, 3274, 3275, 7, 11, 0, 0, 3275, 3276, 7, 13, 0, 0, 3276, 662, 1, 0, 0, 0, 3277, 3278, 7, 11, 0, 0, 3278, 3279, 7, 13, 0, 0, 3279, 3280, 7, 22, 0, 0, 3280, 3281, 7, 4, 0, 0, 3281, 664, 1, 0, 0, 0, 3282, 3283, 7, 11, 0, 0, 3283, 3284, 7, 13, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 1, 0, 0, 3286, 3287, 7, 10, 0, 0, 3287, 3288, 7, 3, 0, 0, 3288, 3289, 7, 0, 0, 0, 3289, 3290, 7, 27, 0, 0, 3290, 3291, 7, 4, 0, 0, 3291, 3292, 7, 22, 0, 0, 3292, 666, 1, 0, 0, 0, 3293, 3294, 7, 13, 0, 0, 3294, 3295, 7, 11, 0, 0, 3295, 3296, 7, 3, 0, 0, 3296, 3297, 7, 23, 0, 0, 3297, 668, 1, 0, 0, 0, 3298, 3299, 7, 13, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 22, 0, 0, 3301, 3302, 7, 0, 0, 0, 3302, 3303, 7, 11, 0, 0, 3303, 3304, 7, 10, 0, 0, 3304, 3305, 7, 3, 0, 0, 3305, 3306, 7, 0, 0, 0, 3306, 3307, 7, 6, 0, 0, 3307, 3308, 7, 23, 0, 0, 3308, 670, 1, 0, 0, 0, 3309, 3310, 7, 2, 0, 0, 3310, 3311, 7, 7, 0, 0, 3311, 3312, 7, 13, 0, 0, 3312, 3313, 7, 2, 0, 0, 3313, 3314, 7, 4, 0, 0, 3314, 3315, 7, 7, 0, 0, 3315, 3316, 7, 6, 0, 0, 3316, 3317, 7, 23, 0, 0, 3317, 672, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, 7, 4, 0, 0, 3320, 3321, 7, 10, 0, 0, 3321, 3322, 7, 22, 0, 0, 3322, 674, 1, 0, 0, 0, 3323, 3324, 7, 7, 0, 0, 3324, 3325, 7, 4, 0, 0, 3325, 3326, 7, 3, 0, 0, 3326, 3327, 7, 10, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, 7, 0, 0, 0, 3329, 3330, 7, 13, 0, 0, 3330, 3331, 7, 11, 0, 0, 3331, 3332, 7, 5, 0, 0, 3332, 3333, 7, 26, 0, 0, 3333, 3334, 7, 0, 0, 0, 3334, 3335, 7, 2, 0, 0, 3335, 676, 1, 0, 0, 0, 3336, 3337, 7, 7, 0, 0, 3337, 3338, 7, 4, 0, 0, 3338, 3339, 7, 3, 0, 0, 3339, 3340, 7, 10, 0, 0, 3340, 3341, 7, 6, 0, 0, 3341, 3342, 7, 0, 0, 0, 3342, 3343, 7, 13, 0, 0, 3343, 3344, 7, 11, 0, 0, 3344, 3345, 7, 5, 0, 0, 3345, 3346, 7, 26, 0, 0, 3346, 3347, 7, 0, 0, 0, 3347, 3348, 7, 2, 0, 0, 3348, 3349, 7, 5, 0, 0, 3349, 678, 1, 0, 0, 0, 3350, 3351, 7, 7, 0, 0, 3351, 3352, 7, 4, 0, 0, 3352, 3353, 7, 2, 0, 0, 3353, 3354, 7, 4, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, 7, 6, 0, 0, 3356, 3357, 7, 10, 0, 0, 3357, 3358, 7, 20, 0, 0, 3358, 3359, 7, 3, 0, 0, 3359, 3360, 7, 4, 0, 0, 3360, 680, 1, 0, 0, 0, 3361, 3362, 7, 5, 0, 0, 3362, 3363, 7, 26, 0, 0, 3363, 3364, 7, 13, 0, 0, 3364, 3365, 7, 7, 0, 0, 3365, 3366, 7, 6, 0, 0, 3366, 3367, 7, 4, 0, 0, 3367, 3368, 7, 5, 0, 0, 3368, 3369, 7, 6, 0, 0, 3369, 682, 1, 0, 0, 0, 3370, 3371, 7, 5, 0, 0, 3371, 3372, 7, 0, 0, 0, 3372, 3373, 7, 1, 0, 0, 3373, 3374, 7, 2, 0, 0, 3374, 3375, 7, 3, 0, 0, 3375, 3376, 7, 4, 0, 0, 3376, 684, 1, 0, 0, 0, 3377, 3378, 7, 5, 0, 0, 3378, 3379, 7, 13, 0, 0, 3379, 3380, 7, 8, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 21, 0, 0, 3382, 3383, 7, 4, 0, 0, 3383, 686, 1, 0, 0, 0, 3384, 3385, 7, 6, 0, 0, 3385, 3386, 7, 10, 0, 0, 3386, 3387, 7, 20, 0, 0, 3387, 3388, 7, 3, 0, 0, 3388, 3389, 7, 4, 0, 0, 3389, 688, 1, 0, 0, 0, 3390, 3391, 7, 6, 0, 0, 3391, 3392, 7, 13, 0, 0, 3392, 690, 1, 0, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, 7, 7, 0, 0, 3395, 3396, 7, 10, 0, 0, 3396, 3397, 7, 0, 0, 0, 3397, 3398, 7, 3, 0, 0, 3398, 692, 1, 0, 0, 0, 3399, 3400, 7, 6, 0, 0, 3400, 3401, 7, 7, 0, 0, 3401, 3402, 7, 10, 0, 0, 3402, 3403, 7, 11, 0, 0, 3403, 3404, 7, 5, 0, 0, 3404, 3405, 7, 10, 0, 0, 3405, 3406, 7, 21, 0, 0, 3406, 3407, 7, 6, 0, 0, 3407, 3408, 7, 0, 0, 0, 3408, 3409, 7, 13, 0, 0, 3409, 3410, 7, 11, 0, 0, 3410, 694, 1, 0, 0, 0, 3411, 3412, 7, 6, 0, 0, 3412, 3413, 7, 23, 0, 0, 3413, 3414, 7, 2, 0, 0, 3414, 3415, 7, 4, 0, 0, 3415, 696, 1, 0, 0, 0, 3416, 3417, 7, 8, 0, 0, 3417, 3418, 7, 11, 0, 0, 3418, 3419, 7, 22, 0, 0, 3419, 3420, 7, 0, 0, 0, 3420, 3421, 7, 7, 0, 0, 3421, 3422, 7, 4, 0, 0, 3422, 3423, 7, 21, 0, 0, 3423, 3424, 7, 6, 0, 0, 3424, 3425, 7, 4, 0, 0, 3425, 3426, 7, 22, 0, 0, 3426, 698, 1, 0, 0, 0, 3427, 3428, 7, 25, 0, 0, 3428, 3429, 7, 4, 0, 0, 3429, 3430, 7, 7, 0, 0, 3430, 3431, 7, 6, 0, 0, 3431, 3432, 7, 4, 0, 0, 3432, 3433, 7, 18, 0, 0, 3433, 700, 1, 0, 0, 0, 3434, 3435, 7, 14, 0, 0, 3435, 3436, 7, 10, 0, 0, 3436, 3437, 7, 3, 0, 0, 3437, 3438, 7, 12, 0, 0, 3438, 702, 1, 0, 0, 0, 3439, 3440, 7, 14, 0, 0, 3440, 3441, 7, 0, 0, 0, 3441, 3442, 7, 6, 0, 0, 3442, 3443, 7, 26, 0, 0, 3443, 3444, 7, 13, 0, 0, 3444, 3445, 7, 8, 0, 0, 3445, 3446, 7, 6, 0, 0, 3446, 704, 1, 0, 0, 0, 3447, 3448, 7, 14, 0, 0, 3448, 3449, 7, 7, 0, 0, 3449, 3450, 7, 0, 0, 0, 3450, 3451, 7, 6, 0, 0, 3451, 3452, 7, 4, 0, 0, 3452, 706, 1, 0, 0, 0, 3453, 3454, 7, 27, 0, 0, 3454, 3455, 7, 13, 0, 0, 3455, 3456, 7, 11, 0, 0, 3456, 3457, 7, 4, 0, 0, 3457, 708, 1, 0, 0, 0, 3458, 3461, 3, 715, 357, 0, 3459, 3461, 3, 713, 356, 0, 3460, 3458, 1, 0, 0, 0, 3460, 3459, 1, 0, 0, 0, 3461, 710, 1, 0, 0, 0, 3462, 3466, 3, 721, 360, 0, 3463, 3465, 3, 723, 361, 0, 3464, 3463, 1, 0, 0, 0, 3465, 3468, 1, 0, 0, 0, 3466, 3464, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 712, 1, 0, 0, 0, 3468, 3466, 1, 0, 0, 0, 3469, 3471, 3, 723, 361, 0, 3470, 3469, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3470, 1, 0, 0, 0, 3472, 3473, 1, 0, 0, 0, 3473, 714, 1, 0, 0, 0, 3474, 3477, 3, 9, 4, 0, 3475, 3477, 3, 11, 5, 0, 3476, 3474, 1, 0, 0, 0, 3476, 3475, 1, 0, 0, 0, 3477, 716, 1, 0, 0, 0, 3478, 3479, 3, 739, 369, 0, 3479, 3480, 3, 3, 1, 0, 3480, 718, 1, 0, 0, 0, 3481, 3482, 3, 799, 399, 0, 3482, 3483, 3, 3, 1, 0, 3483, 720, 1, 0, 0, 0, 3484, 3487, 3, 725, 362, 0, 3485, 3487, 3, 875, 437, 0, 3486, 3484, 1, 0, 0, 0, 3486, 3485, 1, 0, 0, 0, 3487, 722, 1, 0, 0, 0, 3488, 3489, 3, 727, 363, 0, 3489, 724, 1, 0, 0, 0, 3490, 3491, 7, 30, 0, 0, 3491, 726, 1, 0, 0, 0, 3492, 3493, 7, 31, 0, 0, 3493, 728, 1, 0, 0, 0, 3494, 3495, 5, 124, 0, 0, 3495, 3496, 5, 43, 0, 0, 3496, 3497, 5, 124, 0, 0, 3497, 730, 1, 0, 0, 0, 3498, 3499, 5, 93, 0, 0, 3499, 3500, 5, 45, 0, 0, 3500, 3501, 5, 62, 0, 0, 3501, 732, 1, 0, 0, 0, 3502, 3503, 5, 93, 0, 0, 3503, 3504, 5, 126, 0, 0, 3504, 3505, 5, 62, 0, 0, 3505, 734, 1, 0, 0, 0, 3506, 3507, 5, 124, 0, 0, 3507, 3508, 5, 124, 0, 0, 3508, 736, 1, 0, 0, 0, 3509, 3510, 5, 58, 0, 0, 3510, 3511, 5, 58, 0, 0, 3511, 738, 1, 0, 0, 0, 3512, 3513, 5, 36, 0, 0, 3513, 3514, 5, 36, 0, 0, 3514, 740, 1, 0, 0, 0, 3515, 3516, 5, 46, 0, 0, 3516, 3517, 5, 46, 0, 0, 3517, 742, 1, 0, 0, 0, 3518, 3519, 5, 62, 0, 0, 3519, 3520, 5, 61, 0, 0, 3520, 744, 1, 0, 0, 0, 3521, 3522, 5, 60, 0, 0, 3522, 3523, 5, 45, 0, 0, 3523, 746, 1, 0, 0, 0, 3524, 3525, 5, 60, 0, 0, 3525, 3526, 5, 126, 0, 0, 3526, 748, 1, 0, 0, 0, 3527, 3528, 5, 60, 0, 0, 3528, 3529, 5, 45, 0, 0, 3529, 3530, 5, 91, 0, 0, 3530, 750, 1, 0, 0, 0, 3531, 3532, 5, 60, 0, 0, 3532, 3533, 5, 126, 0, 0, 3533, 3534, 5, 91, 0, 0, 3534, 752, 1, 0, 0, 0, 3535, 3536, 5, 60, 0, 0, 3536, 3537, 5, 45, 0, 0, 3537, 3538, 5, 62, 0, 0, 3538, 754, 1, 0, 0, 0, 3539, 3540, 5, 60, 0, 0, 3540, 3541, 5, 45, 0, 0, 3541, 3542, 5, 47, 0, 0, 3542, 756, 1, 0, 0, 0, 3543, 3544, 5, 60, 0, 0, 3544, 3545, 5, 126, 0, 0, 3545, 3546, 5, 47, 0, 0, 3546, 758, 1, 0, 0, 0, 3547, 3548, 5, 60, 0, 0, 3548, 3549, 5, 61, 0, 0, 3549, 760, 1, 0, 0, 0, 3550, 3551, 5, 45, 0, 0, 3551, 3552, 5, 91, 0, 0, 3552, 762, 1, 0, 0, 0, 3553, 3554, 5, 45, 0, 0, 3554, 3555, 5, 47, 0, 0, 3555, 764, 1, 0, 0, 0, 3556, 3557, 5, 60, 0, 0, 3557, 3558, 5, 62, 0, 0, 3558, 766, 1, 0, 0, 0, 3559, 3560, 5, 45, 0, 0, 3560, 3561, 5, 62, 0, 0, 3561, 768, 1, 0, 0, 0, 3562, 3563, 5, 93, 0, 0, 3563, 3564, 5, 45, 0, 0, 3564, 770, 1, 0, 0, 0, 3565, 3566, 5, 93, 0, 0, 3566, 3567, 5, 126, 0, 0, 3567, 772, 1, 0, 0, 0, 3568, 3569, 5, 61, 0, 0, 3569, 3570, 5, 62, 0, 0, 3570, 774, 1, 0, 0, 0, 3571, 3572, 5, 47, 0, 0, 3572, 3573, 5, 45, 0, 0, 3573, 776, 1, 0, 0, 0, 3574, 3575, 5, 47, 0, 0, 3575, 3576, 5, 45, 0, 0, 3576, 3577, 5, 62, 0, 0, 3577, 778, 1, 0, 0, 0, 3578, 3579, 5, 47, 0, 0, 3579, 3580, 5, 126, 0, 0, 3580, 780, 1, 0, 0, 0, 3581, 3582, 5, 47, 0, 0, 3582, 3583, 5, 126, 0, 0, 3583, 3584, 5, 62, 0, 0, 3584, 782, 1, 0, 0, 0, 3585, 3586, 5, 126, 0, 0, 3586, 3587, 5, 91, 0, 0, 3587, 784, 1, 0, 0, 0, 3588, 3589, 5, 126, 0, 0, 3589, 3590, 5, 62, 0, 0, 3590, 786, 1, 0, 0, 0, 3591, 3592, 5, 126, 0, 0, 3592, 3593, 5, 47, 0, 0, 3593, 788, 1, 0, 0, 0, 3594, 3595, 5, 38, 0, 0, 3595, 790, 1, 0, 0, 0, 3596, 3597, 5, 42, 0, 0, 3597, 792, 1, 0, 0, 0, 3598, 3599, 5, 58, 0, 0, 3599, 794, 1, 0, 0, 0, 3600, 3601, 5, 44, 0, 0, 3601, 796, 1, 0, 0, 0, 3602, 3603, 5, 64, 0, 0, 3603, 798, 1, 0, 0, 0, 3604, 3605, 5, 36, 0, 0, 3605, 800, 1, 0, 0, 0, 3606, 3607, 5, 34, 0, 0, 3607, 802, 1, 0, 0, 0, 3608, 3609, 5, 61, 0, 0, 3609, 804, 1, 0, 0, 0, 3610, 3611, 5, 33, 0, 0, 3611, 806, 1, 0, 0, 0, 3612, 3613, 5, 62, 0, 0, 3613, 808, 1, 0, 0, 0, 3614, 3615, 5, 96, 0, 0, 3615, 810, 1, 0, 0, 0, 3616, 3617, 5, 123, 0, 0, 3617, 812, 1, 0, 0, 0, 3618, 3619, 5, 91, 0, 0, 3619, 814, 1, 0, 0, 0, 3620, 3621, 5, 40, 0, 0, 3621, 816, 1, 0, 0, 0, 3622, 3623, 5, 60, 0, 0, 3623, 818, 1, 0, 0, 0, 3624, 3625, 5, 45, 0, 0, 3625, 820, 1, 0, 0, 0, 3626, 3627, 5, 37, 0, 0, 3627, 822, 1, 0, 0, 0, 3628, 3629, 5, 46, 0, 0, 3629, 824, 1, 0, 0, 0, 3630, 3631, 5, 43, 0, 0, 3631, 826, 1, 0, 0, 0, 3632, 3633, 5, 63, 0, 0, 3633, 828, 1, 0, 0, 0, 3634, 3635, 5, 39, 0, 0, 3635, 830, 1, 0, 0, 0, 3636, 3637, 5, 92, 0, 0, 3637, 832, 1, 0, 0, 0, 3638, 3639, 5, 125, 0, 0, 3639, 834, 1, 0, 0, 0, 3640, 3641, 5, 93, 0, 0, 3641, 836, 1, 0, 0, 0, 3642, 3643, 5, 41, 0, 0, 3643, 838, 1, 0, 0, 0, 3644, 3645, 5, 47, 0, 0, 3645, 840, 1, 0, 0, 0, 3646, 3647, 5, 126, 0, 0, 3647, 842, 1, 0, 0, 0, 3648, 3649, 5, 95, 0, 0, 3649, 844, 1, 0, 0, 0, 3650, 3651, 5, 124, 0, 0, 3651, 846, 1, 0, 0, 0, 3652, 3653, 7, 32, 0, 0, 3653, 848, 1, 0, 0, 0, 3654, 3655, 7, 33, 0, 0, 3655, 850, 1, 0, 0, 0, 3656, 3657, 7, 34, 0, 0, 3657, 852, 1, 0, 0, 0, 3658, 3659, 7, 35, 0, 0, 3659, 854, 1, 0, 0, 0, 3660, 3662, 3, 857, 428, 0, 3661, 3660, 1, 0, 0, 0, 3662, 3663, 1, 0, 0, 0, 3663, 3661, 1, 0, 0, 0, 3663, 3664, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3666, 6, 427, 0, 0, 3666, 856, 1, 0, 0, 0, 3667, 3679, 3, 873, 436, 0, 3668, 3679, 3, 877, 438, 0, 3669, 3679, 3, 879, 439, 0, 3670, 3679, 3, 881, 440, 0, 3671, 3679, 3, 885, 442, 0, 3672, 3679, 3, 869, 434, 0, 3673, 3679, 3, 867, 433, 0, 3674, 3679, 3, 865, 432, 0, 3675, 3679, 3, 887, 443, 0, 3676, 3679, 3, 883, 441, 0, 3677, 3679, 7, 36, 0, 0, 3678, 3667, 1, 0, 0, 0, 3678, 3668, 1, 0, 0, 0, 3678, 3669, 1, 0, 0, 0, 3678, 3670, 1, 0, 0, 0, 3678, 3671, 1, 0, 0, 0, 3678, 3672, 1, 0, 0, 0, 3678, 3673, 1, 0, 0, 0, 3678, 3674, 1, 0, 0, 0, 3678, 3675, 1, 0, 0, 0, 3678, 3676, 1, 0, 0, 0, 3678, 3677, 1, 0, 0, 0, 3679, 858, 1, 0, 0, 0, 3680, 3681, 5, 47, 0, 0, 3681, 3682, 5, 42, 0, 0, 3682, 3686, 1, 0, 0, 0, 3683, 3685, 9, 0, 0, 0, 3684, 3683, 1, 0, 0, 0, 3685, 3688, 1, 0, 0, 0, 3686, 3687, 1, 0, 0, 0, 3686, 3684, 1, 0, 0, 0, 3687, 3689, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, 3689, 3690, 5, 42, 0, 0, 3690, 3691, 5, 47, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3693, 6, 429, 0, 0, 3693, 860, 1, 0, 0, 0, 3694, 3695, 5, 47, 0, 0, 3695, 3696, 5, 47, 0, 0, 3696, 3700, 1, 0, 0, 0, 3697, 3699, 8, 37, 0, 0, 3698, 3697, 1, 0, 0, 0, 3699, 3702, 1, 0, 0, 0, 3700, 3698, 1, 0, 0, 0, 3700, 3701, 1, 0, 0, 0, 3701, 3703, 1, 0, 0, 0, 3702, 3700, 1, 0, 0, 0, 3703, 3704, 6, 430, 0, 0, 3704, 862, 1, 0, 0, 0, 3705, 3706, 5, 45, 0, 0, 3706, 3707, 5, 45, 0, 0, 3707, 3711, 1, 0, 0, 0, 3708, 3710, 8, 37, 0, 0, 3709, 3708, 1, 0, 0, 0, 3710, 3713, 1, 0, 0, 0, 3711, 3709, 1, 0, 0, 0, 3711, 3712, 1, 0, 0, 0, 3712, 3714, 1, 0, 0, 0, 3713, 3711, 1, 0, 0, 0, 3714, 3715, 6, 431, 0, 0, 3715, 864, 1, 0, 0, 0, 3716, 3717, 7, 38, 0, 0, 3717, 866, 1, 0, 0, 0, 3718, 3719, 7, 39, 0, 0, 3719, 868, 1, 0, 0, 0, 3720, 3721, 7, 40, 0, 0, 3721, 870, 1, 0, 0, 0, 3722, 3723, 7, 41, 0, 0, 3723, 872, 1, 0, 0, 0, 3724, 3725, 7, 42, 0, 0, 3725, 874, 1, 0, 0, 0, 3726, 3727, 7, 43, 0, 0, 3727, 876, 1, 0, 0, 0, 3728, 3729, 7, 44, 0, 0, 3729, 878, 1, 0, 0, 0, 3730, 3731, 7, 45, 0, 0, 3731, 880, 1, 0, 0, 0, 3732, 3733, 7, 46, 0, 0, 3733, 882, 1, 0, 0, 0, 3734, 3735, 7, 47, 0, 0, 3735, 884, 1, 0, 0, 0, 3736, 3737, 7, 48, 0, 0, 3737, 886, 1, 0, 0, 0, 3738, 3739, 7, 49, 0, 0, 3739, 888, 1, 0, 0, 0, 42, 0, 897, 917, 920, 925, 930, 940, 949, 958, 967, 969, 975, 977, 983, 985, 998, 1052, 1059, 1066, 1071, 1100, 1105, 1116, 1123, 1128, 1132, 1138, 1143, 1150, 1155, 1162, 1167, 3460, 3466, 3472, 3476, 3486, 3663, 3678, 3686, 3700, 3711, 1, 0, 1, 0] \ No newline at end of file diff --git a/endpoints/gql/parser/GQLLexer.tokens b/endpoints/gql/parser/GQLLexer.tokens new file mode 100644 index 00000000..4ad05bf4 --- /dev/null +++ b/endpoints/gql/parser/GQLLexer.tokens @@ -0,0 +1,753 @@ +IMPLIES=1 +BOOLEAN_LITERAL=2 +SINGLE_QUOTED_CHARACTER_SEQUENCE=3 +DOUBLE_QUOTED_CHARACTER_SEQUENCE=4 +ACCENT_QUOTED_CHARACTER_SEQUENCE=5 +NO_ESCAPE=6 +BYTE_STRING_LITERAL=7 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX=8 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX=9 +UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX=10 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX=11 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX=12 +UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX=13 +UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX=14 +UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX=15 +UNSIGNED_DECIMAL_INTEGER=16 +UNSIGNED_HEXADECIMAL_INTEGER=17 +UNSIGNED_OCTAL_INTEGER=18 +UNSIGNED_BINARY_INTEGER=19 +ABS=20 +ACOS=21 +ALL=22 +ALL_DIFFERENT=23 +AND=24 +ANY=25 +ARRAY=26 +AS=27 +ASC=28 +ASCENDING=29 +ASIN=30 +AT=31 +ATAN=32 +AVG=33 +BIG=34 +BIGINT=35 +BINARY=36 +BOOL=37 +BOOLEAN=38 +BOTH=39 +BTRIM=40 +BY=41 +BYTE_LENGTH=42 +BYTES=43 +CALL=44 +CARDINALITY=45 +CASE=46 +CAST=47 +CEIL=48 +CEILING=49 +CHAR=50 +CHAR_LENGTH=51 +CHARACTER_LENGTH=52 +CHARACTERISTICS=53 +CLOSE=54 +COALESCE=55 +COLLECT_LIST=56 +COMMIT=57 +COPY=58 +COS=59 +COSH=60 +COT=61 +COUNT=62 +CREATE=63 +CURRENT_DATE=64 +CURRENT_GRAPH=65 +CURRENT_PROPERTY_GRAPH=66 +CURRENT_SCHEMA=67 +CURRENT_TIME=68 +CURRENT_TIMESTAMP=69 +DATE=70 +DATETIME=71 +DAY=72 +DEC=73 +DECIMAL=74 +DEGREES=75 +DELETE=76 +DESC=77 +DESCENDING=78 +DETACH=79 +DISTINCT=80 +DOUBLE=81 +DROP=82 +DURATION=83 +DURATION_BETWEEN=84 +ELEMENT_ID=85 +ELSE=86 +END=87 +EXCEPT=88 +EXISTS=89 +EXP=90 +FILTER=91 +FINISH=92 +FLOAT=93 +FLOAT16=94 +FLOAT32=95 +FLOAT64=96 +FLOAT128=97 +FLOAT256=98 +FLOOR=99 +FOR=100 +FROM=101 +GROUP=102 +HAVING=103 +HOME_GRAPH=104 +HOME_PROPERTY_GRAPH=105 +HOME_SCHEMA=106 +HOUR=107 +IF=108 +IN=109 +INSERT=110 +INT=111 +INTEGER=112 +INT8=113 +INTEGER8=114 +INT16=115 +INTEGER16=116 +INT32=117 +INTEGER32=118 +INT64=119 +INTEGER64=120 +INT128=121 +INTEGER128=122 +INT256=123 +INTEGER256=124 +INTERSECT=125 +INTERVAL=126 +IS=127 +LEADING=128 +LEFT=129 +LET=130 +LIKE=131 +LIMIT=132 +LIST=133 +LN=134 +LOCAL=135 +LOCAL_DATETIME=136 +LOCAL_TIME=137 +LOCAL_TIMESTAMP=138 +LOG_KW=139 +LOG10=140 +LOWER=141 +LTRIM=142 +MATCH=143 +MAX=144 +MIN=145 +MINUTE=146 +MOD=147 +MONTH=148 +NEXT=149 +NODETACH=150 +NORMALIZE=151 +NOT=152 +NOTHING=153 +NULL_KW=154 +NULLS=155 +NULLIF=156 +OCTET_LENGTH=157 +OF=158 +OFFSET=159 +OPTIONAL=160 +OR=161 +ORDER=162 +OTHERWISE=163 +PARAMETER=164 +PARAMETERS=165 +PATH=166 +PATH_LENGTH=167 +PATHS=168 +PERCENTILE_CONT=169 +PERCENTILE_DISC=170 +POWER=171 +PRECISION=172 +PROPERTY_EXISTS=173 +RADIANS=174 +REAL=175 +RECORD=176 +REMOVE=177 +REPLACE=178 +RESET=179 +RETURN=180 +RIGHT=181 +ROLLBACK=182 +RTRIM=183 +SAME=184 +SCHEMA=185 +SECOND=186 +SELECT=187 +SESSION=188 +SESSION_USER=189 +SET=190 +SIGNED=191 +SIN=192 +SINH=193 +SIZE=194 +SKIP_RESERVED_WORD=195 +SMALL=196 +SMALLINT=197 +SQRT=198 +START=199 +STDDEV_POP=200 +STDDEV_SAMP=201 +STRING=202 +SUM=203 +TAN=204 +TANH=205 +THEN=206 +TIME=207 +TIMESTAMP=208 +TRAILING=209 +TRIM=210 +TYPED=211 +UBIGINT=212 +UINT=213 +UINT8=214 +UINT16=215 +UINT32=216 +UINT64=217 +UINT128=218 +UINT256=219 +UNION=220 +UNSIGNED=221 +UPPER=222 +USE=223 +USMALLINT=224 +VALUE=225 +VARBINARY=226 +VARCHAR=227 +VARIABLE=228 +WHEN=229 +WHERE=230 +WITH=231 +XOR=232 +YEAR=233 +YIELD=234 +ZONED=235 +ZONED_DATETIME=236 +ZONED_TIME=237 +ABSTRACT=238 +AGGREGATE=239 +AGGREGATES=240 +ALTER=241 +CATALOG=242 +CLEAR=243 +CLONE=244 +CONSTRAINT=245 +CURRENT_ROLE=246 +CURRENT_USER=247 +DATA=248 +DIRECTORY=249 +DRYRUN=250 +EXACT=251 +EXISTING=252 +FUNCTION=253 +GQLSTATUS=254 +GRANT=255 +INSTANT=256 +INFINITY_KW=257 +NUMBER=258 +NUMERIC=259 +ON=260 +OPEN=261 +PARTITION=262 +PROCEDURE=263 +PRODUCT=264 +PROJECT=265 +QUERY=266 +RECORDS=267 +REFERENCE=268 +RENAME=269 +REVOKE=270 +SUBSTRING=271 +SYSTEM_USER=272 +TEMPORAL=273 +UNIQUE=274 +UNIT=275 +VALUES=276 +ACYCLIC=277 +BINDING=278 +BINDINGS=279 +CONNECTING=280 +DESTINATION=281 +DIFFERENT=282 +DIRECTED=283 +EDGE=284 +EDGES=285 +ELEMENT=286 +ELEMENTS=287 +FIRST=288 +GRAPH=289 +GROUPS=290 +KEEP=291 +LABEL=292 +LABELED=293 +LABELS=294 +LAST=295 +NFC=296 +NFD=297 +NFKC=298 +NFKD=299 +NO=300 +NODE=301 +NORMALIZED=302 +ONLY=303 +ORDINALITY=304 +PROPERTY=305 +READ=306 +RELATIONSHIP=307 +RELATIONSHIPS=308 +REPEATABLE=309 +SHORTEST=310 +SIMPLE=311 +SOURCE=312 +TABLE=313 +TO=314 +TRAIL=315 +TRANSACTION=316 +TYPE=317 +UNDIRECTED=318 +VERTEX=319 +WALK=320 +WITHOUT=321 +WRITE=322 +ZONE=323 +REGULAR_IDENTIFIER=324 +SUBSTITUTED_PARAMETER_REFERENCE=325 +GENERAL_PARAMETER_REFERENCE=326 +MULTISET_ALTERNATION_OPERATOR=327 +BRACKET_RIGHT_ARROW=328 +BRACKET_TILDE_RIGHT_ARROW=329 +CONCATENATION_OPERATOR=330 +DOUBLE_COLON=331 +DOUBLE_DOLLAR_SIGN=332 +DOUBLE_PERIOD=333 +GREATER_THAN_OR_EQUALS_OPERATOR=334 +LEFT_ARROW=335 +LEFT_ARROW_TILDE=336 +LEFT_ARROW_BRACKET=337 +LEFT_ARROW_TILDE_BRACKET=338 +LEFT_MINUS_RIGHT=339 +LEFT_MINUS_SLASH=340 +LEFT_TILDE_SLASH=341 +LESS_THAN_OR_EQUALS_OPERATOR=342 +MINUS_LEFT_BRACKET=343 +MINUS_SLASH=344 +NOT_EQUALS_OPERATOR=345 +RIGHT_ARROW=346 +RIGHT_BRACKET_MINUS=347 +RIGHT_BRACKET_TILDE=348 +RIGHT_DOUBLE_ARROW=349 +SLASH_MINUS=350 +SLASH_MINUS_RIGHT=351 +SLASH_TILDE=352 +SLASH_TILDE_RIGHT=353 +TILDE_LEFT_BRACKET=354 +TILDE_RIGHT_ARROW=355 +TILDE_SLASH=356 +AMPERSAND=357 +ASTERISK=358 +COLON=359 +COMMA=360 +COMMERCIAL_AT=361 +DOLLAR_SIGN=362 +DOUBLE_QUOTE=363 +EQUALS_OPERATOR=364 +EXCLAMATION_MARK=365 +RIGHT_ANGLE_BRACKET=366 +GRAVE_ACCENT=367 +LEFT_BRACE=368 +LEFT_BRACKET=369 +LEFT_PAREN=370 +LEFT_ANGLE_BRACKET=371 +MINUS_SIGN=372 +PERCENT=373 +PERIOD=374 +PLUS_SIGN=375 +QUESTION_MARK=376 +QUOTE=377 +REVERSE_SOLIDUS=378 +RIGHT_BRACE=379 +RIGHT_BRACKET=380 +RIGHT_PAREN=381 +SOLIDUS=382 +TILDE=383 +UNDERSCORE=384 +VERTICAL_BAR=385 +SP=386 +WHITESPACE=387 +BRACKETED_COMMENT=388 +SIMPLE_COMMENT_SOLIDUS=389 +SIMPLE_COMMENT_MINUS=390 +'ABS'=20 +'ACOS'=21 +'ALL'=22 +'ALL_DIFFERENT'=23 +'AND'=24 +'ANY'=25 +'ARRAY'=26 +'AS'=27 +'ASC'=28 +'ASCENDING'=29 +'ASIN'=30 +'AT'=31 +'ATAN'=32 +'AVG'=33 +'BIG'=34 +'BIGINT'=35 +'BINARY'=36 +'BOOL'=37 +'BOOLEAN'=38 +'BOTH'=39 +'BTRIM'=40 +'BY'=41 +'BYTE_LENGTH'=42 +'BYTES'=43 +'CALL'=44 +'CARDINALITY'=45 +'CASE'=46 +'CAST'=47 +'CEIL'=48 +'CEILING'=49 +'CHAR'=50 +'CHAR_LENGTH'=51 +'CHARACTER_LENGTH'=52 +'CHARACTERISTICS'=53 +'CLOSE'=54 +'COALESCE'=55 +'COLLECT_LIST'=56 +'COMMIT'=57 +'COPY'=58 +'COS'=59 +'COSH'=60 +'COT'=61 +'COUNT'=62 +'CREATE'=63 +'CURRENT_DATE'=64 +'CURRENT_GRAPH'=65 +'CURRENT_PROPERTY_GRAPH'=66 +'CURRENT_SCHEMA'=67 +'CURRENT_TIME'=68 +'CURRENT_TIMESTAMP'=69 +'DATE'=70 +'DATETIME'=71 +'DAY'=72 +'DEC'=73 +'DECIMAL'=74 +'DEGREES'=75 +'DELETE'=76 +'DESC'=77 +'DESCENDING'=78 +'DETACH'=79 +'DISTINCT'=80 +'DOUBLE'=81 +'DROP'=82 +'DURATION'=83 +'DURATION_BETWEEN'=84 +'ELEMENT_ID'=85 +'ELSE'=86 +'END'=87 +'EXCEPT'=88 +'EXISTS'=89 +'EXP'=90 +'FILTER'=91 +'FINISH'=92 +'FLOAT'=93 +'FLOAT16'=94 +'FLOAT32'=95 +'FLOAT64'=96 +'FLOAT128'=97 +'FLOAT256'=98 +'FLOOR'=99 +'FOR'=100 +'FROM'=101 +'GROUP'=102 +'HAVING'=103 +'HOME_GRAPH'=104 +'HOME_PROPERTY_GRAPH'=105 +'HOME_SCHEMA'=106 +'HOUR'=107 +'IF'=108 +'IN'=109 +'INSERT'=110 +'INT'=111 +'INTEGER'=112 +'INT8'=113 +'INTEGER8'=114 +'INT16'=115 +'INTEGER16'=116 +'INT32'=117 +'INTEGER32'=118 +'INT64'=119 +'INTEGER64'=120 +'INT128'=121 +'INTEGER128'=122 +'INT256'=123 +'INTEGER256'=124 +'INTERSECT'=125 +'INTERVAL'=126 +'IS'=127 +'LEADING'=128 +'LEFT'=129 +'LET'=130 +'LIKE'=131 +'LIMIT'=132 +'LIST'=133 +'LN'=134 +'LOCAL'=135 +'LOCAL_DATETIME'=136 +'LOCAL_TIME'=137 +'LOCAL_TIMESTAMP'=138 +'LOG'=139 +'LOG10'=140 +'LOWER'=141 +'LTRIM'=142 +'MATCH'=143 +'MAX'=144 +'MIN'=145 +'MINUTE'=146 +'MOD'=147 +'MONTH'=148 +'NEXT'=149 +'NODETACH'=150 +'NORMALIZE'=151 +'NOT'=152 +'NOTHING'=153 +'NULL'=154 +'NULLS'=155 +'NULLIF'=156 +'OCTET_LENGTH'=157 +'OF'=158 +'OFFSET'=159 +'OPTIONAL'=160 +'OR'=161 +'ORDER'=162 +'OTHERWISE'=163 +'PARAMETER'=164 +'PARAMETERS'=165 +'PATH'=166 +'PATH_LENGTH'=167 +'PATHS'=168 +'PERCENTILE_CONT'=169 +'PERCENTILE_DISC'=170 +'POWER'=171 +'PRECISION'=172 +'PROPERTY_EXISTS'=173 +'RADIANS'=174 +'REAL'=175 +'RECORD'=176 +'REMOVE'=177 +'REPLACE'=178 +'RESET'=179 +'RETURN'=180 +'RIGHT'=181 +'ROLLBACK'=182 +'RTRIM'=183 +'SAME'=184 +'SCHEMA'=185 +'SECOND'=186 +'SELECT'=187 +'SESSION'=188 +'SESSION_USER'=189 +'SET'=190 +'SIGNED'=191 +'SIN'=192 +'SINH'=193 +'SIZE'=194 +'SKIP'=195 +'SMALL'=196 +'SMALLINT'=197 +'SQRT'=198 +'START'=199 +'STDDEV_POP'=200 +'STDDEV_SAMP'=201 +'STRING'=202 +'SUM'=203 +'TAN'=204 +'TANH'=205 +'THEN'=206 +'TIME'=207 +'TIMESTAMP'=208 +'TRAILING'=209 +'TRIM'=210 +'TYPED'=211 +'UBIGINT'=212 +'UINT'=213 +'UINT8'=214 +'UINT16'=215 +'UINT32'=216 +'UINT64'=217 +'UINT128'=218 +'UINT256'=219 +'UNION'=220 +'UNSIGNED'=221 +'UPPER'=222 +'USE'=223 +'USMALLINT'=224 +'VALUE'=225 +'VARBINARY'=226 +'VARCHAR'=227 +'VARIABLE'=228 +'WHEN'=229 +'WHERE'=230 +'WITH'=231 +'XOR'=232 +'YEAR'=233 +'YIELD'=234 +'ZONED'=235 +'ZONED_DATETIME'=236 +'ZONED_TIME'=237 +'ABSTRACT'=238 +'AGGREGATE'=239 +'AGGREGATES'=240 +'ALTER'=241 +'CATALOG'=242 +'CLEAR'=243 +'CLONE'=244 +'CONSTRAINT'=245 +'CURRENT_ROLE'=246 +'CURRENT_USER'=247 +'DATA'=248 +'DIRECTORY'=249 +'DRYRUN'=250 +'EXACT'=251 +'EXISTING'=252 +'FUNCTION'=253 +'GQLSTATUS'=254 +'GRANT'=255 +'INSTANT'=256 +'INFINITY'=257 +'NUMBER'=258 +'NUMERIC'=259 +'ON'=260 +'OPEN'=261 +'PARTITION'=262 +'PROCEDURE'=263 +'PRODUCT'=264 +'PROJECT'=265 +'QUERY'=266 +'RECORDS'=267 +'REFERENCE'=268 +'RENAME'=269 +'REVOKE'=270 +'SUBSTRING'=271 +'SYSTEM_USER'=272 +'TEMPORAL'=273 +'UNIQUE'=274 +'UNIT'=275 +'VALUES'=276 +'ACYCLIC'=277 +'BINDING'=278 +'BINDINGS'=279 +'CONNECTING'=280 +'DESTINATION'=281 +'DIFFERENT'=282 +'DIRECTED'=283 +'EDGE'=284 +'EDGES'=285 +'ELEMENT'=286 +'ELEMENTS'=287 +'FIRST'=288 +'GRAPH'=289 +'GROUPS'=290 +'KEEP'=291 +'LABEL'=292 +'LABELED'=293 +'LABELS'=294 +'LAST'=295 +'NFC'=296 +'NFD'=297 +'NFKC'=298 +'NFKD'=299 +'NO'=300 +'NODE'=301 +'NORMALIZED'=302 +'ONLY'=303 +'ORDINALITY'=304 +'PROPERTY'=305 +'READ'=306 +'RELATIONSHIP'=307 +'RELATIONSHIPS'=308 +'REPEATABLE'=309 +'SHORTEST'=310 +'SIMPLE'=311 +'SOURCE'=312 +'TABLE'=313 +'TO'=314 +'TRAIL'=315 +'TRANSACTION'=316 +'TYPE'=317 +'UNDIRECTED'=318 +'VERTEX'=319 +'WALK'=320 +'WITHOUT'=321 +'WRITE'=322 +'ZONE'=323 +'|+|'=327 +']->'=328 +']~>'=329 +'||'=330 +'::'=331 +'$$'=332 +'..'=333 +'>='=334 +'<-'=335 +'<~'=336 +'<-['=337 +'<~['=338 +'<->'=339 +'<-/'=340 +'<~/'=341 +'<='=342 +'-['=343 +'-/'=344 +'<>'=345 +'->'=346 +']-'=347 +']~'=348 +'=>'=349 +'/-'=350 +'/->'=351 +'/~'=352 +'/~>'=353 +'~['=354 +'~>'=355 +'~/'=356 +'&'=357 +'*'=358 +':'=359 +','=360 +'@'=361 +'$'=362 +'"'=363 +'='=364 +'!'=365 +'>'=366 +'`'=367 +'{'=368 +'['=369 +'('=370 +'<'=371 +'-'=372 +'%'=373 +'.'=374 +'+'=375 +'?'=376 +'\''=377 +'\\'=378 +'}'=379 +']'=380 +')'=381 +'/'=382 +'~'=383 +'_'=384 +'|'=385 diff --git a/endpoints/gql/parser/gql_base_listener.go b/endpoints/gql/parser/gql_base_listener.go new file mode 100644 index 00000000..dfc6e7f4 --- /dev/null +++ b/endpoints/gql/parser/gql_base_listener.go @@ -0,0 +1,3854 @@ +// Code generated from GQL.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser // GQL + +import "github.com/antlr4-go/antlr/v4" + +// BaseGQLListener is a complete listener for a parse tree produced by GQLParser. +type BaseGQLListener struct{} + +var _ GQLListener = &BaseGQLListener{} + +// VisitTerminal is called when a terminal node is visited. +func (s *BaseGQLListener) VisitTerminal(node antlr.TerminalNode) {} + +// VisitErrorNode is called when an error node is visited. +func (s *BaseGQLListener) VisitErrorNode(node antlr.ErrorNode) {} + +// EnterEveryRule is called when any rule is entered. +func (s *BaseGQLListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} + +// ExitEveryRule is called when any rule is exited. +func (s *BaseGQLListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} + +// EnterGqlProgram is called when production gqlProgram is entered. +func (s *BaseGQLListener) EnterGqlProgram(ctx *GqlProgramContext) {} + +// ExitGqlProgram is called when production gqlProgram is exited. +func (s *BaseGQLListener) ExitGqlProgram(ctx *GqlProgramContext) {} + +// EnterProgramActivity is called when production programActivity is entered. +func (s *BaseGQLListener) EnterProgramActivity(ctx *ProgramActivityContext) {} + +// ExitProgramActivity is called when production programActivity is exited. +func (s *BaseGQLListener) ExitProgramActivity(ctx *ProgramActivityContext) {} + +// EnterSessionActivity is called when production sessionActivity is entered. +func (s *BaseGQLListener) EnterSessionActivity(ctx *SessionActivityContext) {} + +// ExitSessionActivity is called when production sessionActivity is exited. +func (s *BaseGQLListener) ExitSessionActivity(ctx *SessionActivityContext) {} + +// EnterTransactionActivity is called when production transactionActivity is entered. +func (s *BaseGQLListener) EnterTransactionActivity(ctx *TransactionActivityContext) {} + +// ExitTransactionActivity is called when production transactionActivity is exited. +func (s *BaseGQLListener) ExitTransactionActivity(ctx *TransactionActivityContext) {} + +// EnterEndTransactionCommand is called when production endTransactionCommand is entered. +func (s *BaseGQLListener) EnterEndTransactionCommand(ctx *EndTransactionCommandContext) {} + +// ExitEndTransactionCommand is called when production endTransactionCommand is exited. +func (s *BaseGQLListener) ExitEndTransactionCommand(ctx *EndTransactionCommandContext) {} + +// EnterSessionSetCommand is called when production sessionSetCommand is entered. +func (s *BaseGQLListener) EnterSessionSetCommand(ctx *SessionSetCommandContext) {} + +// ExitSessionSetCommand is called when production sessionSetCommand is exited. +func (s *BaseGQLListener) ExitSessionSetCommand(ctx *SessionSetCommandContext) {} + +// EnterSessionSetSchemaClause is called when production sessionSetSchemaClause is entered. +func (s *BaseGQLListener) EnterSessionSetSchemaClause(ctx *SessionSetSchemaClauseContext) {} + +// ExitSessionSetSchemaClause is called when production sessionSetSchemaClause is exited. +func (s *BaseGQLListener) ExitSessionSetSchemaClause(ctx *SessionSetSchemaClauseContext) {} + +// EnterSessionSetGraphClause is called when production sessionSetGraphClause is entered. +func (s *BaseGQLListener) EnterSessionSetGraphClause(ctx *SessionSetGraphClauseContext) {} + +// ExitSessionSetGraphClause is called when production sessionSetGraphClause is exited. +func (s *BaseGQLListener) ExitSessionSetGraphClause(ctx *SessionSetGraphClauseContext) {} + +// EnterSessionSetTimeZoneClause is called when production sessionSetTimeZoneClause is entered. +func (s *BaseGQLListener) EnterSessionSetTimeZoneClause(ctx *SessionSetTimeZoneClauseContext) {} + +// ExitSessionSetTimeZoneClause is called when production sessionSetTimeZoneClause is exited. +func (s *BaseGQLListener) ExitSessionSetTimeZoneClause(ctx *SessionSetTimeZoneClauseContext) {} + +// EnterSetTimeZoneValue is called when production setTimeZoneValue is entered. +func (s *BaseGQLListener) EnterSetTimeZoneValue(ctx *SetTimeZoneValueContext) {} + +// ExitSetTimeZoneValue is called when production setTimeZoneValue is exited. +func (s *BaseGQLListener) ExitSetTimeZoneValue(ctx *SetTimeZoneValueContext) {} + +// EnterSessionSetParameterClause is called when production sessionSetParameterClause is entered. +func (s *BaseGQLListener) EnterSessionSetParameterClause(ctx *SessionSetParameterClauseContext) {} + +// ExitSessionSetParameterClause is called when production sessionSetParameterClause is exited. +func (s *BaseGQLListener) ExitSessionSetParameterClause(ctx *SessionSetParameterClauseContext) {} + +// EnterSessionSetGraphParameterClause is called when production sessionSetGraphParameterClause is entered. +func (s *BaseGQLListener) EnterSessionSetGraphParameterClause(ctx *SessionSetGraphParameterClauseContext) { +} + +// ExitSessionSetGraphParameterClause is called when production sessionSetGraphParameterClause is exited. +func (s *BaseGQLListener) ExitSessionSetGraphParameterClause(ctx *SessionSetGraphParameterClauseContext) { +} + +// EnterSessionSetBindingTableParameterClause is called when production sessionSetBindingTableParameterClause is entered. +func (s *BaseGQLListener) EnterSessionSetBindingTableParameterClause(ctx *SessionSetBindingTableParameterClauseContext) { +} + +// ExitSessionSetBindingTableParameterClause is called when production sessionSetBindingTableParameterClause is exited. +func (s *BaseGQLListener) ExitSessionSetBindingTableParameterClause(ctx *SessionSetBindingTableParameterClauseContext) { +} + +// EnterSessionSetValueParameterClause is called when production sessionSetValueParameterClause is entered. +func (s *BaseGQLListener) EnterSessionSetValueParameterClause(ctx *SessionSetValueParameterClauseContext) { +} + +// ExitSessionSetValueParameterClause is called when production sessionSetValueParameterClause is exited. +func (s *BaseGQLListener) ExitSessionSetValueParameterClause(ctx *SessionSetValueParameterClauseContext) { +} + +// EnterSessionSetParameterName is called when production sessionSetParameterName is entered. +func (s *BaseGQLListener) EnterSessionSetParameterName(ctx *SessionSetParameterNameContext) {} + +// ExitSessionSetParameterName is called when production sessionSetParameterName is exited. +func (s *BaseGQLListener) ExitSessionSetParameterName(ctx *SessionSetParameterNameContext) {} + +// EnterSessionResetCommand is called when production sessionResetCommand is entered. +func (s *BaseGQLListener) EnterSessionResetCommand(ctx *SessionResetCommandContext) {} + +// ExitSessionResetCommand is called when production sessionResetCommand is exited. +func (s *BaseGQLListener) ExitSessionResetCommand(ctx *SessionResetCommandContext) {} + +// EnterSessionResetArguments is called when production sessionResetArguments is entered. +func (s *BaseGQLListener) EnterSessionResetArguments(ctx *SessionResetArgumentsContext) {} + +// ExitSessionResetArguments is called when production sessionResetArguments is exited. +func (s *BaseGQLListener) ExitSessionResetArguments(ctx *SessionResetArgumentsContext) {} + +// EnterSessionCloseCommand is called when production sessionCloseCommand is entered. +func (s *BaseGQLListener) EnterSessionCloseCommand(ctx *SessionCloseCommandContext) {} + +// ExitSessionCloseCommand is called when production sessionCloseCommand is exited. +func (s *BaseGQLListener) ExitSessionCloseCommand(ctx *SessionCloseCommandContext) {} + +// EnterSessionParameterSpecification is called when production sessionParameterSpecification is entered. +func (s *BaseGQLListener) EnterSessionParameterSpecification(ctx *SessionParameterSpecificationContext) { +} + +// ExitSessionParameterSpecification is called when production sessionParameterSpecification is exited. +func (s *BaseGQLListener) ExitSessionParameterSpecification(ctx *SessionParameterSpecificationContext) { +} + +// EnterStartTransactionCommand is called when production startTransactionCommand is entered. +func (s *BaseGQLListener) EnterStartTransactionCommand(ctx *StartTransactionCommandContext) {} + +// ExitStartTransactionCommand is called when production startTransactionCommand is exited. +func (s *BaseGQLListener) ExitStartTransactionCommand(ctx *StartTransactionCommandContext) {} + +// EnterTransactionCharacteristics is called when production transactionCharacteristics is entered. +func (s *BaseGQLListener) EnterTransactionCharacteristics(ctx *TransactionCharacteristicsContext) {} + +// ExitTransactionCharacteristics is called when production transactionCharacteristics is exited. +func (s *BaseGQLListener) ExitTransactionCharacteristics(ctx *TransactionCharacteristicsContext) {} + +// EnterTransactionMode is called when production transactionMode is entered. +func (s *BaseGQLListener) EnterTransactionMode(ctx *TransactionModeContext) {} + +// ExitTransactionMode is called when production transactionMode is exited. +func (s *BaseGQLListener) ExitTransactionMode(ctx *TransactionModeContext) {} + +// EnterTransactionAccessMode is called when production transactionAccessMode is entered. +func (s *BaseGQLListener) EnterTransactionAccessMode(ctx *TransactionAccessModeContext) {} + +// ExitTransactionAccessMode is called when production transactionAccessMode is exited. +func (s *BaseGQLListener) ExitTransactionAccessMode(ctx *TransactionAccessModeContext) {} + +// EnterRollbackCommand is called when production rollbackCommand is entered. +func (s *BaseGQLListener) EnterRollbackCommand(ctx *RollbackCommandContext) {} + +// ExitRollbackCommand is called when production rollbackCommand is exited. +func (s *BaseGQLListener) ExitRollbackCommand(ctx *RollbackCommandContext) {} + +// EnterCommitCommand is called when production commitCommand is entered. +func (s *BaseGQLListener) EnterCommitCommand(ctx *CommitCommandContext) {} + +// ExitCommitCommand is called when production commitCommand is exited. +func (s *BaseGQLListener) ExitCommitCommand(ctx *CommitCommandContext) {} + +// EnterNestedProcedureSpecification is called when production nestedProcedureSpecification is entered. +func (s *BaseGQLListener) EnterNestedProcedureSpecification(ctx *NestedProcedureSpecificationContext) { +} + +// ExitNestedProcedureSpecification is called when production nestedProcedureSpecification is exited. +func (s *BaseGQLListener) ExitNestedProcedureSpecification(ctx *NestedProcedureSpecificationContext) { +} + +// EnterProcedureSpecification is called when production procedureSpecification is entered. +func (s *BaseGQLListener) EnterProcedureSpecification(ctx *ProcedureSpecificationContext) {} + +// ExitProcedureSpecification is called when production procedureSpecification is exited. +func (s *BaseGQLListener) ExitProcedureSpecification(ctx *ProcedureSpecificationContext) {} + +// EnterNestedDataModifyingProcedureSpecification is called when production nestedDataModifyingProcedureSpecification is entered. +func (s *BaseGQLListener) EnterNestedDataModifyingProcedureSpecification(ctx *NestedDataModifyingProcedureSpecificationContext) { +} + +// ExitNestedDataModifyingProcedureSpecification is called when production nestedDataModifyingProcedureSpecification is exited. +func (s *BaseGQLListener) ExitNestedDataModifyingProcedureSpecification(ctx *NestedDataModifyingProcedureSpecificationContext) { +} + +// EnterNestedQuerySpecification is called when production nestedQuerySpecification is entered. +func (s *BaseGQLListener) EnterNestedQuerySpecification(ctx *NestedQuerySpecificationContext) {} + +// ExitNestedQuerySpecification is called when production nestedQuerySpecification is exited. +func (s *BaseGQLListener) ExitNestedQuerySpecification(ctx *NestedQuerySpecificationContext) {} + +// EnterProcedureBody is called when production procedureBody is entered. +func (s *BaseGQLListener) EnterProcedureBody(ctx *ProcedureBodyContext) {} + +// ExitProcedureBody is called when production procedureBody is exited. +func (s *BaseGQLListener) ExitProcedureBody(ctx *ProcedureBodyContext) {} + +// EnterBindingVariableDefinitionBlock is called when production bindingVariableDefinitionBlock is entered. +func (s *BaseGQLListener) EnterBindingVariableDefinitionBlock(ctx *BindingVariableDefinitionBlockContext) { +} + +// ExitBindingVariableDefinitionBlock is called when production bindingVariableDefinitionBlock is exited. +func (s *BaseGQLListener) ExitBindingVariableDefinitionBlock(ctx *BindingVariableDefinitionBlockContext) { +} + +// EnterBindingVariableDefinition is called when production bindingVariableDefinition is entered. +func (s *BaseGQLListener) EnterBindingVariableDefinition(ctx *BindingVariableDefinitionContext) {} + +// ExitBindingVariableDefinition is called when production bindingVariableDefinition is exited. +func (s *BaseGQLListener) ExitBindingVariableDefinition(ctx *BindingVariableDefinitionContext) {} + +// EnterStatementBlock is called when production statementBlock is entered. +func (s *BaseGQLListener) EnterStatementBlock(ctx *StatementBlockContext) {} + +// ExitStatementBlock is called when production statementBlock is exited. +func (s *BaseGQLListener) ExitStatementBlock(ctx *StatementBlockContext) {} + +// EnterStatement is called when production statement is entered. +func (s *BaseGQLListener) EnterStatement(ctx *StatementContext) {} + +// ExitStatement is called when production statement is exited. +func (s *BaseGQLListener) ExitStatement(ctx *StatementContext) {} + +// EnterNextStatement is called when production nextStatement is entered. +func (s *BaseGQLListener) EnterNextStatement(ctx *NextStatementContext) {} + +// ExitNextStatement is called when production nextStatement is exited. +func (s *BaseGQLListener) ExitNextStatement(ctx *NextStatementContext) {} + +// EnterGraphVariableDefinition is called when production graphVariableDefinition is entered. +func (s *BaseGQLListener) EnterGraphVariableDefinition(ctx *GraphVariableDefinitionContext) {} + +// ExitGraphVariableDefinition is called when production graphVariableDefinition is exited. +func (s *BaseGQLListener) ExitGraphVariableDefinition(ctx *GraphVariableDefinitionContext) {} + +// EnterOptTypedGraphInitializer is called when production optTypedGraphInitializer is entered. +func (s *BaseGQLListener) EnterOptTypedGraphInitializer(ctx *OptTypedGraphInitializerContext) {} + +// ExitOptTypedGraphInitializer is called when production optTypedGraphInitializer is exited. +func (s *BaseGQLListener) ExitOptTypedGraphInitializer(ctx *OptTypedGraphInitializerContext) {} + +// EnterGraphInitializer is called when production graphInitializer is entered. +func (s *BaseGQLListener) EnterGraphInitializer(ctx *GraphInitializerContext) {} + +// ExitGraphInitializer is called when production graphInitializer is exited. +func (s *BaseGQLListener) ExitGraphInitializer(ctx *GraphInitializerContext) {} + +// EnterBindingTableVariableDefinition is called when production bindingTableVariableDefinition is entered. +func (s *BaseGQLListener) EnterBindingTableVariableDefinition(ctx *BindingTableVariableDefinitionContext) { +} + +// ExitBindingTableVariableDefinition is called when production bindingTableVariableDefinition is exited. +func (s *BaseGQLListener) ExitBindingTableVariableDefinition(ctx *BindingTableVariableDefinitionContext) { +} + +// EnterOptTypedBindingTableInitializer is called when production optTypedBindingTableInitializer is entered. +func (s *BaseGQLListener) EnterOptTypedBindingTableInitializer(ctx *OptTypedBindingTableInitializerContext) { +} + +// ExitOptTypedBindingTableInitializer is called when production optTypedBindingTableInitializer is exited. +func (s *BaseGQLListener) ExitOptTypedBindingTableInitializer(ctx *OptTypedBindingTableInitializerContext) { +} + +// EnterBindingTableInitializer is called when production bindingTableInitializer is entered. +func (s *BaseGQLListener) EnterBindingTableInitializer(ctx *BindingTableInitializerContext) {} + +// ExitBindingTableInitializer is called when production bindingTableInitializer is exited. +func (s *BaseGQLListener) ExitBindingTableInitializer(ctx *BindingTableInitializerContext) {} + +// EnterValueVariableDefinition is called when production valueVariableDefinition is entered. +func (s *BaseGQLListener) EnterValueVariableDefinition(ctx *ValueVariableDefinitionContext) {} + +// ExitValueVariableDefinition is called when production valueVariableDefinition is exited. +func (s *BaseGQLListener) ExitValueVariableDefinition(ctx *ValueVariableDefinitionContext) {} + +// EnterOptTypedValueInitializer is called when production optTypedValueInitializer is entered. +func (s *BaseGQLListener) EnterOptTypedValueInitializer(ctx *OptTypedValueInitializerContext) {} + +// ExitOptTypedValueInitializer is called when production optTypedValueInitializer is exited. +func (s *BaseGQLListener) ExitOptTypedValueInitializer(ctx *OptTypedValueInitializerContext) {} + +// EnterValueInitializer is called when production valueInitializer is entered. +func (s *BaseGQLListener) EnterValueInitializer(ctx *ValueInitializerContext) {} + +// ExitValueInitializer is called when production valueInitializer is exited. +func (s *BaseGQLListener) ExitValueInitializer(ctx *ValueInitializerContext) {} + +// EnterGraphExpression is called when production graphExpression is entered. +func (s *BaseGQLListener) EnterGraphExpression(ctx *GraphExpressionContext) {} + +// ExitGraphExpression is called when production graphExpression is exited. +func (s *BaseGQLListener) ExitGraphExpression(ctx *GraphExpressionContext) {} + +// EnterCurrentGraph is called when production currentGraph is entered. +func (s *BaseGQLListener) EnterCurrentGraph(ctx *CurrentGraphContext) {} + +// ExitCurrentGraph is called when production currentGraph is exited. +func (s *BaseGQLListener) ExitCurrentGraph(ctx *CurrentGraphContext) {} + +// EnterBindingTableExpression is called when production bindingTableExpression is entered. +func (s *BaseGQLListener) EnterBindingTableExpression(ctx *BindingTableExpressionContext) {} + +// ExitBindingTableExpression is called when production bindingTableExpression is exited. +func (s *BaseGQLListener) ExitBindingTableExpression(ctx *BindingTableExpressionContext) {} + +// EnterNestedBindingTableQuerySpecification is called when production nestedBindingTableQuerySpecification is entered. +func (s *BaseGQLListener) EnterNestedBindingTableQuerySpecification(ctx *NestedBindingTableQuerySpecificationContext) { +} + +// ExitNestedBindingTableQuerySpecification is called when production nestedBindingTableQuerySpecification is exited. +func (s *BaseGQLListener) ExitNestedBindingTableQuerySpecification(ctx *NestedBindingTableQuerySpecificationContext) { +} + +// EnterObjectExpressionPrimary is called when production objectExpressionPrimary is entered. +func (s *BaseGQLListener) EnterObjectExpressionPrimary(ctx *ObjectExpressionPrimaryContext) {} + +// ExitObjectExpressionPrimary is called when production objectExpressionPrimary is exited. +func (s *BaseGQLListener) ExitObjectExpressionPrimary(ctx *ObjectExpressionPrimaryContext) {} + +// EnterLinearCatalogModifyingStatement is called when production linearCatalogModifyingStatement is entered. +func (s *BaseGQLListener) EnterLinearCatalogModifyingStatement(ctx *LinearCatalogModifyingStatementContext) { +} + +// ExitLinearCatalogModifyingStatement is called when production linearCatalogModifyingStatement is exited. +func (s *BaseGQLListener) ExitLinearCatalogModifyingStatement(ctx *LinearCatalogModifyingStatementContext) { +} + +// EnterSimpleCatalogModifyingStatement is called when production simpleCatalogModifyingStatement is entered. +func (s *BaseGQLListener) EnterSimpleCatalogModifyingStatement(ctx *SimpleCatalogModifyingStatementContext) { +} + +// ExitSimpleCatalogModifyingStatement is called when production simpleCatalogModifyingStatement is exited. +func (s *BaseGQLListener) ExitSimpleCatalogModifyingStatement(ctx *SimpleCatalogModifyingStatementContext) { +} + +// EnterPrimitiveCatalogModifyingStatement is called when production primitiveCatalogModifyingStatement is entered. +func (s *BaseGQLListener) EnterPrimitiveCatalogModifyingStatement(ctx *PrimitiveCatalogModifyingStatementContext) { +} + +// ExitPrimitiveCatalogModifyingStatement is called when production primitiveCatalogModifyingStatement is exited. +func (s *BaseGQLListener) ExitPrimitiveCatalogModifyingStatement(ctx *PrimitiveCatalogModifyingStatementContext) { +} + +// EnterCreateSchemaStatement is called when production createSchemaStatement is entered. +func (s *BaseGQLListener) EnterCreateSchemaStatement(ctx *CreateSchemaStatementContext) {} + +// ExitCreateSchemaStatement is called when production createSchemaStatement is exited. +func (s *BaseGQLListener) ExitCreateSchemaStatement(ctx *CreateSchemaStatementContext) {} + +// EnterDropSchemaStatement is called when production dropSchemaStatement is entered. +func (s *BaseGQLListener) EnterDropSchemaStatement(ctx *DropSchemaStatementContext) {} + +// ExitDropSchemaStatement is called when production dropSchemaStatement is exited. +func (s *BaseGQLListener) ExitDropSchemaStatement(ctx *DropSchemaStatementContext) {} + +// EnterCreateGraphStatement is called when production createGraphStatement is entered. +func (s *BaseGQLListener) EnterCreateGraphStatement(ctx *CreateGraphStatementContext) {} + +// ExitCreateGraphStatement is called when production createGraphStatement is exited. +func (s *BaseGQLListener) ExitCreateGraphStatement(ctx *CreateGraphStatementContext) {} + +// EnterOpenGraphType is called when production openGraphType is entered. +func (s *BaseGQLListener) EnterOpenGraphType(ctx *OpenGraphTypeContext) {} + +// ExitOpenGraphType is called when production openGraphType is exited. +func (s *BaseGQLListener) ExitOpenGraphType(ctx *OpenGraphTypeContext) {} + +// EnterOfGraphType is called when production ofGraphType is entered. +func (s *BaseGQLListener) EnterOfGraphType(ctx *OfGraphTypeContext) {} + +// ExitOfGraphType is called when production ofGraphType is exited. +func (s *BaseGQLListener) ExitOfGraphType(ctx *OfGraphTypeContext) {} + +// EnterGraphTypeLikeGraph is called when production graphTypeLikeGraph is entered. +func (s *BaseGQLListener) EnterGraphTypeLikeGraph(ctx *GraphTypeLikeGraphContext) {} + +// ExitGraphTypeLikeGraph is called when production graphTypeLikeGraph is exited. +func (s *BaseGQLListener) ExitGraphTypeLikeGraph(ctx *GraphTypeLikeGraphContext) {} + +// EnterGraphSource is called when production graphSource is entered. +func (s *BaseGQLListener) EnterGraphSource(ctx *GraphSourceContext) {} + +// ExitGraphSource is called when production graphSource is exited. +func (s *BaseGQLListener) ExitGraphSource(ctx *GraphSourceContext) {} + +// EnterDropGraphStatement is called when production dropGraphStatement is entered. +func (s *BaseGQLListener) EnterDropGraphStatement(ctx *DropGraphStatementContext) {} + +// ExitDropGraphStatement is called when production dropGraphStatement is exited. +func (s *BaseGQLListener) ExitDropGraphStatement(ctx *DropGraphStatementContext) {} + +// EnterCreateGraphTypeStatement is called when production createGraphTypeStatement is entered. +func (s *BaseGQLListener) EnterCreateGraphTypeStatement(ctx *CreateGraphTypeStatementContext) {} + +// ExitCreateGraphTypeStatement is called when production createGraphTypeStatement is exited. +func (s *BaseGQLListener) ExitCreateGraphTypeStatement(ctx *CreateGraphTypeStatementContext) {} + +// EnterGraphTypeSource is called when production graphTypeSource is entered. +func (s *BaseGQLListener) EnterGraphTypeSource(ctx *GraphTypeSourceContext) {} + +// ExitGraphTypeSource is called when production graphTypeSource is exited. +func (s *BaseGQLListener) ExitGraphTypeSource(ctx *GraphTypeSourceContext) {} + +// EnterCopyOfGraphType is called when production copyOfGraphType is entered. +func (s *BaseGQLListener) EnterCopyOfGraphType(ctx *CopyOfGraphTypeContext) {} + +// ExitCopyOfGraphType is called when production copyOfGraphType is exited. +func (s *BaseGQLListener) ExitCopyOfGraphType(ctx *CopyOfGraphTypeContext) {} + +// EnterDropGraphTypeStatement is called when production dropGraphTypeStatement is entered. +func (s *BaseGQLListener) EnterDropGraphTypeStatement(ctx *DropGraphTypeStatementContext) {} + +// ExitDropGraphTypeStatement is called when production dropGraphTypeStatement is exited. +func (s *BaseGQLListener) ExitDropGraphTypeStatement(ctx *DropGraphTypeStatementContext) {} + +// EnterCallCatalogModifyingProcedureStatement is called when production callCatalogModifyingProcedureStatement is entered. +func (s *BaseGQLListener) EnterCallCatalogModifyingProcedureStatement(ctx *CallCatalogModifyingProcedureStatementContext) { +} + +// ExitCallCatalogModifyingProcedureStatement is called when production callCatalogModifyingProcedureStatement is exited. +func (s *BaseGQLListener) ExitCallCatalogModifyingProcedureStatement(ctx *CallCatalogModifyingProcedureStatementContext) { +} + +// EnterLinearDataModifyingStatement is called when production linearDataModifyingStatement is entered. +func (s *BaseGQLListener) EnterLinearDataModifyingStatement(ctx *LinearDataModifyingStatementContext) { +} + +// ExitLinearDataModifyingStatement is called when production linearDataModifyingStatement is exited. +func (s *BaseGQLListener) ExitLinearDataModifyingStatement(ctx *LinearDataModifyingStatementContext) { +} + +// EnterFocusedLinearDataModifyingStatement is called when production focusedLinearDataModifyingStatement is entered. +func (s *BaseGQLListener) EnterFocusedLinearDataModifyingStatement(ctx *FocusedLinearDataModifyingStatementContext) { +} + +// ExitFocusedLinearDataModifyingStatement is called when production focusedLinearDataModifyingStatement is exited. +func (s *BaseGQLListener) ExitFocusedLinearDataModifyingStatement(ctx *FocusedLinearDataModifyingStatementContext) { +} + +// EnterFocusedLinearDataModifyingStatementBody is called when production focusedLinearDataModifyingStatementBody is entered. +func (s *BaseGQLListener) EnterFocusedLinearDataModifyingStatementBody(ctx *FocusedLinearDataModifyingStatementBodyContext) { +} + +// ExitFocusedLinearDataModifyingStatementBody is called when production focusedLinearDataModifyingStatementBody is exited. +func (s *BaseGQLListener) ExitFocusedLinearDataModifyingStatementBody(ctx *FocusedLinearDataModifyingStatementBodyContext) { +} + +// EnterFocusedNestedDataModifyingProcedureSpecification is called when production focusedNestedDataModifyingProcedureSpecification is entered. +func (s *BaseGQLListener) EnterFocusedNestedDataModifyingProcedureSpecification(ctx *FocusedNestedDataModifyingProcedureSpecificationContext) { +} + +// ExitFocusedNestedDataModifyingProcedureSpecification is called when production focusedNestedDataModifyingProcedureSpecification is exited. +func (s *BaseGQLListener) ExitFocusedNestedDataModifyingProcedureSpecification(ctx *FocusedNestedDataModifyingProcedureSpecificationContext) { +} + +// EnterAmbientLinearDataModifyingStatement is called when production ambientLinearDataModifyingStatement is entered. +func (s *BaseGQLListener) EnterAmbientLinearDataModifyingStatement(ctx *AmbientLinearDataModifyingStatementContext) { +} + +// ExitAmbientLinearDataModifyingStatement is called when production ambientLinearDataModifyingStatement is exited. +func (s *BaseGQLListener) ExitAmbientLinearDataModifyingStatement(ctx *AmbientLinearDataModifyingStatementContext) { +} + +// EnterAmbientLinearDataModifyingStatementBody is called when production ambientLinearDataModifyingStatementBody is entered. +func (s *BaseGQLListener) EnterAmbientLinearDataModifyingStatementBody(ctx *AmbientLinearDataModifyingStatementBodyContext) { +} + +// ExitAmbientLinearDataModifyingStatementBody is called when production ambientLinearDataModifyingStatementBody is exited. +func (s *BaseGQLListener) ExitAmbientLinearDataModifyingStatementBody(ctx *AmbientLinearDataModifyingStatementBodyContext) { +} + +// EnterSimpleLinearDataAccessingStatement is called when production simpleLinearDataAccessingStatement is entered. +func (s *BaseGQLListener) EnterSimpleLinearDataAccessingStatement(ctx *SimpleLinearDataAccessingStatementContext) { +} + +// ExitSimpleLinearDataAccessingStatement is called when production simpleLinearDataAccessingStatement is exited. +func (s *BaseGQLListener) ExitSimpleLinearDataAccessingStatement(ctx *SimpleLinearDataAccessingStatementContext) { +} + +// EnterSimpleDataAccessingStatement is called when production simpleDataAccessingStatement is entered. +func (s *BaseGQLListener) EnterSimpleDataAccessingStatement(ctx *SimpleDataAccessingStatementContext) { +} + +// ExitSimpleDataAccessingStatement is called when production simpleDataAccessingStatement is exited. +func (s *BaseGQLListener) ExitSimpleDataAccessingStatement(ctx *SimpleDataAccessingStatementContext) { +} + +// EnterSimpleDataModifyingStatement is called when production simpleDataModifyingStatement is entered. +func (s *BaseGQLListener) EnterSimpleDataModifyingStatement(ctx *SimpleDataModifyingStatementContext) { +} + +// ExitSimpleDataModifyingStatement is called when production simpleDataModifyingStatement is exited. +func (s *BaseGQLListener) ExitSimpleDataModifyingStatement(ctx *SimpleDataModifyingStatementContext) { +} + +// EnterPrimitiveDataModifyingStatement is called when production primitiveDataModifyingStatement is entered. +func (s *BaseGQLListener) EnterPrimitiveDataModifyingStatement(ctx *PrimitiveDataModifyingStatementContext) { +} + +// ExitPrimitiveDataModifyingStatement is called when production primitiveDataModifyingStatement is exited. +func (s *BaseGQLListener) ExitPrimitiveDataModifyingStatement(ctx *PrimitiveDataModifyingStatementContext) { +} + +// EnterInsertStatement is called when production insertStatement is entered. +func (s *BaseGQLListener) EnterInsertStatement(ctx *InsertStatementContext) {} + +// ExitInsertStatement is called when production insertStatement is exited. +func (s *BaseGQLListener) ExitInsertStatement(ctx *InsertStatementContext) {} + +// EnterSetStatement is called when production setStatement is entered. +func (s *BaseGQLListener) EnterSetStatement(ctx *SetStatementContext) {} + +// ExitSetStatement is called when production setStatement is exited. +func (s *BaseGQLListener) ExitSetStatement(ctx *SetStatementContext) {} + +// EnterSetItemList is called when production setItemList is entered. +func (s *BaseGQLListener) EnterSetItemList(ctx *SetItemListContext) {} + +// ExitSetItemList is called when production setItemList is exited. +func (s *BaseGQLListener) ExitSetItemList(ctx *SetItemListContext) {} + +// EnterSetItem is called when production setItem is entered. +func (s *BaseGQLListener) EnterSetItem(ctx *SetItemContext) {} + +// ExitSetItem is called when production setItem is exited. +func (s *BaseGQLListener) ExitSetItem(ctx *SetItemContext) {} + +// EnterSetPropertyItem is called when production setPropertyItem is entered. +func (s *BaseGQLListener) EnterSetPropertyItem(ctx *SetPropertyItemContext) {} + +// ExitSetPropertyItem is called when production setPropertyItem is exited. +func (s *BaseGQLListener) ExitSetPropertyItem(ctx *SetPropertyItemContext) {} + +// EnterSetAllPropertiesItem is called when production setAllPropertiesItem is entered. +func (s *BaseGQLListener) EnterSetAllPropertiesItem(ctx *SetAllPropertiesItemContext) {} + +// ExitSetAllPropertiesItem is called when production setAllPropertiesItem is exited. +func (s *BaseGQLListener) ExitSetAllPropertiesItem(ctx *SetAllPropertiesItemContext) {} + +// EnterSetLabelItem is called when production setLabelItem is entered. +func (s *BaseGQLListener) EnterSetLabelItem(ctx *SetLabelItemContext) {} + +// ExitSetLabelItem is called when production setLabelItem is exited. +func (s *BaseGQLListener) ExitSetLabelItem(ctx *SetLabelItemContext) {} + +// EnterRemoveStatement is called when production removeStatement is entered. +func (s *BaseGQLListener) EnterRemoveStatement(ctx *RemoveStatementContext) {} + +// ExitRemoveStatement is called when production removeStatement is exited. +func (s *BaseGQLListener) ExitRemoveStatement(ctx *RemoveStatementContext) {} + +// EnterRemoveItemList is called when production removeItemList is entered. +func (s *BaseGQLListener) EnterRemoveItemList(ctx *RemoveItemListContext) {} + +// ExitRemoveItemList is called when production removeItemList is exited. +func (s *BaseGQLListener) ExitRemoveItemList(ctx *RemoveItemListContext) {} + +// EnterRemoveItem is called when production removeItem is entered. +func (s *BaseGQLListener) EnterRemoveItem(ctx *RemoveItemContext) {} + +// ExitRemoveItem is called when production removeItem is exited. +func (s *BaseGQLListener) ExitRemoveItem(ctx *RemoveItemContext) {} + +// EnterRemovePropertyItem is called when production removePropertyItem is entered. +func (s *BaseGQLListener) EnterRemovePropertyItem(ctx *RemovePropertyItemContext) {} + +// ExitRemovePropertyItem is called when production removePropertyItem is exited. +func (s *BaseGQLListener) ExitRemovePropertyItem(ctx *RemovePropertyItemContext) {} + +// EnterRemoveLabelItem is called when production removeLabelItem is entered. +func (s *BaseGQLListener) EnterRemoveLabelItem(ctx *RemoveLabelItemContext) {} + +// ExitRemoveLabelItem is called when production removeLabelItem is exited. +func (s *BaseGQLListener) ExitRemoveLabelItem(ctx *RemoveLabelItemContext) {} + +// EnterDeleteStatement is called when production deleteStatement is entered. +func (s *BaseGQLListener) EnterDeleteStatement(ctx *DeleteStatementContext) {} + +// ExitDeleteStatement is called when production deleteStatement is exited. +func (s *BaseGQLListener) ExitDeleteStatement(ctx *DeleteStatementContext) {} + +// EnterDeleteItemList is called when production deleteItemList is entered. +func (s *BaseGQLListener) EnterDeleteItemList(ctx *DeleteItemListContext) {} + +// ExitDeleteItemList is called when production deleteItemList is exited. +func (s *BaseGQLListener) ExitDeleteItemList(ctx *DeleteItemListContext) {} + +// EnterDeleteItem is called when production deleteItem is entered. +func (s *BaseGQLListener) EnterDeleteItem(ctx *DeleteItemContext) {} + +// ExitDeleteItem is called when production deleteItem is exited. +func (s *BaseGQLListener) ExitDeleteItem(ctx *DeleteItemContext) {} + +// EnterCallDataModifyingProcedureStatement is called when production callDataModifyingProcedureStatement is entered. +func (s *BaseGQLListener) EnterCallDataModifyingProcedureStatement(ctx *CallDataModifyingProcedureStatementContext) { +} + +// ExitCallDataModifyingProcedureStatement is called when production callDataModifyingProcedureStatement is exited. +func (s *BaseGQLListener) ExitCallDataModifyingProcedureStatement(ctx *CallDataModifyingProcedureStatementContext) { +} + +// EnterCompositeQueryStatement is called when production compositeQueryStatement is entered. +func (s *BaseGQLListener) EnterCompositeQueryStatement(ctx *CompositeQueryStatementContext) {} + +// ExitCompositeQueryStatement is called when production compositeQueryStatement is exited. +func (s *BaseGQLListener) ExitCompositeQueryStatement(ctx *CompositeQueryStatementContext) {} + +// EnterCompositeQueryExpression is called when production compositeQueryExpression is entered. +func (s *BaseGQLListener) EnterCompositeQueryExpression(ctx *CompositeQueryExpressionContext) {} + +// ExitCompositeQueryExpression is called when production compositeQueryExpression is exited. +func (s *BaseGQLListener) ExitCompositeQueryExpression(ctx *CompositeQueryExpressionContext) {} + +// EnterQueryConjunction is called when production queryConjunction is entered. +func (s *BaseGQLListener) EnterQueryConjunction(ctx *QueryConjunctionContext) {} + +// ExitQueryConjunction is called when production queryConjunction is exited. +func (s *BaseGQLListener) ExitQueryConjunction(ctx *QueryConjunctionContext) {} + +// EnterSetOperator is called when production setOperator is entered. +func (s *BaseGQLListener) EnterSetOperator(ctx *SetOperatorContext) {} + +// ExitSetOperator is called when production setOperator is exited. +func (s *BaseGQLListener) ExitSetOperator(ctx *SetOperatorContext) {} + +// EnterCompositeQueryPrimary is called when production compositeQueryPrimary is entered. +func (s *BaseGQLListener) EnterCompositeQueryPrimary(ctx *CompositeQueryPrimaryContext) {} + +// ExitCompositeQueryPrimary is called when production compositeQueryPrimary is exited. +func (s *BaseGQLListener) ExitCompositeQueryPrimary(ctx *CompositeQueryPrimaryContext) {} + +// EnterLinearQueryStatement is called when production linearQueryStatement is entered. +func (s *BaseGQLListener) EnterLinearQueryStatement(ctx *LinearQueryStatementContext) {} + +// ExitLinearQueryStatement is called when production linearQueryStatement is exited. +func (s *BaseGQLListener) ExitLinearQueryStatement(ctx *LinearQueryStatementContext) {} + +// EnterFocusedLinearQueryStatement is called when production focusedLinearQueryStatement is entered. +func (s *BaseGQLListener) EnterFocusedLinearQueryStatement(ctx *FocusedLinearQueryStatementContext) {} + +// ExitFocusedLinearQueryStatement is called when production focusedLinearQueryStatement is exited. +func (s *BaseGQLListener) ExitFocusedLinearQueryStatement(ctx *FocusedLinearQueryStatementContext) {} + +// EnterFocusedLinearQueryStatementPart is called when production focusedLinearQueryStatementPart is entered. +func (s *BaseGQLListener) EnterFocusedLinearQueryStatementPart(ctx *FocusedLinearQueryStatementPartContext) { +} + +// ExitFocusedLinearQueryStatementPart is called when production focusedLinearQueryStatementPart is exited. +func (s *BaseGQLListener) ExitFocusedLinearQueryStatementPart(ctx *FocusedLinearQueryStatementPartContext) { +} + +// EnterFocusedLinearQueryAndPrimitiveResultStatementPart is called when production focusedLinearQueryAndPrimitiveResultStatementPart is entered. +func (s *BaseGQLListener) EnterFocusedLinearQueryAndPrimitiveResultStatementPart(ctx *FocusedLinearQueryAndPrimitiveResultStatementPartContext) { +} + +// ExitFocusedLinearQueryAndPrimitiveResultStatementPart is called when production focusedLinearQueryAndPrimitiveResultStatementPart is exited. +func (s *BaseGQLListener) ExitFocusedLinearQueryAndPrimitiveResultStatementPart(ctx *FocusedLinearQueryAndPrimitiveResultStatementPartContext) { +} + +// EnterFocusedPrimitiveResultStatement is called when production focusedPrimitiveResultStatement is entered. +func (s *BaseGQLListener) EnterFocusedPrimitiveResultStatement(ctx *FocusedPrimitiveResultStatementContext) { +} + +// ExitFocusedPrimitiveResultStatement is called when production focusedPrimitiveResultStatement is exited. +func (s *BaseGQLListener) ExitFocusedPrimitiveResultStatement(ctx *FocusedPrimitiveResultStatementContext) { +} + +// EnterFocusedNestedQuerySpecification is called when production focusedNestedQuerySpecification is entered. +func (s *BaseGQLListener) EnterFocusedNestedQuerySpecification(ctx *FocusedNestedQuerySpecificationContext) { +} + +// ExitFocusedNestedQuerySpecification is called when production focusedNestedQuerySpecification is exited. +func (s *BaseGQLListener) ExitFocusedNestedQuerySpecification(ctx *FocusedNestedQuerySpecificationContext) { +} + +// EnterAmbientLinearQueryStatement is called when production ambientLinearQueryStatement is entered. +func (s *BaseGQLListener) EnterAmbientLinearQueryStatement(ctx *AmbientLinearQueryStatementContext) {} + +// ExitAmbientLinearQueryStatement is called when production ambientLinearQueryStatement is exited. +func (s *BaseGQLListener) ExitAmbientLinearQueryStatement(ctx *AmbientLinearQueryStatementContext) {} + +// EnterSimpleLinearQueryStatement is called when production simpleLinearQueryStatement is entered. +func (s *BaseGQLListener) EnterSimpleLinearQueryStatement(ctx *SimpleLinearQueryStatementContext) {} + +// ExitSimpleLinearQueryStatement is called when production simpleLinearQueryStatement is exited. +func (s *BaseGQLListener) ExitSimpleLinearQueryStatement(ctx *SimpleLinearQueryStatementContext) {} + +// EnterSimpleQueryStatement is called when production simpleQueryStatement is entered. +func (s *BaseGQLListener) EnterSimpleQueryStatement(ctx *SimpleQueryStatementContext) {} + +// ExitSimpleQueryStatement is called when production simpleQueryStatement is exited. +func (s *BaseGQLListener) ExitSimpleQueryStatement(ctx *SimpleQueryStatementContext) {} + +// EnterPrimitiveQueryStatement is called when production primitiveQueryStatement is entered. +func (s *BaseGQLListener) EnterPrimitiveQueryStatement(ctx *PrimitiveQueryStatementContext) {} + +// ExitPrimitiveQueryStatement is called when production primitiveQueryStatement is exited. +func (s *BaseGQLListener) ExitPrimitiveQueryStatement(ctx *PrimitiveQueryStatementContext) {} + +// EnterMatchStatement is called when production matchStatement is entered. +func (s *BaseGQLListener) EnterMatchStatement(ctx *MatchStatementContext) {} + +// ExitMatchStatement is called when production matchStatement is exited. +func (s *BaseGQLListener) ExitMatchStatement(ctx *MatchStatementContext) {} + +// EnterSimpleMatchStatement is called when production simpleMatchStatement is entered. +func (s *BaseGQLListener) EnterSimpleMatchStatement(ctx *SimpleMatchStatementContext) {} + +// ExitSimpleMatchStatement is called when production simpleMatchStatement is exited. +func (s *BaseGQLListener) ExitSimpleMatchStatement(ctx *SimpleMatchStatementContext) {} + +// EnterOptionalMatchStatement is called when production optionalMatchStatement is entered. +func (s *BaseGQLListener) EnterOptionalMatchStatement(ctx *OptionalMatchStatementContext) {} + +// ExitOptionalMatchStatement is called when production optionalMatchStatement is exited. +func (s *BaseGQLListener) ExitOptionalMatchStatement(ctx *OptionalMatchStatementContext) {} + +// EnterOptionalOperand is called when production optionalOperand is entered. +func (s *BaseGQLListener) EnterOptionalOperand(ctx *OptionalOperandContext) {} + +// ExitOptionalOperand is called when production optionalOperand is exited. +func (s *BaseGQLListener) ExitOptionalOperand(ctx *OptionalOperandContext) {} + +// EnterMatchStatementBlock is called when production matchStatementBlock is entered. +func (s *BaseGQLListener) EnterMatchStatementBlock(ctx *MatchStatementBlockContext) {} + +// ExitMatchStatementBlock is called when production matchStatementBlock is exited. +func (s *BaseGQLListener) ExitMatchStatementBlock(ctx *MatchStatementBlockContext) {} + +// EnterCallQueryStatement is called when production callQueryStatement is entered. +func (s *BaseGQLListener) EnterCallQueryStatement(ctx *CallQueryStatementContext) {} + +// ExitCallQueryStatement is called when production callQueryStatement is exited. +func (s *BaseGQLListener) ExitCallQueryStatement(ctx *CallQueryStatementContext) {} + +// EnterFilterStatement is called when production filterStatement is entered. +func (s *BaseGQLListener) EnterFilterStatement(ctx *FilterStatementContext) {} + +// ExitFilterStatement is called when production filterStatement is exited. +func (s *BaseGQLListener) ExitFilterStatement(ctx *FilterStatementContext) {} + +// EnterLetStatement is called when production letStatement is entered. +func (s *BaseGQLListener) EnterLetStatement(ctx *LetStatementContext) {} + +// ExitLetStatement is called when production letStatement is exited. +func (s *BaseGQLListener) ExitLetStatement(ctx *LetStatementContext) {} + +// EnterLetVariableDefinitionList is called when production letVariableDefinitionList is entered. +func (s *BaseGQLListener) EnterLetVariableDefinitionList(ctx *LetVariableDefinitionListContext) {} + +// ExitLetVariableDefinitionList is called when production letVariableDefinitionList is exited. +func (s *BaseGQLListener) ExitLetVariableDefinitionList(ctx *LetVariableDefinitionListContext) {} + +// EnterLetVariableDefinition is called when production letVariableDefinition is entered. +func (s *BaseGQLListener) EnterLetVariableDefinition(ctx *LetVariableDefinitionContext) {} + +// ExitLetVariableDefinition is called when production letVariableDefinition is exited. +func (s *BaseGQLListener) ExitLetVariableDefinition(ctx *LetVariableDefinitionContext) {} + +// EnterForStatement is called when production forStatement is entered. +func (s *BaseGQLListener) EnterForStatement(ctx *ForStatementContext) {} + +// ExitForStatement is called when production forStatement is exited. +func (s *BaseGQLListener) ExitForStatement(ctx *ForStatementContext) {} + +// EnterForItem is called when production forItem is entered. +func (s *BaseGQLListener) EnterForItem(ctx *ForItemContext) {} + +// ExitForItem is called when production forItem is exited. +func (s *BaseGQLListener) ExitForItem(ctx *ForItemContext) {} + +// EnterForItemAlias is called when production forItemAlias is entered. +func (s *BaseGQLListener) EnterForItemAlias(ctx *ForItemAliasContext) {} + +// ExitForItemAlias is called when production forItemAlias is exited. +func (s *BaseGQLListener) ExitForItemAlias(ctx *ForItemAliasContext) {} + +// EnterForItemSource is called when production forItemSource is entered. +func (s *BaseGQLListener) EnterForItemSource(ctx *ForItemSourceContext) {} + +// ExitForItemSource is called when production forItemSource is exited. +func (s *BaseGQLListener) ExitForItemSource(ctx *ForItemSourceContext) {} + +// EnterForOrdinalityOrOffset is called when production forOrdinalityOrOffset is entered. +func (s *BaseGQLListener) EnterForOrdinalityOrOffset(ctx *ForOrdinalityOrOffsetContext) {} + +// ExitForOrdinalityOrOffset is called when production forOrdinalityOrOffset is exited. +func (s *BaseGQLListener) ExitForOrdinalityOrOffset(ctx *ForOrdinalityOrOffsetContext) {} + +// EnterOrderByAndPageStatement is called when production orderByAndPageStatement is entered. +func (s *BaseGQLListener) EnterOrderByAndPageStatement(ctx *OrderByAndPageStatementContext) {} + +// ExitOrderByAndPageStatement is called when production orderByAndPageStatement is exited. +func (s *BaseGQLListener) ExitOrderByAndPageStatement(ctx *OrderByAndPageStatementContext) {} + +// EnterPrimitiveResultStatement is called when production primitiveResultStatement is entered. +func (s *BaseGQLListener) EnterPrimitiveResultStatement(ctx *PrimitiveResultStatementContext) {} + +// ExitPrimitiveResultStatement is called when production primitiveResultStatement is exited. +func (s *BaseGQLListener) ExitPrimitiveResultStatement(ctx *PrimitiveResultStatementContext) {} + +// EnterReturnStatement is called when production returnStatement is entered. +func (s *BaseGQLListener) EnterReturnStatement(ctx *ReturnStatementContext) {} + +// ExitReturnStatement is called when production returnStatement is exited. +func (s *BaseGQLListener) ExitReturnStatement(ctx *ReturnStatementContext) {} + +// EnterReturnStatementBody is called when production returnStatementBody is entered. +func (s *BaseGQLListener) EnterReturnStatementBody(ctx *ReturnStatementBodyContext) {} + +// ExitReturnStatementBody is called when production returnStatementBody is exited. +func (s *BaseGQLListener) ExitReturnStatementBody(ctx *ReturnStatementBodyContext) {} + +// EnterReturnItemList is called when production returnItemList is entered. +func (s *BaseGQLListener) EnterReturnItemList(ctx *ReturnItemListContext) {} + +// ExitReturnItemList is called when production returnItemList is exited. +func (s *BaseGQLListener) ExitReturnItemList(ctx *ReturnItemListContext) {} + +// EnterReturnItem is called when production returnItem is entered. +func (s *BaseGQLListener) EnterReturnItem(ctx *ReturnItemContext) {} + +// ExitReturnItem is called when production returnItem is exited. +func (s *BaseGQLListener) ExitReturnItem(ctx *ReturnItemContext) {} + +// EnterReturnItemAlias is called when production returnItemAlias is entered. +func (s *BaseGQLListener) EnterReturnItemAlias(ctx *ReturnItemAliasContext) {} + +// ExitReturnItemAlias is called when production returnItemAlias is exited. +func (s *BaseGQLListener) ExitReturnItemAlias(ctx *ReturnItemAliasContext) {} + +// EnterSelectStatement is called when production selectStatement is entered. +func (s *BaseGQLListener) EnterSelectStatement(ctx *SelectStatementContext) {} + +// ExitSelectStatement is called when production selectStatement is exited. +func (s *BaseGQLListener) ExitSelectStatement(ctx *SelectStatementContext) {} + +// EnterSelectItemList is called when production selectItemList is entered. +func (s *BaseGQLListener) EnterSelectItemList(ctx *SelectItemListContext) {} + +// ExitSelectItemList is called when production selectItemList is exited. +func (s *BaseGQLListener) ExitSelectItemList(ctx *SelectItemListContext) {} + +// EnterSelectItem is called when production selectItem is entered. +func (s *BaseGQLListener) EnterSelectItem(ctx *SelectItemContext) {} + +// ExitSelectItem is called when production selectItem is exited. +func (s *BaseGQLListener) ExitSelectItem(ctx *SelectItemContext) {} + +// EnterSelectItemAlias is called when production selectItemAlias is entered. +func (s *BaseGQLListener) EnterSelectItemAlias(ctx *SelectItemAliasContext) {} + +// ExitSelectItemAlias is called when production selectItemAlias is exited. +func (s *BaseGQLListener) ExitSelectItemAlias(ctx *SelectItemAliasContext) {} + +// EnterHavingClause is called when production havingClause is entered. +func (s *BaseGQLListener) EnterHavingClause(ctx *HavingClauseContext) {} + +// ExitHavingClause is called when production havingClause is exited. +func (s *BaseGQLListener) ExitHavingClause(ctx *HavingClauseContext) {} + +// EnterSelectStatementBody is called when production selectStatementBody is entered. +func (s *BaseGQLListener) EnterSelectStatementBody(ctx *SelectStatementBodyContext) {} + +// ExitSelectStatementBody is called when production selectStatementBody is exited. +func (s *BaseGQLListener) ExitSelectStatementBody(ctx *SelectStatementBodyContext) {} + +// EnterSelectGraphMatchList is called when production selectGraphMatchList is entered. +func (s *BaseGQLListener) EnterSelectGraphMatchList(ctx *SelectGraphMatchListContext) {} + +// ExitSelectGraphMatchList is called when production selectGraphMatchList is exited. +func (s *BaseGQLListener) ExitSelectGraphMatchList(ctx *SelectGraphMatchListContext) {} + +// EnterSelectGraphMatch is called when production selectGraphMatch is entered. +func (s *BaseGQLListener) EnterSelectGraphMatch(ctx *SelectGraphMatchContext) {} + +// ExitSelectGraphMatch is called when production selectGraphMatch is exited. +func (s *BaseGQLListener) ExitSelectGraphMatch(ctx *SelectGraphMatchContext) {} + +// EnterSelectQuerySpecification is called when production selectQuerySpecification is entered. +func (s *BaseGQLListener) EnterSelectQuerySpecification(ctx *SelectQuerySpecificationContext) {} + +// ExitSelectQuerySpecification is called when production selectQuerySpecification is exited. +func (s *BaseGQLListener) ExitSelectQuerySpecification(ctx *SelectQuerySpecificationContext) {} + +// EnterCallProcedureStatement is called when production callProcedureStatement is entered. +func (s *BaseGQLListener) EnterCallProcedureStatement(ctx *CallProcedureStatementContext) {} + +// ExitCallProcedureStatement is called when production callProcedureStatement is exited. +func (s *BaseGQLListener) ExitCallProcedureStatement(ctx *CallProcedureStatementContext) {} + +// EnterProcedureCall is called when production procedureCall is entered. +func (s *BaseGQLListener) EnterProcedureCall(ctx *ProcedureCallContext) {} + +// ExitProcedureCall is called when production procedureCall is exited. +func (s *BaseGQLListener) ExitProcedureCall(ctx *ProcedureCallContext) {} + +// EnterInlineProcedureCall is called when production inlineProcedureCall is entered. +func (s *BaseGQLListener) EnterInlineProcedureCall(ctx *InlineProcedureCallContext) {} + +// ExitInlineProcedureCall is called when production inlineProcedureCall is exited. +func (s *BaseGQLListener) ExitInlineProcedureCall(ctx *InlineProcedureCallContext) {} + +// EnterVariableScopeClause is called when production variableScopeClause is entered. +func (s *BaseGQLListener) EnterVariableScopeClause(ctx *VariableScopeClauseContext) {} + +// ExitVariableScopeClause is called when production variableScopeClause is exited. +func (s *BaseGQLListener) ExitVariableScopeClause(ctx *VariableScopeClauseContext) {} + +// EnterBindingVariableReferenceList is called when production bindingVariableReferenceList is entered. +func (s *BaseGQLListener) EnterBindingVariableReferenceList(ctx *BindingVariableReferenceListContext) { +} + +// ExitBindingVariableReferenceList is called when production bindingVariableReferenceList is exited. +func (s *BaseGQLListener) ExitBindingVariableReferenceList(ctx *BindingVariableReferenceListContext) { +} + +// EnterNamedProcedureCall is called when production namedProcedureCall is entered. +func (s *BaseGQLListener) EnterNamedProcedureCall(ctx *NamedProcedureCallContext) {} + +// ExitNamedProcedureCall is called when production namedProcedureCall is exited. +func (s *BaseGQLListener) ExitNamedProcedureCall(ctx *NamedProcedureCallContext) {} + +// EnterProcedureArgumentList is called when production procedureArgumentList is entered. +func (s *BaseGQLListener) EnterProcedureArgumentList(ctx *ProcedureArgumentListContext) {} + +// ExitProcedureArgumentList is called when production procedureArgumentList is exited. +func (s *BaseGQLListener) ExitProcedureArgumentList(ctx *ProcedureArgumentListContext) {} + +// EnterProcedureArgument is called when production procedureArgument is entered. +func (s *BaseGQLListener) EnterProcedureArgument(ctx *ProcedureArgumentContext) {} + +// ExitProcedureArgument is called when production procedureArgument is exited. +func (s *BaseGQLListener) ExitProcedureArgument(ctx *ProcedureArgumentContext) {} + +// EnterAtSchemaClause is called when production atSchemaClause is entered. +func (s *BaseGQLListener) EnterAtSchemaClause(ctx *AtSchemaClauseContext) {} + +// ExitAtSchemaClause is called when production atSchemaClause is exited. +func (s *BaseGQLListener) ExitAtSchemaClause(ctx *AtSchemaClauseContext) {} + +// EnterUseGraphClause is called when production useGraphClause is entered. +func (s *BaseGQLListener) EnterUseGraphClause(ctx *UseGraphClauseContext) {} + +// ExitUseGraphClause is called when production useGraphClause is exited. +func (s *BaseGQLListener) ExitUseGraphClause(ctx *UseGraphClauseContext) {} + +// EnterGraphPatternBindingTable is called when production graphPatternBindingTable is entered. +func (s *BaseGQLListener) EnterGraphPatternBindingTable(ctx *GraphPatternBindingTableContext) {} + +// ExitGraphPatternBindingTable is called when production graphPatternBindingTable is exited. +func (s *BaseGQLListener) ExitGraphPatternBindingTable(ctx *GraphPatternBindingTableContext) {} + +// EnterGraphPatternYieldClause is called when production graphPatternYieldClause is entered. +func (s *BaseGQLListener) EnterGraphPatternYieldClause(ctx *GraphPatternYieldClauseContext) {} + +// ExitGraphPatternYieldClause is called when production graphPatternYieldClause is exited. +func (s *BaseGQLListener) ExitGraphPatternYieldClause(ctx *GraphPatternYieldClauseContext) {} + +// EnterGraphPatternYieldItemList is called when production graphPatternYieldItemList is entered. +func (s *BaseGQLListener) EnterGraphPatternYieldItemList(ctx *GraphPatternYieldItemListContext) {} + +// ExitGraphPatternYieldItemList is called when production graphPatternYieldItemList is exited. +func (s *BaseGQLListener) ExitGraphPatternYieldItemList(ctx *GraphPatternYieldItemListContext) {} + +// EnterGraphPatternYieldItem is called when production graphPatternYieldItem is entered. +func (s *BaseGQLListener) EnterGraphPatternYieldItem(ctx *GraphPatternYieldItemContext) {} + +// ExitGraphPatternYieldItem is called when production graphPatternYieldItem is exited. +func (s *BaseGQLListener) ExitGraphPatternYieldItem(ctx *GraphPatternYieldItemContext) {} + +// EnterGraphPattern is called when production graphPattern is entered. +func (s *BaseGQLListener) EnterGraphPattern(ctx *GraphPatternContext) {} + +// ExitGraphPattern is called when production graphPattern is exited. +func (s *BaseGQLListener) ExitGraphPattern(ctx *GraphPatternContext) {} + +// EnterMatchMode is called when production matchMode is entered. +func (s *BaseGQLListener) EnterMatchMode(ctx *MatchModeContext) {} + +// ExitMatchMode is called when production matchMode is exited. +func (s *BaseGQLListener) ExitMatchMode(ctx *MatchModeContext) {} + +// EnterRepeatableElementsMatchMode is called when production repeatableElementsMatchMode is entered. +func (s *BaseGQLListener) EnterRepeatableElementsMatchMode(ctx *RepeatableElementsMatchModeContext) {} + +// ExitRepeatableElementsMatchMode is called when production repeatableElementsMatchMode is exited. +func (s *BaseGQLListener) ExitRepeatableElementsMatchMode(ctx *RepeatableElementsMatchModeContext) {} + +// EnterDifferentEdgesMatchMode is called when production differentEdgesMatchMode is entered. +func (s *BaseGQLListener) EnterDifferentEdgesMatchMode(ctx *DifferentEdgesMatchModeContext) {} + +// ExitDifferentEdgesMatchMode is called when production differentEdgesMatchMode is exited. +func (s *BaseGQLListener) ExitDifferentEdgesMatchMode(ctx *DifferentEdgesMatchModeContext) {} + +// EnterElementBindingsOrElements is called when production elementBindingsOrElements is entered. +func (s *BaseGQLListener) EnterElementBindingsOrElements(ctx *ElementBindingsOrElementsContext) {} + +// ExitElementBindingsOrElements is called when production elementBindingsOrElements is exited. +func (s *BaseGQLListener) ExitElementBindingsOrElements(ctx *ElementBindingsOrElementsContext) {} + +// EnterEdgeBindingsOrEdges is called when production edgeBindingsOrEdges is entered. +func (s *BaseGQLListener) EnterEdgeBindingsOrEdges(ctx *EdgeBindingsOrEdgesContext) {} + +// ExitEdgeBindingsOrEdges is called when production edgeBindingsOrEdges is exited. +func (s *BaseGQLListener) ExitEdgeBindingsOrEdges(ctx *EdgeBindingsOrEdgesContext) {} + +// EnterPathPatternList is called when production pathPatternList is entered. +func (s *BaseGQLListener) EnterPathPatternList(ctx *PathPatternListContext) {} + +// ExitPathPatternList is called when production pathPatternList is exited. +func (s *BaseGQLListener) ExitPathPatternList(ctx *PathPatternListContext) {} + +// EnterPathPattern is called when production pathPattern is entered. +func (s *BaseGQLListener) EnterPathPattern(ctx *PathPatternContext) {} + +// ExitPathPattern is called when production pathPattern is exited. +func (s *BaseGQLListener) ExitPathPattern(ctx *PathPatternContext) {} + +// EnterPathVariableDeclaration is called when production pathVariableDeclaration is entered. +func (s *BaseGQLListener) EnterPathVariableDeclaration(ctx *PathVariableDeclarationContext) {} + +// ExitPathVariableDeclaration is called when production pathVariableDeclaration is exited. +func (s *BaseGQLListener) ExitPathVariableDeclaration(ctx *PathVariableDeclarationContext) {} + +// EnterKeepClause is called when production keepClause is entered. +func (s *BaseGQLListener) EnterKeepClause(ctx *KeepClauseContext) {} + +// ExitKeepClause is called when production keepClause is exited. +func (s *BaseGQLListener) ExitKeepClause(ctx *KeepClauseContext) {} + +// EnterGraphPatternWhereClause is called when production graphPatternWhereClause is entered. +func (s *BaseGQLListener) EnterGraphPatternWhereClause(ctx *GraphPatternWhereClauseContext) {} + +// ExitGraphPatternWhereClause is called when production graphPatternWhereClause is exited. +func (s *BaseGQLListener) ExitGraphPatternWhereClause(ctx *GraphPatternWhereClauseContext) {} + +// EnterInsertGraphPattern is called when production insertGraphPattern is entered. +func (s *BaseGQLListener) EnterInsertGraphPattern(ctx *InsertGraphPatternContext) {} + +// ExitInsertGraphPattern is called when production insertGraphPattern is exited. +func (s *BaseGQLListener) ExitInsertGraphPattern(ctx *InsertGraphPatternContext) {} + +// EnterInsertPathPatternList is called when production insertPathPatternList is entered. +func (s *BaseGQLListener) EnterInsertPathPatternList(ctx *InsertPathPatternListContext) {} + +// ExitInsertPathPatternList is called when production insertPathPatternList is exited. +func (s *BaseGQLListener) ExitInsertPathPatternList(ctx *InsertPathPatternListContext) {} + +// EnterInsertPathPattern is called when production insertPathPattern is entered. +func (s *BaseGQLListener) EnterInsertPathPattern(ctx *InsertPathPatternContext) {} + +// ExitInsertPathPattern is called when production insertPathPattern is exited. +func (s *BaseGQLListener) ExitInsertPathPattern(ctx *InsertPathPatternContext) {} + +// EnterInsertNodePattern is called when production insertNodePattern is entered. +func (s *BaseGQLListener) EnterInsertNodePattern(ctx *InsertNodePatternContext) {} + +// ExitInsertNodePattern is called when production insertNodePattern is exited. +func (s *BaseGQLListener) ExitInsertNodePattern(ctx *InsertNodePatternContext) {} + +// EnterInsertEdgePattern is called when production insertEdgePattern is entered. +func (s *BaseGQLListener) EnterInsertEdgePattern(ctx *InsertEdgePatternContext) {} + +// ExitInsertEdgePattern is called when production insertEdgePattern is exited. +func (s *BaseGQLListener) ExitInsertEdgePattern(ctx *InsertEdgePatternContext) {} + +// EnterInsertEdgePointingLeft is called when production insertEdgePointingLeft is entered. +func (s *BaseGQLListener) EnterInsertEdgePointingLeft(ctx *InsertEdgePointingLeftContext) {} + +// ExitInsertEdgePointingLeft is called when production insertEdgePointingLeft is exited. +func (s *BaseGQLListener) ExitInsertEdgePointingLeft(ctx *InsertEdgePointingLeftContext) {} + +// EnterInsertEdgePointingRight is called when production insertEdgePointingRight is entered. +func (s *BaseGQLListener) EnterInsertEdgePointingRight(ctx *InsertEdgePointingRightContext) {} + +// ExitInsertEdgePointingRight is called when production insertEdgePointingRight is exited. +func (s *BaseGQLListener) ExitInsertEdgePointingRight(ctx *InsertEdgePointingRightContext) {} + +// EnterInsertEdgeUndirected is called when production insertEdgeUndirected is entered. +func (s *BaseGQLListener) EnterInsertEdgeUndirected(ctx *InsertEdgeUndirectedContext) {} + +// ExitInsertEdgeUndirected is called when production insertEdgeUndirected is exited. +func (s *BaseGQLListener) ExitInsertEdgeUndirected(ctx *InsertEdgeUndirectedContext) {} + +// EnterInsertElementPatternFiller is called when production insertElementPatternFiller is entered. +func (s *BaseGQLListener) EnterInsertElementPatternFiller(ctx *InsertElementPatternFillerContext) {} + +// ExitInsertElementPatternFiller is called when production insertElementPatternFiller is exited. +func (s *BaseGQLListener) ExitInsertElementPatternFiller(ctx *InsertElementPatternFillerContext) {} + +// EnterLabelAndPropertySetSpecification is called when production labelAndPropertySetSpecification is entered. +func (s *BaseGQLListener) EnterLabelAndPropertySetSpecification(ctx *LabelAndPropertySetSpecificationContext) { +} + +// ExitLabelAndPropertySetSpecification is called when production labelAndPropertySetSpecification is exited. +func (s *BaseGQLListener) ExitLabelAndPropertySetSpecification(ctx *LabelAndPropertySetSpecificationContext) { +} + +// EnterPathPatternPrefix is called when production pathPatternPrefix is entered. +func (s *BaseGQLListener) EnterPathPatternPrefix(ctx *PathPatternPrefixContext) {} + +// ExitPathPatternPrefix is called when production pathPatternPrefix is exited. +func (s *BaseGQLListener) ExitPathPatternPrefix(ctx *PathPatternPrefixContext) {} + +// EnterPathModePrefix is called when production pathModePrefix is entered. +func (s *BaseGQLListener) EnterPathModePrefix(ctx *PathModePrefixContext) {} + +// ExitPathModePrefix is called when production pathModePrefix is exited. +func (s *BaseGQLListener) ExitPathModePrefix(ctx *PathModePrefixContext) {} + +// EnterPathMode is called when production pathMode is entered. +func (s *BaseGQLListener) EnterPathMode(ctx *PathModeContext) {} + +// ExitPathMode is called when production pathMode is exited. +func (s *BaseGQLListener) ExitPathMode(ctx *PathModeContext) {} + +// EnterPathSearchPrefix is called when production pathSearchPrefix is entered. +func (s *BaseGQLListener) EnterPathSearchPrefix(ctx *PathSearchPrefixContext) {} + +// ExitPathSearchPrefix is called when production pathSearchPrefix is exited. +func (s *BaseGQLListener) ExitPathSearchPrefix(ctx *PathSearchPrefixContext) {} + +// EnterAllPathSearch is called when production allPathSearch is entered. +func (s *BaseGQLListener) EnterAllPathSearch(ctx *AllPathSearchContext) {} + +// ExitAllPathSearch is called when production allPathSearch is exited. +func (s *BaseGQLListener) ExitAllPathSearch(ctx *AllPathSearchContext) {} + +// EnterPathOrPaths is called when production pathOrPaths is entered. +func (s *BaseGQLListener) EnterPathOrPaths(ctx *PathOrPathsContext) {} + +// ExitPathOrPaths is called when production pathOrPaths is exited. +func (s *BaseGQLListener) ExitPathOrPaths(ctx *PathOrPathsContext) {} + +// EnterAnyPathSearch is called when production anyPathSearch is entered. +func (s *BaseGQLListener) EnterAnyPathSearch(ctx *AnyPathSearchContext) {} + +// ExitAnyPathSearch is called when production anyPathSearch is exited. +func (s *BaseGQLListener) ExitAnyPathSearch(ctx *AnyPathSearchContext) {} + +// EnterNumberOfPaths is called when production numberOfPaths is entered. +func (s *BaseGQLListener) EnterNumberOfPaths(ctx *NumberOfPathsContext) {} + +// ExitNumberOfPaths is called when production numberOfPaths is exited. +func (s *BaseGQLListener) ExitNumberOfPaths(ctx *NumberOfPathsContext) {} + +// EnterShortestPathSearch is called when production shortestPathSearch is entered. +func (s *BaseGQLListener) EnterShortestPathSearch(ctx *ShortestPathSearchContext) {} + +// ExitShortestPathSearch is called when production shortestPathSearch is exited. +func (s *BaseGQLListener) ExitShortestPathSearch(ctx *ShortestPathSearchContext) {} + +// EnterAllShortestPathSearch is called when production allShortestPathSearch is entered. +func (s *BaseGQLListener) EnterAllShortestPathSearch(ctx *AllShortestPathSearchContext) {} + +// ExitAllShortestPathSearch is called when production allShortestPathSearch is exited. +func (s *BaseGQLListener) ExitAllShortestPathSearch(ctx *AllShortestPathSearchContext) {} + +// EnterAnyShortestPathSearch is called when production anyShortestPathSearch is entered. +func (s *BaseGQLListener) EnterAnyShortestPathSearch(ctx *AnyShortestPathSearchContext) {} + +// ExitAnyShortestPathSearch is called when production anyShortestPathSearch is exited. +func (s *BaseGQLListener) ExitAnyShortestPathSearch(ctx *AnyShortestPathSearchContext) {} + +// EnterCountedShortestPathSearch is called when production countedShortestPathSearch is entered. +func (s *BaseGQLListener) EnterCountedShortestPathSearch(ctx *CountedShortestPathSearchContext) {} + +// ExitCountedShortestPathSearch is called when production countedShortestPathSearch is exited. +func (s *BaseGQLListener) ExitCountedShortestPathSearch(ctx *CountedShortestPathSearchContext) {} + +// EnterCountedShortestGroupSearch is called when production countedShortestGroupSearch is entered. +func (s *BaseGQLListener) EnterCountedShortestGroupSearch(ctx *CountedShortestGroupSearchContext) {} + +// ExitCountedShortestGroupSearch is called when production countedShortestGroupSearch is exited. +func (s *BaseGQLListener) ExitCountedShortestGroupSearch(ctx *CountedShortestGroupSearchContext) {} + +// EnterNumberOfGroups is called when production numberOfGroups is entered. +func (s *BaseGQLListener) EnterNumberOfGroups(ctx *NumberOfGroupsContext) {} + +// ExitNumberOfGroups is called when production numberOfGroups is exited. +func (s *BaseGQLListener) ExitNumberOfGroups(ctx *NumberOfGroupsContext) {} + +// EnterPpePathTerm is called when production ppePathTerm is entered. +func (s *BaseGQLListener) EnterPpePathTerm(ctx *PpePathTermContext) {} + +// ExitPpePathTerm is called when production ppePathTerm is exited. +func (s *BaseGQLListener) ExitPpePathTerm(ctx *PpePathTermContext) {} + +// EnterPpeMultisetAlternation is called when production ppeMultisetAlternation is entered. +func (s *BaseGQLListener) EnterPpeMultisetAlternation(ctx *PpeMultisetAlternationContext) {} + +// ExitPpeMultisetAlternation is called when production ppeMultisetAlternation is exited. +func (s *BaseGQLListener) ExitPpeMultisetAlternation(ctx *PpeMultisetAlternationContext) {} + +// EnterPpePatternUnion is called when production ppePatternUnion is entered. +func (s *BaseGQLListener) EnterPpePatternUnion(ctx *PpePatternUnionContext) {} + +// ExitPpePatternUnion is called when production ppePatternUnion is exited. +func (s *BaseGQLListener) ExitPpePatternUnion(ctx *PpePatternUnionContext) {} + +// EnterPathTerm is called when production pathTerm is entered. +func (s *BaseGQLListener) EnterPathTerm(ctx *PathTermContext) {} + +// ExitPathTerm is called when production pathTerm is exited. +func (s *BaseGQLListener) ExitPathTerm(ctx *PathTermContext) {} + +// EnterPfPathPrimary is called when production pfPathPrimary is entered. +func (s *BaseGQLListener) EnterPfPathPrimary(ctx *PfPathPrimaryContext) {} + +// ExitPfPathPrimary is called when production pfPathPrimary is exited. +func (s *BaseGQLListener) ExitPfPathPrimary(ctx *PfPathPrimaryContext) {} + +// EnterPfQuantifiedPathPrimary is called when production pfQuantifiedPathPrimary is entered. +func (s *BaseGQLListener) EnterPfQuantifiedPathPrimary(ctx *PfQuantifiedPathPrimaryContext) {} + +// ExitPfQuantifiedPathPrimary is called when production pfQuantifiedPathPrimary is exited. +func (s *BaseGQLListener) ExitPfQuantifiedPathPrimary(ctx *PfQuantifiedPathPrimaryContext) {} + +// EnterPfQuestionedPathPrimary is called when production pfQuestionedPathPrimary is entered. +func (s *BaseGQLListener) EnterPfQuestionedPathPrimary(ctx *PfQuestionedPathPrimaryContext) {} + +// ExitPfQuestionedPathPrimary is called when production pfQuestionedPathPrimary is exited. +func (s *BaseGQLListener) ExitPfQuestionedPathPrimary(ctx *PfQuestionedPathPrimaryContext) {} + +// EnterPpElementPattern is called when production ppElementPattern is entered. +func (s *BaseGQLListener) EnterPpElementPattern(ctx *PpElementPatternContext) {} + +// ExitPpElementPattern is called when production ppElementPattern is exited. +func (s *BaseGQLListener) ExitPpElementPattern(ctx *PpElementPatternContext) {} + +// EnterPpParenthesizedPathPatternExpression is called when production ppParenthesizedPathPatternExpression is entered. +func (s *BaseGQLListener) EnterPpParenthesizedPathPatternExpression(ctx *PpParenthesizedPathPatternExpressionContext) { +} + +// ExitPpParenthesizedPathPatternExpression is called when production ppParenthesizedPathPatternExpression is exited. +func (s *BaseGQLListener) ExitPpParenthesizedPathPatternExpression(ctx *PpParenthesizedPathPatternExpressionContext) { +} + +// EnterPpSimplifiedPathPatternExpression is called when production ppSimplifiedPathPatternExpression is entered. +func (s *BaseGQLListener) EnterPpSimplifiedPathPatternExpression(ctx *PpSimplifiedPathPatternExpressionContext) { +} + +// ExitPpSimplifiedPathPatternExpression is called when production ppSimplifiedPathPatternExpression is exited. +func (s *BaseGQLListener) ExitPpSimplifiedPathPatternExpression(ctx *PpSimplifiedPathPatternExpressionContext) { +} + +// EnterElementPattern is called when production elementPattern is entered. +func (s *BaseGQLListener) EnterElementPattern(ctx *ElementPatternContext) {} + +// ExitElementPattern is called when production elementPattern is exited. +func (s *BaseGQLListener) ExitElementPattern(ctx *ElementPatternContext) {} + +// EnterNodePattern is called when production nodePattern is entered. +func (s *BaseGQLListener) EnterNodePattern(ctx *NodePatternContext) {} + +// ExitNodePattern is called when production nodePattern is exited. +func (s *BaseGQLListener) ExitNodePattern(ctx *NodePatternContext) {} + +// EnterElementPatternFiller is called when production elementPatternFiller is entered. +func (s *BaseGQLListener) EnterElementPatternFiller(ctx *ElementPatternFillerContext) {} + +// ExitElementPatternFiller is called when production elementPatternFiller is exited. +func (s *BaseGQLListener) ExitElementPatternFiller(ctx *ElementPatternFillerContext) {} + +// EnterElementVariableDeclaration is called when production elementVariableDeclaration is entered. +func (s *BaseGQLListener) EnterElementVariableDeclaration(ctx *ElementVariableDeclarationContext) {} + +// ExitElementVariableDeclaration is called when production elementVariableDeclaration is exited. +func (s *BaseGQLListener) ExitElementVariableDeclaration(ctx *ElementVariableDeclarationContext) {} + +// EnterIsLabelExpression is called when production isLabelExpression is entered. +func (s *BaseGQLListener) EnterIsLabelExpression(ctx *IsLabelExpressionContext) {} + +// ExitIsLabelExpression is called when production isLabelExpression is exited. +func (s *BaseGQLListener) ExitIsLabelExpression(ctx *IsLabelExpressionContext) {} + +// EnterIsOrColon is called when production isOrColon is entered. +func (s *BaseGQLListener) EnterIsOrColon(ctx *IsOrColonContext) {} + +// ExitIsOrColon is called when production isOrColon is exited. +func (s *BaseGQLListener) ExitIsOrColon(ctx *IsOrColonContext) {} + +// EnterElementPatternPredicate is called when production elementPatternPredicate is entered. +func (s *BaseGQLListener) EnterElementPatternPredicate(ctx *ElementPatternPredicateContext) {} + +// ExitElementPatternPredicate is called when production elementPatternPredicate is exited. +func (s *BaseGQLListener) ExitElementPatternPredicate(ctx *ElementPatternPredicateContext) {} + +// EnterElementPatternWhereClause is called when production elementPatternWhereClause is entered. +func (s *BaseGQLListener) EnterElementPatternWhereClause(ctx *ElementPatternWhereClauseContext) {} + +// ExitElementPatternWhereClause is called when production elementPatternWhereClause is exited. +func (s *BaseGQLListener) ExitElementPatternWhereClause(ctx *ElementPatternWhereClauseContext) {} + +// EnterElementPropertySpecification is called when production elementPropertySpecification is entered. +func (s *BaseGQLListener) EnterElementPropertySpecification(ctx *ElementPropertySpecificationContext) { +} + +// ExitElementPropertySpecification is called when production elementPropertySpecification is exited. +func (s *BaseGQLListener) ExitElementPropertySpecification(ctx *ElementPropertySpecificationContext) { +} + +// EnterPropertyKeyValuePairList is called when production propertyKeyValuePairList is entered. +func (s *BaseGQLListener) EnterPropertyKeyValuePairList(ctx *PropertyKeyValuePairListContext) {} + +// ExitPropertyKeyValuePairList is called when production propertyKeyValuePairList is exited. +func (s *BaseGQLListener) ExitPropertyKeyValuePairList(ctx *PropertyKeyValuePairListContext) {} + +// EnterPropertyKeyValuePair is called when production propertyKeyValuePair is entered. +func (s *BaseGQLListener) EnterPropertyKeyValuePair(ctx *PropertyKeyValuePairContext) {} + +// ExitPropertyKeyValuePair is called when production propertyKeyValuePair is exited. +func (s *BaseGQLListener) ExitPropertyKeyValuePair(ctx *PropertyKeyValuePairContext) {} + +// EnterEdgePattern is called when production edgePattern is entered. +func (s *BaseGQLListener) EnterEdgePattern(ctx *EdgePatternContext) {} + +// ExitEdgePattern is called when production edgePattern is exited. +func (s *BaseGQLListener) ExitEdgePattern(ctx *EdgePatternContext) {} + +// EnterFullEdgePattern is called when production fullEdgePattern is entered. +func (s *BaseGQLListener) EnterFullEdgePattern(ctx *FullEdgePatternContext) {} + +// ExitFullEdgePattern is called when production fullEdgePattern is exited. +func (s *BaseGQLListener) ExitFullEdgePattern(ctx *FullEdgePatternContext) {} + +// EnterFullEdgePointingLeft is called when production fullEdgePointingLeft is entered. +func (s *BaseGQLListener) EnterFullEdgePointingLeft(ctx *FullEdgePointingLeftContext) {} + +// ExitFullEdgePointingLeft is called when production fullEdgePointingLeft is exited. +func (s *BaseGQLListener) ExitFullEdgePointingLeft(ctx *FullEdgePointingLeftContext) {} + +// EnterFullEdgeUndirected is called when production fullEdgeUndirected is entered. +func (s *BaseGQLListener) EnterFullEdgeUndirected(ctx *FullEdgeUndirectedContext) {} + +// ExitFullEdgeUndirected is called when production fullEdgeUndirected is exited. +func (s *BaseGQLListener) ExitFullEdgeUndirected(ctx *FullEdgeUndirectedContext) {} + +// EnterFullEdgePointingRight is called when production fullEdgePointingRight is entered. +func (s *BaseGQLListener) EnterFullEdgePointingRight(ctx *FullEdgePointingRightContext) {} + +// ExitFullEdgePointingRight is called when production fullEdgePointingRight is exited. +func (s *BaseGQLListener) ExitFullEdgePointingRight(ctx *FullEdgePointingRightContext) {} + +// EnterFullEdgeLeftOrUndirected is called when production fullEdgeLeftOrUndirected is entered. +func (s *BaseGQLListener) EnterFullEdgeLeftOrUndirected(ctx *FullEdgeLeftOrUndirectedContext) {} + +// ExitFullEdgeLeftOrUndirected is called when production fullEdgeLeftOrUndirected is exited. +func (s *BaseGQLListener) ExitFullEdgeLeftOrUndirected(ctx *FullEdgeLeftOrUndirectedContext) {} + +// EnterFullEdgeUndirectedOrRight is called when production fullEdgeUndirectedOrRight is entered. +func (s *BaseGQLListener) EnterFullEdgeUndirectedOrRight(ctx *FullEdgeUndirectedOrRightContext) {} + +// ExitFullEdgeUndirectedOrRight is called when production fullEdgeUndirectedOrRight is exited. +func (s *BaseGQLListener) ExitFullEdgeUndirectedOrRight(ctx *FullEdgeUndirectedOrRightContext) {} + +// EnterFullEdgeLeftOrRight is called when production fullEdgeLeftOrRight is entered. +func (s *BaseGQLListener) EnterFullEdgeLeftOrRight(ctx *FullEdgeLeftOrRightContext) {} + +// ExitFullEdgeLeftOrRight is called when production fullEdgeLeftOrRight is exited. +func (s *BaseGQLListener) ExitFullEdgeLeftOrRight(ctx *FullEdgeLeftOrRightContext) {} + +// EnterFullEdgeAnyDirection is called when production fullEdgeAnyDirection is entered. +func (s *BaseGQLListener) EnterFullEdgeAnyDirection(ctx *FullEdgeAnyDirectionContext) {} + +// ExitFullEdgeAnyDirection is called when production fullEdgeAnyDirection is exited. +func (s *BaseGQLListener) ExitFullEdgeAnyDirection(ctx *FullEdgeAnyDirectionContext) {} + +// EnterAbbreviatedEdgePattern is called when production abbreviatedEdgePattern is entered. +func (s *BaseGQLListener) EnterAbbreviatedEdgePattern(ctx *AbbreviatedEdgePatternContext) {} + +// ExitAbbreviatedEdgePattern is called when production abbreviatedEdgePattern is exited. +func (s *BaseGQLListener) ExitAbbreviatedEdgePattern(ctx *AbbreviatedEdgePatternContext) {} + +// EnterParenthesizedPathPatternExpression is called when production parenthesizedPathPatternExpression is entered. +func (s *BaseGQLListener) EnterParenthesizedPathPatternExpression(ctx *ParenthesizedPathPatternExpressionContext) { +} + +// ExitParenthesizedPathPatternExpression is called when production parenthesizedPathPatternExpression is exited. +func (s *BaseGQLListener) ExitParenthesizedPathPatternExpression(ctx *ParenthesizedPathPatternExpressionContext) { +} + +// EnterSubpathVariableDeclaration is called when production subpathVariableDeclaration is entered. +func (s *BaseGQLListener) EnterSubpathVariableDeclaration(ctx *SubpathVariableDeclarationContext) {} + +// ExitSubpathVariableDeclaration is called when production subpathVariableDeclaration is exited. +func (s *BaseGQLListener) ExitSubpathVariableDeclaration(ctx *SubpathVariableDeclarationContext) {} + +// EnterParenthesizedPathPatternWhereClause is called when production parenthesizedPathPatternWhereClause is entered. +func (s *BaseGQLListener) EnterParenthesizedPathPatternWhereClause(ctx *ParenthesizedPathPatternWhereClauseContext) { +} + +// ExitParenthesizedPathPatternWhereClause is called when production parenthesizedPathPatternWhereClause is exited. +func (s *BaseGQLListener) ExitParenthesizedPathPatternWhereClause(ctx *ParenthesizedPathPatternWhereClauseContext) { +} + +// EnterLabelExpressionNegation is called when production labelExpressionNegation is entered. +func (s *BaseGQLListener) EnterLabelExpressionNegation(ctx *LabelExpressionNegationContext) {} + +// ExitLabelExpressionNegation is called when production labelExpressionNegation is exited. +func (s *BaseGQLListener) ExitLabelExpressionNegation(ctx *LabelExpressionNegationContext) {} + +// EnterLabelExpressionDisjunction is called when production labelExpressionDisjunction is entered. +func (s *BaseGQLListener) EnterLabelExpressionDisjunction(ctx *LabelExpressionDisjunctionContext) {} + +// ExitLabelExpressionDisjunction is called when production labelExpressionDisjunction is exited. +func (s *BaseGQLListener) ExitLabelExpressionDisjunction(ctx *LabelExpressionDisjunctionContext) {} + +// EnterLabelExpressionParenthesized is called when production labelExpressionParenthesized is entered. +func (s *BaseGQLListener) EnterLabelExpressionParenthesized(ctx *LabelExpressionParenthesizedContext) { +} + +// ExitLabelExpressionParenthesized is called when production labelExpressionParenthesized is exited. +func (s *BaseGQLListener) ExitLabelExpressionParenthesized(ctx *LabelExpressionParenthesizedContext) { +} + +// EnterLabelExpressionWildcard is called when production labelExpressionWildcard is entered. +func (s *BaseGQLListener) EnterLabelExpressionWildcard(ctx *LabelExpressionWildcardContext) {} + +// ExitLabelExpressionWildcard is called when production labelExpressionWildcard is exited. +func (s *BaseGQLListener) ExitLabelExpressionWildcard(ctx *LabelExpressionWildcardContext) {} + +// EnterLabelExpressionConjunction is called when production labelExpressionConjunction is entered. +func (s *BaseGQLListener) EnterLabelExpressionConjunction(ctx *LabelExpressionConjunctionContext) {} + +// ExitLabelExpressionConjunction is called when production labelExpressionConjunction is exited. +func (s *BaseGQLListener) ExitLabelExpressionConjunction(ctx *LabelExpressionConjunctionContext) {} + +// EnterLabelExpressionName is called when production labelExpressionName is entered. +func (s *BaseGQLListener) EnterLabelExpressionName(ctx *LabelExpressionNameContext) {} + +// ExitLabelExpressionName is called when production labelExpressionName is exited. +func (s *BaseGQLListener) ExitLabelExpressionName(ctx *LabelExpressionNameContext) {} + +// EnterPathVariableReference is called when production pathVariableReference is entered. +func (s *BaseGQLListener) EnterPathVariableReference(ctx *PathVariableReferenceContext) {} + +// ExitPathVariableReference is called when production pathVariableReference is exited. +func (s *BaseGQLListener) ExitPathVariableReference(ctx *PathVariableReferenceContext) {} + +// EnterElementVariableReference is called when production elementVariableReference is entered. +func (s *BaseGQLListener) EnterElementVariableReference(ctx *ElementVariableReferenceContext) {} + +// ExitElementVariableReference is called when production elementVariableReference is exited. +func (s *BaseGQLListener) ExitElementVariableReference(ctx *ElementVariableReferenceContext) {} + +// EnterGraphPatternQuantifier is called when production graphPatternQuantifier is entered. +func (s *BaseGQLListener) EnterGraphPatternQuantifier(ctx *GraphPatternQuantifierContext) {} + +// ExitGraphPatternQuantifier is called when production graphPatternQuantifier is exited. +func (s *BaseGQLListener) ExitGraphPatternQuantifier(ctx *GraphPatternQuantifierContext) {} + +// EnterFixedQuantifier is called when production fixedQuantifier is entered. +func (s *BaseGQLListener) EnterFixedQuantifier(ctx *FixedQuantifierContext) {} + +// ExitFixedQuantifier is called when production fixedQuantifier is exited. +func (s *BaseGQLListener) ExitFixedQuantifier(ctx *FixedQuantifierContext) {} + +// EnterGeneralQuantifier is called when production generalQuantifier is entered. +func (s *BaseGQLListener) EnterGeneralQuantifier(ctx *GeneralQuantifierContext) {} + +// ExitGeneralQuantifier is called when production generalQuantifier is exited. +func (s *BaseGQLListener) ExitGeneralQuantifier(ctx *GeneralQuantifierContext) {} + +// EnterLowerBound is called when production lowerBound is entered. +func (s *BaseGQLListener) EnterLowerBound(ctx *LowerBoundContext) {} + +// ExitLowerBound is called when production lowerBound is exited. +func (s *BaseGQLListener) ExitLowerBound(ctx *LowerBoundContext) {} + +// EnterUpperBound is called when production upperBound is entered. +func (s *BaseGQLListener) EnterUpperBound(ctx *UpperBoundContext) {} + +// ExitUpperBound is called when production upperBound is exited. +func (s *BaseGQLListener) ExitUpperBound(ctx *UpperBoundContext) {} + +// EnterSimplifiedPathPatternExpression is called when production simplifiedPathPatternExpression is entered. +func (s *BaseGQLListener) EnterSimplifiedPathPatternExpression(ctx *SimplifiedPathPatternExpressionContext) { +} + +// ExitSimplifiedPathPatternExpression is called when production simplifiedPathPatternExpression is exited. +func (s *BaseGQLListener) ExitSimplifiedPathPatternExpression(ctx *SimplifiedPathPatternExpressionContext) { +} + +// EnterSimplifiedDefaultingLeft is called when production simplifiedDefaultingLeft is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingLeft(ctx *SimplifiedDefaultingLeftContext) {} + +// ExitSimplifiedDefaultingLeft is called when production simplifiedDefaultingLeft is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingLeft(ctx *SimplifiedDefaultingLeftContext) {} + +// EnterSimplifiedDefaultingUndirected is called when production simplifiedDefaultingUndirected is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingUndirected(ctx *SimplifiedDefaultingUndirectedContext) { +} + +// ExitSimplifiedDefaultingUndirected is called when production simplifiedDefaultingUndirected is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingUndirected(ctx *SimplifiedDefaultingUndirectedContext) { +} + +// EnterSimplifiedDefaultingRight is called when production simplifiedDefaultingRight is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingRight(ctx *SimplifiedDefaultingRightContext) {} + +// ExitSimplifiedDefaultingRight is called when production simplifiedDefaultingRight is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingRight(ctx *SimplifiedDefaultingRightContext) {} + +// EnterSimplifiedDefaultingLeftOrUndirected is called when production simplifiedDefaultingLeftOrUndirected is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingLeftOrUndirected(ctx *SimplifiedDefaultingLeftOrUndirectedContext) { +} + +// ExitSimplifiedDefaultingLeftOrUndirected is called when production simplifiedDefaultingLeftOrUndirected is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingLeftOrUndirected(ctx *SimplifiedDefaultingLeftOrUndirectedContext) { +} + +// EnterSimplifiedDefaultingUndirectedOrRight is called when production simplifiedDefaultingUndirectedOrRight is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingUndirectedOrRight(ctx *SimplifiedDefaultingUndirectedOrRightContext) { +} + +// ExitSimplifiedDefaultingUndirectedOrRight is called when production simplifiedDefaultingUndirectedOrRight is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingUndirectedOrRight(ctx *SimplifiedDefaultingUndirectedOrRightContext) { +} + +// EnterSimplifiedDefaultingLeftOrRight is called when production simplifiedDefaultingLeftOrRight is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingLeftOrRight(ctx *SimplifiedDefaultingLeftOrRightContext) { +} + +// ExitSimplifiedDefaultingLeftOrRight is called when production simplifiedDefaultingLeftOrRight is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingLeftOrRight(ctx *SimplifiedDefaultingLeftOrRightContext) { +} + +// EnterSimplifiedDefaultingAnyDirection is called when production simplifiedDefaultingAnyDirection is entered. +func (s *BaseGQLListener) EnterSimplifiedDefaultingAnyDirection(ctx *SimplifiedDefaultingAnyDirectionContext) { +} + +// ExitSimplifiedDefaultingAnyDirection is called when production simplifiedDefaultingAnyDirection is exited. +func (s *BaseGQLListener) ExitSimplifiedDefaultingAnyDirection(ctx *SimplifiedDefaultingAnyDirectionContext) { +} + +// EnterSimplifiedContents is called when production simplifiedContents is entered. +func (s *BaseGQLListener) EnterSimplifiedContents(ctx *SimplifiedContentsContext) {} + +// ExitSimplifiedContents is called when production simplifiedContents is exited. +func (s *BaseGQLListener) ExitSimplifiedContents(ctx *SimplifiedContentsContext) {} + +// EnterSimplifiedPathUnion is called when production simplifiedPathUnion is entered. +func (s *BaseGQLListener) EnterSimplifiedPathUnion(ctx *SimplifiedPathUnionContext) {} + +// ExitSimplifiedPathUnion is called when production simplifiedPathUnion is exited. +func (s *BaseGQLListener) ExitSimplifiedPathUnion(ctx *SimplifiedPathUnionContext) {} + +// EnterSimplifiedMultisetAlternation is called when production simplifiedMultisetAlternation is entered. +func (s *BaseGQLListener) EnterSimplifiedMultisetAlternation(ctx *SimplifiedMultisetAlternationContext) { +} + +// ExitSimplifiedMultisetAlternation is called when production simplifiedMultisetAlternation is exited. +func (s *BaseGQLListener) ExitSimplifiedMultisetAlternation(ctx *SimplifiedMultisetAlternationContext) { +} + +// EnterSimplifiedFactorLowLabel is called when production simplifiedFactorLowLabel is entered. +func (s *BaseGQLListener) EnterSimplifiedFactorLowLabel(ctx *SimplifiedFactorLowLabelContext) {} + +// ExitSimplifiedFactorLowLabel is called when production simplifiedFactorLowLabel is exited. +func (s *BaseGQLListener) ExitSimplifiedFactorLowLabel(ctx *SimplifiedFactorLowLabelContext) {} + +// EnterSimplifiedConcatenationLabel is called when production simplifiedConcatenationLabel is entered. +func (s *BaseGQLListener) EnterSimplifiedConcatenationLabel(ctx *SimplifiedConcatenationLabelContext) { +} + +// ExitSimplifiedConcatenationLabel is called when production simplifiedConcatenationLabel is exited. +func (s *BaseGQLListener) ExitSimplifiedConcatenationLabel(ctx *SimplifiedConcatenationLabelContext) { +} + +// EnterSimplifiedConjunctionLabel is called when production simplifiedConjunctionLabel is entered. +func (s *BaseGQLListener) EnterSimplifiedConjunctionLabel(ctx *SimplifiedConjunctionLabelContext) {} + +// ExitSimplifiedConjunctionLabel is called when production simplifiedConjunctionLabel is exited. +func (s *BaseGQLListener) ExitSimplifiedConjunctionLabel(ctx *SimplifiedConjunctionLabelContext) {} + +// EnterSimplifiedFactorHighLabel is called when production simplifiedFactorHighLabel is entered. +func (s *BaseGQLListener) EnterSimplifiedFactorHighLabel(ctx *SimplifiedFactorHighLabelContext) {} + +// ExitSimplifiedFactorHighLabel is called when production simplifiedFactorHighLabel is exited. +func (s *BaseGQLListener) ExitSimplifiedFactorHighLabel(ctx *SimplifiedFactorHighLabelContext) {} + +// EnterSimplifiedFactorHigh is called when production simplifiedFactorHigh is entered. +func (s *BaseGQLListener) EnterSimplifiedFactorHigh(ctx *SimplifiedFactorHighContext) {} + +// ExitSimplifiedFactorHigh is called when production simplifiedFactorHigh is exited. +func (s *BaseGQLListener) ExitSimplifiedFactorHigh(ctx *SimplifiedFactorHighContext) {} + +// EnterSimplifiedQuantified is called when production simplifiedQuantified is entered. +func (s *BaseGQLListener) EnterSimplifiedQuantified(ctx *SimplifiedQuantifiedContext) {} + +// ExitSimplifiedQuantified is called when production simplifiedQuantified is exited. +func (s *BaseGQLListener) ExitSimplifiedQuantified(ctx *SimplifiedQuantifiedContext) {} + +// EnterSimplifiedQuestioned is called when production simplifiedQuestioned is entered. +func (s *BaseGQLListener) EnterSimplifiedQuestioned(ctx *SimplifiedQuestionedContext) {} + +// ExitSimplifiedQuestioned is called when production simplifiedQuestioned is exited. +func (s *BaseGQLListener) ExitSimplifiedQuestioned(ctx *SimplifiedQuestionedContext) {} + +// EnterSimplifiedTertiary is called when production simplifiedTertiary is entered. +func (s *BaseGQLListener) EnterSimplifiedTertiary(ctx *SimplifiedTertiaryContext) {} + +// ExitSimplifiedTertiary is called when production simplifiedTertiary is exited. +func (s *BaseGQLListener) ExitSimplifiedTertiary(ctx *SimplifiedTertiaryContext) {} + +// EnterSimplifiedDirectionOverride is called when production simplifiedDirectionOverride is entered. +func (s *BaseGQLListener) EnterSimplifiedDirectionOverride(ctx *SimplifiedDirectionOverrideContext) {} + +// ExitSimplifiedDirectionOverride is called when production simplifiedDirectionOverride is exited. +func (s *BaseGQLListener) ExitSimplifiedDirectionOverride(ctx *SimplifiedDirectionOverrideContext) {} + +// EnterSimplifiedOverrideLeft is called when production simplifiedOverrideLeft is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideLeft(ctx *SimplifiedOverrideLeftContext) {} + +// ExitSimplifiedOverrideLeft is called when production simplifiedOverrideLeft is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideLeft(ctx *SimplifiedOverrideLeftContext) {} + +// EnterSimplifiedOverrideUndirected is called when production simplifiedOverrideUndirected is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideUndirected(ctx *SimplifiedOverrideUndirectedContext) { +} + +// ExitSimplifiedOverrideUndirected is called when production simplifiedOverrideUndirected is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideUndirected(ctx *SimplifiedOverrideUndirectedContext) { +} + +// EnterSimplifiedOverrideRight is called when production simplifiedOverrideRight is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideRight(ctx *SimplifiedOverrideRightContext) {} + +// ExitSimplifiedOverrideRight is called when production simplifiedOverrideRight is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideRight(ctx *SimplifiedOverrideRightContext) {} + +// EnterSimplifiedOverrideLeftOrUndirected is called when production simplifiedOverrideLeftOrUndirected is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideLeftOrUndirected(ctx *SimplifiedOverrideLeftOrUndirectedContext) { +} + +// ExitSimplifiedOverrideLeftOrUndirected is called when production simplifiedOverrideLeftOrUndirected is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideLeftOrUndirected(ctx *SimplifiedOverrideLeftOrUndirectedContext) { +} + +// EnterSimplifiedOverrideUndirectedOrRight is called when production simplifiedOverrideUndirectedOrRight is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideUndirectedOrRight(ctx *SimplifiedOverrideUndirectedOrRightContext) { +} + +// ExitSimplifiedOverrideUndirectedOrRight is called when production simplifiedOverrideUndirectedOrRight is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideUndirectedOrRight(ctx *SimplifiedOverrideUndirectedOrRightContext) { +} + +// EnterSimplifiedOverrideLeftOrRight is called when production simplifiedOverrideLeftOrRight is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideLeftOrRight(ctx *SimplifiedOverrideLeftOrRightContext) { +} + +// ExitSimplifiedOverrideLeftOrRight is called when production simplifiedOverrideLeftOrRight is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideLeftOrRight(ctx *SimplifiedOverrideLeftOrRightContext) { +} + +// EnterSimplifiedOverrideAnyDirection is called when production simplifiedOverrideAnyDirection is entered. +func (s *BaseGQLListener) EnterSimplifiedOverrideAnyDirection(ctx *SimplifiedOverrideAnyDirectionContext) { +} + +// ExitSimplifiedOverrideAnyDirection is called when production simplifiedOverrideAnyDirection is exited. +func (s *BaseGQLListener) ExitSimplifiedOverrideAnyDirection(ctx *SimplifiedOverrideAnyDirectionContext) { +} + +// EnterSimplifiedSecondary is called when production simplifiedSecondary is entered. +func (s *BaseGQLListener) EnterSimplifiedSecondary(ctx *SimplifiedSecondaryContext) {} + +// ExitSimplifiedSecondary is called when production simplifiedSecondary is exited. +func (s *BaseGQLListener) ExitSimplifiedSecondary(ctx *SimplifiedSecondaryContext) {} + +// EnterSimplifiedNegation is called when production simplifiedNegation is entered. +func (s *BaseGQLListener) EnterSimplifiedNegation(ctx *SimplifiedNegationContext) {} + +// ExitSimplifiedNegation is called when production simplifiedNegation is exited. +func (s *BaseGQLListener) ExitSimplifiedNegation(ctx *SimplifiedNegationContext) {} + +// EnterSimplifiedPrimary is called when production simplifiedPrimary is entered. +func (s *BaseGQLListener) EnterSimplifiedPrimary(ctx *SimplifiedPrimaryContext) {} + +// ExitSimplifiedPrimary is called when production simplifiedPrimary is exited. +func (s *BaseGQLListener) ExitSimplifiedPrimary(ctx *SimplifiedPrimaryContext) {} + +// EnterWhereClause is called when production whereClause is entered. +func (s *BaseGQLListener) EnterWhereClause(ctx *WhereClauseContext) {} + +// ExitWhereClause is called when production whereClause is exited. +func (s *BaseGQLListener) ExitWhereClause(ctx *WhereClauseContext) {} + +// EnterYieldClause is called when production yieldClause is entered. +func (s *BaseGQLListener) EnterYieldClause(ctx *YieldClauseContext) {} + +// ExitYieldClause is called when production yieldClause is exited. +func (s *BaseGQLListener) ExitYieldClause(ctx *YieldClauseContext) {} + +// EnterYieldItemList is called when production yieldItemList is entered. +func (s *BaseGQLListener) EnterYieldItemList(ctx *YieldItemListContext) {} + +// ExitYieldItemList is called when production yieldItemList is exited. +func (s *BaseGQLListener) ExitYieldItemList(ctx *YieldItemListContext) {} + +// EnterYieldItem is called when production yieldItem is entered. +func (s *BaseGQLListener) EnterYieldItem(ctx *YieldItemContext) {} + +// ExitYieldItem is called when production yieldItem is exited. +func (s *BaseGQLListener) ExitYieldItem(ctx *YieldItemContext) {} + +// EnterYieldItemName is called when production yieldItemName is entered. +func (s *BaseGQLListener) EnterYieldItemName(ctx *YieldItemNameContext) {} + +// ExitYieldItemName is called when production yieldItemName is exited. +func (s *BaseGQLListener) ExitYieldItemName(ctx *YieldItemNameContext) {} + +// EnterYieldItemAlias is called when production yieldItemAlias is entered. +func (s *BaseGQLListener) EnterYieldItemAlias(ctx *YieldItemAliasContext) {} + +// ExitYieldItemAlias is called when production yieldItemAlias is exited. +func (s *BaseGQLListener) ExitYieldItemAlias(ctx *YieldItemAliasContext) {} + +// EnterGroupByClause is called when production groupByClause is entered. +func (s *BaseGQLListener) EnterGroupByClause(ctx *GroupByClauseContext) {} + +// ExitGroupByClause is called when production groupByClause is exited. +func (s *BaseGQLListener) ExitGroupByClause(ctx *GroupByClauseContext) {} + +// EnterGroupingElementList is called when production groupingElementList is entered. +func (s *BaseGQLListener) EnterGroupingElementList(ctx *GroupingElementListContext) {} + +// ExitGroupingElementList is called when production groupingElementList is exited. +func (s *BaseGQLListener) ExitGroupingElementList(ctx *GroupingElementListContext) {} + +// EnterGroupingElement is called when production groupingElement is entered. +func (s *BaseGQLListener) EnterGroupingElement(ctx *GroupingElementContext) {} + +// ExitGroupingElement is called when production groupingElement is exited. +func (s *BaseGQLListener) ExitGroupingElement(ctx *GroupingElementContext) {} + +// EnterEmptyGroupingSet is called when production emptyGroupingSet is entered. +func (s *BaseGQLListener) EnterEmptyGroupingSet(ctx *EmptyGroupingSetContext) {} + +// ExitEmptyGroupingSet is called when production emptyGroupingSet is exited. +func (s *BaseGQLListener) ExitEmptyGroupingSet(ctx *EmptyGroupingSetContext) {} + +// EnterOrderByClause is called when production orderByClause is entered. +func (s *BaseGQLListener) EnterOrderByClause(ctx *OrderByClauseContext) {} + +// ExitOrderByClause is called when production orderByClause is exited. +func (s *BaseGQLListener) ExitOrderByClause(ctx *OrderByClauseContext) {} + +// EnterSortSpecificationList is called when production sortSpecificationList is entered. +func (s *BaseGQLListener) EnterSortSpecificationList(ctx *SortSpecificationListContext) {} + +// ExitSortSpecificationList is called when production sortSpecificationList is exited. +func (s *BaseGQLListener) ExitSortSpecificationList(ctx *SortSpecificationListContext) {} + +// EnterSortSpecification is called when production sortSpecification is entered. +func (s *BaseGQLListener) EnterSortSpecification(ctx *SortSpecificationContext) {} + +// ExitSortSpecification is called when production sortSpecification is exited. +func (s *BaseGQLListener) ExitSortSpecification(ctx *SortSpecificationContext) {} + +// EnterSortKey is called when production sortKey is entered. +func (s *BaseGQLListener) EnterSortKey(ctx *SortKeyContext) {} + +// ExitSortKey is called when production sortKey is exited. +func (s *BaseGQLListener) ExitSortKey(ctx *SortKeyContext) {} + +// EnterOrderingSpecification is called when production orderingSpecification is entered. +func (s *BaseGQLListener) EnterOrderingSpecification(ctx *OrderingSpecificationContext) {} + +// ExitOrderingSpecification is called when production orderingSpecification is exited. +func (s *BaseGQLListener) ExitOrderingSpecification(ctx *OrderingSpecificationContext) {} + +// EnterNullOrdering is called when production nullOrdering is entered. +func (s *BaseGQLListener) EnterNullOrdering(ctx *NullOrderingContext) {} + +// ExitNullOrdering is called when production nullOrdering is exited. +func (s *BaseGQLListener) ExitNullOrdering(ctx *NullOrderingContext) {} + +// EnterLimitClause is called when production limitClause is entered. +func (s *BaseGQLListener) EnterLimitClause(ctx *LimitClauseContext) {} + +// ExitLimitClause is called when production limitClause is exited. +func (s *BaseGQLListener) ExitLimitClause(ctx *LimitClauseContext) {} + +// EnterOffsetClause is called when production offsetClause is entered. +func (s *BaseGQLListener) EnterOffsetClause(ctx *OffsetClauseContext) {} + +// ExitOffsetClause is called when production offsetClause is exited. +func (s *BaseGQLListener) ExitOffsetClause(ctx *OffsetClauseContext) {} + +// EnterOffsetSynonym is called when production offsetSynonym is entered. +func (s *BaseGQLListener) EnterOffsetSynonym(ctx *OffsetSynonymContext) {} + +// ExitOffsetSynonym is called when production offsetSynonym is exited. +func (s *BaseGQLListener) ExitOffsetSynonym(ctx *OffsetSynonymContext) {} + +// EnterSchemaReference is called when production schemaReference is entered. +func (s *BaseGQLListener) EnterSchemaReference(ctx *SchemaReferenceContext) {} + +// ExitSchemaReference is called when production schemaReference is exited. +func (s *BaseGQLListener) ExitSchemaReference(ctx *SchemaReferenceContext) {} + +// EnterAbsoluteCatalogSchemaReference is called when production absoluteCatalogSchemaReference is entered. +func (s *BaseGQLListener) EnterAbsoluteCatalogSchemaReference(ctx *AbsoluteCatalogSchemaReferenceContext) { +} + +// ExitAbsoluteCatalogSchemaReference is called when production absoluteCatalogSchemaReference is exited. +func (s *BaseGQLListener) ExitAbsoluteCatalogSchemaReference(ctx *AbsoluteCatalogSchemaReferenceContext) { +} + +// EnterCatalogSchemaParentAndName is called when production catalogSchemaParentAndName is entered. +func (s *BaseGQLListener) EnterCatalogSchemaParentAndName(ctx *CatalogSchemaParentAndNameContext) {} + +// ExitCatalogSchemaParentAndName is called when production catalogSchemaParentAndName is exited. +func (s *BaseGQLListener) ExitCatalogSchemaParentAndName(ctx *CatalogSchemaParentAndNameContext) {} + +// EnterRelativeCatalogSchemaReference is called when production relativeCatalogSchemaReference is entered. +func (s *BaseGQLListener) EnterRelativeCatalogSchemaReference(ctx *RelativeCatalogSchemaReferenceContext) { +} + +// ExitRelativeCatalogSchemaReference is called when production relativeCatalogSchemaReference is exited. +func (s *BaseGQLListener) ExitRelativeCatalogSchemaReference(ctx *RelativeCatalogSchemaReferenceContext) { +} + +// EnterPredefinedSchemaReference is called when production predefinedSchemaReference is entered. +func (s *BaseGQLListener) EnterPredefinedSchemaReference(ctx *PredefinedSchemaReferenceContext) {} + +// ExitPredefinedSchemaReference is called when production predefinedSchemaReference is exited. +func (s *BaseGQLListener) ExitPredefinedSchemaReference(ctx *PredefinedSchemaReferenceContext) {} + +// EnterAbsoluteDirectoryPath is called when production absoluteDirectoryPath is entered. +func (s *BaseGQLListener) EnterAbsoluteDirectoryPath(ctx *AbsoluteDirectoryPathContext) {} + +// ExitAbsoluteDirectoryPath is called when production absoluteDirectoryPath is exited. +func (s *BaseGQLListener) ExitAbsoluteDirectoryPath(ctx *AbsoluteDirectoryPathContext) {} + +// EnterRelativeDirectoryPath is called when production relativeDirectoryPath is entered. +func (s *BaseGQLListener) EnterRelativeDirectoryPath(ctx *RelativeDirectoryPathContext) {} + +// ExitRelativeDirectoryPath is called when production relativeDirectoryPath is exited. +func (s *BaseGQLListener) ExitRelativeDirectoryPath(ctx *RelativeDirectoryPathContext) {} + +// EnterSimpleDirectoryPath is called when production simpleDirectoryPath is entered. +func (s *BaseGQLListener) EnterSimpleDirectoryPath(ctx *SimpleDirectoryPathContext) {} + +// ExitSimpleDirectoryPath is called when production simpleDirectoryPath is exited. +func (s *BaseGQLListener) ExitSimpleDirectoryPath(ctx *SimpleDirectoryPathContext) {} + +// EnterGraphReference is called when production graphReference is entered. +func (s *BaseGQLListener) EnterGraphReference(ctx *GraphReferenceContext) {} + +// ExitGraphReference is called when production graphReference is exited. +func (s *BaseGQLListener) ExitGraphReference(ctx *GraphReferenceContext) {} + +// EnterCatalogGraphParentAndName is called when production catalogGraphParentAndName is entered. +func (s *BaseGQLListener) EnterCatalogGraphParentAndName(ctx *CatalogGraphParentAndNameContext) {} + +// ExitCatalogGraphParentAndName is called when production catalogGraphParentAndName is exited. +func (s *BaseGQLListener) ExitCatalogGraphParentAndName(ctx *CatalogGraphParentAndNameContext) {} + +// EnterHomeGraph is called when production homeGraph is entered. +func (s *BaseGQLListener) EnterHomeGraph(ctx *HomeGraphContext) {} + +// ExitHomeGraph is called when production homeGraph is exited. +func (s *BaseGQLListener) ExitHomeGraph(ctx *HomeGraphContext) {} + +// EnterGraphTypeReference is called when production graphTypeReference is entered. +func (s *BaseGQLListener) EnterGraphTypeReference(ctx *GraphTypeReferenceContext) {} + +// ExitGraphTypeReference is called when production graphTypeReference is exited. +func (s *BaseGQLListener) ExitGraphTypeReference(ctx *GraphTypeReferenceContext) {} + +// EnterCatalogGraphTypeParentAndName is called when production catalogGraphTypeParentAndName is entered. +func (s *BaseGQLListener) EnterCatalogGraphTypeParentAndName(ctx *CatalogGraphTypeParentAndNameContext) { +} + +// ExitCatalogGraphTypeParentAndName is called when production catalogGraphTypeParentAndName is exited. +func (s *BaseGQLListener) ExitCatalogGraphTypeParentAndName(ctx *CatalogGraphTypeParentAndNameContext) { +} + +// EnterBindingTableReference is called when production bindingTableReference is entered. +func (s *BaseGQLListener) EnterBindingTableReference(ctx *BindingTableReferenceContext) {} + +// ExitBindingTableReference is called when production bindingTableReference is exited. +func (s *BaseGQLListener) ExitBindingTableReference(ctx *BindingTableReferenceContext) {} + +// EnterProcedureReference is called when production procedureReference is entered. +func (s *BaseGQLListener) EnterProcedureReference(ctx *ProcedureReferenceContext) {} + +// ExitProcedureReference is called when production procedureReference is exited. +func (s *BaseGQLListener) ExitProcedureReference(ctx *ProcedureReferenceContext) {} + +// EnterCatalogProcedureParentAndName is called when production catalogProcedureParentAndName is entered. +func (s *BaseGQLListener) EnterCatalogProcedureParentAndName(ctx *CatalogProcedureParentAndNameContext) { +} + +// ExitCatalogProcedureParentAndName is called when production catalogProcedureParentAndName is exited. +func (s *BaseGQLListener) ExitCatalogProcedureParentAndName(ctx *CatalogProcedureParentAndNameContext) { +} + +// EnterCatalogObjectParentReference is called when production catalogObjectParentReference is entered. +func (s *BaseGQLListener) EnterCatalogObjectParentReference(ctx *CatalogObjectParentReferenceContext) { +} + +// ExitCatalogObjectParentReference is called when production catalogObjectParentReference is exited. +func (s *BaseGQLListener) ExitCatalogObjectParentReference(ctx *CatalogObjectParentReferenceContext) { +} + +// EnterReferenceParameterSpecification is called when production referenceParameterSpecification is entered. +func (s *BaseGQLListener) EnterReferenceParameterSpecification(ctx *ReferenceParameterSpecificationContext) { +} + +// ExitReferenceParameterSpecification is called when production referenceParameterSpecification is exited. +func (s *BaseGQLListener) ExitReferenceParameterSpecification(ctx *ReferenceParameterSpecificationContext) { +} + +// EnterNestedGraphTypeSpecification is called when production nestedGraphTypeSpecification is entered. +func (s *BaseGQLListener) EnterNestedGraphTypeSpecification(ctx *NestedGraphTypeSpecificationContext) { +} + +// ExitNestedGraphTypeSpecification is called when production nestedGraphTypeSpecification is exited. +func (s *BaseGQLListener) ExitNestedGraphTypeSpecification(ctx *NestedGraphTypeSpecificationContext) { +} + +// EnterGraphTypeSpecificationBody is called when production graphTypeSpecificationBody is entered. +func (s *BaseGQLListener) EnterGraphTypeSpecificationBody(ctx *GraphTypeSpecificationBodyContext) {} + +// ExitGraphTypeSpecificationBody is called when production graphTypeSpecificationBody is exited. +func (s *BaseGQLListener) ExitGraphTypeSpecificationBody(ctx *GraphTypeSpecificationBodyContext) {} + +// EnterElementTypeList is called when production elementTypeList is entered. +func (s *BaseGQLListener) EnterElementTypeList(ctx *ElementTypeListContext) {} + +// ExitElementTypeList is called when production elementTypeList is exited. +func (s *BaseGQLListener) ExitElementTypeList(ctx *ElementTypeListContext) {} + +// EnterElementTypeSpecification is called when production elementTypeSpecification is entered. +func (s *BaseGQLListener) EnterElementTypeSpecification(ctx *ElementTypeSpecificationContext) {} + +// ExitElementTypeSpecification is called when production elementTypeSpecification is exited. +func (s *BaseGQLListener) ExitElementTypeSpecification(ctx *ElementTypeSpecificationContext) {} + +// EnterNodeTypeSpecification is called when production nodeTypeSpecification is entered. +func (s *BaseGQLListener) EnterNodeTypeSpecification(ctx *NodeTypeSpecificationContext) {} + +// ExitNodeTypeSpecification is called when production nodeTypeSpecification is exited. +func (s *BaseGQLListener) ExitNodeTypeSpecification(ctx *NodeTypeSpecificationContext) {} + +// EnterNodeTypePattern is called when production nodeTypePattern is entered. +func (s *BaseGQLListener) EnterNodeTypePattern(ctx *NodeTypePatternContext) {} + +// ExitNodeTypePattern is called when production nodeTypePattern is exited. +func (s *BaseGQLListener) ExitNodeTypePattern(ctx *NodeTypePatternContext) {} + +// EnterNodeTypePhrase is called when production nodeTypePhrase is entered. +func (s *BaseGQLListener) EnterNodeTypePhrase(ctx *NodeTypePhraseContext) {} + +// ExitNodeTypePhrase is called when production nodeTypePhrase is exited. +func (s *BaseGQLListener) ExitNodeTypePhrase(ctx *NodeTypePhraseContext) {} + +// EnterNodeTypePhraseFiller is called when production nodeTypePhraseFiller is entered. +func (s *BaseGQLListener) EnterNodeTypePhraseFiller(ctx *NodeTypePhraseFillerContext) {} + +// ExitNodeTypePhraseFiller is called when production nodeTypePhraseFiller is exited. +func (s *BaseGQLListener) ExitNodeTypePhraseFiller(ctx *NodeTypePhraseFillerContext) {} + +// EnterNodeTypeFiller is called when production nodeTypeFiller is entered. +func (s *BaseGQLListener) EnterNodeTypeFiller(ctx *NodeTypeFillerContext) {} + +// ExitNodeTypeFiller is called when production nodeTypeFiller is exited. +func (s *BaseGQLListener) ExitNodeTypeFiller(ctx *NodeTypeFillerContext) {} + +// EnterLocalNodeTypeAlias is called when production localNodeTypeAlias is entered. +func (s *BaseGQLListener) EnterLocalNodeTypeAlias(ctx *LocalNodeTypeAliasContext) {} + +// ExitLocalNodeTypeAlias is called when production localNodeTypeAlias is exited. +func (s *BaseGQLListener) ExitLocalNodeTypeAlias(ctx *LocalNodeTypeAliasContext) {} + +// EnterNodeTypeImpliedContent is called when production nodeTypeImpliedContent is entered. +func (s *BaseGQLListener) EnterNodeTypeImpliedContent(ctx *NodeTypeImpliedContentContext) {} + +// ExitNodeTypeImpliedContent is called when production nodeTypeImpliedContent is exited. +func (s *BaseGQLListener) ExitNodeTypeImpliedContent(ctx *NodeTypeImpliedContentContext) {} + +// EnterNodeTypeKeyLabelSet is called when production nodeTypeKeyLabelSet is entered. +func (s *BaseGQLListener) EnterNodeTypeKeyLabelSet(ctx *NodeTypeKeyLabelSetContext) {} + +// ExitNodeTypeKeyLabelSet is called when production nodeTypeKeyLabelSet is exited. +func (s *BaseGQLListener) ExitNodeTypeKeyLabelSet(ctx *NodeTypeKeyLabelSetContext) {} + +// EnterNodeTypeLabelSet is called when production nodeTypeLabelSet is entered. +func (s *BaseGQLListener) EnterNodeTypeLabelSet(ctx *NodeTypeLabelSetContext) {} + +// ExitNodeTypeLabelSet is called when production nodeTypeLabelSet is exited. +func (s *BaseGQLListener) ExitNodeTypeLabelSet(ctx *NodeTypeLabelSetContext) {} + +// EnterNodeTypePropertyTypes is called when production nodeTypePropertyTypes is entered. +func (s *BaseGQLListener) EnterNodeTypePropertyTypes(ctx *NodeTypePropertyTypesContext) {} + +// ExitNodeTypePropertyTypes is called when production nodeTypePropertyTypes is exited. +func (s *BaseGQLListener) ExitNodeTypePropertyTypes(ctx *NodeTypePropertyTypesContext) {} + +// EnterEdgeTypeSpecification is called when production edgeTypeSpecification is entered. +func (s *BaseGQLListener) EnterEdgeTypeSpecification(ctx *EdgeTypeSpecificationContext) {} + +// ExitEdgeTypeSpecification is called when production edgeTypeSpecification is exited. +func (s *BaseGQLListener) ExitEdgeTypeSpecification(ctx *EdgeTypeSpecificationContext) {} + +// EnterEdgeTypePattern is called when production edgeTypePattern is entered. +func (s *BaseGQLListener) EnterEdgeTypePattern(ctx *EdgeTypePatternContext) {} + +// ExitEdgeTypePattern is called when production edgeTypePattern is exited. +func (s *BaseGQLListener) ExitEdgeTypePattern(ctx *EdgeTypePatternContext) {} + +// EnterEdgeTypePhrase is called when production edgeTypePhrase is entered. +func (s *BaseGQLListener) EnterEdgeTypePhrase(ctx *EdgeTypePhraseContext) {} + +// ExitEdgeTypePhrase is called when production edgeTypePhrase is exited. +func (s *BaseGQLListener) ExitEdgeTypePhrase(ctx *EdgeTypePhraseContext) {} + +// EnterEdgeTypePhraseFiller is called when production edgeTypePhraseFiller is entered. +func (s *BaseGQLListener) EnterEdgeTypePhraseFiller(ctx *EdgeTypePhraseFillerContext) {} + +// ExitEdgeTypePhraseFiller is called when production edgeTypePhraseFiller is exited. +func (s *BaseGQLListener) ExitEdgeTypePhraseFiller(ctx *EdgeTypePhraseFillerContext) {} + +// EnterEdgeTypeFiller is called when production edgeTypeFiller is entered. +func (s *BaseGQLListener) EnterEdgeTypeFiller(ctx *EdgeTypeFillerContext) {} + +// ExitEdgeTypeFiller is called when production edgeTypeFiller is exited. +func (s *BaseGQLListener) ExitEdgeTypeFiller(ctx *EdgeTypeFillerContext) {} + +// EnterEdgeTypeImpliedContent is called when production edgeTypeImpliedContent is entered. +func (s *BaseGQLListener) EnterEdgeTypeImpliedContent(ctx *EdgeTypeImpliedContentContext) {} + +// ExitEdgeTypeImpliedContent is called when production edgeTypeImpliedContent is exited. +func (s *BaseGQLListener) ExitEdgeTypeImpliedContent(ctx *EdgeTypeImpliedContentContext) {} + +// EnterEdgeTypeKeyLabelSet is called when production edgeTypeKeyLabelSet is entered. +func (s *BaseGQLListener) EnterEdgeTypeKeyLabelSet(ctx *EdgeTypeKeyLabelSetContext) {} + +// ExitEdgeTypeKeyLabelSet is called when production edgeTypeKeyLabelSet is exited. +func (s *BaseGQLListener) ExitEdgeTypeKeyLabelSet(ctx *EdgeTypeKeyLabelSetContext) {} + +// EnterEdgeTypeLabelSet is called when production edgeTypeLabelSet is entered. +func (s *BaseGQLListener) EnterEdgeTypeLabelSet(ctx *EdgeTypeLabelSetContext) {} + +// ExitEdgeTypeLabelSet is called when production edgeTypeLabelSet is exited. +func (s *BaseGQLListener) ExitEdgeTypeLabelSet(ctx *EdgeTypeLabelSetContext) {} + +// EnterEdgeTypePropertyTypes is called when production edgeTypePropertyTypes is entered. +func (s *BaseGQLListener) EnterEdgeTypePropertyTypes(ctx *EdgeTypePropertyTypesContext) {} + +// ExitEdgeTypePropertyTypes is called when production edgeTypePropertyTypes is exited. +func (s *BaseGQLListener) ExitEdgeTypePropertyTypes(ctx *EdgeTypePropertyTypesContext) {} + +// EnterEdgeTypePatternDirected is called when production edgeTypePatternDirected is entered. +func (s *BaseGQLListener) EnterEdgeTypePatternDirected(ctx *EdgeTypePatternDirectedContext) {} + +// ExitEdgeTypePatternDirected is called when production edgeTypePatternDirected is exited. +func (s *BaseGQLListener) ExitEdgeTypePatternDirected(ctx *EdgeTypePatternDirectedContext) {} + +// EnterEdgeTypePatternPointingRight is called when production edgeTypePatternPointingRight is entered. +func (s *BaseGQLListener) EnterEdgeTypePatternPointingRight(ctx *EdgeTypePatternPointingRightContext) { +} + +// ExitEdgeTypePatternPointingRight is called when production edgeTypePatternPointingRight is exited. +func (s *BaseGQLListener) ExitEdgeTypePatternPointingRight(ctx *EdgeTypePatternPointingRightContext) { +} + +// EnterEdgeTypePatternPointingLeft is called when production edgeTypePatternPointingLeft is entered. +func (s *BaseGQLListener) EnterEdgeTypePatternPointingLeft(ctx *EdgeTypePatternPointingLeftContext) {} + +// ExitEdgeTypePatternPointingLeft is called when production edgeTypePatternPointingLeft is exited. +func (s *BaseGQLListener) ExitEdgeTypePatternPointingLeft(ctx *EdgeTypePatternPointingLeftContext) {} + +// EnterEdgeTypePatternUndirected is called when production edgeTypePatternUndirected is entered. +func (s *BaseGQLListener) EnterEdgeTypePatternUndirected(ctx *EdgeTypePatternUndirectedContext) {} + +// ExitEdgeTypePatternUndirected is called when production edgeTypePatternUndirected is exited. +func (s *BaseGQLListener) ExitEdgeTypePatternUndirected(ctx *EdgeTypePatternUndirectedContext) {} + +// EnterArcTypePointingRight is called when production arcTypePointingRight is entered. +func (s *BaseGQLListener) EnterArcTypePointingRight(ctx *ArcTypePointingRightContext) {} + +// ExitArcTypePointingRight is called when production arcTypePointingRight is exited. +func (s *BaseGQLListener) ExitArcTypePointingRight(ctx *ArcTypePointingRightContext) {} + +// EnterArcTypePointingLeft is called when production arcTypePointingLeft is entered. +func (s *BaseGQLListener) EnterArcTypePointingLeft(ctx *ArcTypePointingLeftContext) {} + +// ExitArcTypePointingLeft is called when production arcTypePointingLeft is exited. +func (s *BaseGQLListener) ExitArcTypePointingLeft(ctx *ArcTypePointingLeftContext) {} + +// EnterArcTypeUndirected is called when production arcTypeUndirected is entered. +func (s *BaseGQLListener) EnterArcTypeUndirected(ctx *ArcTypeUndirectedContext) {} + +// ExitArcTypeUndirected is called when production arcTypeUndirected is exited. +func (s *BaseGQLListener) ExitArcTypeUndirected(ctx *ArcTypeUndirectedContext) {} + +// EnterSourceNodeTypeReference is called when production sourceNodeTypeReference is entered. +func (s *BaseGQLListener) EnterSourceNodeTypeReference(ctx *SourceNodeTypeReferenceContext) {} + +// ExitSourceNodeTypeReference is called when production sourceNodeTypeReference is exited. +func (s *BaseGQLListener) ExitSourceNodeTypeReference(ctx *SourceNodeTypeReferenceContext) {} + +// EnterDestinationNodeTypeReference is called when production destinationNodeTypeReference is entered. +func (s *BaseGQLListener) EnterDestinationNodeTypeReference(ctx *DestinationNodeTypeReferenceContext) { +} + +// ExitDestinationNodeTypeReference is called when production destinationNodeTypeReference is exited. +func (s *BaseGQLListener) ExitDestinationNodeTypeReference(ctx *DestinationNodeTypeReferenceContext) { +} + +// EnterEdgeKind is called when production edgeKind is entered. +func (s *BaseGQLListener) EnterEdgeKind(ctx *EdgeKindContext) {} + +// ExitEdgeKind is called when production edgeKind is exited. +func (s *BaseGQLListener) ExitEdgeKind(ctx *EdgeKindContext) {} + +// EnterEndpointPairPhrase is called when production endpointPairPhrase is entered. +func (s *BaseGQLListener) EnterEndpointPairPhrase(ctx *EndpointPairPhraseContext) {} + +// ExitEndpointPairPhrase is called when production endpointPairPhrase is exited. +func (s *BaseGQLListener) ExitEndpointPairPhrase(ctx *EndpointPairPhraseContext) {} + +// EnterEndpointPair is called when production endpointPair is entered. +func (s *BaseGQLListener) EnterEndpointPair(ctx *EndpointPairContext) {} + +// ExitEndpointPair is called when production endpointPair is exited. +func (s *BaseGQLListener) ExitEndpointPair(ctx *EndpointPairContext) {} + +// EnterEndpointPairDirected is called when production endpointPairDirected is entered. +func (s *BaseGQLListener) EnterEndpointPairDirected(ctx *EndpointPairDirectedContext) {} + +// ExitEndpointPairDirected is called when production endpointPairDirected is exited. +func (s *BaseGQLListener) ExitEndpointPairDirected(ctx *EndpointPairDirectedContext) {} + +// EnterEndpointPairPointingRight is called when production endpointPairPointingRight is entered. +func (s *BaseGQLListener) EnterEndpointPairPointingRight(ctx *EndpointPairPointingRightContext) {} + +// ExitEndpointPairPointingRight is called when production endpointPairPointingRight is exited. +func (s *BaseGQLListener) ExitEndpointPairPointingRight(ctx *EndpointPairPointingRightContext) {} + +// EnterEndpointPairPointingLeft is called when production endpointPairPointingLeft is entered. +func (s *BaseGQLListener) EnterEndpointPairPointingLeft(ctx *EndpointPairPointingLeftContext) {} + +// ExitEndpointPairPointingLeft is called when production endpointPairPointingLeft is exited. +func (s *BaseGQLListener) ExitEndpointPairPointingLeft(ctx *EndpointPairPointingLeftContext) {} + +// EnterEndpointPairUndirected is called when production endpointPairUndirected is entered. +func (s *BaseGQLListener) EnterEndpointPairUndirected(ctx *EndpointPairUndirectedContext) {} + +// ExitEndpointPairUndirected is called when production endpointPairUndirected is exited. +func (s *BaseGQLListener) ExitEndpointPairUndirected(ctx *EndpointPairUndirectedContext) {} + +// EnterConnectorPointingRight is called when production connectorPointingRight is entered. +func (s *BaseGQLListener) EnterConnectorPointingRight(ctx *ConnectorPointingRightContext) {} + +// ExitConnectorPointingRight is called when production connectorPointingRight is exited. +func (s *BaseGQLListener) ExitConnectorPointingRight(ctx *ConnectorPointingRightContext) {} + +// EnterConnectorUndirected is called when production connectorUndirected is entered. +func (s *BaseGQLListener) EnterConnectorUndirected(ctx *ConnectorUndirectedContext) {} + +// ExitConnectorUndirected is called when production connectorUndirected is exited. +func (s *BaseGQLListener) ExitConnectorUndirected(ctx *ConnectorUndirectedContext) {} + +// EnterSourceNodeTypeAlias is called when production sourceNodeTypeAlias is entered. +func (s *BaseGQLListener) EnterSourceNodeTypeAlias(ctx *SourceNodeTypeAliasContext) {} + +// ExitSourceNodeTypeAlias is called when production sourceNodeTypeAlias is exited. +func (s *BaseGQLListener) ExitSourceNodeTypeAlias(ctx *SourceNodeTypeAliasContext) {} + +// EnterDestinationNodeTypeAlias is called when production destinationNodeTypeAlias is entered. +func (s *BaseGQLListener) EnterDestinationNodeTypeAlias(ctx *DestinationNodeTypeAliasContext) {} + +// ExitDestinationNodeTypeAlias is called when production destinationNodeTypeAlias is exited. +func (s *BaseGQLListener) ExitDestinationNodeTypeAlias(ctx *DestinationNodeTypeAliasContext) {} + +// EnterLabelSetPhrase is called when production labelSetPhrase is entered. +func (s *BaseGQLListener) EnterLabelSetPhrase(ctx *LabelSetPhraseContext) {} + +// ExitLabelSetPhrase is called when production labelSetPhrase is exited. +func (s *BaseGQLListener) ExitLabelSetPhrase(ctx *LabelSetPhraseContext) {} + +// EnterLabelSetSpecification is called when production labelSetSpecification is entered. +func (s *BaseGQLListener) EnterLabelSetSpecification(ctx *LabelSetSpecificationContext) {} + +// ExitLabelSetSpecification is called when production labelSetSpecification is exited. +func (s *BaseGQLListener) ExitLabelSetSpecification(ctx *LabelSetSpecificationContext) {} + +// EnterPropertyTypesSpecification is called when production propertyTypesSpecification is entered. +func (s *BaseGQLListener) EnterPropertyTypesSpecification(ctx *PropertyTypesSpecificationContext) {} + +// ExitPropertyTypesSpecification is called when production propertyTypesSpecification is exited. +func (s *BaseGQLListener) ExitPropertyTypesSpecification(ctx *PropertyTypesSpecificationContext) {} + +// EnterPropertyTypeList is called when production propertyTypeList is entered. +func (s *BaseGQLListener) EnterPropertyTypeList(ctx *PropertyTypeListContext) {} + +// ExitPropertyTypeList is called when production propertyTypeList is exited. +func (s *BaseGQLListener) ExitPropertyTypeList(ctx *PropertyTypeListContext) {} + +// EnterPropertyType is called when production propertyType is entered. +func (s *BaseGQLListener) EnterPropertyType(ctx *PropertyTypeContext) {} + +// ExitPropertyType is called when production propertyType is exited. +func (s *BaseGQLListener) ExitPropertyType(ctx *PropertyTypeContext) {} + +// EnterPropertyValueType is called when production propertyValueType is entered. +func (s *BaseGQLListener) EnterPropertyValueType(ctx *PropertyValueTypeContext) {} + +// ExitPropertyValueType is called when production propertyValueType is exited. +func (s *BaseGQLListener) ExitPropertyValueType(ctx *PropertyValueTypeContext) {} + +// EnterBindingTableType is called when production bindingTableType is entered. +func (s *BaseGQLListener) EnterBindingTableType(ctx *BindingTableTypeContext) {} + +// ExitBindingTableType is called when production bindingTableType is exited. +func (s *BaseGQLListener) ExitBindingTableType(ctx *BindingTableTypeContext) {} + +// EnterDynamicPropertyValueTypeLabel is called when production dynamicPropertyValueTypeLabel is entered. +func (s *BaseGQLListener) EnterDynamicPropertyValueTypeLabel(ctx *DynamicPropertyValueTypeLabelContext) { +} + +// ExitDynamicPropertyValueTypeLabel is called when production dynamicPropertyValueTypeLabel is exited. +func (s *BaseGQLListener) ExitDynamicPropertyValueTypeLabel(ctx *DynamicPropertyValueTypeLabelContext) { +} + +// EnterClosedDynamicUnionTypeAtl1 is called when production closedDynamicUnionTypeAtl1 is entered. +func (s *BaseGQLListener) EnterClosedDynamicUnionTypeAtl1(ctx *ClosedDynamicUnionTypeAtl1Context) {} + +// ExitClosedDynamicUnionTypeAtl1 is called when production closedDynamicUnionTypeAtl1 is exited. +func (s *BaseGQLListener) ExitClosedDynamicUnionTypeAtl1(ctx *ClosedDynamicUnionTypeAtl1Context) {} + +// EnterClosedDynamicUnionTypeAtl2 is called when production closedDynamicUnionTypeAtl2 is entered. +func (s *BaseGQLListener) EnterClosedDynamicUnionTypeAtl2(ctx *ClosedDynamicUnionTypeAtl2Context) {} + +// ExitClosedDynamicUnionTypeAtl2 is called when production closedDynamicUnionTypeAtl2 is exited. +func (s *BaseGQLListener) ExitClosedDynamicUnionTypeAtl2(ctx *ClosedDynamicUnionTypeAtl2Context) {} + +// EnterPathValueTypeLabel is called when production pathValueTypeLabel is entered. +func (s *BaseGQLListener) EnterPathValueTypeLabel(ctx *PathValueTypeLabelContext) {} + +// ExitPathValueTypeLabel is called when production pathValueTypeLabel is exited. +func (s *BaseGQLListener) ExitPathValueTypeLabel(ctx *PathValueTypeLabelContext) {} + +// EnterListValueTypeAlt3 is called when production listValueTypeAlt3 is entered. +func (s *BaseGQLListener) EnterListValueTypeAlt3(ctx *ListValueTypeAlt3Context) {} + +// ExitListValueTypeAlt3 is called when production listValueTypeAlt3 is exited. +func (s *BaseGQLListener) ExitListValueTypeAlt3(ctx *ListValueTypeAlt3Context) {} + +// EnterListValueTypeAlt2 is called when production listValueTypeAlt2 is entered. +func (s *BaseGQLListener) EnterListValueTypeAlt2(ctx *ListValueTypeAlt2Context) {} + +// ExitListValueTypeAlt2 is called when production listValueTypeAlt2 is exited. +func (s *BaseGQLListener) ExitListValueTypeAlt2(ctx *ListValueTypeAlt2Context) {} + +// EnterListValueTypeAlt1 is called when production listValueTypeAlt1 is entered. +func (s *BaseGQLListener) EnterListValueTypeAlt1(ctx *ListValueTypeAlt1Context) {} + +// ExitListValueTypeAlt1 is called when production listValueTypeAlt1 is exited. +func (s *BaseGQLListener) ExitListValueTypeAlt1(ctx *ListValueTypeAlt1Context) {} + +// EnterPredefinedTypeLabel is called when production predefinedTypeLabel is entered. +func (s *BaseGQLListener) EnterPredefinedTypeLabel(ctx *PredefinedTypeLabelContext) {} + +// ExitPredefinedTypeLabel is called when production predefinedTypeLabel is exited. +func (s *BaseGQLListener) ExitPredefinedTypeLabel(ctx *PredefinedTypeLabelContext) {} + +// EnterRecordTypeLabel is called when production recordTypeLabel is entered. +func (s *BaseGQLListener) EnterRecordTypeLabel(ctx *RecordTypeLabelContext) {} + +// ExitRecordTypeLabel is called when production recordTypeLabel is exited. +func (s *BaseGQLListener) ExitRecordTypeLabel(ctx *RecordTypeLabelContext) {} + +// EnterOpenDynamicUnionTypeLabel is called when production openDynamicUnionTypeLabel is entered. +func (s *BaseGQLListener) EnterOpenDynamicUnionTypeLabel(ctx *OpenDynamicUnionTypeLabelContext) {} + +// ExitOpenDynamicUnionTypeLabel is called when production openDynamicUnionTypeLabel is exited. +func (s *BaseGQLListener) ExitOpenDynamicUnionTypeLabel(ctx *OpenDynamicUnionTypeLabelContext) {} + +// EnterTyped is called when production typed is entered. +func (s *BaseGQLListener) EnterTyped(ctx *TypedContext) {} + +// ExitTyped is called when production typed is exited. +func (s *BaseGQLListener) ExitTyped(ctx *TypedContext) {} + +// EnterPredefinedType is called when production predefinedType is entered. +func (s *BaseGQLListener) EnterPredefinedType(ctx *PredefinedTypeContext) {} + +// ExitPredefinedType is called when production predefinedType is exited. +func (s *BaseGQLListener) ExitPredefinedType(ctx *PredefinedTypeContext) {} + +// EnterBooleanType is called when production booleanType is entered. +func (s *BaseGQLListener) EnterBooleanType(ctx *BooleanTypeContext) {} + +// ExitBooleanType is called when production booleanType is exited. +func (s *BaseGQLListener) ExitBooleanType(ctx *BooleanTypeContext) {} + +// EnterCharacterStringType is called when production characterStringType is entered. +func (s *BaseGQLListener) EnterCharacterStringType(ctx *CharacterStringTypeContext) {} + +// ExitCharacterStringType is called when production characterStringType is exited. +func (s *BaseGQLListener) ExitCharacterStringType(ctx *CharacterStringTypeContext) {} + +// EnterByteStringType is called when production byteStringType is entered. +func (s *BaseGQLListener) EnterByteStringType(ctx *ByteStringTypeContext) {} + +// ExitByteStringType is called when production byteStringType is exited. +func (s *BaseGQLListener) ExitByteStringType(ctx *ByteStringTypeContext) {} + +// EnterMinLength is called when production minLength is entered. +func (s *BaseGQLListener) EnterMinLength(ctx *MinLengthContext) {} + +// ExitMinLength is called when production minLength is exited. +func (s *BaseGQLListener) ExitMinLength(ctx *MinLengthContext) {} + +// EnterMaxLength is called when production maxLength is entered. +func (s *BaseGQLListener) EnterMaxLength(ctx *MaxLengthContext) {} + +// ExitMaxLength is called when production maxLength is exited. +func (s *BaseGQLListener) ExitMaxLength(ctx *MaxLengthContext) {} + +// EnterFixedLength is called when production fixedLength is entered. +func (s *BaseGQLListener) EnterFixedLength(ctx *FixedLengthContext) {} + +// ExitFixedLength is called when production fixedLength is exited. +func (s *BaseGQLListener) ExitFixedLength(ctx *FixedLengthContext) {} + +// EnterNumericType is called when production numericType is entered. +func (s *BaseGQLListener) EnterNumericType(ctx *NumericTypeContext) {} + +// ExitNumericType is called when production numericType is exited. +func (s *BaseGQLListener) ExitNumericType(ctx *NumericTypeContext) {} + +// EnterExactNumericType is called when production exactNumericType is entered. +func (s *BaseGQLListener) EnterExactNumericType(ctx *ExactNumericTypeContext) {} + +// ExitExactNumericType is called when production exactNumericType is exited. +func (s *BaseGQLListener) ExitExactNumericType(ctx *ExactNumericTypeContext) {} + +// EnterBinaryExactNumericType is called when production binaryExactNumericType is entered. +func (s *BaseGQLListener) EnterBinaryExactNumericType(ctx *BinaryExactNumericTypeContext) {} + +// ExitBinaryExactNumericType is called when production binaryExactNumericType is exited. +func (s *BaseGQLListener) ExitBinaryExactNumericType(ctx *BinaryExactNumericTypeContext) {} + +// EnterSignedBinaryExactNumericType is called when production signedBinaryExactNumericType is entered. +func (s *BaseGQLListener) EnterSignedBinaryExactNumericType(ctx *SignedBinaryExactNumericTypeContext) { +} + +// ExitSignedBinaryExactNumericType is called when production signedBinaryExactNumericType is exited. +func (s *BaseGQLListener) ExitSignedBinaryExactNumericType(ctx *SignedBinaryExactNumericTypeContext) { +} + +// EnterUnsignedBinaryExactNumericType is called when production unsignedBinaryExactNumericType is entered. +func (s *BaseGQLListener) EnterUnsignedBinaryExactNumericType(ctx *UnsignedBinaryExactNumericTypeContext) { +} + +// ExitUnsignedBinaryExactNumericType is called when production unsignedBinaryExactNumericType is exited. +func (s *BaseGQLListener) ExitUnsignedBinaryExactNumericType(ctx *UnsignedBinaryExactNumericTypeContext) { +} + +// EnterVerboseBinaryExactNumericType is called when production verboseBinaryExactNumericType is entered. +func (s *BaseGQLListener) EnterVerboseBinaryExactNumericType(ctx *VerboseBinaryExactNumericTypeContext) { +} + +// ExitVerboseBinaryExactNumericType is called when production verboseBinaryExactNumericType is exited. +func (s *BaseGQLListener) ExitVerboseBinaryExactNumericType(ctx *VerboseBinaryExactNumericTypeContext) { +} + +// EnterDecimalExactNumericType is called when production decimalExactNumericType is entered. +func (s *BaseGQLListener) EnterDecimalExactNumericType(ctx *DecimalExactNumericTypeContext) {} + +// ExitDecimalExactNumericType is called when production decimalExactNumericType is exited. +func (s *BaseGQLListener) ExitDecimalExactNumericType(ctx *DecimalExactNumericTypeContext) {} + +// EnterPrecision is called when production precision is entered. +func (s *BaseGQLListener) EnterPrecision(ctx *PrecisionContext) {} + +// ExitPrecision is called when production precision is exited. +func (s *BaseGQLListener) ExitPrecision(ctx *PrecisionContext) {} + +// EnterScale is called when production scale is entered. +func (s *BaseGQLListener) EnterScale(ctx *ScaleContext) {} + +// ExitScale is called when production scale is exited. +func (s *BaseGQLListener) ExitScale(ctx *ScaleContext) {} + +// EnterApproximateNumericType is called when production approximateNumericType is entered. +func (s *BaseGQLListener) EnterApproximateNumericType(ctx *ApproximateNumericTypeContext) {} + +// ExitApproximateNumericType is called when production approximateNumericType is exited. +func (s *BaseGQLListener) ExitApproximateNumericType(ctx *ApproximateNumericTypeContext) {} + +// EnterTemporalType is called when production temporalType is entered. +func (s *BaseGQLListener) EnterTemporalType(ctx *TemporalTypeContext) {} + +// ExitTemporalType is called when production temporalType is exited. +func (s *BaseGQLListener) ExitTemporalType(ctx *TemporalTypeContext) {} + +// EnterTemporalInstantType is called when production temporalInstantType is entered. +func (s *BaseGQLListener) EnterTemporalInstantType(ctx *TemporalInstantTypeContext) {} + +// ExitTemporalInstantType is called when production temporalInstantType is exited. +func (s *BaseGQLListener) ExitTemporalInstantType(ctx *TemporalInstantTypeContext) {} + +// EnterDatetimeType is called when production datetimeType is entered. +func (s *BaseGQLListener) EnterDatetimeType(ctx *DatetimeTypeContext) {} + +// ExitDatetimeType is called when production datetimeType is exited. +func (s *BaseGQLListener) ExitDatetimeType(ctx *DatetimeTypeContext) {} + +// EnterLocaldatetimeType is called when production localdatetimeType is entered. +func (s *BaseGQLListener) EnterLocaldatetimeType(ctx *LocaldatetimeTypeContext) {} + +// ExitLocaldatetimeType is called when production localdatetimeType is exited. +func (s *BaseGQLListener) ExitLocaldatetimeType(ctx *LocaldatetimeTypeContext) {} + +// EnterDateType is called when production dateType is entered. +func (s *BaseGQLListener) EnterDateType(ctx *DateTypeContext) {} + +// ExitDateType is called when production dateType is exited. +func (s *BaseGQLListener) ExitDateType(ctx *DateTypeContext) {} + +// EnterTimeType is called when production timeType is entered. +func (s *BaseGQLListener) EnterTimeType(ctx *TimeTypeContext) {} + +// ExitTimeType is called when production timeType is exited. +func (s *BaseGQLListener) ExitTimeType(ctx *TimeTypeContext) {} + +// EnterLocaltimeType is called when production localtimeType is entered. +func (s *BaseGQLListener) EnterLocaltimeType(ctx *LocaltimeTypeContext) {} + +// ExitLocaltimeType is called when production localtimeType is exited. +func (s *BaseGQLListener) ExitLocaltimeType(ctx *LocaltimeTypeContext) {} + +// EnterTemporalDurationType is called when production temporalDurationType is entered. +func (s *BaseGQLListener) EnterTemporalDurationType(ctx *TemporalDurationTypeContext) {} + +// ExitTemporalDurationType is called when production temporalDurationType is exited. +func (s *BaseGQLListener) ExitTemporalDurationType(ctx *TemporalDurationTypeContext) {} + +// EnterTemporalDurationQualifier is called when production temporalDurationQualifier is entered. +func (s *BaseGQLListener) EnterTemporalDurationQualifier(ctx *TemporalDurationQualifierContext) {} + +// ExitTemporalDurationQualifier is called when production temporalDurationQualifier is exited. +func (s *BaseGQLListener) ExitTemporalDurationQualifier(ctx *TemporalDurationQualifierContext) {} + +// EnterReferenceValueType is called when production referenceValueType is entered. +func (s *BaseGQLListener) EnterReferenceValueType(ctx *ReferenceValueTypeContext) {} + +// ExitReferenceValueType is called when production referenceValueType is exited. +func (s *BaseGQLListener) ExitReferenceValueType(ctx *ReferenceValueTypeContext) {} + +// EnterImmaterialValueType is called when production immaterialValueType is entered. +func (s *BaseGQLListener) EnterImmaterialValueType(ctx *ImmaterialValueTypeContext) {} + +// ExitImmaterialValueType is called when production immaterialValueType is exited. +func (s *BaseGQLListener) ExitImmaterialValueType(ctx *ImmaterialValueTypeContext) {} + +// EnterNullType is called when production nullType is entered. +func (s *BaseGQLListener) EnterNullType(ctx *NullTypeContext) {} + +// ExitNullType is called when production nullType is exited. +func (s *BaseGQLListener) ExitNullType(ctx *NullTypeContext) {} + +// EnterEmptyType is called when production emptyType is entered. +func (s *BaseGQLListener) EnterEmptyType(ctx *EmptyTypeContext) {} + +// ExitEmptyType is called when production emptyType is exited. +func (s *BaseGQLListener) ExitEmptyType(ctx *EmptyTypeContext) {} + +// EnterGraphReferenceValueType is called when production graphReferenceValueType is entered. +func (s *BaseGQLListener) EnterGraphReferenceValueType(ctx *GraphReferenceValueTypeContext) {} + +// ExitGraphReferenceValueType is called when production graphReferenceValueType is exited. +func (s *BaseGQLListener) ExitGraphReferenceValueType(ctx *GraphReferenceValueTypeContext) {} + +// EnterClosedGraphReferenceValueType is called when production closedGraphReferenceValueType is entered. +func (s *BaseGQLListener) EnterClosedGraphReferenceValueType(ctx *ClosedGraphReferenceValueTypeContext) { +} + +// ExitClosedGraphReferenceValueType is called when production closedGraphReferenceValueType is exited. +func (s *BaseGQLListener) ExitClosedGraphReferenceValueType(ctx *ClosedGraphReferenceValueTypeContext) { +} + +// EnterOpenGraphReferenceValueType is called when production openGraphReferenceValueType is entered. +func (s *BaseGQLListener) EnterOpenGraphReferenceValueType(ctx *OpenGraphReferenceValueTypeContext) {} + +// ExitOpenGraphReferenceValueType is called when production openGraphReferenceValueType is exited. +func (s *BaseGQLListener) ExitOpenGraphReferenceValueType(ctx *OpenGraphReferenceValueTypeContext) {} + +// EnterBindingTableReferenceValueType is called when production bindingTableReferenceValueType is entered. +func (s *BaseGQLListener) EnterBindingTableReferenceValueType(ctx *BindingTableReferenceValueTypeContext) { +} + +// ExitBindingTableReferenceValueType is called when production bindingTableReferenceValueType is exited. +func (s *BaseGQLListener) ExitBindingTableReferenceValueType(ctx *BindingTableReferenceValueTypeContext) { +} + +// EnterNodeReferenceValueType is called when production nodeReferenceValueType is entered. +func (s *BaseGQLListener) EnterNodeReferenceValueType(ctx *NodeReferenceValueTypeContext) {} + +// ExitNodeReferenceValueType is called when production nodeReferenceValueType is exited. +func (s *BaseGQLListener) ExitNodeReferenceValueType(ctx *NodeReferenceValueTypeContext) {} + +// EnterClosedNodeReferenceValueType is called when production closedNodeReferenceValueType is entered. +func (s *BaseGQLListener) EnterClosedNodeReferenceValueType(ctx *ClosedNodeReferenceValueTypeContext) { +} + +// ExitClosedNodeReferenceValueType is called when production closedNodeReferenceValueType is exited. +func (s *BaseGQLListener) ExitClosedNodeReferenceValueType(ctx *ClosedNodeReferenceValueTypeContext) { +} + +// EnterOpenNodeReferenceValueType is called when production openNodeReferenceValueType is entered. +func (s *BaseGQLListener) EnterOpenNodeReferenceValueType(ctx *OpenNodeReferenceValueTypeContext) {} + +// ExitOpenNodeReferenceValueType is called when production openNodeReferenceValueType is exited. +func (s *BaseGQLListener) ExitOpenNodeReferenceValueType(ctx *OpenNodeReferenceValueTypeContext) {} + +// EnterEdgeReferenceValueType is called when production edgeReferenceValueType is entered. +func (s *BaseGQLListener) EnterEdgeReferenceValueType(ctx *EdgeReferenceValueTypeContext) {} + +// ExitEdgeReferenceValueType is called when production edgeReferenceValueType is exited. +func (s *BaseGQLListener) ExitEdgeReferenceValueType(ctx *EdgeReferenceValueTypeContext) {} + +// EnterClosedEdgeReferenceValueType is called when production closedEdgeReferenceValueType is entered. +func (s *BaseGQLListener) EnterClosedEdgeReferenceValueType(ctx *ClosedEdgeReferenceValueTypeContext) { +} + +// ExitClosedEdgeReferenceValueType is called when production closedEdgeReferenceValueType is exited. +func (s *BaseGQLListener) ExitClosedEdgeReferenceValueType(ctx *ClosedEdgeReferenceValueTypeContext) { +} + +// EnterOpenEdgeReferenceValueType is called when production openEdgeReferenceValueType is entered. +func (s *BaseGQLListener) EnterOpenEdgeReferenceValueType(ctx *OpenEdgeReferenceValueTypeContext) {} + +// ExitOpenEdgeReferenceValueType is called when production openEdgeReferenceValueType is exited. +func (s *BaseGQLListener) ExitOpenEdgeReferenceValueType(ctx *OpenEdgeReferenceValueTypeContext) {} + +// EnterPathValueType is called when production pathValueType is entered. +func (s *BaseGQLListener) EnterPathValueType(ctx *PathValueTypeContext) {} + +// ExitPathValueType is called when production pathValueType is exited. +func (s *BaseGQLListener) ExitPathValueType(ctx *PathValueTypeContext) {} + +// EnterListValueTypeName is called when production listValueTypeName is entered. +func (s *BaseGQLListener) EnterListValueTypeName(ctx *ListValueTypeNameContext) {} + +// ExitListValueTypeName is called when production listValueTypeName is exited. +func (s *BaseGQLListener) ExitListValueTypeName(ctx *ListValueTypeNameContext) {} + +// EnterListValueTypeNameSynonym is called when production listValueTypeNameSynonym is entered. +func (s *BaseGQLListener) EnterListValueTypeNameSynonym(ctx *ListValueTypeNameSynonymContext) {} + +// ExitListValueTypeNameSynonym is called when production listValueTypeNameSynonym is exited. +func (s *BaseGQLListener) ExitListValueTypeNameSynonym(ctx *ListValueTypeNameSynonymContext) {} + +// EnterRecordType is called when production recordType is entered. +func (s *BaseGQLListener) EnterRecordType(ctx *RecordTypeContext) {} + +// ExitRecordType is called when production recordType is exited. +func (s *BaseGQLListener) ExitRecordType(ctx *RecordTypeContext) {} + +// EnterFieldTypesSpecification is called when production fieldTypesSpecification is entered. +func (s *BaseGQLListener) EnterFieldTypesSpecification(ctx *FieldTypesSpecificationContext) {} + +// ExitFieldTypesSpecification is called when production fieldTypesSpecification is exited. +func (s *BaseGQLListener) ExitFieldTypesSpecification(ctx *FieldTypesSpecificationContext) {} + +// EnterFieldTypeList is called when production fieldTypeList is entered. +func (s *BaseGQLListener) EnterFieldTypeList(ctx *FieldTypeListContext) {} + +// ExitFieldTypeList is called when production fieldTypeList is exited. +func (s *BaseGQLListener) ExitFieldTypeList(ctx *FieldTypeListContext) {} + +// EnterNotNull is called when production notNull is entered. +func (s *BaseGQLListener) EnterNotNull(ctx *NotNullContext) {} + +// ExitNotNull is called when production notNull is exited. +func (s *BaseGQLListener) ExitNotNull(ctx *NotNullContext) {} + +// EnterFieldType is called when production fieldType is entered. +func (s *BaseGQLListener) EnterFieldType(ctx *FieldTypeContext) {} + +// ExitFieldType is called when production fieldType is exited. +func (s *BaseGQLListener) ExitFieldType(ctx *FieldTypeContext) {} + +// EnterSearchCondition is called when production searchCondition is entered. +func (s *BaseGQLListener) EnterSearchCondition(ctx *SearchConditionContext) {} + +// ExitSearchCondition is called when production searchCondition is exited. +func (s *BaseGQLListener) ExitSearchCondition(ctx *SearchConditionContext) {} + +// EnterPredicate is called when production predicate is entered. +func (s *BaseGQLListener) EnterPredicate(ctx *PredicateContext) {} + +// ExitPredicate is called when production predicate is exited. +func (s *BaseGQLListener) ExitPredicate(ctx *PredicateContext) {} + +// EnterCompOp is called when production compOp is entered. +func (s *BaseGQLListener) EnterCompOp(ctx *CompOpContext) {} + +// ExitCompOp is called when production compOp is exited. +func (s *BaseGQLListener) ExitCompOp(ctx *CompOpContext) {} + +// EnterExistsPredicate is called when production existsPredicate is entered. +func (s *BaseGQLListener) EnterExistsPredicate(ctx *ExistsPredicateContext) {} + +// ExitExistsPredicate is called when production existsPredicate is exited. +func (s *BaseGQLListener) ExitExistsPredicate(ctx *ExistsPredicateContext) {} + +// EnterNullPredicate is called when production nullPredicate is entered. +func (s *BaseGQLListener) EnterNullPredicate(ctx *NullPredicateContext) {} + +// ExitNullPredicate is called when production nullPredicate is exited. +func (s *BaseGQLListener) ExitNullPredicate(ctx *NullPredicateContext) {} + +// EnterNullPredicatePart2 is called when production nullPredicatePart2 is entered. +func (s *BaseGQLListener) EnterNullPredicatePart2(ctx *NullPredicatePart2Context) {} + +// ExitNullPredicatePart2 is called when production nullPredicatePart2 is exited. +func (s *BaseGQLListener) ExitNullPredicatePart2(ctx *NullPredicatePart2Context) {} + +// EnterValueTypePredicate is called when production valueTypePredicate is entered. +func (s *BaseGQLListener) EnterValueTypePredicate(ctx *ValueTypePredicateContext) {} + +// ExitValueTypePredicate is called when production valueTypePredicate is exited. +func (s *BaseGQLListener) ExitValueTypePredicate(ctx *ValueTypePredicateContext) {} + +// EnterValueTypePredicatePart2 is called when production valueTypePredicatePart2 is entered. +func (s *BaseGQLListener) EnterValueTypePredicatePart2(ctx *ValueTypePredicatePart2Context) {} + +// ExitValueTypePredicatePart2 is called when production valueTypePredicatePart2 is exited. +func (s *BaseGQLListener) ExitValueTypePredicatePart2(ctx *ValueTypePredicatePart2Context) {} + +// EnterNormalizedPredicatePart2 is called when production normalizedPredicatePart2 is entered. +func (s *BaseGQLListener) EnterNormalizedPredicatePart2(ctx *NormalizedPredicatePart2Context) {} + +// ExitNormalizedPredicatePart2 is called when production normalizedPredicatePart2 is exited. +func (s *BaseGQLListener) ExitNormalizedPredicatePart2(ctx *NormalizedPredicatePart2Context) {} + +// EnterDirectedPredicate is called when production directedPredicate is entered. +func (s *BaseGQLListener) EnterDirectedPredicate(ctx *DirectedPredicateContext) {} + +// ExitDirectedPredicate is called when production directedPredicate is exited. +func (s *BaseGQLListener) ExitDirectedPredicate(ctx *DirectedPredicateContext) {} + +// EnterDirectedPredicatePart2 is called when production directedPredicatePart2 is entered. +func (s *BaseGQLListener) EnterDirectedPredicatePart2(ctx *DirectedPredicatePart2Context) {} + +// ExitDirectedPredicatePart2 is called when production directedPredicatePart2 is exited. +func (s *BaseGQLListener) ExitDirectedPredicatePart2(ctx *DirectedPredicatePart2Context) {} + +// EnterLabeledPredicate is called when production labeledPredicate is entered. +func (s *BaseGQLListener) EnterLabeledPredicate(ctx *LabeledPredicateContext) {} + +// ExitLabeledPredicate is called when production labeledPredicate is exited. +func (s *BaseGQLListener) ExitLabeledPredicate(ctx *LabeledPredicateContext) {} + +// EnterLabeledPredicatePart2 is called when production labeledPredicatePart2 is entered. +func (s *BaseGQLListener) EnterLabeledPredicatePart2(ctx *LabeledPredicatePart2Context) {} + +// ExitLabeledPredicatePart2 is called when production labeledPredicatePart2 is exited. +func (s *BaseGQLListener) ExitLabeledPredicatePart2(ctx *LabeledPredicatePart2Context) {} + +// EnterIsLabeledOrColon is called when production isLabeledOrColon is entered. +func (s *BaseGQLListener) EnterIsLabeledOrColon(ctx *IsLabeledOrColonContext) {} + +// ExitIsLabeledOrColon is called when production isLabeledOrColon is exited. +func (s *BaseGQLListener) ExitIsLabeledOrColon(ctx *IsLabeledOrColonContext) {} + +// EnterSourceDestinationPredicate is called when production sourceDestinationPredicate is entered. +func (s *BaseGQLListener) EnterSourceDestinationPredicate(ctx *SourceDestinationPredicateContext) {} + +// ExitSourceDestinationPredicate is called when production sourceDestinationPredicate is exited. +func (s *BaseGQLListener) ExitSourceDestinationPredicate(ctx *SourceDestinationPredicateContext) {} + +// EnterNodeReference is called when production nodeReference is entered. +func (s *BaseGQLListener) EnterNodeReference(ctx *NodeReferenceContext) {} + +// ExitNodeReference is called when production nodeReference is exited. +func (s *BaseGQLListener) ExitNodeReference(ctx *NodeReferenceContext) {} + +// EnterSourcePredicatePart2 is called when production sourcePredicatePart2 is entered. +func (s *BaseGQLListener) EnterSourcePredicatePart2(ctx *SourcePredicatePart2Context) {} + +// ExitSourcePredicatePart2 is called when production sourcePredicatePart2 is exited. +func (s *BaseGQLListener) ExitSourcePredicatePart2(ctx *SourcePredicatePart2Context) {} + +// EnterDestinationPredicatePart2 is called when production destinationPredicatePart2 is entered. +func (s *BaseGQLListener) EnterDestinationPredicatePart2(ctx *DestinationPredicatePart2Context) {} + +// ExitDestinationPredicatePart2 is called when production destinationPredicatePart2 is exited. +func (s *BaseGQLListener) ExitDestinationPredicatePart2(ctx *DestinationPredicatePart2Context) {} + +// EnterEdgeReference is called when production edgeReference is entered. +func (s *BaseGQLListener) EnterEdgeReference(ctx *EdgeReferenceContext) {} + +// ExitEdgeReference is called when production edgeReference is exited. +func (s *BaseGQLListener) ExitEdgeReference(ctx *EdgeReferenceContext) {} + +// EnterAll_differentPredicate is called when production all_differentPredicate is entered. +func (s *BaseGQLListener) EnterAll_differentPredicate(ctx *All_differentPredicateContext) {} + +// ExitAll_differentPredicate is called when production all_differentPredicate is exited. +func (s *BaseGQLListener) ExitAll_differentPredicate(ctx *All_differentPredicateContext) {} + +// EnterSamePredicate is called when production samePredicate is entered. +func (s *BaseGQLListener) EnterSamePredicate(ctx *SamePredicateContext) {} + +// ExitSamePredicate is called when production samePredicate is exited. +func (s *BaseGQLListener) ExitSamePredicate(ctx *SamePredicateContext) {} + +// EnterProperty_existsPredicate is called when production property_existsPredicate is entered. +func (s *BaseGQLListener) EnterProperty_existsPredicate(ctx *Property_existsPredicateContext) {} + +// ExitProperty_existsPredicate is called when production property_existsPredicate is exited. +func (s *BaseGQLListener) ExitProperty_existsPredicate(ctx *Property_existsPredicateContext) {} + +// EnterConjunctiveExprAlt is called when production conjunctiveExprAlt is entered. +func (s *BaseGQLListener) EnterConjunctiveExprAlt(ctx *ConjunctiveExprAltContext) {} + +// ExitConjunctiveExprAlt is called when production conjunctiveExprAlt is exited. +func (s *BaseGQLListener) ExitConjunctiveExprAlt(ctx *ConjunctiveExprAltContext) {} + +// EnterPropertyGraphExprAlt is called when production propertyGraphExprAlt is entered. +func (s *BaseGQLListener) EnterPropertyGraphExprAlt(ctx *PropertyGraphExprAltContext) {} + +// ExitPropertyGraphExprAlt is called when production propertyGraphExprAlt is exited. +func (s *BaseGQLListener) ExitPropertyGraphExprAlt(ctx *PropertyGraphExprAltContext) {} + +// EnterMultDivExprAlt is called when production multDivExprAlt is entered. +func (s *BaseGQLListener) EnterMultDivExprAlt(ctx *MultDivExprAltContext) {} + +// ExitMultDivExprAlt is called when production multDivExprAlt is exited. +func (s *BaseGQLListener) ExitMultDivExprAlt(ctx *MultDivExprAltContext) {} + +// EnterBindingTableExprAlt is called when production bindingTableExprAlt is entered. +func (s *BaseGQLListener) EnterBindingTableExprAlt(ctx *BindingTableExprAltContext) {} + +// ExitBindingTableExprAlt is called when production bindingTableExprAlt is exited. +func (s *BaseGQLListener) ExitBindingTableExprAlt(ctx *BindingTableExprAltContext) {} + +// EnterSignedExprAlt is called when production signedExprAlt is entered. +func (s *BaseGQLListener) EnterSignedExprAlt(ctx *SignedExprAltContext) {} + +// ExitSignedExprAlt is called when production signedExprAlt is exited. +func (s *BaseGQLListener) ExitSignedExprAlt(ctx *SignedExprAltContext) {} + +// EnterIsNotExprAlt is called when production isNotExprAlt is entered. +func (s *BaseGQLListener) EnterIsNotExprAlt(ctx *IsNotExprAltContext) {} + +// ExitIsNotExprAlt is called when production isNotExprAlt is exited. +func (s *BaseGQLListener) ExitIsNotExprAlt(ctx *IsNotExprAltContext) {} + +// EnterNormalizedPredicateExprAlt is called when production normalizedPredicateExprAlt is entered. +func (s *BaseGQLListener) EnterNormalizedPredicateExprAlt(ctx *NormalizedPredicateExprAltContext) {} + +// ExitNormalizedPredicateExprAlt is called when production normalizedPredicateExprAlt is exited. +func (s *BaseGQLListener) ExitNormalizedPredicateExprAlt(ctx *NormalizedPredicateExprAltContext) {} + +// EnterNotExprAlt is called when production notExprAlt is entered. +func (s *BaseGQLListener) EnterNotExprAlt(ctx *NotExprAltContext) {} + +// ExitNotExprAlt is called when production notExprAlt is exited. +func (s *BaseGQLListener) ExitNotExprAlt(ctx *NotExprAltContext) {} + +// EnterValueFunctionExprAlt is called when production valueFunctionExprAlt is entered. +func (s *BaseGQLListener) EnterValueFunctionExprAlt(ctx *ValueFunctionExprAltContext) {} + +// ExitValueFunctionExprAlt is called when production valueFunctionExprAlt is exited. +func (s *BaseGQLListener) ExitValueFunctionExprAlt(ctx *ValueFunctionExprAltContext) {} + +// EnterConcatenationExprAlt is called when production concatenationExprAlt is entered. +func (s *BaseGQLListener) EnterConcatenationExprAlt(ctx *ConcatenationExprAltContext) {} + +// ExitConcatenationExprAlt is called when production concatenationExprAlt is exited. +func (s *BaseGQLListener) ExitConcatenationExprAlt(ctx *ConcatenationExprAltContext) {} + +// EnterDisjunctiveExprAlt is called when production disjunctiveExprAlt is entered. +func (s *BaseGQLListener) EnterDisjunctiveExprAlt(ctx *DisjunctiveExprAltContext) {} + +// ExitDisjunctiveExprAlt is called when production disjunctiveExprAlt is exited. +func (s *BaseGQLListener) ExitDisjunctiveExprAlt(ctx *DisjunctiveExprAltContext) {} + +// EnterComparisonExprAlt is called when production comparisonExprAlt is entered. +func (s *BaseGQLListener) EnterComparisonExprAlt(ctx *ComparisonExprAltContext) {} + +// ExitComparisonExprAlt is called when production comparisonExprAlt is exited. +func (s *BaseGQLListener) ExitComparisonExprAlt(ctx *ComparisonExprAltContext) {} + +// EnterPrimaryExprAlt is called when production primaryExprAlt is entered. +func (s *BaseGQLListener) EnterPrimaryExprAlt(ctx *PrimaryExprAltContext) {} + +// ExitPrimaryExprAlt is called when production primaryExprAlt is exited. +func (s *BaseGQLListener) ExitPrimaryExprAlt(ctx *PrimaryExprAltContext) {} + +// EnterAddSubtractExprAlt is called when production addSubtractExprAlt is entered. +func (s *BaseGQLListener) EnterAddSubtractExprAlt(ctx *AddSubtractExprAltContext) {} + +// ExitAddSubtractExprAlt is called when production addSubtractExprAlt is exited. +func (s *BaseGQLListener) ExitAddSubtractExprAlt(ctx *AddSubtractExprAltContext) {} + +// EnterPredicateExprAlt is called when production predicateExprAlt is entered. +func (s *BaseGQLListener) EnterPredicateExprAlt(ctx *PredicateExprAltContext) {} + +// ExitPredicateExprAlt is called when production predicateExprAlt is exited. +func (s *BaseGQLListener) ExitPredicateExprAlt(ctx *PredicateExprAltContext) {} + +// EnterValueFunction is called when production valueFunction is entered. +func (s *BaseGQLListener) EnterValueFunction(ctx *ValueFunctionContext) {} + +// ExitValueFunction is called when production valueFunction is exited. +func (s *BaseGQLListener) ExitValueFunction(ctx *ValueFunctionContext) {} + +// EnterBooleanValueExpression is called when production booleanValueExpression is entered. +func (s *BaseGQLListener) EnterBooleanValueExpression(ctx *BooleanValueExpressionContext) {} + +// ExitBooleanValueExpression is called when production booleanValueExpression is exited. +func (s *BaseGQLListener) ExitBooleanValueExpression(ctx *BooleanValueExpressionContext) {} + +// EnterCharacterOrByteStringFunction is called when production characterOrByteStringFunction is entered. +func (s *BaseGQLListener) EnterCharacterOrByteStringFunction(ctx *CharacterOrByteStringFunctionContext) { +} + +// ExitCharacterOrByteStringFunction is called when production characterOrByteStringFunction is exited. +func (s *BaseGQLListener) ExitCharacterOrByteStringFunction(ctx *CharacterOrByteStringFunctionContext) { +} + +// EnterSubCharacterOrByteString is called when production subCharacterOrByteString is entered. +func (s *BaseGQLListener) EnterSubCharacterOrByteString(ctx *SubCharacterOrByteStringContext) {} + +// ExitSubCharacterOrByteString is called when production subCharacterOrByteString is exited. +func (s *BaseGQLListener) ExitSubCharacterOrByteString(ctx *SubCharacterOrByteStringContext) {} + +// EnterTrimSingleCharacterOrByteString is called when production trimSingleCharacterOrByteString is entered. +func (s *BaseGQLListener) EnterTrimSingleCharacterOrByteString(ctx *TrimSingleCharacterOrByteStringContext) { +} + +// ExitTrimSingleCharacterOrByteString is called when production trimSingleCharacterOrByteString is exited. +func (s *BaseGQLListener) ExitTrimSingleCharacterOrByteString(ctx *TrimSingleCharacterOrByteStringContext) { +} + +// EnterFoldCharacterString is called when production foldCharacterString is entered. +func (s *BaseGQLListener) EnterFoldCharacterString(ctx *FoldCharacterStringContext) {} + +// ExitFoldCharacterString is called when production foldCharacterString is exited. +func (s *BaseGQLListener) ExitFoldCharacterString(ctx *FoldCharacterStringContext) {} + +// EnterTrimMultiCharacterCharacterString is called when production trimMultiCharacterCharacterString is entered. +func (s *BaseGQLListener) EnterTrimMultiCharacterCharacterString(ctx *TrimMultiCharacterCharacterStringContext) { +} + +// ExitTrimMultiCharacterCharacterString is called when production trimMultiCharacterCharacterString is exited. +func (s *BaseGQLListener) ExitTrimMultiCharacterCharacterString(ctx *TrimMultiCharacterCharacterStringContext) { +} + +// EnterNormalizeCharacterString is called when production normalizeCharacterString is entered. +func (s *BaseGQLListener) EnterNormalizeCharacterString(ctx *NormalizeCharacterStringContext) {} + +// ExitNormalizeCharacterString is called when production normalizeCharacterString is exited. +func (s *BaseGQLListener) ExitNormalizeCharacterString(ctx *NormalizeCharacterStringContext) {} + +// EnterNodeReferenceValueExpression is called when production nodeReferenceValueExpression is entered. +func (s *BaseGQLListener) EnterNodeReferenceValueExpression(ctx *NodeReferenceValueExpressionContext) { +} + +// ExitNodeReferenceValueExpression is called when production nodeReferenceValueExpression is exited. +func (s *BaseGQLListener) ExitNodeReferenceValueExpression(ctx *NodeReferenceValueExpressionContext) { +} + +// EnterEdgeReferenceValueExpression is called when production edgeReferenceValueExpression is entered. +func (s *BaseGQLListener) EnterEdgeReferenceValueExpression(ctx *EdgeReferenceValueExpressionContext) { +} + +// ExitEdgeReferenceValueExpression is called when production edgeReferenceValueExpression is exited. +func (s *BaseGQLListener) ExitEdgeReferenceValueExpression(ctx *EdgeReferenceValueExpressionContext) { +} + +// EnterAggregatingValueExpression is called when production aggregatingValueExpression is entered. +func (s *BaseGQLListener) EnterAggregatingValueExpression(ctx *AggregatingValueExpressionContext) {} + +// ExitAggregatingValueExpression is called when production aggregatingValueExpression is exited. +func (s *BaseGQLListener) ExitAggregatingValueExpression(ctx *AggregatingValueExpressionContext) {} + +// EnterValueExpressionPrimary is called when production valueExpressionPrimary is entered. +func (s *BaseGQLListener) EnterValueExpressionPrimary(ctx *ValueExpressionPrimaryContext) {} + +// ExitValueExpressionPrimary is called when production valueExpressionPrimary is exited. +func (s *BaseGQLListener) ExitValueExpressionPrimary(ctx *ValueExpressionPrimaryContext) {} + +// EnterParenthesizedValueExpression is called when production parenthesizedValueExpression is entered. +func (s *BaseGQLListener) EnterParenthesizedValueExpression(ctx *ParenthesizedValueExpressionContext) { +} + +// ExitParenthesizedValueExpression is called when production parenthesizedValueExpression is exited. +func (s *BaseGQLListener) ExitParenthesizedValueExpression(ctx *ParenthesizedValueExpressionContext) { +} + +// EnterNonParenthesizedValueExpressionPrimary is called when production nonParenthesizedValueExpressionPrimary is entered. +func (s *BaseGQLListener) EnterNonParenthesizedValueExpressionPrimary(ctx *NonParenthesizedValueExpressionPrimaryContext) { +} + +// ExitNonParenthesizedValueExpressionPrimary is called when production nonParenthesizedValueExpressionPrimary is exited. +func (s *BaseGQLListener) ExitNonParenthesizedValueExpressionPrimary(ctx *NonParenthesizedValueExpressionPrimaryContext) { +} + +// EnterNonParenthesizedValueExpressionPrimarySpecialCase is called when production nonParenthesizedValueExpressionPrimarySpecialCase is entered. +func (s *BaseGQLListener) EnterNonParenthesizedValueExpressionPrimarySpecialCase(ctx *NonParenthesizedValueExpressionPrimarySpecialCaseContext) { +} + +// ExitNonParenthesizedValueExpressionPrimarySpecialCase is called when production nonParenthesizedValueExpressionPrimarySpecialCase is exited. +func (s *BaseGQLListener) ExitNonParenthesizedValueExpressionPrimarySpecialCase(ctx *NonParenthesizedValueExpressionPrimarySpecialCaseContext) { +} + +// EnterUnsignedValueSpecification is called when production unsignedValueSpecification is entered. +func (s *BaseGQLListener) EnterUnsignedValueSpecification(ctx *UnsignedValueSpecificationContext) {} + +// ExitUnsignedValueSpecification is called when production unsignedValueSpecification is exited. +func (s *BaseGQLListener) ExitUnsignedValueSpecification(ctx *UnsignedValueSpecificationContext) {} + +// EnterNonNegativeIntegerSpecification is called when production nonNegativeIntegerSpecification is entered. +func (s *BaseGQLListener) EnterNonNegativeIntegerSpecification(ctx *NonNegativeIntegerSpecificationContext) { +} + +// ExitNonNegativeIntegerSpecification is called when production nonNegativeIntegerSpecification is exited. +func (s *BaseGQLListener) ExitNonNegativeIntegerSpecification(ctx *NonNegativeIntegerSpecificationContext) { +} + +// EnterGeneralValueSpecification is called when production generalValueSpecification is entered. +func (s *BaseGQLListener) EnterGeneralValueSpecification(ctx *GeneralValueSpecificationContext) {} + +// ExitGeneralValueSpecification is called when production generalValueSpecification is exited. +func (s *BaseGQLListener) ExitGeneralValueSpecification(ctx *GeneralValueSpecificationContext) {} + +// EnterDynamicParameterSpecification is called when production dynamicParameterSpecification is entered. +func (s *BaseGQLListener) EnterDynamicParameterSpecification(ctx *DynamicParameterSpecificationContext) { +} + +// ExitDynamicParameterSpecification is called when production dynamicParameterSpecification is exited. +func (s *BaseGQLListener) ExitDynamicParameterSpecification(ctx *DynamicParameterSpecificationContext) { +} + +// EnterLetValueExpression is called when production letValueExpression is entered. +func (s *BaseGQLListener) EnterLetValueExpression(ctx *LetValueExpressionContext) {} + +// ExitLetValueExpression is called when production letValueExpression is exited. +func (s *BaseGQLListener) ExitLetValueExpression(ctx *LetValueExpressionContext) {} + +// EnterValueQueryExpression is called when production valueQueryExpression is entered. +func (s *BaseGQLListener) EnterValueQueryExpression(ctx *ValueQueryExpressionContext) {} + +// ExitValueQueryExpression is called when production valueQueryExpression is exited. +func (s *BaseGQLListener) ExitValueQueryExpression(ctx *ValueQueryExpressionContext) {} + +// EnterCaseExpression is called when production caseExpression is entered. +func (s *BaseGQLListener) EnterCaseExpression(ctx *CaseExpressionContext) {} + +// ExitCaseExpression is called when production caseExpression is exited. +func (s *BaseGQLListener) ExitCaseExpression(ctx *CaseExpressionContext) {} + +// EnterCaseAbbreviation is called when production caseAbbreviation is entered. +func (s *BaseGQLListener) EnterCaseAbbreviation(ctx *CaseAbbreviationContext) {} + +// ExitCaseAbbreviation is called when production caseAbbreviation is exited. +func (s *BaseGQLListener) ExitCaseAbbreviation(ctx *CaseAbbreviationContext) {} + +// EnterCaseSpecification is called when production caseSpecification is entered. +func (s *BaseGQLListener) EnterCaseSpecification(ctx *CaseSpecificationContext) {} + +// ExitCaseSpecification is called when production caseSpecification is exited. +func (s *BaseGQLListener) ExitCaseSpecification(ctx *CaseSpecificationContext) {} + +// EnterSimpleCase is called when production simpleCase is entered. +func (s *BaseGQLListener) EnterSimpleCase(ctx *SimpleCaseContext) {} + +// ExitSimpleCase is called when production simpleCase is exited. +func (s *BaseGQLListener) ExitSimpleCase(ctx *SimpleCaseContext) {} + +// EnterSearchedCase is called when production searchedCase is entered. +func (s *BaseGQLListener) EnterSearchedCase(ctx *SearchedCaseContext) {} + +// ExitSearchedCase is called when production searchedCase is exited. +func (s *BaseGQLListener) ExitSearchedCase(ctx *SearchedCaseContext) {} + +// EnterSimpleWhenClause is called when production simpleWhenClause is entered. +func (s *BaseGQLListener) EnterSimpleWhenClause(ctx *SimpleWhenClauseContext) {} + +// ExitSimpleWhenClause is called when production simpleWhenClause is exited. +func (s *BaseGQLListener) ExitSimpleWhenClause(ctx *SimpleWhenClauseContext) {} + +// EnterSearchedWhenClause is called when production searchedWhenClause is entered. +func (s *BaseGQLListener) EnterSearchedWhenClause(ctx *SearchedWhenClauseContext) {} + +// ExitSearchedWhenClause is called when production searchedWhenClause is exited. +func (s *BaseGQLListener) ExitSearchedWhenClause(ctx *SearchedWhenClauseContext) {} + +// EnterElseClause is called when production elseClause is entered. +func (s *BaseGQLListener) EnterElseClause(ctx *ElseClauseContext) {} + +// ExitElseClause is called when production elseClause is exited. +func (s *BaseGQLListener) ExitElseClause(ctx *ElseClauseContext) {} + +// EnterCaseOperand is called when production caseOperand is entered. +func (s *BaseGQLListener) EnterCaseOperand(ctx *CaseOperandContext) {} + +// ExitCaseOperand is called when production caseOperand is exited. +func (s *BaseGQLListener) ExitCaseOperand(ctx *CaseOperandContext) {} + +// EnterWhenOperandList is called when production whenOperandList is entered. +func (s *BaseGQLListener) EnterWhenOperandList(ctx *WhenOperandListContext) {} + +// ExitWhenOperandList is called when production whenOperandList is exited. +func (s *BaseGQLListener) ExitWhenOperandList(ctx *WhenOperandListContext) {} + +// EnterWhenOperand is called when production whenOperand is entered. +func (s *BaseGQLListener) EnterWhenOperand(ctx *WhenOperandContext) {} + +// ExitWhenOperand is called when production whenOperand is exited. +func (s *BaseGQLListener) ExitWhenOperand(ctx *WhenOperandContext) {} + +// EnterResult is called when production result is entered. +func (s *BaseGQLListener) EnterResult(ctx *ResultContext) {} + +// ExitResult is called when production result is exited. +func (s *BaseGQLListener) ExitResult(ctx *ResultContext) {} + +// EnterResultExpression is called when production resultExpression is entered. +func (s *BaseGQLListener) EnterResultExpression(ctx *ResultExpressionContext) {} + +// ExitResultExpression is called when production resultExpression is exited. +func (s *BaseGQLListener) ExitResultExpression(ctx *ResultExpressionContext) {} + +// EnterCastSpecification is called when production castSpecification is entered. +func (s *BaseGQLListener) EnterCastSpecification(ctx *CastSpecificationContext) {} + +// ExitCastSpecification is called when production castSpecification is exited. +func (s *BaseGQLListener) ExitCastSpecification(ctx *CastSpecificationContext) {} + +// EnterCastOperand is called when production castOperand is entered. +func (s *BaseGQLListener) EnterCastOperand(ctx *CastOperandContext) {} + +// ExitCastOperand is called when production castOperand is exited. +func (s *BaseGQLListener) ExitCastOperand(ctx *CastOperandContext) {} + +// EnterCastTarget is called when production castTarget is entered. +func (s *BaseGQLListener) EnterCastTarget(ctx *CastTargetContext) {} + +// ExitCastTarget is called when production castTarget is exited. +func (s *BaseGQLListener) ExitCastTarget(ctx *CastTargetContext) {} + +// EnterAggregateFunction is called when production aggregateFunction is entered. +func (s *BaseGQLListener) EnterAggregateFunction(ctx *AggregateFunctionContext) {} + +// ExitAggregateFunction is called when production aggregateFunction is exited. +func (s *BaseGQLListener) ExitAggregateFunction(ctx *AggregateFunctionContext) {} + +// EnterGeneralSetFunction is called when production generalSetFunction is entered. +func (s *BaseGQLListener) EnterGeneralSetFunction(ctx *GeneralSetFunctionContext) {} + +// ExitGeneralSetFunction is called when production generalSetFunction is exited. +func (s *BaseGQLListener) ExitGeneralSetFunction(ctx *GeneralSetFunctionContext) {} + +// EnterBinarySetFunction is called when production binarySetFunction is entered. +func (s *BaseGQLListener) EnterBinarySetFunction(ctx *BinarySetFunctionContext) {} + +// ExitBinarySetFunction is called when production binarySetFunction is exited. +func (s *BaseGQLListener) ExitBinarySetFunction(ctx *BinarySetFunctionContext) {} + +// EnterGeneralSetFunctionType is called when production generalSetFunctionType is entered. +func (s *BaseGQLListener) EnterGeneralSetFunctionType(ctx *GeneralSetFunctionTypeContext) {} + +// ExitGeneralSetFunctionType is called when production generalSetFunctionType is exited. +func (s *BaseGQLListener) ExitGeneralSetFunctionType(ctx *GeneralSetFunctionTypeContext) {} + +// EnterSetQuantifier is called when production setQuantifier is entered. +func (s *BaseGQLListener) EnterSetQuantifier(ctx *SetQuantifierContext) {} + +// ExitSetQuantifier is called when production setQuantifier is exited. +func (s *BaseGQLListener) ExitSetQuantifier(ctx *SetQuantifierContext) {} + +// EnterBinarySetFunctionType is called when production binarySetFunctionType is entered. +func (s *BaseGQLListener) EnterBinarySetFunctionType(ctx *BinarySetFunctionTypeContext) {} + +// ExitBinarySetFunctionType is called when production binarySetFunctionType is exited. +func (s *BaseGQLListener) ExitBinarySetFunctionType(ctx *BinarySetFunctionTypeContext) {} + +// EnterDependentValueExpression is called when production dependentValueExpression is entered. +func (s *BaseGQLListener) EnterDependentValueExpression(ctx *DependentValueExpressionContext) {} + +// ExitDependentValueExpression is called when production dependentValueExpression is exited. +func (s *BaseGQLListener) ExitDependentValueExpression(ctx *DependentValueExpressionContext) {} + +// EnterIndependentValueExpression is called when production independentValueExpression is entered. +func (s *BaseGQLListener) EnterIndependentValueExpression(ctx *IndependentValueExpressionContext) {} + +// ExitIndependentValueExpression is called when production independentValueExpression is exited. +func (s *BaseGQLListener) ExitIndependentValueExpression(ctx *IndependentValueExpressionContext) {} + +// EnterElement_idFunction is called when production element_idFunction is entered. +func (s *BaseGQLListener) EnterElement_idFunction(ctx *Element_idFunctionContext) {} + +// ExitElement_idFunction is called when production element_idFunction is exited. +func (s *BaseGQLListener) ExitElement_idFunction(ctx *Element_idFunctionContext) {} + +// EnterBindingVariableReference is called when production bindingVariableReference is entered. +func (s *BaseGQLListener) EnterBindingVariableReference(ctx *BindingVariableReferenceContext) {} + +// ExitBindingVariableReference is called when production bindingVariableReference is exited. +func (s *BaseGQLListener) ExitBindingVariableReference(ctx *BindingVariableReferenceContext) {} + +// EnterPathValueExpression is called when production pathValueExpression is entered. +func (s *BaseGQLListener) EnterPathValueExpression(ctx *PathValueExpressionContext) {} + +// ExitPathValueExpression is called when production pathValueExpression is exited. +func (s *BaseGQLListener) ExitPathValueExpression(ctx *PathValueExpressionContext) {} + +// EnterPathValueConstructor is called when production pathValueConstructor is entered. +func (s *BaseGQLListener) EnterPathValueConstructor(ctx *PathValueConstructorContext) {} + +// ExitPathValueConstructor is called when production pathValueConstructor is exited. +func (s *BaseGQLListener) ExitPathValueConstructor(ctx *PathValueConstructorContext) {} + +// EnterPathValueConstructorByEnumeration is called when production pathValueConstructorByEnumeration is entered. +func (s *BaseGQLListener) EnterPathValueConstructorByEnumeration(ctx *PathValueConstructorByEnumerationContext) { +} + +// ExitPathValueConstructorByEnumeration is called when production pathValueConstructorByEnumeration is exited. +func (s *BaseGQLListener) ExitPathValueConstructorByEnumeration(ctx *PathValueConstructorByEnumerationContext) { +} + +// EnterPathElementList is called when production pathElementList is entered. +func (s *BaseGQLListener) EnterPathElementList(ctx *PathElementListContext) {} + +// ExitPathElementList is called when production pathElementList is exited. +func (s *BaseGQLListener) ExitPathElementList(ctx *PathElementListContext) {} + +// EnterPathElementListStart is called when production pathElementListStart is entered. +func (s *BaseGQLListener) EnterPathElementListStart(ctx *PathElementListStartContext) {} + +// ExitPathElementListStart is called when production pathElementListStart is exited. +func (s *BaseGQLListener) ExitPathElementListStart(ctx *PathElementListStartContext) {} + +// EnterPathElementListStep is called when production pathElementListStep is entered. +func (s *BaseGQLListener) EnterPathElementListStep(ctx *PathElementListStepContext) {} + +// ExitPathElementListStep is called when production pathElementListStep is exited. +func (s *BaseGQLListener) ExitPathElementListStep(ctx *PathElementListStepContext) {} + +// EnterListValueExpression is called when production listValueExpression is entered. +func (s *BaseGQLListener) EnterListValueExpression(ctx *ListValueExpressionContext) {} + +// ExitListValueExpression is called when production listValueExpression is exited. +func (s *BaseGQLListener) ExitListValueExpression(ctx *ListValueExpressionContext) {} + +// EnterListValueFunction is called when production listValueFunction is entered. +func (s *BaseGQLListener) EnterListValueFunction(ctx *ListValueFunctionContext) {} + +// ExitListValueFunction is called when production listValueFunction is exited. +func (s *BaseGQLListener) ExitListValueFunction(ctx *ListValueFunctionContext) {} + +// EnterTrimListFunction is called when production trimListFunction is entered. +func (s *BaseGQLListener) EnterTrimListFunction(ctx *TrimListFunctionContext) {} + +// ExitTrimListFunction is called when production trimListFunction is exited. +func (s *BaseGQLListener) ExitTrimListFunction(ctx *TrimListFunctionContext) {} + +// EnterElementsFunction is called when production elementsFunction is entered. +func (s *BaseGQLListener) EnterElementsFunction(ctx *ElementsFunctionContext) {} + +// ExitElementsFunction is called when production elementsFunction is exited. +func (s *BaseGQLListener) ExitElementsFunction(ctx *ElementsFunctionContext) {} + +// EnterListValueConstructor is called when production listValueConstructor is entered. +func (s *BaseGQLListener) EnterListValueConstructor(ctx *ListValueConstructorContext) {} + +// ExitListValueConstructor is called when production listValueConstructor is exited. +func (s *BaseGQLListener) ExitListValueConstructor(ctx *ListValueConstructorContext) {} + +// EnterListValueConstructorByEnumeration is called when production listValueConstructorByEnumeration is entered. +func (s *BaseGQLListener) EnterListValueConstructorByEnumeration(ctx *ListValueConstructorByEnumerationContext) { +} + +// ExitListValueConstructorByEnumeration is called when production listValueConstructorByEnumeration is exited. +func (s *BaseGQLListener) ExitListValueConstructorByEnumeration(ctx *ListValueConstructorByEnumerationContext) { +} + +// EnterListElementList is called when production listElementList is entered. +func (s *BaseGQLListener) EnterListElementList(ctx *ListElementListContext) {} + +// ExitListElementList is called when production listElementList is exited. +func (s *BaseGQLListener) ExitListElementList(ctx *ListElementListContext) {} + +// EnterListElement is called when production listElement is entered. +func (s *BaseGQLListener) EnterListElement(ctx *ListElementContext) {} + +// ExitListElement is called when production listElement is exited. +func (s *BaseGQLListener) ExitListElement(ctx *ListElementContext) {} + +// EnterRecordConstructor is called when production recordConstructor is entered. +func (s *BaseGQLListener) EnterRecordConstructor(ctx *RecordConstructorContext) {} + +// ExitRecordConstructor is called when production recordConstructor is exited. +func (s *BaseGQLListener) ExitRecordConstructor(ctx *RecordConstructorContext) {} + +// EnterFieldsSpecification is called when production fieldsSpecification is entered. +func (s *BaseGQLListener) EnterFieldsSpecification(ctx *FieldsSpecificationContext) {} + +// ExitFieldsSpecification is called when production fieldsSpecification is exited. +func (s *BaseGQLListener) ExitFieldsSpecification(ctx *FieldsSpecificationContext) {} + +// EnterFieldList is called when production fieldList is entered. +func (s *BaseGQLListener) EnterFieldList(ctx *FieldListContext) {} + +// ExitFieldList is called when production fieldList is exited. +func (s *BaseGQLListener) ExitFieldList(ctx *FieldListContext) {} + +// EnterField is called when production field is entered. +func (s *BaseGQLListener) EnterField(ctx *FieldContext) {} + +// ExitField is called when production field is exited. +func (s *BaseGQLListener) ExitField(ctx *FieldContext) {} + +// EnterTruthValue is called when production truthValue is entered. +func (s *BaseGQLListener) EnterTruthValue(ctx *TruthValueContext) {} + +// ExitTruthValue is called when production truthValue is exited. +func (s *BaseGQLListener) ExitTruthValue(ctx *TruthValueContext) {} + +// EnterNumericValueExpression is called when production numericValueExpression is entered. +func (s *BaseGQLListener) EnterNumericValueExpression(ctx *NumericValueExpressionContext) {} + +// ExitNumericValueExpression is called when production numericValueExpression is exited. +func (s *BaseGQLListener) ExitNumericValueExpression(ctx *NumericValueExpressionContext) {} + +// EnterNumericValueFunction is called when production numericValueFunction is entered. +func (s *BaseGQLListener) EnterNumericValueFunction(ctx *NumericValueFunctionContext) {} + +// ExitNumericValueFunction is called when production numericValueFunction is exited. +func (s *BaseGQLListener) ExitNumericValueFunction(ctx *NumericValueFunctionContext) {} + +// EnterLengthExpression is called when production lengthExpression is entered. +func (s *BaseGQLListener) EnterLengthExpression(ctx *LengthExpressionContext) {} + +// ExitLengthExpression is called when production lengthExpression is exited. +func (s *BaseGQLListener) ExitLengthExpression(ctx *LengthExpressionContext) {} + +// EnterCardinalityExpression is called when production cardinalityExpression is entered. +func (s *BaseGQLListener) EnterCardinalityExpression(ctx *CardinalityExpressionContext) {} + +// ExitCardinalityExpression is called when production cardinalityExpression is exited. +func (s *BaseGQLListener) ExitCardinalityExpression(ctx *CardinalityExpressionContext) {} + +// EnterCardinalityExpressionArgument is called when production cardinalityExpressionArgument is entered. +func (s *BaseGQLListener) EnterCardinalityExpressionArgument(ctx *CardinalityExpressionArgumentContext) { +} + +// ExitCardinalityExpressionArgument is called when production cardinalityExpressionArgument is exited. +func (s *BaseGQLListener) ExitCardinalityExpressionArgument(ctx *CardinalityExpressionArgumentContext) { +} + +// EnterCharLengthExpression is called when production charLengthExpression is entered. +func (s *BaseGQLListener) EnterCharLengthExpression(ctx *CharLengthExpressionContext) {} + +// ExitCharLengthExpression is called when production charLengthExpression is exited. +func (s *BaseGQLListener) ExitCharLengthExpression(ctx *CharLengthExpressionContext) {} + +// EnterByteLengthExpression is called when production byteLengthExpression is entered. +func (s *BaseGQLListener) EnterByteLengthExpression(ctx *ByteLengthExpressionContext) {} + +// ExitByteLengthExpression is called when production byteLengthExpression is exited. +func (s *BaseGQLListener) ExitByteLengthExpression(ctx *ByteLengthExpressionContext) {} + +// EnterPathLengthExpression is called when production pathLengthExpression is entered. +func (s *BaseGQLListener) EnterPathLengthExpression(ctx *PathLengthExpressionContext) {} + +// ExitPathLengthExpression is called when production pathLengthExpression is exited. +func (s *BaseGQLListener) ExitPathLengthExpression(ctx *PathLengthExpressionContext) {} + +// EnterAbsoluteValueExpression is called when production absoluteValueExpression is entered. +func (s *BaseGQLListener) EnterAbsoluteValueExpression(ctx *AbsoluteValueExpressionContext) {} + +// ExitAbsoluteValueExpression is called when production absoluteValueExpression is exited. +func (s *BaseGQLListener) ExitAbsoluteValueExpression(ctx *AbsoluteValueExpressionContext) {} + +// EnterModulusExpression is called when production modulusExpression is entered. +func (s *BaseGQLListener) EnterModulusExpression(ctx *ModulusExpressionContext) {} + +// ExitModulusExpression is called when production modulusExpression is exited. +func (s *BaseGQLListener) ExitModulusExpression(ctx *ModulusExpressionContext) {} + +// EnterNumericValueExpressionDividend is called when production numericValueExpressionDividend is entered. +func (s *BaseGQLListener) EnterNumericValueExpressionDividend(ctx *NumericValueExpressionDividendContext) { +} + +// ExitNumericValueExpressionDividend is called when production numericValueExpressionDividend is exited. +func (s *BaseGQLListener) ExitNumericValueExpressionDividend(ctx *NumericValueExpressionDividendContext) { +} + +// EnterNumericValueExpressionDivisor is called when production numericValueExpressionDivisor is entered. +func (s *BaseGQLListener) EnterNumericValueExpressionDivisor(ctx *NumericValueExpressionDivisorContext) { +} + +// ExitNumericValueExpressionDivisor is called when production numericValueExpressionDivisor is exited. +func (s *BaseGQLListener) ExitNumericValueExpressionDivisor(ctx *NumericValueExpressionDivisorContext) { +} + +// EnterTrigonometricFunction is called when production trigonometricFunction is entered. +func (s *BaseGQLListener) EnterTrigonometricFunction(ctx *TrigonometricFunctionContext) {} + +// ExitTrigonometricFunction is called when production trigonometricFunction is exited. +func (s *BaseGQLListener) ExitTrigonometricFunction(ctx *TrigonometricFunctionContext) {} + +// EnterTrigonometricFunctionName is called when production trigonometricFunctionName is entered. +func (s *BaseGQLListener) EnterTrigonometricFunctionName(ctx *TrigonometricFunctionNameContext) {} + +// ExitTrigonometricFunctionName is called when production trigonometricFunctionName is exited. +func (s *BaseGQLListener) ExitTrigonometricFunctionName(ctx *TrigonometricFunctionNameContext) {} + +// EnterGeneralLogarithmFunction is called when production generalLogarithmFunction is entered. +func (s *BaseGQLListener) EnterGeneralLogarithmFunction(ctx *GeneralLogarithmFunctionContext) {} + +// ExitGeneralLogarithmFunction is called when production generalLogarithmFunction is exited. +func (s *BaseGQLListener) ExitGeneralLogarithmFunction(ctx *GeneralLogarithmFunctionContext) {} + +// EnterGeneralLogarithmBase is called when production generalLogarithmBase is entered. +func (s *BaseGQLListener) EnterGeneralLogarithmBase(ctx *GeneralLogarithmBaseContext) {} + +// ExitGeneralLogarithmBase is called when production generalLogarithmBase is exited. +func (s *BaseGQLListener) ExitGeneralLogarithmBase(ctx *GeneralLogarithmBaseContext) {} + +// EnterGeneralLogarithmArgument is called when production generalLogarithmArgument is entered. +func (s *BaseGQLListener) EnterGeneralLogarithmArgument(ctx *GeneralLogarithmArgumentContext) {} + +// ExitGeneralLogarithmArgument is called when production generalLogarithmArgument is exited. +func (s *BaseGQLListener) ExitGeneralLogarithmArgument(ctx *GeneralLogarithmArgumentContext) {} + +// EnterCommonLogarithm is called when production commonLogarithm is entered. +func (s *BaseGQLListener) EnterCommonLogarithm(ctx *CommonLogarithmContext) {} + +// ExitCommonLogarithm is called when production commonLogarithm is exited. +func (s *BaseGQLListener) ExitCommonLogarithm(ctx *CommonLogarithmContext) {} + +// EnterNaturalLogarithm is called when production naturalLogarithm is entered. +func (s *BaseGQLListener) EnterNaturalLogarithm(ctx *NaturalLogarithmContext) {} + +// ExitNaturalLogarithm is called when production naturalLogarithm is exited. +func (s *BaseGQLListener) ExitNaturalLogarithm(ctx *NaturalLogarithmContext) {} + +// EnterExponentialFunction is called when production exponentialFunction is entered. +func (s *BaseGQLListener) EnterExponentialFunction(ctx *ExponentialFunctionContext) {} + +// ExitExponentialFunction is called when production exponentialFunction is exited. +func (s *BaseGQLListener) ExitExponentialFunction(ctx *ExponentialFunctionContext) {} + +// EnterPowerFunction is called when production powerFunction is entered. +func (s *BaseGQLListener) EnterPowerFunction(ctx *PowerFunctionContext) {} + +// ExitPowerFunction is called when production powerFunction is exited. +func (s *BaseGQLListener) ExitPowerFunction(ctx *PowerFunctionContext) {} + +// EnterNumericValueExpressionBase is called when production numericValueExpressionBase is entered. +func (s *BaseGQLListener) EnterNumericValueExpressionBase(ctx *NumericValueExpressionBaseContext) {} + +// ExitNumericValueExpressionBase is called when production numericValueExpressionBase is exited. +func (s *BaseGQLListener) ExitNumericValueExpressionBase(ctx *NumericValueExpressionBaseContext) {} + +// EnterNumericValueExpressionExponent is called when production numericValueExpressionExponent is entered. +func (s *BaseGQLListener) EnterNumericValueExpressionExponent(ctx *NumericValueExpressionExponentContext) { +} + +// ExitNumericValueExpressionExponent is called when production numericValueExpressionExponent is exited. +func (s *BaseGQLListener) ExitNumericValueExpressionExponent(ctx *NumericValueExpressionExponentContext) { +} + +// EnterSquareRoot is called when production squareRoot is entered. +func (s *BaseGQLListener) EnterSquareRoot(ctx *SquareRootContext) {} + +// ExitSquareRoot is called when production squareRoot is exited. +func (s *BaseGQLListener) ExitSquareRoot(ctx *SquareRootContext) {} + +// EnterFloorFunction is called when production floorFunction is entered. +func (s *BaseGQLListener) EnterFloorFunction(ctx *FloorFunctionContext) {} + +// ExitFloorFunction is called when production floorFunction is exited. +func (s *BaseGQLListener) ExitFloorFunction(ctx *FloorFunctionContext) {} + +// EnterCeilingFunction is called when production ceilingFunction is entered. +func (s *BaseGQLListener) EnterCeilingFunction(ctx *CeilingFunctionContext) {} + +// ExitCeilingFunction is called when production ceilingFunction is exited. +func (s *BaseGQLListener) ExitCeilingFunction(ctx *CeilingFunctionContext) {} + +// EnterCharacterStringValueExpression is called when production characterStringValueExpression is entered. +func (s *BaseGQLListener) EnterCharacterStringValueExpression(ctx *CharacterStringValueExpressionContext) { +} + +// ExitCharacterStringValueExpression is called when production characterStringValueExpression is exited. +func (s *BaseGQLListener) ExitCharacterStringValueExpression(ctx *CharacterStringValueExpressionContext) { +} + +// EnterByteStringValueExpression is called when production byteStringValueExpression is entered. +func (s *BaseGQLListener) EnterByteStringValueExpression(ctx *ByteStringValueExpressionContext) {} + +// ExitByteStringValueExpression is called when production byteStringValueExpression is exited. +func (s *BaseGQLListener) ExitByteStringValueExpression(ctx *ByteStringValueExpressionContext) {} + +// EnterTrimOperands is called when production trimOperands is entered. +func (s *BaseGQLListener) EnterTrimOperands(ctx *TrimOperandsContext) {} + +// ExitTrimOperands is called when production trimOperands is exited. +func (s *BaseGQLListener) ExitTrimOperands(ctx *TrimOperandsContext) {} + +// EnterTrimCharacterOrByteStringSource is called when production trimCharacterOrByteStringSource is entered. +func (s *BaseGQLListener) EnterTrimCharacterOrByteStringSource(ctx *TrimCharacterOrByteStringSourceContext) { +} + +// ExitTrimCharacterOrByteStringSource is called when production trimCharacterOrByteStringSource is exited. +func (s *BaseGQLListener) ExitTrimCharacterOrByteStringSource(ctx *TrimCharacterOrByteStringSourceContext) { +} + +// EnterTrimSpecification is called when production trimSpecification is entered. +func (s *BaseGQLListener) EnterTrimSpecification(ctx *TrimSpecificationContext) {} + +// ExitTrimSpecification is called when production trimSpecification is exited. +func (s *BaseGQLListener) ExitTrimSpecification(ctx *TrimSpecificationContext) {} + +// EnterTrimCharacterOrByteString is called when production trimCharacterOrByteString is entered. +func (s *BaseGQLListener) EnterTrimCharacterOrByteString(ctx *TrimCharacterOrByteStringContext) {} + +// ExitTrimCharacterOrByteString is called when production trimCharacterOrByteString is exited. +func (s *BaseGQLListener) ExitTrimCharacterOrByteString(ctx *TrimCharacterOrByteStringContext) {} + +// EnterNormalForm is called when production normalForm is entered. +func (s *BaseGQLListener) EnterNormalForm(ctx *NormalFormContext) {} + +// ExitNormalForm is called when production normalForm is exited. +func (s *BaseGQLListener) ExitNormalForm(ctx *NormalFormContext) {} + +// EnterStringLength is called when production stringLength is entered. +func (s *BaseGQLListener) EnterStringLength(ctx *StringLengthContext) {} + +// ExitStringLength is called when production stringLength is exited. +func (s *BaseGQLListener) ExitStringLength(ctx *StringLengthContext) {} + +// EnterDatetimeValueExpression is called when production datetimeValueExpression is entered. +func (s *BaseGQLListener) EnterDatetimeValueExpression(ctx *DatetimeValueExpressionContext) {} + +// ExitDatetimeValueExpression is called when production datetimeValueExpression is exited. +func (s *BaseGQLListener) ExitDatetimeValueExpression(ctx *DatetimeValueExpressionContext) {} + +// EnterDatetimeValueFunction is called when production datetimeValueFunction is entered. +func (s *BaseGQLListener) EnterDatetimeValueFunction(ctx *DatetimeValueFunctionContext) {} + +// ExitDatetimeValueFunction is called when production datetimeValueFunction is exited. +func (s *BaseGQLListener) ExitDatetimeValueFunction(ctx *DatetimeValueFunctionContext) {} + +// EnterDateFunction is called when production dateFunction is entered. +func (s *BaseGQLListener) EnterDateFunction(ctx *DateFunctionContext) {} + +// ExitDateFunction is called when production dateFunction is exited. +func (s *BaseGQLListener) ExitDateFunction(ctx *DateFunctionContext) {} + +// EnterTimeFunction is called when production timeFunction is entered. +func (s *BaseGQLListener) EnterTimeFunction(ctx *TimeFunctionContext) {} + +// ExitTimeFunction is called when production timeFunction is exited. +func (s *BaseGQLListener) ExitTimeFunction(ctx *TimeFunctionContext) {} + +// EnterLocaltimeFunction is called when production localtimeFunction is entered. +func (s *BaseGQLListener) EnterLocaltimeFunction(ctx *LocaltimeFunctionContext) {} + +// ExitLocaltimeFunction is called when production localtimeFunction is exited. +func (s *BaseGQLListener) ExitLocaltimeFunction(ctx *LocaltimeFunctionContext) {} + +// EnterDatetimeFunction is called when production datetimeFunction is entered. +func (s *BaseGQLListener) EnterDatetimeFunction(ctx *DatetimeFunctionContext) {} + +// ExitDatetimeFunction is called when production datetimeFunction is exited. +func (s *BaseGQLListener) ExitDatetimeFunction(ctx *DatetimeFunctionContext) {} + +// EnterLocaldatetimeFunction is called when production localdatetimeFunction is entered. +func (s *BaseGQLListener) EnterLocaldatetimeFunction(ctx *LocaldatetimeFunctionContext) {} + +// ExitLocaldatetimeFunction is called when production localdatetimeFunction is exited. +func (s *BaseGQLListener) ExitLocaldatetimeFunction(ctx *LocaldatetimeFunctionContext) {} + +// EnterDateFunctionParameters is called when production dateFunctionParameters is entered. +func (s *BaseGQLListener) EnterDateFunctionParameters(ctx *DateFunctionParametersContext) {} + +// ExitDateFunctionParameters is called when production dateFunctionParameters is exited. +func (s *BaseGQLListener) ExitDateFunctionParameters(ctx *DateFunctionParametersContext) {} + +// EnterTimeFunctionParameters is called when production timeFunctionParameters is entered. +func (s *BaseGQLListener) EnterTimeFunctionParameters(ctx *TimeFunctionParametersContext) {} + +// ExitTimeFunctionParameters is called when production timeFunctionParameters is exited. +func (s *BaseGQLListener) ExitTimeFunctionParameters(ctx *TimeFunctionParametersContext) {} + +// EnterDatetimeFunctionParameters is called when production datetimeFunctionParameters is entered. +func (s *BaseGQLListener) EnterDatetimeFunctionParameters(ctx *DatetimeFunctionParametersContext) {} + +// ExitDatetimeFunctionParameters is called when production datetimeFunctionParameters is exited. +func (s *BaseGQLListener) ExitDatetimeFunctionParameters(ctx *DatetimeFunctionParametersContext) {} + +// EnterDurationValueExpression is called when production durationValueExpression is entered. +func (s *BaseGQLListener) EnterDurationValueExpression(ctx *DurationValueExpressionContext) {} + +// ExitDurationValueExpression is called when production durationValueExpression is exited. +func (s *BaseGQLListener) ExitDurationValueExpression(ctx *DurationValueExpressionContext) {} + +// EnterDatetimeSubtraction is called when production datetimeSubtraction is entered. +func (s *BaseGQLListener) EnterDatetimeSubtraction(ctx *DatetimeSubtractionContext) {} + +// ExitDatetimeSubtraction is called when production datetimeSubtraction is exited. +func (s *BaseGQLListener) ExitDatetimeSubtraction(ctx *DatetimeSubtractionContext) {} + +// EnterDatetimeSubtractionParameters is called when production datetimeSubtractionParameters is entered. +func (s *BaseGQLListener) EnterDatetimeSubtractionParameters(ctx *DatetimeSubtractionParametersContext) { +} + +// ExitDatetimeSubtractionParameters is called when production datetimeSubtractionParameters is exited. +func (s *BaseGQLListener) ExitDatetimeSubtractionParameters(ctx *DatetimeSubtractionParametersContext) { +} + +// EnterDatetimeValueExpression1 is called when production datetimeValueExpression1 is entered. +func (s *BaseGQLListener) EnterDatetimeValueExpression1(ctx *DatetimeValueExpression1Context) {} + +// ExitDatetimeValueExpression1 is called when production datetimeValueExpression1 is exited. +func (s *BaseGQLListener) ExitDatetimeValueExpression1(ctx *DatetimeValueExpression1Context) {} + +// EnterDatetimeValueExpression2 is called when production datetimeValueExpression2 is entered. +func (s *BaseGQLListener) EnterDatetimeValueExpression2(ctx *DatetimeValueExpression2Context) {} + +// ExitDatetimeValueExpression2 is called when production datetimeValueExpression2 is exited. +func (s *BaseGQLListener) ExitDatetimeValueExpression2(ctx *DatetimeValueExpression2Context) {} + +// EnterDurationValueFunction is called when production durationValueFunction is entered. +func (s *BaseGQLListener) EnterDurationValueFunction(ctx *DurationValueFunctionContext) {} + +// ExitDurationValueFunction is called when production durationValueFunction is exited. +func (s *BaseGQLListener) ExitDurationValueFunction(ctx *DurationValueFunctionContext) {} + +// EnterDurationFunction is called when production durationFunction is entered. +func (s *BaseGQLListener) EnterDurationFunction(ctx *DurationFunctionContext) {} + +// ExitDurationFunction is called when production durationFunction is exited. +func (s *BaseGQLListener) ExitDurationFunction(ctx *DurationFunctionContext) {} + +// EnterDurationFunctionParameters is called when production durationFunctionParameters is entered. +func (s *BaseGQLListener) EnterDurationFunctionParameters(ctx *DurationFunctionParametersContext) {} + +// ExitDurationFunctionParameters is called when production durationFunctionParameters is exited. +func (s *BaseGQLListener) ExitDurationFunctionParameters(ctx *DurationFunctionParametersContext) {} + +// EnterObjectName is called when production objectName is entered. +func (s *BaseGQLListener) EnterObjectName(ctx *ObjectNameContext) {} + +// ExitObjectName is called when production objectName is exited. +func (s *BaseGQLListener) ExitObjectName(ctx *ObjectNameContext) {} + +// EnterObjectNameOrBindingVariable is called when production objectNameOrBindingVariable is entered. +func (s *BaseGQLListener) EnterObjectNameOrBindingVariable(ctx *ObjectNameOrBindingVariableContext) {} + +// ExitObjectNameOrBindingVariable is called when production objectNameOrBindingVariable is exited. +func (s *BaseGQLListener) ExitObjectNameOrBindingVariable(ctx *ObjectNameOrBindingVariableContext) {} + +// EnterDirectoryName is called when production directoryName is entered. +func (s *BaseGQLListener) EnterDirectoryName(ctx *DirectoryNameContext) {} + +// ExitDirectoryName is called when production directoryName is exited. +func (s *BaseGQLListener) ExitDirectoryName(ctx *DirectoryNameContext) {} + +// EnterSchemaName is called when production schemaName is entered. +func (s *BaseGQLListener) EnterSchemaName(ctx *SchemaNameContext) {} + +// ExitSchemaName is called when production schemaName is exited. +func (s *BaseGQLListener) ExitSchemaName(ctx *SchemaNameContext) {} + +// EnterGraphName is called when production graphName is entered. +func (s *BaseGQLListener) EnterGraphName(ctx *GraphNameContext) {} + +// ExitGraphName is called when production graphName is exited. +func (s *BaseGQLListener) ExitGraphName(ctx *GraphNameContext) {} + +// EnterDelimitedGraphName is called when production delimitedGraphName is entered. +func (s *BaseGQLListener) EnterDelimitedGraphName(ctx *DelimitedGraphNameContext) {} + +// ExitDelimitedGraphName is called when production delimitedGraphName is exited. +func (s *BaseGQLListener) ExitDelimitedGraphName(ctx *DelimitedGraphNameContext) {} + +// EnterGraphTypeName is called when production graphTypeName is entered. +func (s *BaseGQLListener) EnterGraphTypeName(ctx *GraphTypeNameContext) {} + +// ExitGraphTypeName is called when production graphTypeName is exited. +func (s *BaseGQLListener) ExitGraphTypeName(ctx *GraphTypeNameContext) {} + +// EnterNodeTypeName is called when production nodeTypeName is entered. +func (s *BaseGQLListener) EnterNodeTypeName(ctx *NodeTypeNameContext) {} + +// ExitNodeTypeName is called when production nodeTypeName is exited. +func (s *BaseGQLListener) ExitNodeTypeName(ctx *NodeTypeNameContext) {} + +// EnterEdgeTypeName is called when production edgeTypeName is entered. +func (s *BaseGQLListener) EnterEdgeTypeName(ctx *EdgeTypeNameContext) {} + +// ExitEdgeTypeName is called when production edgeTypeName is exited. +func (s *BaseGQLListener) ExitEdgeTypeName(ctx *EdgeTypeNameContext) {} + +// EnterBindingTableName is called when production bindingTableName is entered. +func (s *BaseGQLListener) EnterBindingTableName(ctx *BindingTableNameContext) {} + +// ExitBindingTableName is called when production bindingTableName is exited. +func (s *BaseGQLListener) ExitBindingTableName(ctx *BindingTableNameContext) {} + +// EnterDelimitedBindingTableName is called when production delimitedBindingTableName is entered. +func (s *BaseGQLListener) EnterDelimitedBindingTableName(ctx *DelimitedBindingTableNameContext) {} + +// ExitDelimitedBindingTableName is called when production delimitedBindingTableName is exited. +func (s *BaseGQLListener) ExitDelimitedBindingTableName(ctx *DelimitedBindingTableNameContext) {} + +// EnterProcedureName is called when production procedureName is entered. +func (s *BaseGQLListener) EnterProcedureName(ctx *ProcedureNameContext) {} + +// ExitProcedureName is called when production procedureName is exited. +func (s *BaseGQLListener) ExitProcedureName(ctx *ProcedureNameContext) {} + +// EnterLabelName is called when production labelName is entered. +func (s *BaseGQLListener) EnterLabelName(ctx *LabelNameContext) {} + +// ExitLabelName is called when production labelName is exited. +func (s *BaseGQLListener) ExitLabelName(ctx *LabelNameContext) {} + +// EnterPropertyName is called when production propertyName is entered. +func (s *BaseGQLListener) EnterPropertyName(ctx *PropertyNameContext) {} + +// ExitPropertyName is called when production propertyName is exited. +func (s *BaseGQLListener) ExitPropertyName(ctx *PropertyNameContext) {} + +// EnterFieldName is called when production fieldName is entered. +func (s *BaseGQLListener) EnterFieldName(ctx *FieldNameContext) {} + +// ExitFieldName is called when production fieldName is exited. +func (s *BaseGQLListener) ExitFieldName(ctx *FieldNameContext) {} + +// EnterElementVariable is called when production elementVariable is entered. +func (s *BaseGQLListener) EnterElementVariable(ctx *ElementVariableContext) {} + +// ExitElementVariable is called when production elementVariable is exited. +func (s *BaseGQLListener) ExitElementVariable(ctx *ElementVariableContext) {} + +// EnterPathVariable is called when production pathVariable is entered. +func (s *BaseGQLListener) EnterPathVariable(ctx *PathVariableContext) {} + +// ExitPathVariable is called when production pathVariable is exited. +func (s *BaseGQLListener) ExitPathVariable(ctx *PathVariableContext) {} + +// EnterSubpathVariable is called when production subpathVariable is entered. +func (s *BaseGQLListener) EnterSubpathVariable(ctx *SubpathVariableContext) {} + +// ExitSubpathVariable is called when production subpathVariable is exited. +func (s *BaseGQLListener) ExitSubpathVariable(ctx *SubpathVariableContext) {} + +// EnterBindingVariable is called when production bindingVariable is entered. +func (s *BaseGQLListener) EnterBindingVariable(ctx *BindingVariableContext) {} + +// ExitBindingVariable is called when production bindingVariable is exited. +func (s *BaseGQLListener) ExitBindingVariable(ctx *BindingVariableContext) {} + +// EnterUnsignedLiteral is called when production unsignedLiteral is entered. +func (s *BaseGQLListener) EnterUnsignedLiteral(ctx *UnsignedLiteralContext) {} + +// ExitUnsignedLiteral is called when production unsignedLiteral is exited. +func (s *BaseGQLListener) ExitUnsignedLiteral(ctx *UnsignedLiteralContext) {} + +// EnterGeneralLiteral is called when production generalLiteral is entered. +func (s *BaseGQLListener) EnterGeneralLiteral(ctx *GeneralLiteralContext) {} + +// ExitGeneralLiteral is called when production generalLiteral is exited. +func (s *BaseGQLListener) ExitGeneralLiteral(ctx *GeneralLiteralContext) {} + +// EnterTemporalLiteral is called when production temporalLiteral is entered. +func (s *BaseGQLListener) EnterTemporalLiteral(ctx *TemporalLiteralContext) {} + +// ExitTemporalLiteral is called when production temporalLiteral is exited. +func (s *BaseGQLListener) ExitTemporalLiteral(ctx *TemporalLiteralContext) {} + +// EnterDateLiteral is called when production dateLiteral is entered. +func (s *BaseGQLListener) EnterDateLiteral(ctx *DateLiteralContext) {} + +// ExitDateLiteral is called when production dateLiteral is exited. +func (s *BaseGQLListener) ExitDateLiteral(ctx *DateLiteralContext) {} + +// EnterTimeLiteral is called when production timeLiteral is entered. +func (s *BaseGQLListener) EnterTimeLiteral(ctx *TimeLiteralContext) {} + +// ExitTimeLiteral is called when production timeLiteral is exited. +func (s *BaseGQLListener) ExitTimeLiteral(ctx *TimeLiteralContext) {} + +// EnterDatetimeLiteral is called when production datetimeLiteral is entered. +func (s *BaseGQLListener) EnterDatetimeLiteral(ctx *DatetimeLiteralContext) {} + +// ExitDatetimeLiteral is called when production datetimeLiteral is exited. +func (s *BaseGQLListener) ExitDatetimeLiteral(ctx *DatetimeLiteralContext) {} + +// EnterListLiteral is called when production listLiteral is entered. +func (s *BaseGQLListener) EnterListLiteral(ctx *ListLiteralContext) {} + +// ExitListLiteral is called when production listLiteral is exited. +func (s *BaseGQLListener) ExitListLiteral(ctx *ListLiteralContext) {} + +// EnterRecordLiteral is called when production recordLiteral is entered. +func (s *BaseGQLListener) EnterRecordLiteral(ctx *RecordLiteralContext) {} + +// ExitRecordLiteral is called when production recordLiteral is exited. +func (s *BaseGQLListener) ExitRecordLiteral(ctx *RecordLiteralContext) {} + +// EnterIdentifier is called when production identifier is entered. +func (s *BaseGQLListener) EnterIdentifier(ctx *IdentifierContext) {} + +// ExitIdentifier is called when production identifier is exited. +func (s *BaseGQLListener) ExitIdentifier(ctx *IdentifierContext) {} + +// EnterRegularIdentifier is called when production regularIdentifier is entered. +func (s *BaseGQLListener) EnterRegularIdentifier(ctx *RegularIdentifierContext) {} + +// ExitRegularIdentifier is called when production regularIdentifier is exited. +func (s *BaseGQLListener) ExitRegularIdentifier(ctx *RegularIdentifierContext) {} + +// EnterTimeZoneString is called when production timeZoneString is entered. +func (s *BaseGQLListener) EnterTimeZoneString(ctx *TimeZoneStringContext) {} + +// ExitTimeZoneString is called when production timeZoneString is exited. +func (s *BaseGQLListener) ExitTimeZoneString(ctx *TimeZoneStringContext) {} + +// EnterCharacterStringLiteral is called when production characterStringLiteral is entered. +func (s *BaseGQLListener) EnterCharacterStringLiteral(ctx *CharacterStringLiteralContext) {} + +// ExitCharacterStringLiteral is called when production characterStringLiteral is exited. +func (s *BaseGQLListener) ExitCharacterStringLiteral(ctx *CharacterStringLiteralContext) {} + +// EnterUnsignedNumericLiteral is called when production unsignedNumericLiteral is entered. +func (s *BaseGQLListener) EnterUnsignedNumericLiteral(ctx *UnsignedNumericLiteralContext) {} + +// ExitUnsignedNumericLiteral is called when production unsignedNumericLiteral is exited. +func (s *BaseGQLListener) ExitUnsignedNumericLiteral(ctx *UnsignedNumericLiteralContext) {} + +// EnterExactNumericLiteral is called when production exactNumericLiteral is entered. +func (s *BaseGQLListener) EnterExactNumericLiteral(ctx *ExactNumericLiteralContext) {} + +// ExitExactNumericLiteral is called when production exactNumericLiteral is exited. +func (s *BaseGQLListener) ExitExactNumericLiteral(ctx *ExactNumericLiteralContext) {} + +// EnterApproximateNumericLiteral is called when production approximateNumericLiteral is entered. +func (s *BaseGQLListener) EnterApproximateNumericLiteral(ctx *ApproximateNumericLiteralContext) {} + +// ExitApproximateNumericLiteral is called when production approximateNumericLiteral is exited. +func (s *BaseGQLListener) ExitApproximateNumericLiteral(ctx *ApproximateNumericLiteralContext) {} + +// EnterUnsignedInteger is called when production unsignedInteger is entered. +func (s *BaseGQLListener) EnterUnsignedInteger(ctx *UnsignedIntegerContext) {} + +// ExitUnsignedInteger is called when production unsignedInteger is exited. +func (s *BaseGQLListener) ExitUnsignedInteger(ctx *UnsignedIntegerContext) {} + +// EnterUnsignedDecimalInteger is called when production unsignedDecimalInteger is entered. +func (s *BaseGQLListener) EnterUnsignedDecimalInteger(ctx *UnsignedDecimalIntegerContext) {} + +// ExitUnsignedDecimalInteger is called when production unsignedDecimalInteger is exited. +func (s *BaseGQLListener) ExitUnsignedDecimalInteger(ctx *UnsignedDecimalIntegerContext) {} + +// EnterNullLiteral is called when production nullLiteral is entered. +func (s *BaseGQLListener) EnterNullLiteral(ctx *NullLiteralContext) {} + +// ExitNullLiteral is called when production nullLiteral is exited. +func (s *BaseGQLListener) ExitNullLiteral(ctx *NullLiteralContext) {} + +// EnterDateString is called when production dateString is entered. +func (s *BaseGQLListener) EnterDateString(ctx *DateStringContext) {} + +// ExitDateString is called when production dateString is exited. +func (s *BaseGQLListener) ExitDateString(ctx *DateStringContext) {} + +// EnterTimeString is called when production timeString is entered. +func (s *BaseGQLListener) EnterTimeString(ctx *TimeStringContext) {} + +// ExitTimeString is called when production timeString is exited. +func (s *BaseGQLListener) ExitTimeString(ctx *TimeStringContext) {} + +// EnterDatetimeString is called when production datetimeString is entered. +func (s *BaseGQLListener) EnterDatetimeString(ctx *DatetimeStringContext) {} + +// ExitDatetimeString is called when production datetimeString is exited. +func (s *BaseGQLListener) ExitDatetimeString(ctx *DatetimeStringContext) {} + +// EnterDurationLiteral is called when production durationLiteral is entered. +func (s *BaseGQLListener) EnterDurationLiteral(ctx *DurationLiteralContext) {} + +// ExitDurationLiteral is called when production durationLiteral is exited. +func (s *BaseGQLListener) ExitDurationLiteral(ctx *DurationLiteralContext) {} + +// EnterDurationString is called when production durationString is entered. +func (s *BaseGQLListener) EnterDurationString(ctx *DurationStringContext) {} + +// ExitDurationString is called when production durationString is exited. +func (s *BaseGQLListener) ExitDurationString(ctx *DurationStringContext) {} + +// EnterNodeSynonym is called when production nodeSynonym is entered. +func (s *BaseGQLListener) EnterNodeSynonym(ctx *NodeSynonymContext) {} + +// ExitNodeSynonym is called when production nodeSynonym is exited. +func (s *BaseGQLListener) ExitNodeSynonym(ctx *NodeSynonymContext) {} + +// EnterEdgesSynonym is called when production edgesSynonym is entered. +func (s *BaseGQLListener) EnterEdgesSynonym(ctx *EdgesSynonymContext) {} + +// ExitEdgesSynonym is called when production edgesSynonym is exited. +func (s *BaseGQLListener) ExitEdgesSynonym(ctx *EdgesSynonymContext) {} + +// EnterEdgeSynonym is called when production edgeSynonym is entered. +func (s *BaseGQLListener) EnterEdgeSynonym(ctx *EdgeSynonymContext) {} + +// ExitEdgeSynonym is called when production edgeSynonym is exited. +func (s *BaseGQLListener) ExitEdgeSynonym(ctx *EdgeSynonymContext) {} + +// EnterNonReservedWords is called when production nonReservedWords is entered. +func (s *BaseGQLListener) EnterNonReservedWords(ctx *NonReservedWordsContext) {} + +// ExitNonReservedWords is called when production nonReservedWords is exited. +func (s *BaseGQLListener) ExitNonReservedWords(ctx *NonReservedWordsContext) {} diff --git a/endpoints/gql/parser/gql_lexer.go b/endpoints/gql/parser/gql_lexer.go new file mode 100644 index 00000000..54cc2194 --- /dev/null +++ b/endpoints/gql/parser/gql_lexer.go @@ -0,0 +1,2658 @@ +// Code generated from GQL.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser + +import ( + "fmt" + "github.com/antlr4-go/antlr/v4" + "sync" + "unicode" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = sync.Once{} +var _ = unicode.IsLetter + +type GQLLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +var GQLLexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + ChannelNames []string + ModeNames []string + LiteralNames []string + SymbolicNames []string + RuleNames []string + PredictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func gqllexerLexerInit() { + staticData := &GQLLexerLexerStaticData + staticData.ChannelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.ModeNames = []string{ + "DEFAULT_MODE", + } + staticData.LiteralNames = []string{ + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "'ABS'", "'ACOS'", "'ALL'", "'ALL_DIFFERENT'", "'AND'", + "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'ASCENDING'", "'ASIN'", "'AT'", + "'ATAN'", "'AVG'", "'BIG'", "'BIGINT'", "'BINARY'", "'BOOL'", "'BOOLEAN'", + "'BOTH'", "'BTRIM'", "'BY'", "'BYTE_LENGTH'", "'BYTES'", "'CALL'", "'CARDINALITY'", + "'CASE'", "'CAST'", "'CEIL'", "'CEILING'", "'CHAR'", "'CHAR_LENGTH'", + "'CHARACTER_LENGTH'", "'CHARACTERISTICS'", "'CLOSE'", "'COALESCE'", + "'COLLECT_LIST'", "'COMMIT'", "'COPY'", "'COS'", "'COSH'", "'COT'", + "'COUNT'", "'CREATE'", "'CURRENT_DATE'", "'CURRENT_GRAPH'", "'CURRENT_PROPERTY_GRAPH'", + "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'DATE'", + "'DATETIME'", "'DAY'", "'DEC'", "'DECIMAL'", "'DEGREES'", "'DELETE'", + "'DESC'", "'DESCENDING'", "'DETACH'", "'DISTINCT'", "'DOUBLE'", "'DROP'", + "'DURATION'", "'DURATION_BETWEEN'", "'ELEMENT_ID'", "'ELSE'", "'END'", + "'EXCEPT'", "'EXISTS'", "'EXP'", "'FILTER'", "'FINISH'", "'FLOAT'", + "'FLOAT16'", "'FLOAT32'", "'FLOAT64'", "'FLOAT128'", "'FLOAT256'", "'FLOOR'", + "'FOR'", "'FROM'", "'GROUP'", "'HAVING'", "'HOME_GRAPH'", "'HOME_PROPERTY_GRAPH'", + "'HOME_SCHEMA'", "'HOUR'", "'IF'", "'IN'", "'INSERT'", "'INT'", "'INTEGER'", + "'INT8'", "'INTEGER8'", "'INT16'", "'INTEGER16'", "'INT32'", "'INTEGER32'", + "'INT64'", "'INTEGER64'", "'INT128'", "'INTEGER128'", "'INT256'", "'INTEGER256'", + "'INTERSECT'", "'INTERVAL'", "'IS'", "'LEADING'", "'LEFT'", "'LET'", + "'LIKE'", "'LIMIT'", "'LIST'", "'LN'", "'LOCAL'", "'LOCAL_DATETIME'", + "'LOCAL_TIME'", "'LOCAL_TIMESTAMP'", "'LOG'", "'LOG10'", "'LOWER'", + "'LTRIM'", "'MATCH'", "'MAX'", "'MIN'", "'MINUTE'", "'MOD'", "'MONTH'", + "'NEXT'", "'NODETACH'", "'NORMALIZE'", "'NOT'", "'NOTHING'", "'NULL'", + "'NULLS'", "'NULLIF'", "'OCTET_LENGTH'", "'OF'", "'OFFSET'", "'OPTIONAL'", + "'OR'", "'ORDER'", "'OTHERWISE'", "'PARAMETER'", "'PARAMETERS'", "'PATH'", + "'PATH_LENGTH'", "'PATHS'", "'PERCENTILE_CONT'", "'PERCENTILE_DISC'", + "'POWER'", "'PRECISION'", "'PROPERTY_EXISTS'", "'RADIANS'", "'REAL'", + "'RECORD'", "'REMOVE'", "'REPLACE'", "'RESET'", "'RETURN'", "'RIGHT'", + "'ROLLBACK'", "'RTRIM'", "'SAME'", "'SCHEMA'", "'SECOND'", "'SELECT'", + "'SESSION'", "'SESSION_USER'", "'SET'", "'SIGNED'", "'SIN'", "'SINH'", + "'SIZE'", "'SKIP'", "'SMALL'", "'SMALLINT'", "'SQRT'", "'START'", "'STDDEV_POP'", + "'STDDEV_SAMP'", "'STRING'", "'SUM'", "'TAN'", "'TANH'", "'THEN'", "'TIME'", + "'TIMESTAMP'", "'TRAILING'", "'TRIM'", "'TYPED'", "'UBIGINT'", "'UINT'", + "'UINT8'", "'UINT16'", "'UINT32'", "'UINT64'", "'UINT128'", "'UINT256'", + "'UNION'", "'UNSIGNED'", "'UPPER'", "'USE'", "'USMALLINT'", "'VALUE'", + "'VARBINARY'", "'VARCHAR'", "'VARIABLE'", "'WHEN'", "'WHERE'", "'WITH'", + "'XOR'", "'YEAR'", "'YIELD'", "'ZONED'", "'ZONED_DATETIME'", "'ZONED_TIME'", + "'ABSTRACT'", "'AGGREGATE'", "'AGGREGATES'", "'ALTER'", "'CATALOG'", + "'CLEAR'", "'CLONE'", "'CONSTRAINT'", "'CURRENT_ROLE'", "'CURRENT_USER'", + "'DATA'", "'DIRECTORY'", "'DRYRUN'", "'EXACT'", "'EXISTING'", "'FUNCTION'", + "'GQLSTATUS'", "'GRANT'", "'INSTANT'", "'INFINITY'", "'NUMBER'", "'NUMERIC'", + "'ON'", "'OPEN'", "'PARTITION'", "'PROCEDURE'", "'PRODUCT'", "'PROJECT'", + "'QUERY'", "'RECORDS'", "'REFERENCE'", "'RENAME'", "'REVOKE'", "'SUBSTRING'", + "'SYSTEM_USER'", "'TEMPORAL'", "'UNIQUE'", "'UNIT'", "'VALUES'", "'ACYCLIC'", + "'BINDING'", "'BINDINGS'", "'CONNECTING'", "'DESTINATION'", "'DIFFERENT'", + "'DIRECTED'", "'EDGE'", "'EDGES'", "'ELEMENT'", "'ELEMENTS'", "'FIRST'", + "'GRAPH'", "'GROUPS'", "'KEEP'", "'LABEL'", "'LABELED'", "'LABELS'", + "'LAST'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NODE'", "'NORMALIZED'", + "'ONLY'", "'ORDINALITY'", "'PROPERTY'", "'READ'", "'RELATIONSHIP'", + "'RELATIONSHIPS'", "'REPEATABLE'", "'SHORTEST'", "'SIMPLE'", "'SOURCE'", + "'TABLE'", "'TO'", "'TRAIL'", "'TRANSACTION'", "'TYPE'", "'UNDIRECTED'", + "'VERTEX'", "'WALK'", "'WITHOUT'", "'WRITE'", "'ZONE'", "", "", "", + "'|+|'", "']->'", "']~>'", "'||'", "'::'", "'$$'", "'..'", "'>='", "'<-'", + "'<~'", "'<-['", "'<~['", "'<->'", "'<-/'", "'<~/'", "'<='", "'-['", + "'-/'", "'<>'", "'->'", "']-'", "']~'", "'=>'", "'/-'", "'/->'", "'/~'", + "'/~>'", "'~['", "'~>'", "'~/'", "'&'", "'*'", "':'", "','", "'@'", + "'$'", "'\"'", "'='", "'!'", "'>'", "'`'", "'{'", "'['", "'('", "'<'", + "'-'", "'%'", "'.'", "'+'", "'?'", "'''", "'\\'", "'}'", "']'", "')'", + "'/'", "'~'", "'_'", "'|'", + } + staticData.SymbolicNames = []string{ + "", "IMPLIES", "BOOLEAN_LITERAL", "SINGLE_QUOTED_CHARACTER_SEQUENCE", + "DOUBLE_QUOTED_CHARACTER_SEQUENCE", "ACCENT_QUOTED_CHARACTER_SEQUENCE", + "NO_ESCAPE", "BYTE_STRING_LITERAL", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER", "UNSIGNED_HEXADECIMAL_INTEGER", "UNSIGNED_OCTAL_INTEGER", + "UNSIGNED_BINARY_INTEGER", "ABS", "ACOS", "ALL", "ALL_DIFFERENT", "AND", + "ANY", "ARRAY", "AS", "ASC", "ASCENDING", "ASIN", "AT", "ATAN", "AVG", + "BIG", "BIGINT", "BINARY", "BOOL", "BOOLEAN", "BOTH", "BTRIM", "BY", + "BYTE_LENGTH", "BYTES", "CALL", "CARDINALITY", "CASE", "CAST", "CEIL", + "CEILING", "CHAR", "CHAR_LENGTH", "CHARACTER_LENGTH", "CHARACTERISTICS", + "CLOSE", "COALESCE", "COLLECT_LIST", "COMMIT", "COPY", "COS", "COSH", + "COT", "COUNT", "CREATE", "CURRENT_DATE", "CURRENT_GRAPH", "CURRENT_PROPERTY_GRAPH", + "CURRENT_SCHEMA", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATE", "DATETIME", + "DAY", "DEC", "DECIMAL", "DEGREES", "DELETE", "DESC", "DESCENDING", + "DETACH", "DISTINCT", "DOUBLE", "DROP", "DURATION", "DURATION_BETWEEN", + "ELEMENT_ID", "ELSE", "END", "EXCEPT", "EXISTS", "EXP", "FILTER", "FINISH", + "FLOAT", "FLOAT16", "FLOAT32", "FLOAT64", "FLOAT128", "FLOAT256", "FLOOR", + "FOR", "FROM", "GROUP", "HAVING", "HOME_GRAPH", "HOME_PROPERTY_GRAPH", + "HOME_SCHEMA", "HOUR", "IF", "IN", "INSERT", "INT", "INTEGER", "INT8", + "INTEGER8", "INT16", "INTEGER16", "INT32", "INTEGER32", "INT64", "INTEGER64", + "INT128", "INTEGER128", "INT256", "INTEGER256", "INTERSECT", "INTERVAL", + "IS", "LEADING", "LEFT", "LET", "LIKE", "LIMIT", "LIST", "LN", "LOCAL", + "LOCAL_DATETIME", "LOCAL_TIME", "LOCAL_TIMESTAMP", "LOG_KW", "LOG10", + "LOWER", "LTRIM", "MATCH", "MAX", "MIN", "MINUTE", "MOD", "MONTH", "NEXT", + "NODETACH", "NORMALIZE", "NOT", "NOTHING", "NULL_KW", "NULLS", "NULLIF", + "OCTET_LENGTH", "OF", "OFFSET", "OPTIONAL", "OR", "ORDER", "OTHERWISE", + "PARAMETER", "PARAMETERS", "PATH", "PATH_LENGTH", "PATHS", "PERCENTILE_CONT", + "PERCENTILE_DISC", "POWER", "PRECISION", "PROPERTY_EXISTS", "RADIANS", + "REAL", "RECORD", "REMOVE", "REPLACE", "RESET", "RETURN", "RIGHT", "ROLLBACK", + "RTRIM", "SAME", "SCHEMA", "SECOND", "SELECT", "SESSION", "SESSION_USER", + "SET", "SIGNED", "SIN", "SINH", "SIZE", "SKIP_RESERVED_WORD", "SMALL", + "SMALLINT", "SQRT", "START", "STDDEV_POP", "STDDEV_SAMP", "STRING", + "SUM", "TAN", "TANH", "THEN", "TIME", "TIMESTAMP", "TRAILING", "TRIM", + "TYPED", "UBIGINT", "UINT", "UINT8", "UINT16", "UINT32", "UINT64", "UINT128", + "UINT256", "UNION", "UNSIGNED", "UPPER", "USE", "USMALLINT", "VALUE", + "VARBINARY", "VARCHAR", "VARIABLE", "WHEN", "WHERE", "WITH", "XOR", + "YEAR", "YIELD", "ZONED", "ZONED_DATETIME", "ZONED_TIME", "ABSTRACT", + "AGGREGATE", "AGGREGATES", "ALTER", "CATALOG", "CLEAR", "CLONE", "CONSTRAINT", + "CURRENT_ROLE", "CURRENT_USER", "DATA", "DIRECTORY", "DRYRUN", "EXACT", + "EXISTING", "FUNCTION", "GQLSTATUS", "GRANT", "INSTANT", "INFINITY_KW", + "NUMBER", "NUMERIC", "ON", "OPEN", "PARTITION", "PROCEDURE", "PRODUCT", + "PROJECT", "QUERY", "RECORDS", "REFERENCE", "RENAME", "REVOKE", "SUBSTRING", + "SYSTEM_USER", "TEMPORAL", "UNIQUE", "UNIT", "VALUES", "ACYCLIC", "BINDING", + "BINDINGS", "CONNECTING", "DESTINATION", "DIFFERENT", "DIRECTED", "EDGE", + "EDGES", "ELEMENT", "ELEMENTS", "FIRST", "GRAPH", "GROUPS", "KEEP", + "LABEL", "LABELED", "LABELS", "LAST", "NFC", "NFD", "NFKC", "NFKD", + "NO", "NODE", "NORMALIZED", "ONLY", "ORDINALITY", "PROPERTY", "READ", + "RELATIONSHIP", "RELATIONSHIPS", "REPEATABLE", "SHORTEST", "SIMPLE", + "SOURCE", "TABLE", "TO", "TRAIL", "TRANSACTION", "TYPE", "UNDIRECTED", + "VERTEX", "WALK", "WITHOUT", "WRITE", "ZONE", "REGULAR_IDENTIFIER", + "SUBSTITUTED_PARAMETER_REFERENCE", "GENERAL_PARAMETER_REFERENCE", "MULTISET_ALTERNATION_OPERATOR", + "BRACKET_RIGHT_ARROW", "BRACKET_TILDE_RIGHT_ARROW", "CONCATENATION_OPERATOR", + "DOUBLE_COLON", "DOUBLE_DOLLAR_SIGN", "DOUBLE_PERIOD", "GREATER_THAN_OR_EQUALS_OPERATOR", + "LEFT_ARROW", "LEFT_ARROW_TILDE", "LEFT_ARROW_BRACKET", "LEFT_ARROW_TILDE_BRACKET", + "LEFT_MINUS_RIGHT", "LEFT_MINUS_SLASH", "LEFT_TILDE_SLASH", "LESS_THAN_OR_EQUALS_OPERATOR", + "MINUS_LEFT_BRACKET", "MINUS_SLASH", "NOT_EQUALS_OPERATOR", "RIGHT_ARROW", + "RIGHT_BRACKET_MINUS", "RIGHT_BRACKET_TILDE", "RIGHT_DOUBLE_ARROW", + "SLASH_MINUS", "SLASH_MINUS_RIGHT", "SLASH_TILDE", "SLASH_TILDE_RIGHT", + "TILDE_LEFT_BRACKET", "TILDE_RIGHT_ARROW", "TILDE_SLASH", "AMPERSAND", + "ASTERISK", "COLON", "COMMA", "COMMERCIAL_AT", "DOLLAR_SIGN", "DOUBLE_QUOTE", + "EQUALS_OPERATOR", "EXCLAMATION_MARK", "RIGHT_ANGLE_BRACKET", "GRAVE_ACCENT", + "LEFT_BRACE", "LEFT_BRACKET", "LEFT_PAREN", "LEFT_ANGLE_BRACKET", "MINUS_SIGN", + "PERCENT", "PERIOD", "PLUS_SIGN", "QUESTION_MARK", "QUOTE", "REVERSE_SOLIDUS", + "RIGHT_BRACE", "RIGHT_BRACKET", "RIGHT_PAREN", "SOLIDUS", "TILDE", "UNDERSCORE", + "VERTICAL_BAR", "SP", "WHITESPACE", "BRACKETED_COMMENT", "SIMPLE_COMMENT_SOLIDUS", + "SIMPLE_COMMENT_MINUS", + } + staticData.RuleNames = []string{ + "IMPLIES", "PARAMETER_NAME", "BOOLEAN_LITERAL", "SINGLE_QUOTED_CHARACTER_SEQUENCE", + "DOUBLE_QUOTED_CHARACTER_SEQUENCE", "ACCENT_QUOTED_CHARACTER_SEQUENCE", + "NO_ESCAPE", "UNBROKEN_SINGLE_QUOTED_CHARACTER_SEQUENCE", "UNBROKEN_DOUBLE_QUOTED_CHARACTER_SEQUENCE", + "UNBROKEN_ACCENT_QUOTED_CHARACTER_SEQUENCE", "SINGLE_QUOTED_CHARACTER_REPRESENTATION", + "DOUBLE_QUOTED_CHARACTER_REPRESENTATION", "ACCENT_QUOTED_CHARACTER_REPRESENTATION", + "ESCAPED_CHARACTER", "ESCAPED_REVERSE_SOLIDUS", "ESCAPED_QUOTE", "ESCAPED_DOUBLE_QUOTE", + "ESCAPED_GRAVE_ACCENT", "ESCAPED_TAB", "ESCAPED_BACKSPACE", "ESCAPED_NEW_LINE", + "ESCAPED_CARRIAGE_RETURN", "ESCAPED_FORM_FEED", "ESCAPED_UNICODE4_DIGIT_VALUE", + "ESCAPED_UNICODE6_DIGIT_VALUE", "START_UNICODE4", "START_UNICODE6", + "BYTE_STRING_LITERAL", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER", "EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION", + "MANTISSA", "EXPONENT", "UNSIGNED_DECIMAL_IN_COMMON_NOTATION", "SIGNED_DECIMAL_INTEGER", + "UNSIGNED_HEXADECIMAL_INTEGER", "START_HEX", "UNSIGNED_OCTAL_INTEGER", + "START_OCTAL", "UNSIGNED_BINARY_INTEGER", "START_BIN", "APPROXIMATE_NUMBER_SUFFIX", + "ABS", "ACOS", "ALL", "ALL_DIFFERENT", "AND", "ANY", "ARRAY", "AS", + "ASC", "ASCENDING", "ASIN", "AT", "ATAN", "AVG", "BIG", "BIGINT", "BINARY", + "BOOL", "BOOLEAN", "BOTH", "BTRIM", "BY", "BYTE_LENGTH", "BYTES", "CALL", + "CARDINALITY", "CASE", "CAST", "CEIL", "CEILING", "CHAR", "CHAR_LENGTH", + "CHARACTER_LENGTH", "CHARACTERISTICS", "CLOSE", "COALESCE", "COLLECT_LIST", + "COMMIT", "COPY", "COS", "COSH", "COT", "COUNT", "CREATE", "CURRENT_DATE", + "CURRENT_GRAPH", "CURRENT_PROPERTY_GRAPH", "CURRENT_SCHEMA", "CURRENT_TIME", + "CURRENT_TIMESTAMP", "DATE", "DATETIME", "DAY", "DEC", "DECIMAL", "DEGREES", + "DELETE", "DESC", "DESCENDING", "DETACH", "DISTINCT", "DOUBLE", "DROP", + "DURATION", "DURATION_BETWEEN", "ELEMENT_ID", "ELSE", "END", "EXCEPT", + "EXISTS", "EXP", "FILTER", "FINISH", "FLOAT", "FLOAT16", "FLOAT32", + "FLOAT64", "FLOAT128", "FLOAT256", "FLOOR", "FOR", "FROM", "GROUP", + "HAVING", "HOME_GRAPH", "HOME_PROPERTY_GRAPH", "HOME_SCHEMA", "HOUR", + "IF", "IN", "INSERT", "INT", "INTEGER", "INT8", "INTEGER8", "INT16", + "INTEGER16", "INT32", "INTEGER32", "INT64", "INTEGER64", "INT128", "INTEGER128", + "INT256", "INTEGER256", "INTERSECT", "INTERVAL", "IS", "LEADING", "LEFT", + "LET", "LIKE", "LIMIT", "LIST", "LN", "LOCAL", "LOCAL_DATETIME", "LOCAL_TIME", + "LOCAL_TIMESTAMP", "LOG_KW", "LOG10", "LOWER", "LTRIM", "MATCH", "MAX", + "MIN", "MINUTE", "MOD", "MONTH", "NEXT", "NODETACH", "NORMALIZE", "NOT", + "NOTHING", "NULL_KW", "NULLS", "NULLIF", "OCTET_LENGTH", "OF", "OFFSET", + "OPTIONAL", "OR", "ORDER", "OTHERWISE", "PARAMETER", "PARAMETERS", "PATH", + "PATH_LENGTH", "PATHS", "PERCENTILE_CONT", "PERCENTILE_DISC", "POWER", + "PRECISION", "PROPERTY_EXISTS", "RADIANS", "REAL", "RECORD", "REMOVE", + "REPLACE", "RESET", "RETURN", "RIGHT", "ROLLBACK", "RTRIM", "SAME", + "SCHEMA", "SECOND", "SELECT", "SESSION", "SESSION_USER", "SET", "SIGNED", + "SIN", "SINH", "SIZE", "SKIP_RESERVED_WORD", "SMALL", "SMALLINT", "SQRT", + "START", "STDDEV_POP", "STDDEV_SAMP", "STRING", "SUM", "TAN", "TANH", + "THEN", "TIME", "TIMESTAMP", "TRAILING", "TRIM", "TYPED", "UBIGINT", + "UINT", "UINT8", "UINT16", "UINT32", "UINT64", "UINT128", "UINT256", + "UNION", "UNSIGNED", "UPPER", "USE", "USMALLINT", "VALUE", "VARBINARY", + "VARCHAR", "VARIABLE", "WHEN", "WHERE", "WITH", "XOR", "YEAR", "YIELD", + "ZONED", "ZONED_DATETIME", "ZONED_TIME", "ABSTRACT", "AGGREGATE", "AGGREGATES", + "ALTER", "CATALOG", "CLEAR", "CLONE", "CONSTRAINT", "CURRENT_ROLE", + "CURRENT_USER", "DATA", "DIRECTORY", "DRYRUN", "EXACT", "EXISTING", + "FUNCTION", "GQLSTATUS", "GRANT", "INSTANT", "INFINITY_KW", "NUMBER", + "NUMERIC", "ON", "OPEN", "PARTITION", "PROCEDURE", "PRODUCT", "PROJECT", + "QUERY", "RECORDS", "REFERENCE", "RENAME", "REVOKE", "SUBSTRING", "SYSTEM_USER", + "TEMPORAL", "UNIQUE", "UNIT", "VALUES", "ACYCLIC", "BINDING", "BINDINGS", + "CONNECTING", "DESTINATION", "DIFFERENT", "DIRECTED", "EDGE", "EDGES", + "ELEMENT", "ELEMENTS", "FIRST", "GRAPH", "GROUPS", "KEEP", "LABEL", + "LABELED", "LABELS", "LAST", "NFC", "NFD", "NFKC", "NFKD", "NO", "NODE", + "NORMALIZED", "ONLY", "ORDINALITY", "PROPERTY", "READ", "RELATIONSHIP", + "RELATIONSHIPS", "REPEATABLE", "SHORTEST", "SIMPLE", "SOURCE", "TABLE", + "TO", "TRAIL", "TRANSACTION", "TYPE", "UNDIRECTED", "VERTEX", "WALK", + "WITHOUT", "WRITE", "ZONE", "SEPARATED_IDENTIFIER", "REGULAR_IDENTIFIER", + "EXTENDED_IDENTIFIER", "DELIMITED_IDENTIFIER", "SUBSTITUTED_PARAMETER_REFERENCE", + "GENERAL_PARAMETER_REFERENCE", "IDENTIFIER_START", "IDENTIFIER_EXTEND", + "ID_Start", "ID_Continue", "MULTISET_ALTERNATION_OPERATOR", "BRACKET_RIGHT_ARROW", + "BRACKET_TILDE_RIGHT_ARROW", "CONCATENATION_OPERATOR", "DOUBLE_COLON", + "DOUBLE_DOLLAR_SIGN", "DOUBLE_PERIOD", "GREATER_THAN_OR_EQUALS_OPERATOR", + "LEFT_ARROW", "LEFT_ARROW_TILDE", "LEFT_ARROW_BRACKET", "LEFT_ARROW_TILDE_BRACKET", + "LEFT_MINUS_RIGHT", "LEFT_MINUS_SLASH", "LEFT_TILDE_SLASH", "LESS_THAN_OR_EQUALS_OPERATOR", + "MINUS_LEFT_BRACKET", "MINUS_SLASH", "NOT_EQUALS_OPERATOR", "RIGHT_ARROW", + "RIGHT_BRACKET_MINUS", "RIGHT_BRACKET_TILDE", "RIGHT_DOUBLE_ARROW", + "SLASH_MINUS", "SLASH_MINUS_RIGHT", "SLASH_TILDE", "SLASH_TILDE_RIGHT", + "TILDE_LEFT_BRACKET", "TILDE_RIGHT_ARROW", "TILDE_SLASH", "AMPERSAND", + "ASTERISK", "COLON", "COMMA", "COMMERCIAL_AT", "DOLLAR_SIGN", "DOUBLE_QUOTE", + "EQUALS_OPERATOR", "EXCLAMATION_MARK", "RIGHT_ANGLE_BRACKET", "GRAVE_ACCENT", + "LEFT_BRACE", "LEFT_BRACKET", "LEFT_PAREN", "LEFT_ANGLE_BRACKET", "MINUS_SIGN", + "PERCENT", "PERIOD", "PLUS_SIGN", "QUESTION_MARK", "QUOTE", "REVERSE_SOLIDUS", + "RIGHT_BRACE", "RIGHT_BRACKET", "RIGHT_PAREN", "SOLIDUS", "TILDE", "UNDERSCORE", + "VERTICAL_BAR", "HEX_DIGIT", "DIGIT", "OCTAL_DIGIT", "BINARY_DIGIT", + "SP", "WHITESPACE", "BRACKETED_COMMENT", "SIMPLE_COMMENT_SOLIDUS", "SIMPLE_COMMENT_MINUS", + "GS", "FS", "CR", "Sc", "SPACE", "Pc", "TAB", "LF", "VT", "US", "FF", + "RS", + } + staticData.PredictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 390, 3740, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, + 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, + 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, + 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, + 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, + 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, + 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, + 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, + 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, + 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, + 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, + 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, + 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, + 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, + 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, + 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, + 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, + 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, + 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, + 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, + 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, + 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, + 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, + 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, + 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, + 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, + 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, + 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, + 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, + 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, + 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, + 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, + 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, + 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, + 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, + 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, + 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, + 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, + 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, + 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, + 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, + 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, + 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, + 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, + 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, + 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, + 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, + 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, + 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, + 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, + 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, + 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, + 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, + 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, + 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, + 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, + 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, + 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, + 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, + 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, + 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, + 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, + 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, + 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, + 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, + 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, + 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, + 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, + 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, + 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, + 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, + 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, + 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, + 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, + 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, + 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, + 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, + 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, + 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, + 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, + 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, + 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, + 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, + 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, + 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, + 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, + 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, + 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, + 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, + 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, + 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, + 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, + 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, + 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, + 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, + 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, 3, 0, 898, 8, 0, 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, 3, + 2, 918, 8, 2, 1, 3, 3, 3, 921, 8, 3, 1, 3, 1, 3, 1, 4, 3, 4, 926, 8, 4, + 1, 4, 1, 4, 1, 5, 3, 5, 931, 8, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, + 5, 7, 939, 8, 7, 10, 7, 12, 7, 942, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 5, 8, + 948, 8, 8, 10, 8, 12, 8, 951, 9, 8, 1, 8, 1, 8, 1, 9, 1, 9, 5, 9, 957, + 8, 9, 10, 9, 12, 9, 960, 9, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, + 4, 10, 968, 8, 10, 11, 10, 12, 10, 969, 1, 11, 1, 11, 1, 11, 1, 11, 4, + 11, 976, 8, 11, 11, 11, 12, 11, 977, 1, 12, 1, 12, 1, 12, 1, 12, 4, 12, + 984, 8, 12, 11, 12, 12, 12, 985, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 999, 8, 13, 1, 14, 1, 14, + 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, + 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, + 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, + 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, + 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 5, 27, 1051, 8, 27, 10, 27, 12, + 27, 1054, 9, 27, 1, 27, 1, 27, 5, 27, 1058, 8, 27, 10, 27, 12, 27, 1061, + 9, 27, 1, 27, 1, 27, 5, 27, 1065, 8, 27, 10, 27, 12, 27, 1068, 9, 27, 5, + 27, 1070, 8, 27, 10, 27, 12, 27, 1073, 9, 27, 1, 27, 1, 27, 1, 28, 1, 28, + 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 32, 1, + 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, + 1, 36, 3, 36, 1101, 8, 36, 1, 36, 5, 36, 1104, 8, 36, 10, 36, 12, 36, 1107, + 9, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 1117, + 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 3, 41, 1124, 8, 41, 1, 41, 1, + 41, 1, 41, 3, 41, 1129, 8, 41, 1, 42, 1, 42, 3, 42, 1133, 8, 42, 1, 42, + 1, 42, 1, 43, 1, 43, 3, 43, 1139, 8, 43, 1, 43, 4, 43, 1142, 8, 43, 11, + 43, 12, 43, 1143, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 3, 45, 1151, 8, 45, + 1, 45, 4, 45, 1154, 8, 45, 11, 45, 12, 45, 1155, 1, 46, 1, 46, 1, 46, 1, + 47, 1, 47, 3, 47, 1163, 8, 47, 1, 47, 4, 47, 1166, 8, 47, 11, 47, 12, 47, + 1167, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, + 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, + 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, + 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, + 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, + 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 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, 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, 69, 1, 69, 1, 69, 1, + 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 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, 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, + 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, + 1, 77, 1, 77, 1, 77, 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, 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, 82, 1, 82, + 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, 83, 1, 83, 1, 83, 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, 84, 1, 85, 1, + 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, + 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, + 87, 1, 87, 1, 87, 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, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 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, 93, 1, 93, 1, 94, 1, 94, 1, 94, 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, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, + 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, + 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, + 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, + 1, 97, 1, 97, 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, 98, 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, 99, 1, 99, 1, 99, 1, 99, 1, + 99, 1, 99, 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, 101, 1, 101, 1, + 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, + 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, + 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, + 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, + 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, + 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, + 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, + 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, + 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, + 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, + 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, + 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, + 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, + 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, + 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, + 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, + 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, + 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, + 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, + 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, + 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, + 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, + 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, + 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, + 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, + 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, + 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, + 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, + 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, + 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, + 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, + 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, + 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, + 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, + 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, + 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, + 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, + 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, + 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, + 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, + 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, + 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, + 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, + 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, + 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, + 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, + 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, + 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, + 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, + 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, + 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, + 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, + 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, + 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, + 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, + 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, + 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, + 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, + 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, + 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, + 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, + 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, + 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, + 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, + 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, + 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, + 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, + 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, + 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, + 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, + 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, + 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, + 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, + 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, + 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, + 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, + 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, + 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, + 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, + 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, + 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, + 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, + 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, + 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, + 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, + 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, + 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, + 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, + 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, + 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, + 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, + 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, + 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, + 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, + 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, + 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, + 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, + 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, + 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, + 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, + 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, + 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, + 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, + 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, + 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, + 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, + 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, + 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, + 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, + 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, + 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, + 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, + 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, + 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, + 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, + 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, + 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, + 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, + 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, + 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, + 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, + 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, + 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, + 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, + 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, + 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, + 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, + 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, + 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, + 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, + 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, + 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, + 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, + 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, + 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, + 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, + 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, + 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, + 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, + 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, + 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, + 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, + 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, + 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, + 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, + 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, + 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, + 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, + 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, + 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, + 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, + 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, + 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, + 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, + 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, + 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, + 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, + 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, + 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, + 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, + 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, + 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, + 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, + 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, + 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, + 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, + 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, + 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, + 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, + 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, + 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, + 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, + 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, + 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, + 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, + 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, 311, 1, + 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, + 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, + 313, 1, 314, 1, 314, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 315, 1, + 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, + 316, 1, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, + 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 319, 1, + 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, + 320, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 322, 1, + 322, 1, 322, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, + 323, 1, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, + 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, + 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, + 328, 1, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 330, 1, 330, 1, + 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 1, 332, 1, 332, 1, 332, 1, + 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 332, 1, 333, 1, + 333, 1, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, + 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, + 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 1, 336, 1, 336, 1, 336, 1, + 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, + 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, + 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, + 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, + 339, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, + 340, 1, 340, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, + 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, + 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, + 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, + 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, + 347, 1, 347, 1, 347, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, + 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 349, 1, 349, 1, + 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 1, 350, 1, + 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, + 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 1, + 353, 1, 353, 1, 354, 1, 354, 3, 354, 3461, 8, 354, 1, 355, 1, 355, 5, 355, + 3465, 8, 355, 10, 355, 12, 355, 3468, 9, 355, 1, 356, 4, 356, 3471, 8, + 356, 11, 356, 12, 356, 3472, 1, 357, 1, 357, 3, 357, 3477, 8, 357, 1, 358, + 1, 358, 1, 358, 1, 359, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 3487, 8, + 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 363, 1, 363, 1, 364, 1, 364, 1, + 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, + 366, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, + 369, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, + 372, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, + 375, 1, 375, 1, 375, 1, 376, 1, 376, 1, 376, 1, 376, 1, 377, 1, 377, 1, + 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, + 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, + 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, + 386, 1, 386, 1, 386, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, + 388, 1, 389, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 390, 1, 391, 1, + 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 393, 1, 394, 1, + 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, + 399, 1, 399, 1, 400, 1, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 403, 1, + 403, 1, 404, 1, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 407, 1, 407, 1, + 408, 1, 408, 1, 409, 1, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 412, 1, + 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, + 417, 1, 417, 1, 418, 1, 418, 1, 419, 1, 419, 1, 420, 1, 420, 1, 421, 1, + 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 424, 1, 424, 1, 425, 1, 425, 1, + 426, 1, 426, 1, 427, 4, 427, 3662, 8, 427, 11, 427, 12, 427, 3663, 1, 427, + 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, 1, 428, + 1, 428, 1, 428, 1, 428, 3, 428, 3679, 8, 428, 1, 429, 1, 429, 1, 429, 1, + 429, 5, 429, 3685, 8, 429, 10, 429, 12, 429, 3688, 9, 429, 1, 429, 1, 429, + 1, 429, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 3699, 8, + 430, 10, 430, 12, 430, 3702, 9, 430, 1, 430, 1, 430, 1, 431, 1, 431, 1, + 431, 1, 431, 5, 431, 3710, 8, 431, 10, 431, 12, 431, 3713, 9, 431, 1, 431, + 1, 431, 1, 432, 1, 432, 1, 433, 1, 433, 1, 434, 1, 434, 1, 435, 1, 435, + 1, 436, 1, 436, 1, 437, 1, 437, 1, 438, 1, 438, 1, 439, 1, 439, 1, 440, + 1, 440, 1, 441, 1, 441, 1, 442, 1, 442, 1, 443, 1, 443, 1, 3686, 0, 444, + 1, 1, 3, 0, 5, 2, 7, 3, 9, 4, 11, 5, 13, 6, 15, 0, 17, 0, 19, 0, 21, 0, + 23, 0, 25, 0, 27, 0, 29, 0, 31, 0, 33, 0, 35, 0, 37, 0, 39, 0, 41, 0, 43, + 0, 45, 0, 47, 0, 49, 0, 51, 0, 53, 0, 55, 7, 57, 8, 59, 9, 61, 10, 63, + 11, 65, 12, 67, 13, 69, 14, 71, 15, 73, 16, 75, 0, 77, 0, 79, 0, 81, 0, + 83, 0, 85, 0, 87, 17, 89, 0, 91, 18, 93, 0, 95, 19, 97, 0, 99, 0, 101, + 20, 103, 21, 105, 22, 107, 23, 109, 24, 111, 25, 113, 26, 115, 27, 117, + 28, 119, 29, 121, 30, 123, 31, 125, 32, 127, 33, 129, 34, 131, 35, 133, + 36, 135, 37, 137, 38, 139, 39, 141, 40, 143, 41, 145, 42, 147, 43, 149, + 44, 151, 45, 153, 46, 155, 47, 157, 48, 159, 49, 161, 50, 163, 51, 165, + 52, 167, 53, 169, 54, 171, 55, 173, 56, 175, 57, 177, 58, 179, 59, 181, + 60, 183, 61, 185, 62, 187, 63, 189, 64, 191, 65, 193, 66, 195, 67, 197, + 68, 199, 69, 201, 70, 203, 71, 205, 72, 207, 73, 209, 74, 211, 75, 213, + 76, 215, 77, 217, 78, 219, 79, 221, 80, 223, 81, 225, 82, 227, 83, 229, + 84, 231, 85, 233, 86, 235, 87, 237, 88, 239, 89, 241, 90, 243, 91, 245, + 92, 247, 93, 249, 94, 251, 95, 253, 96, 255, 97, 257, 98, 259, 99, 261, + 100, 263, 101, 265, 102, 267, 103, 269, 104, 271, 105, 273, 106, 275, 107, + 277, 108, 279, 109, 281, 110, 283, 111, 285, 112, 287, 113, 289, 114, 291, + 115, 293, 116, 295, 117, 297, 118, 299, 119, 301, 120, 303, 121, 305, 122, + 307, 123, 309, 124, 311, 125, 313, 126, 315, 127, 317, 128, 319, 129, 321, + 130, 323, 131, 325, 132, 327, 133, 329, 134, 331, 135, 333, 136, 335, 137, + 337, 138, 339, 139, 341, 140, 343, 141, 345, 142, 347, 143, 349, 144, 351, + 145, 353, 146, 355, 147, 357, 148, 359, 149, 361, 150, 363, 151, 365, 152, + 367, 153, 369, 154, 371, 155, 373, 156, 375, 157, 377, 158, 379, 159, 381, + 160, 383, 161, 385, 162, 387, 163, 389, 164, 391, 165, 393, 166, 395, 167, + 397, 168, 399, 169, 401, 170, 403, 171, 405, 172, 407, 173, 409, 174, 411, + 175, 413, 176, 415, 177, 417, 178, 419, 179, 421, 180, 423, 181, 425, 182, + 427, 183, 429, 184, 431, 185, 433, 186, 435, 187, 437, 188, 439, 189, 441, + 190, 443, 191, 445, 192, 447, 193, 449, 194, 451, 195, 453, 196, 455, 197, + 457, 198, 459, 199, 461, 200, 463, 201, 465, 202, 467, 203, 469, 204, 471, + 205, 473, 206, 475, 207, 477, 208, 479, 209, 481, 210, 483, 211, 485, 212, + 487, 213, 489, 214, 491, 215, 493, 216, 495, 217, 497, 218, 499, 219, 501, + 220, 503, 221, 505, 222, 507, 223, 509, 224, 511, 225, 513, 226, 515, 227, + 517, 228, 519, 229, 521, 230, 523, 231, 525, 232, 527, 233, 529, 234, 531, + 235, 533, 236, 535, 237, 537, 238, 539, 239, 541, 240, 543, 241, 545, 242, + 547, 243, 549, 244, 551, 245, 553, 246, 555, 247, 557, 248, 559, 249, 561, + 250, 563, 251, 565, 252, 567, 253, 569, 254, 571, 255, 573, 256, 575, 257, + 577, 258, 579, 259, 581, 260, 583, 261, 585, 262, 587, 263, 589, 264, 591, + 265, 593, 266, 595, 267, 597, 268, 599, 269, 601, 270, 603, 271, 605, 272, + 607, 273, 609, 274, 611, 275, 613, 276, 615, 277, 617, 278, 619, 279, 621, + 280, 623, 281, 625, 282, 627, 283, 629, 284, 631, 285, 633, 286, 635, 287, + 637, 288, 639, 289, 641, 290, 643, 291, 645, 292, 647, 293, 649, 294, 651, + 295, 653, 296, 655, 297, 657, 298, 659, 299, 661, 300, 663, 301, 665, 302, + 667, 303, 669, 304, 671, 305, 673, 306, 675, 307, 677, 308, 679, 309, 681, + 310, 683, 311, 685, 312, 687, 313, 689, 314, 691, 315, 693, 316, 695, 317, + 697, 318, 699, 319, 701, 320, 703, 321, 705, 322, 707, 323, 709, 0, 711, + 324, 713, 0, 715, 0, 717, 325, 719, 326, 721, 0, 723, 0, 725, 0, 727, 0, + 729, 327, 731, 328, 733, 329, 735, 330, 737, 331, 739, 332, 741, 333, 743, + 334, 745, 335, 747, 336, 749, 337, 751, 338, 753, 339, 755, 340, 757, 341, + 759, 342, 761, 343, 763, 344, 765, 345, 767, 346, 769, 347, 771, 348, 773, + 349, 775, 350, 777, 351, 779, 352, 781, 353, 783, 354, 785, 355, 787, 356, + 789, 357, 791, 358, 793, 359, 795, 360, 797, 361, 799, 362, 801, 363, 803, + 364, 805, 365, 807, 366, 809, 367, 811, 368, 813, 369, 815, 370, 817, 371, + 819, 372, 821, 373, 823, 374, 825, 375, 827, 376, 829, 377, 831, 378, 833, + 379, 835, 380, 837, 381, 839, 382, 841, 383, 843, 384, 845, 385, 847, 0, + 849, 0, 851, 0, 853, 0, 855, 386, 857, 387, 859, 388, 861, 389, 863, 390, + 865, 0, 867, 0, 869, 0, 871, 0, 873, 0, 875, 0, 877, 0, 879, 0, 881, 0, + 883, 0, 885, 0, 887, 0, 1, 0, 50, 2, 0, 73, 73, 105, 105, 2, 0, 77, 77, + 109, 109, 2, 0, 80, 80, 112, 112, 2, 0, 76, 76, 108, 108, 2, 0, 69, 69, + 101, 101, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 82, 82, + 114, 114, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 65, 65, + 97, 97, 2, 0, 78, 78, 110, 110, 2, 0, 75, 75, 107, 107, 2, 0, 79, 79, 111, + 111, 2, 0, 87, 87, 119, 119, 4, 0, 10, 10, 13, 13, 39, 39, 92, 92, 4, 0, + 10, 10, 13, 13, 34, 34, 92, 92, 4, 0, 10, 10, 13, 13, 92, 92, 96, 96, 2, + 0, 88, 88, 120, 120, 4, 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 66, + 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 89, 89, + 121, 121, 2, 0, 71, 71, 103, 103, 2, 0, 86, 86, 118, 118, 2, 0, 72, 72, + 104, 104, 2, 0, 90, 90, 122, 122, 2, 0, 81, 81, 113, 113, 2, 0, 74, 74, + 106, 106, 659, 0, 65, 90, 97, 122, 170, 170, 181, 181, 186, 186, 192, 214, + 216, 246, 248, 705, 710, 721, 736, 740, 748, 748, 750, 750, 880, 884, 886, + 887, 890, 893, 895, 895, 902, 902, 904, 906, 908, 908, 910, 929, 931, 1013, + 1015, 1153, 1162, 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1488, 1514, + 1519, 1522, 1568, 1610, 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, + 1774, 1775, 1786, 1788, 1791, 1791, 1808, 1808, 1810, 1839, 1869, 1957, + 1969, 1969, 1994, 2026, 2036, 2037, 2042, 2042, 2048, 2069, 2074, 2074, + 2084, 2084, 2088, 2088, 2112, 2136, 2144, 2154, 2160, 2183, 2185, 2190, + 2208, 2249, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, 2417, 2432, + 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, 2489, + 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2545, 2556, 2556, + 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, + 2616, 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, + 2707, 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, + 2784, 2785, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, + 2866, 2867, 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, + 2947, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, + 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3024, 3024, 3077, 3084, + 3086, 3088, 3090, 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3165, 3165, + 3168, 3169, 3200, 3200, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, + 3253, 3257, 3261, 3261, 3293, 3294, 3296, 3297, 3313, 3314, 3332, 3340, + 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, 3412, 3414, 3423, 3425, + 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, + 3585, 3632, 3634, 3635, 3648, 3654, 3713, 3714, 3716, 3716, 3718, 3722, + 3724, 3747, 3749, 3749, 3751, 3760, 3762, 3763, 3773, 3773, 3776, 3780, + 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, + 4096, 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, + 4206, 4208, 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, + 4304, 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, + 4704, 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, + 4802, 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4992, 5007, + 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, 5786, 5792, 5866, + 5870, 5880, 5888, 5905, 5919, 5937, 5952, 5969, 5984, 5996, 5998, 6000, + 6016, 6067, 6103, 6103, 6108, 6108, 6176, 6264, 6272, 6312, 6314, 6314, + 6320, 6389, 6400, 6430, 6480, 6509, 6512, 6516, 6528, 6571, 6576, 6601, + 6656, 6678, 6688, 6740, 6823, 6823, 6917, 6963, 6981, 6988, 7043, 7072, + 7086, 7087, 7098, 7141, 7168, 7203, 7245, 7247, 7258, 7293, 7296, 7304, + 7312, 7354, 7357, 7359, 7401, 7404, 7406, 7411, 7413, 7414, 7418, 7418, + 7424, 7615, 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, + 8025, 8025, 8027, 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, + 8126, 8126, 8130, 8132, 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, + 8178, 8180, 8182, 8188, 8305, 8305, 8319, 8319, 8336, 8348, 8450, 8450, + 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, 8484, 8486, 8486, + 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, + 11264, 11492, 11499, 11502, 11506, 11507, 11520, 11557, 11559, 11559, 11565, + 11565, 11568, 11623, 11631, 11631, 11648, 11670, 11680, 11686, 11688, 11694, + 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, 11736, + 11742, 12293, 12295, 12321, 12329, 12337, 12341, 12344, 12348, 12353, 12438, + 12443, 12447, 12449, 12538, 12540, 12543, 12549, 12591, 12593, 12686, 12704, + 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, 42237, 42240, 42508, + 42512, 42527, 42538, 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, + 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, 42969, + 42994, 43009, 43011, 43013, 43015, 43018, 43020, 43042, 43072, 43123, 43138, + 43187, 43250, 43255, 43259, 43259, 43261, 43262, 43274, 43301, 43312, 43334, + 43360, 43388, 43396, 43442, 43471, 43471, 43488, 43492, 43494, 43503, 43514, + 43518, 43520, 43560, 43584, 43586, 43588, 43595, 43616, 43638, 43642, 43642, + 43646, 43695, 43697, 43697, 43701, 43702, 43705, 43709, 43712, 43712, 43714, + 43714, 43739, 43741, 43744, 43754, 43762, 43764, 43777, 43782, 43785, 43790, + 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, 43868, 43881, 43888, + 44002, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, + 64256, 64262, 64275, 64279, 64285, 64285, 64287, 64296, 64298, 64310, 64312, + 64316, 64318, 64318, 64320, 64321, 64323, 64324, 64326, 64433, 64467, 64829, + 64848, 64911, 64914, 64967, 65008, 65019, 65136, 65140, 65142, 65276, 65313, + 65338, 65345, 65370, 65382, 65470, 65474, 65479, 65482, 65487, 65490, 65495, + 65498, 65500, 65536, 65547, 65549, 65574, 65576, 65594, 65596, 65597, 65599, + 65613, 65616, 65629, 65664, 65786, 65856, 65908, 66176, 66204, 66208, 66256, + 66304, 66335, 66349, 66378, 66384, 66421, 66432, 66461, 66464, 66499, 66504, + 66511, 66513, 66517, 66560, 66717, 66736, 66771, 66776, 66811, 66816, 66855, + 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, 66967, + 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, 67413, + 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, 67592, + 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, 67702, + 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, 67968, + 68023, 68030, 68031, 68096, 68096, 68112, 68115, 68117, 68119, 68121, 68149, + 68192, 68220, 68224, 68252, 68288, 68295, 68297, 68324, 68352, 68405, 68416, + 68437, 68448, 68466, 68480, 68497, 68608, 68680, 68736, 68786, 68800, 68850, + 68864, 68899, 69248, 69289, 69296, 69297, 69376, 69404, 69415, 69415, 69424, + 69445, 69488, 69505, 69552, 69572, 69600, 69622, 69635, 69687, 69745, 69746, + 69749, 69749, 69763, 69807, 69840, 69864, 69891, 69926, 69956, 69956, 69959, + 69959, 69968, 70002, 70006, 70006, 70019, 70066, 70081, 70084, 70106, 70106, + 70108, 70108, 70144, 70161, 70163, 70187, 70207, 70208, 70272, 70278, 70280, + 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70366, 70405, 70412, + 70415, 70416, 70419, 70440, 70442, 70448, 70450, 70451, 70453, 70457, 70461, + 70461, 70480, 70480, 70493, 70497, 70656, 70708, 70727, 70730, 70751, 70753, + 70784, 70831, 70852, 70853, 70855, 70855, 71040, 71086, 71128, 71131, 71168, + 71215, 71236, 71236, 71296, 71338, 71352, 71352, 71424, 71450, 71488, 71494, + 71680, 71723, 71840, 71903, 71935, 71942, 71945, 71945, 71948, 71955, 71957, + 71958, 71960, 71983, 71999, 71999, 72001, 72001, 72096, 72103, 72106, 72144, + 72161, 72161, 72163, 72163, 72192, 72192, 72203, 72242, 72250, 72250, 72272, + 72272, 72284, 72329, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72750, + 72768, 72768, 72818, 72847, 72960, 72966, 72968, 72969, 72971, 73008, 73030, + 73030, 73056, 73061, 73063, 73064, 73066, 73097, 73112, 73112, 73440, 73458, + 73474, 73474, 73476, 73488, 73490, 73523, 73648, 73648, 73728, 74649, 74752, + 74862, 74880, 75075, 77712, 77808, 77824, 78895, 78913, 78918, 82944, 83526, + 92160, 92728, 92736, 92766, 92784, 92862, 92880, 92909, 92928, 92975, 92992, + 92995, 93027, 93047, 93053, 93071, 93760, 93823, 93952, 94026, 94032, 94032, + 94099, 94111, 94176, 94177, 94179, 94179, 94208, 100343, 100352, 101589, + 101632, 101640, 110576, 110579, 110581, 110587, 110589, 110590, 110592, + 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, + 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, + 113817, 119808, 119892, 119894, 119964, 119966, 119967, 119970, 119970, + 119973, 119974, 119977, 119980, 119982, 119993, 119995, 119995, 119997, + 120003, 120005, 120069, 120071, 120074, 120077, 120084, 120086, 120092, + 120094, 120121, 120123, 120126, 120128, 120132, 120134, 120134, 120138, + 120144, 120146, 120485, 120488, 120512, 120514, 120538, 120540, 120570, + 120572, 120596, 120598, 120628, 120630, 120654, 120656, 120686, 120688, + 120712, 120714, 120744, 120746, 120770, 120772, 120779, 122624, 122654, + 122661, 122666, 122928, 122989, 123136, 123180, 123191, 123197, 123214, + 123214, 123536, 123565, 123584, 123627, 124112, 124139, 124896, 124902, + 124904, 124907, 124909, 124910, 124912, 124926, 124928, 125124, 125184, + 125251, 125259, 125259, 126464, 126467, 126469, 126495, 126497, 126498, + 126500, 126500, 126503, 126503, 126505, 126514, 126516, 126519, 126521, + 126521, 126523, 126523, 126530, 126530, 126535, 126535, 126537, 126537, + 126539, 126539, 126541, 126543, 126545, 126546, 126548, 126548, 126551, + 126551, 126553, 126553, 126555, 126555, 126557, 126557, 126559, 126559, + 126561, 126562, 126564, 126564, 126567, 126570, 126572, 126578, 126580, + 126583, 126585, 126588, 126590, 126590, 126592, 126601, 126603, 126619, + 126625, 126627, 126629, 126633, 126635, 126651, 131072, 173791, 173824, + 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, + 196608, 201546, 201552, 205743, 768, 0, 48, 57, 65, 90, 95, 95, 97, 122, + 170, 170, 181, 181, 183, 183, 186, 186, 192, 214, 216, 246, 248, 705, 710, + 721, 736, 740, 748, 748, 750, 750, 768, 884, 886, 887, 890, 893, 895, 895, + 902, 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1155, 1159, 1162, + 1327, 1329, 1366, 1369, 1369, 1376, 1416, 1425, 1469, 1471, 1471, 1473, + 1474, 1476, 1477, 1479, 1479, 1488, 1514, 1519, 1522, 1552, 1562, 1568, + 1641, 1646, 1747, 1749, 1756, 1759, 1768, 1770, 1788, 1791, 1791, 1808, + 1866, 1869, 1969, 1984, 2037, 2042, 2042, 2045, 2045, 2048, 2093, 2112, + 2139, 2144, 2154, 2160, 2183, 2185, 2190, 2200, 2273, 2275, 2403, 2406, + 2415, 2417, 2435, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, + 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, + 2525, 2527, 2531, 2534, 2545, 2556, 2556, 2558, 2558, 2561, 2563, 2565, + 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, + 2617, 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, + 2652, 2654, 2654, 2662, 2677, 2689, 2691, 2693, 2701, 2703, 2705, 2707, + 2728, 2730, 2736, 2738, 2739, 2741, 2745, 2748, 2757, 2759, 2761, 2763, + 2765, 2768, 2768, 2784, 2787, 2790, 2799, 2809, 2815, 2817, 2819, 2821, + 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, 2869, 2873, 2876, + 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2909, 2911, 2915, 2918, + 2927, 2929, 2929, 2946, 2947, 2949, 2954, 2958, 2960, 2962, 2965, 2969, + 2970, 2972, 2972, 2974, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, + 3010, 3014, 3016, 3018, 3021, 3024, 3024, 3031, 3031, 3046, 3055, 3072, + 3084, 3086, 3088, 3090, 3112, 3114, 3129, 3132, 3140, 3142, 3144, 3146, + 3149, 3157, 3158, 3160, 3162, 3165, 3165, 3168, 3171, 3174, 3183, 3200, + 3203, 3205, 3212, 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3260, + 3268, 3270, 3272, 3274, 3277, 3285, 3286, 3293, 3294, 3296, 3299, 3302, + 3311, 3313, 3315, 3328, 3340, 3342, 3344, 3346, 3396, 3398, 3400, 3402, + 3406, 3412, 3415, 3423, 3427, 3430, 3439, 3450, 3455, 3457, 3459, 3461, + 3478, 3482, 3505, 3507, 3515, 3517, 3517, 3520, 3526, 3530, 3530, 3535, + 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, 3571, 3585, 3642, 3648, + 3662, 3664, 3673, 3713, 3714, 3716, 3716, 3718, 3722, 3724, 3747, 3749, + 3749, 3751, 3773, 3776, 3780, 3782, 3782, 3784, 3790, 3792, 3801, 3804, + 3807, 3840, 3840, 3864, 3865, 3872, 3881, 3893, 3893, 3895, 3895, 3897, + 3897, 3902, 3911, 3913, 3948, 3953, 3972, 3974, 3991, 3993, 4028, 4038, + 4038, 4096, 4169, 4176, 4253, 4256, 4293, 4295, 4295, 4301, 4301, 4304, + 4346, 4348, 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, + 4744, 4746, 4749, 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, + 4805, 4808, 4822, 4824, 4880, 4882, 4885, 4888, 4954, 4957, 4959, 4969, + 4977, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, 5743, 5759, 5761, + 5786, 5792, 5866, 5870, 5880, 5888, 5909, 5919, 5940, 5952, 5971, 5984, + 5996, 5998, 6000, 6002, 6003, 6016, 6099, 6103, 6103, 6108, 6109, 6112, + 6121, 6155, 6157, 6159, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, + 6430, 6432, 6443, 6448, 6459, 6470, 6509, 6512, 6516, 6528, 6571, 6576, + 6601, 6608, 6618, 6656, 6683, 6688, 6750, 6752, 6780, 6783, 6793, 6800, + 6809, 6823, 6823, 6832, 6845, 6847, 6862, 6912, 6988, 6992, 7001, 7019, + 7027, 7040, 7155, 7168, 7223, 7232, 7241, 7245, 7293, 7296, 7304, 7312, + 7354, 7357, 7359, 7376, 7378, 7380, 7418, 7424, 7957, 7960, 7965, 7968, + 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, 8027, 8029, 8029, 8031, + 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, 8134, 8140, 8144, + 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, 8256, 8276, + 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8400, 8412, 8417, 8417, 8421, + 8432, 8450, 8450, 8455, 8455, 8458, 8467, 8469, 8469, 8472, 8477, 8484, + 8484, 8486, 8486, 8488, 8488, 8490, 8505, 8508, 8511, 8517, 8521, 8526, + 8526, 8544, 8584, 11264, 11492, 11499, 11507, 11520, 11557, 11559, 11559, + 11565, 11565, 11568, 11623, 11631, 11631, 11647, 11670, 11680, 11686, 11688, + 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, 11726, 11728, 11734, + 11736, 11742, 11744, 11775, 12293, 12295, 12321, 12335, 12337, 12341, 12344, + 12348, 12353, 12438, 12441, 12447, 12449, 12538, 12540, 12543, 12549, 12591, + 12593, 12686, 12704, 12735, 12784, 12799, 13312, 19903, 19968, 42124, 42192, + 42237, 42240, 42508, 42512, 42539, 42560, 42607, 42612, 42621, 42623, 42737, + 42775, 42783, 42786, 42888, 42891, 42954, 42960, 42961, 42963, 42963, 42965, + 42969, 42994, 43047, 43052, 43052, 43072, 43123, 43136, 43205, 43216, 43225, + 43232, 43255, 43259, 43259, 43261, 43309, 43312, 43347, 43360, 43388, 43392, + 43456, 43471, 43481, 43488, 43518, 43520, 43574, 43584, 43597, 43600, 43609, + 43616, 43638, 43642, 43714, 43739, 43741, 43744, 43759, 43762, 43766, 43777, + 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, 43822, 43824, 43866, + 43868, 43881, 43888, 44010, 44012, 44013, 44016, 44025, 44032, 55203, 55216, + 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, + 64285, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, 64323, + 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, 65019, + 65024, 65039, 65056, 65071, 65075, 65076, 65101, 65103, 65136, 65140, 65142, + 65276, 65296, 65305, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, + 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65536, 65547, 65549, + 65574, 65576, 65594, 65596, 65597, 65599, 65613, 65616, 65629, 65664, 65786, + 65856, 65908, 66045, 66045, 66176, 66204, 66208, 66256, 66272, 66272, 66304, + 66335, 66349, 66378, 66384, 66426, 66432, 66461, 66464, 66499, 66504, 66511, + 66513, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, + 66855, 66864, 66915, 66928, 66938, 66940, 66954, 66956, 66962, 66964, 66965, + 66967, 66977, 66979, 66993, 66995, 67001, 67003, 67004, 67072, 67382, 67392, + 67413, 67424, 67431, 67456, 67461, 67463, 67504, 67506, 67514, 67584, 67589, + 67592, 67592, 67594, 67637, 67639, 67640, 67644, 67644, 67647, 67669, 67680, + 67702, 67712, 67742, 67808, 67826, 67828, 67829, 67840, 67861, 67872, 67897, + 67968, 68023, 68030, 68031, 68096, 68099, 68101, 68102, 68108, 68115, 68117, + 68119, 68121, 68149, 68152, 68154, 68159, 68159, 68192, 68220, 68224, 68252, + 68288, 68295, 68297, 68326, 68352, 68405, 68416, 68437, 68448, 68466, 68480, + 68497, 68608, 68680, 68736, 68786, 68800, 68850, 68864, 68903, 68912, 68921, + 69248, 69289, 69291, 69292, 69296, 69297, 69373, 69404, 69415, 69415, 69424, + 69456, 69488, 69509, 69552, 69572, 69600, 69622, 69632, 69702, 69734, 69749, + 69759, 69818, 69826, 69826, 69840, 69864, 69872, 69881, 69888, 69940, 69942, + 69951, 69956, 69959, 69968, 70003, 70006, 70006, 70016, 70084, 70089, 70092, + 70094, 70106, 70108, 70108, 70144, 70161, 70163, 70199, 70206, 70209, 70272, + 70278, 70280, 70280, 70282, 70285, 70287, 70301, 70303, 70312, 70320, 70378, + 70384, 70393, 70400, 70403, 70405, 70412, 70415, 70416, 70419, 70440, 70442, + 70448, 70450, 70451, 70453, 70457, 70459, 70468, 70471, 70472, 70475, 70477, + 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, + 70730, 70736, 70745, 70750, 70753, 70784, 70853, 70855, 70855, 70864, 70873, + 71040, 71093, 71096, 71104, 71128, 71133, 71168, 71232, 71236, 71236, 71248, + 71257, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71481, + 71488, 71494, 71680, 71738, 71840, 71913, 71935, 71942, 71945, 71945, 71948, + 71955, 71957, 71958, 71960, 71989, 71991, 71992, 71995, 72003, 72016, 72025, + 72096, 72103, 72106, 72151, 72154, 72161, 72163, 72164, 72192, 72254, 72263, + 72263, 72272, 72345, 72349, 72349, 72368, 72440, 72704, 72712, 72714, 72758, + 72760, 72768, 72784, 72793, 72818, 72847, 72850, 72871, 72873, 72886, 72960, + 72966, 72968, 72969, 72971, 73014, 73018, 73018, 73020, 73021, 73023, 73031, + 73040, 73049, 73056, 73061, 73063, 73064, 73066, 73102, 73104, 73105, 73107, + 73112, 73120, 73129, 73440, 73462, 73472, 73488, 73490, 73530, 73534, 73538, + 73552, 73561, 73648, 73648, 73728, 74649, 74752, 74862, 74880, 75075, 77712, + 77808, 77824, 78895, 78912, 78933, 82944, 83526, 92160, 92728, 92736, 92766, + 92768, 92777, 92784, 92862, 92864, 92873, 92880, 92909, 92912, 92916, 92928, + 92982, 92992, 92995, 93008, 93017, 93027, 93047, 93053, 93071, 93760, 93823, + 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94177, 94179, 94180, 94192, + 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110576, 110579, 110581, + 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, + 110933, 110933, 110948, 110951, 110960, 111355, 113664, 113770, 113776, + 113788, 113792, 113800, 113808, 113817, 113821, 113822, 118528, 118573, + 118576, 118598, 119141, 119145, 119149, 119154, 119163, 119170, 119173, + 119179, 119210, 119213, 119362, 119364, 119808, 119892, 119894, 119964, + 119966, 119967, 119970, 119970, 119973, 119974, 119977, 119980, 119982, + 119993, 119995, 119995, 119997, 120003, 120005, 120069, 120071, 120074, + 120077, 120084, 120086, 120092, 120094, 120121, 120123, 120126, 120128, + 120132, 120134, 120134, 120138, 120144, 120146, 120485, 120488, 120512, + 120514, 120538, 120540, 120570, 120572, 120596, 120598, 120628, 120630, + 120654, 120656, 120686, 120688, 120712, 120714, 120744, 120746, 120770, + 120772, 120779, 120782, 120831, 121344, 121398, 121403, 121452, 121461, + 121461, 121476, 121476, 121499, 121503, 121505, 121519, 122624, 122654, + 122661, 122666, 122880, 122886, 122888, 122904, 122907, 122913, 122915, + 122916, 122918, 122922, 122928, 122989, 123023, 123023, 123136, 123180, + 123184, 123197, 123200, 123209, 123214, 123214, 123536, 123566, 123584, + 123641, 124112, 124153, 124896, 124902, 124904, 124907, 124909, 124910, + 124912, 124926, 124928, 125124, 125136, 125142, 125184, 125259, 125264, + 125273, 126464, 126467, 126469, 126495, 126497, 126498, 126500, 126500, + 126503, 126503, 126505, 126514, 126516, 126519, 126521, 126521, 126523, + 126523, 126530, 126530, 126535, 126535, 126537, 126537, 126539, 126539, + 126541, 126543, 126545, 126546, 126548, 126548, 126551, 126551, 126553, + 126553, 126555, 126555, 126557, 126557, 126559, 126559, 126561, 126562, + 126564, 126564, 126567, 126570, 126572, 126578, 126580, 126583, 126585, + 126588, 126590, 126590, 126592, 126601, 126603, 126619, 126625, 126627, + 126629, 126633, 126635, 126651, 130032, 130041, 131072, 173791, 173824, + 177977, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, + 196608, 201546, 201552, 205743, 917760, 917999, 3, 0, 48, 57, 65, 70, 97, + 102, 1, 0, 48, 57, 1, 0, 48, 55, 1, 0, 48, 49, 8, 0, 160, 160, 5760, 5760, + 6158, 6158, 8192, 8202, 8232, 8233, 8239, 8239, 8287, 8287, 12288, 12288, + 2, 0, 10, 10, 13, 13, 1, 0, 29, 29, 1, 0, 28, 28, 1, 0, 13, 13, 21, 0, + 36, 36, 162, 165, 1423, 1423, 1547, 1547, 2046, 2047, 2546, 2547, 2555, + 2555, 2801, 2801, 3065, 3065, 3647, 3647, 6107, 6107, 8352, 8384, 43064, + 43064, 65020, 65020, 65129, 65129, 65284, 65284, 65504, 65505, 65509, 65510, + 73693, 73696, 123647, 123647, 126128, 126128, 1, 0, 32, 32, 6, 0, 95, 95, + 8255, 8256, 8276, 8276, 65075, 65076, 65101, 65103, 65343, 65343, 1, 0, + 9, 9, 1, 0, 10, 10, 1, 0, 11, 11, 1, 0, 31, 31, 1, 0, 12, 12, 1, 0, 30, + 30, 3749, 0, 1, 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, 55, 1, 0, 0, 0, 0, 57, + 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, + 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, + 0, 73, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 95, 1, 0, 0, + 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, + 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, + 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, + 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, + 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, + 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, + 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, + 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, + 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, + 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, + 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, + 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, + 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, + 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, + 201, 1, 0, 0, 0, 0, 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, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, + 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, + 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, + 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, + 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, + 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, + 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, + 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, + 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, + 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, + 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, + 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, + 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, + 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, + 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, + 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, + 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, + 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, + 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, + 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, + 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, + 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, + 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, + 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, + 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, + 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, + 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, + 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, + 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, + 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, + 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, + 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, + 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, + 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, + 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, + 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, + 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, + 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, + 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, + 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, + 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, + 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, + 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, + 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, + 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, + 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, + 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, + 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, + 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, + 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, + 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, + 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, + 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, + 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, + 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, + 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, + 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, + 669, 1, 0, 0, 0, 0, 671, 1, 0, 0, 0, 0, 673, 1, 0, 0, 0, 0, 675, 1, 0, + 0, 0, 0, 677, 1, 0, 0, 0, 0, 679, 1, 0, 0, 0, 0, 681, 1, 0, 0, 0, 0, 683, + 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, + 0, 691, 1, 0, 0, 0, 0, 693, 1, 0, 0, 0, 0, 695, 1, 0, 0, 0, 0, 697, 1, + 0, 0, 0, 0, 699, 1, 0, 0, 0, 0, 701, 1, 0, 0, 0, 0, 703, 1, 0, 0, 0, 0, + 705, 1, 0, 0, 0, 0, 707, 1, 0, 0, 0, 0, 711, 1, 0, 0, 0, 0, 717, 1, 0, + 0, 0, 0, 719, 1, 0, 0, 0, 0, 729, 1, 0, 0, 0, 0, 731, 1, 0, 0, 0, 0, 733, + 1, 0, 0, 0, 0, 735, 1, 0, 0, 0, 0, 737, 1, 0, 0, 0, 0, 739, 1, 0, 0, 0, + 0, 741, 1, 0, 0, 0, 0, 743, 1, 0, 0, 0, 0, 745, 1, 0, 0, 0, 0, 747, 1, + 0, 0, 0, 0, 749, 1, 0, 0, 0, 0, 751, 1, 0, 0, 0, 0, 753, 1, 0, 0, 0, 0, + 755, 1, 0, 0, 0, 0, 757, 1, 0, 0, 0, 0, 759, 1, 0, 0, 0, 0, 761, 1, 0, + 0, 0, 0, 763, 1, 0, 0, 0, 0, 765, 1, 0, 0, 0, 0, 767, 1, 0, 0, 0, 0, 769, + 1, 0, 0, 0, 0, 771, 1, 0, 0, 0, 0, 773, 1, 0, 0, 0, 0, 775, 1, 0, 0, 0, + 0, 777, 1, 0, 0, 0, 0, 779, 1, 0, 0, 0, 0, 781, 1, 0, 0, 0, 0, 783, 1, + 0, 0, 0, 0, 785, 1, 0, 0, 0, 0, 787, 1, 0, 0, 0, 0, 789, 1, 0, 0, 0, 0, + 791, 1, 0, 0, 0, 0, 793, 1, 0, 0, 0, 0, 795, 1, 0, 0, 0, 0, 797, 1, 0, + 0, 0, 0, 799, 1, 0, 0, 0, 0, 801, 1, 0, 0, 0, 0, 803, 1, 0, 0, 0, 0, 805, + 1, 0, 0, 0, 0, 807, 1, 0, 0, 0, 0, 809, 1, 0, 0, 0, 0, 811, 1, 0, 0, 0, + 0, 813, 1, 0, 0, 0, 0, 815, 1, 0, 0, 0, 0, 817, 1, 0, 0, 0, 0, 819, 1, + 0, 0, 0, 0, 821, 1, 0, 0, 0, 0, 823, 1, 0, 0, 0, 0, 825, 1, 0, 0, 0, 0, + 827, 1, 0, 0, 0, 0, 829, 1, 0, 0, 0, 0, 831, 1, 0, 0, 0, 0, 833, 1, 0, + 0, 0, 0, 835, 1, 0, 0, 0, 0, 837, 1, 0, 0, 0, 0, 839, 1, 0, 0, 0, 0, 841, + 1, 0, 0, 0, 0, 843, 1, 0, 0, 0, 0, 845, 1, 0, 0, 0, 0, 855, 1, 0, 0, 0, + 0, 857, 1, 0, 0, 0, 0, 859, 1, 0, 0, 0, 0, 861, 1, 0, 0, 0, 0, 863, 1, + 0, 0, 0, 1, 897, 1, 0, 0, 0, 3, 899, 1, 0, 0, 0, 5, 917, 1, 0, 0, 0, 7, + 920, 1, 0, 0, 0, 9, 925, 1, 0, 0, 0, 11, 930, 1, 0, 0, 0, 13, 934, 1, 0, + 0, 0, 15, 936, 1, 0, 0, 0, 17, 945, 1, 0, 0, 0, 19, 954, 1, 0, 0, 0, 21, + 967, 1, 0, 0, 0, 23, 975, 1, 0, 0, 0, 25, 983, 1, 0, 0, 0, 27, 998, 1, + 0, 0, 0, 29, 1000, 1, 0, 0, 0, 31, 1003, 1, 0, 0, 0, 33, 1006, 1, 0, 0, + 0, 35, 1009, 1, 0, 0, 0, 37, 1012, 1, 0, 0, 0, 39, 1015, 1, 0, 0, 0, 41, + 1018, 1, 0, 0, 0, 43, 1021, 1, 0, 0, 0, 45, 1024, 1, 0, 0, 0, 47, 1027, + 1, 0, 0, 0, 49, 1033, 1, 0, 0, 0, 51, 1041, 1, 0, 0, 0, 53, 1044, 1, 0, + 0, 0, 55, 1047, 1, 0, 0, 0, 57, 1076, 1, 0, 0, 0, 59, 1079, 1, 0, 0, 0, + 61, 1081, 1, 0, 0, 0, 63, 1084, 1, 0, 0, 0, 65, 1087, 1, 0, 0, 0, 67, 1089, + 1, 0, 0, 0, 69, 1092, 1, 0, 0, 0, 71, 1095, 1, 0, 0, 0, 73, 1098, 1, 0, + 0, 0, 75, 1108, 1, 0, 0, 0, 77, 1110, 1, 0, 0, 0, 79, 1116, 1, 0, 0, 0, + 81, 1118, 1, 0, 0, 0, 83, 1128, 1, 0, 0, 0, 85, 1132, 1, 0, 0, 0, 87, 1136, + 1, 0, 0, 0, 89, 1145, 1, 0, 0, 0, 91, 1148, 1, 0, 0, 0, 93, 1157, 1, 0, + 0, 0, 95, 1160, 1, 0, 0, 0, 97, 1169, 1, 0, 0, 0, 99, 1172, 1, 0, 0, 0, + 101, 1174, 1, 0, 0, 0, 103, 1178, 1, 0, 0, 0, 105, 1183, 1, 0, 0, 0, 107, + 1187, 1, 0, 0, 0, 109, 1201, 1, 0, 0, 0, 111, 1205, 1, 0, 0, 0, 113, 1209, + 1, 0, 0, 0, 115, 1215, 1, 0, 0, 0, 117, 1218, 1, 0, 0, 0, 119, 1222, 1, + 0, 0, 0, 121, 1232, 1, 0, 0, 0, 123, 1237, 1, 0, 0, 0, 125, 1240, 1, 0, + 0, 0, 127, 1245, 1, 0, 0, 0, 129, 1249, 1, 0, 0, 0, 131, 1253, 1, 0, 0, + 0, 133, 1260, 1, 0, 0, 0, 135, 1267, 1, 0, 0, 0, 137, 1272, 1, 0, 0, 0, + 139, 1280, 1, 0, 0, 0, 141, 1285, 1, 0, 0, 0, 143, 1291, 1, 0, 0, 0, 145, + 1294, 1, 0, 0, 0, 147, 1306, 1, 0, 0, 0, 149, 1312, 1, 0, 0, 0, 151, 1317, + 1, 0, 0, 0, 153, 1329, 1, 0, 0, 0, 155, 1334, 1, 0, 0, 0, 157, 1339, 1, + 0, 0, 0, 159, 1344, 1, 0, 0, 0, 161, 1352, 1, 0, 0, 0, 163, 1357, 1, 0, + 0, 0, 165, 1369, 1, 0, 0, 0, 167, 1386, 1, 0, 0, 0, 169, 1402, 1, 0, 0, + 0, 171, 1408, 1, 0, 0, 0, 173, 1417, 1, 0, 0, 0, 175, 1430, 1, 0, 0, 0, + 177, 1437, 1, 0, 0, 0, 179, 1442, 1, 0, 0, 0, 181, 1446, 1, 0, 0, 0, 183, + 1451, 1, 0, 0, 0, 185, 1455, 1, 0, 0, 0, 187, 1461, 1, 0, 0, 0, 189, 1468, + 1, 0, 0, 0, 191, 1481, 1, 0, 0, 0, 193, 1495, 1, 0, 0, 0, 195, 1518, 1, + 0, 0, 0, 197, 1533, 1, 0, 0, 0, 199, 1546, 1, 0, 0, 0, 201, 1564, 1, 0, + 0, 0, 203, 1569, 1, 0, 0, 0, 205, 1578, 1, 0, 0, 0, 207, 1582, 1, 0, 0, + 0, 209, 1586, 1, 0, 0, 0, 211, 1594, 1, 0, 0, 0, 213, 1602, 1, 0, 0, 0, + 215, 1609, 1, 0, 0, 0, 217, 1614, 1, 0, 0, 0, 219, 1625, 1, 0, 0, 0, 221, + 1632, 1, 0, 0, 0, 223, 1641, 1, 0, 0, 0, 225, 1648, 1, 0, 0, 0, 227, 1653, + 1, 0, 0, 0, 229, 1662, 1, 0, 0, 0, 231, 1679, 1, 0, 0, 0, 233, 1690, 1, + 0, 0, 0, 235, 1695, 1, 0, 0, 0, 237, 1699, 1, 0, 0, 0, 239, 1706, 1, 0, + 0, 0, 241, 1713, 1, 0, 0, 0, 243, 1717, 1, 0, 0, 0, 245, 1724, 1, 0, 0, + 0, 247, 1731, 1, 0, 0, 0, 249, 1737, 1, 0, 0, 0, 251, 1745, 1, 0, 0, 0, + 253, 1753, 1, 0, 0, 0, 255, 1761, 1, 0, 0, 0, 257, 1770, 1, 0, 0, 0, 259, + 1779, 1, 0, 0, 0, 261, 1785, 1, 0, 0, 0, 263, 1789, 1, 0, 0, 0, 265, 1794, + 1, 0, 0, 0, 267, 1800, 1, 0, 0, 0, 269, 1807, 1, 0, 0, 0, 271, 1818, 1, + 0, 0, 0, 273, 1838, 1, 0, 0, 0, 275, 1850, 1, 0, 0, 0, 277, 1855, 1, 0, + 0, 0, 279, 1858, 1, 0, 0, 0, 281, 1861, 1, 0, 0, 0, 283, 1868, 1, 0, 0, + 0, 285, 1872, 1, 0, 0, 0, 287, 1880, 1, 0, 0, 0, 289, 1885, 1, 0, 0, 0, + 291, 1894, 1, 0, 0, 0, 293, 1900, 1, 0, 0, 0, 295, 1910, 1, 0, 0, 0, 297, + 1916, 1, 0, 0, 0, 299, 1926, 1, 0, 0, 0, 301, 1932, 1, 0, 0, 0, 303, 1942, + 1, 0, 0, 0, 305, 1949, 1, 0, 0, 0, 307, 1960, 1, 0, 0, 0, 309, 1967, 1, + 0, 0, 0, 311, 1978, 1, 0, 0, 0, 313, 1988, 1, 0, 0, 0, 315, 1997, 1, 0, + 0, 0, 317, 2000, 1, 0, 0, 0, 319, 2008, 1, 0, 0, 0, 321, 2013, 1, 0, 0, + 0, 323, 2017, 1, 0, 0, 0, 325, 2022, 1, 0, 0, 0, 327, 2028, 1, 0, 0, 0, + 329, 2033, 1, 0, 0, 0, 331, 2036, 1, 0, 0, 0, 333, 2042, 1, 0, 0, 0, 335, + 2057, 1, 0, 0, 0, 337, 2068, 1, 0, 0, 0, 339, 2084, 1, 0, 0, 0, 341, 2088, + 1, 0, 0, 0, 343, 2094, 1, 0, 0, 0, 345, 2100, 1, 0, 0, 0, 347, 2106, 1, + 0, 0, 0, 349, 2112, 1, 0, 0, 0, 351, 2116, 1, 0, 0, 0, 353, 2120, 1, 0, + 0, 0, 355, 2127, 1, 0, 0, 0, 357, 2131, 1, 0, 0, 0, 359, 2137, 1, 0, 0, + 0, 361, 2142, 1, 0, 0, 0, 363, 2151, 1, 0, 0, 0, 365, 2161, 1, 0, 0, 0, + 367, 2165, 1, 0, 0, 0, 369, 2173, 1, 0, 0, 0, 371, 2178, 1, 0, 0, 0, 373, + 2184, 1, 0, 0, 0, 375, 2191, 1, 0, 0, 0, 377, 2204, 1, 0, 0, 0, 379, 2207, + 1, 0, 0, 0, 381, 2214, 1, 0, 0, 0, 383, 2223, 1, 0, 0, 0, 385, 2226, 1, + 0, 0, 0, 387, 2232, 1, 0, 0, 0, 389, 2242, 1, 0, 0, 0, 391, 2252, 1, 0, + 0, 0, 393, 2263, 1, 0, 0, 0, 395, 2268, 1, 0, 0, 0, 397, 2280, 1, 0, 0, + 0, 399, 2286, 1, 0, 0, 0, 401, 2302, 1, 0, 0, 0, 403, 2318, 1, 0, 0, 0, + 405, 2324, 1, 0, 0, 0, 407, 2334, 1, 0, 0, 0, 409, 2350, 1, 0, 0, 0, 411, + 2358, 1, 0, 0, 0, 413, 2363, 1, 0, 0, 0, 415, 2370, 1, 0, 0, 0, 417, 2377, + 1, 0, 0, 0, 419, 2385, 1, 0, 0, 0, 421, 2391, 1, 0, 0, 0, 423, 2398, 1, + 0, 0, 0, 425, 2404, 1, 0, 0, 0, 427, 2413, 1, 0, 0, 0, 429, 2419, 1, 0, + 0, 0, 431, 2424, 1, 0, 0, 0, 433, 2431, 1, 0, 0, 0, 435, 2438, 1, 0, 0, + 0, 437, 2445, 1, 0, 0, 0, 439, 2453, 1, 0, 0, 0, 441, 2466, 1, 0, 0, 0, + 443, 2470, 1, 0, 0, 0, 445, 2477, 1, 0, 0, 0, 447, 2481, 1, 0, 0, 0, 449, + 2486, 1, 0, 0, 0, 451, 2491, 1, 0, 0, 0, 453, 2496, 1, 0, 0, 0, 455, 2502, + 1, 0, 0, 0, 457, 2511, 1, 0, 0, 0, 459, 2516, 1, 0, 0, 0, 461, 2522, 1, + 0, 0, 0, 463, 2533, 1, 0, 0, 0, 465, 2545, 1, 0, 0, 0, 467, 2552, 1, 0, + 0, 0, 469, 2556, 1, 0, 0, 0, 471, 2560, 1, 0, 0, 0, 473, 2565, 1, 0, 0, + 0, 475, 2570, 1, 0, 0, 0, 477, 2575, 1, 0, 0, 0, 479, 2585, 1, 0, 0, 0, + 481, 2594, 1, 0, 0, 0, 483, 2599, 1, 0, 0, 0, 485, 2605, 1, 0, 0, 0, 487, + 2613, 1, 0, 0, 0, 489, 2618, 1, 0, 0, 0, 491, 2624, 1, 0, 0, 0, 493, 2631, + 1, 0, 0, 0, 495, 2638, 1, 0, 0, 0, 497, 2645, 1, 0, 0, 0, 499, 2653, 1, + 0, 0, 0, 501, 2661, 1, 0, 0, 0, 503, 2667, 1, 0, 0, 0, 505, 2676, 1, 0, + 0, 0, 507, 2682, 1, 0, 0, 0, 509, 2686, 1, 0, 0, 0, 511, 2696, 1, 0, 0, + 0, 513, 2702, 1, 0, 0, 0, 515, 2712, 1, 0, 0, 0, 517, 2720, 1, 0, 0, 0, + 519, 2729, 1, 0, 0, 0, 521, 2734, 1, 0, 0, 0, 523, 2740, 1, 0, 0, 0, 525, + 2745, 1, 0, 0, 0, 527, 2749, 1, 0, 0, 0, 529, 2754, 1, 0, 0, 0, 531, 2760, + 1, 0, 0, 0, 533, 2766, 1, 0, 0, 0, 535, 2781, 1, 0, 0, 0, 537, 2792, 1, + 0, 0, 0, 539, 2801, 1, 0, 0, 0, 541, 2811, 1, 0, 0, 0, 543, 2822, 1, 0, + 0, 0, 545, 2828, 1, 0, 0, 0, 547, 2836, 1, 0, 0, 0, 549, 2842, 1, 0, 0, + 0, 551, 2848, 1, 0, 0, 0, 553, 2859, 1, 0, 0, 0, 555, 2872, 1, 0, 0, 0, + 557, 2885, 1, 0, 0, 0, 559, 2890, 1, 0, 0, 0, 561, 2900, 1, 0, 0, 0, 563, + 2907, 1, 0, 0, 0, 565, 2913, 1, 0, 0, 0, 567, 2922, 1, 0, 0, 0, 569, 2931, + 1, 0, 0, 0, 571, 2941, 1, 0, 0, 0, 573, 2947, 1, 0, 0, 0, 575, 2955, 1, + 0, 0, 0, 577, 2964, 1, 0, 0, 0, 579, 2971, 1, 0, 0, 0, 581, 2979, 1, 0, + 0, 0, 583, 2982, 1, 0, 0, 0, 585, 2987, 1, 0, 0, 0, 587, 2997, 1, 0, 0, + 0, 589, 3007, 1, 0, 0, 0, 591, 3015, 1, 0, 0, 0, 593, 3023, 1, 0, 0, 0, + 595, 3029, 1, 0, 0, 0, 597, 3037, 1, 0, 0, 0, 599, 3047, 1, 0, 0, 0, 601, + 3054, 1, 0, 0, 0, 603, 3061, 1, 0, 0, 0, 605, 3071, 1, 0, 0, 0, 607, 3083, + 1, 0, 0, 0, 609, 3092, 1, 0, 0, 0, 611, 3099, 1, 0, 0, 0, 613, 3104, 1, + 0, 0, 0, 615, 3111, 1, 0, 0, 0, 617, 3119, 1, 0, 0, 0, 619, 3127, 1, 0, + 0, 0, 621, 3136, 1, 0, 0, 0, 623, 3147, 1, 0, 0, 0, 625, 3159, 1, 0, 0, + 0, 627, 3169, 1, 0, 0, 0, 629, 3178, 1, 0, 0, 0, 631, 3183, 1, 0, 0, 0, + 633, 3189, 1, 0, 0, 0, 635, 3197, 1, 0, 0, 0, 637, 3206, 1, 0, 0, 0, 639, + 3212, 1, 0, 0, 0, 641, 3218, 1, 0, 0, 0, 643, 3225, 1, 0, 0, 0, 645, 3230, + 1, 0, 0, 0, 647, 3236, 1, 0, 0, 0, 649, 3244, 1, 0, 0, 0, 651, 3251, 1, + 0, 0, 0, 653, 3256, 1, 0, 0, 0, 655, 3260, 1, 0, 0, 0, 657, 3264, 1, 0, + 0, 0, 659, 3269, 1, 0, 0, 0, 661, 3274, 1, 0, 0, 0, 663, 3277, 1, 0, 0, + 0, 665, 3282, 1, 0, 0, 0, 667, 3293, 1, 0, 0, 0, 669, 3298, 1, 0, 0, 0, + 671, 3309, 1, 0, 0, 0, 673, 3318, 1, 0, 0, 0, 675, 3323, 1, 0, 0, 0, 677, + 3336, 1, 0, 0, 0, 679, 3350, 1, 0, 0, 0, 681, 3361, 1, 0, 0, 0, 683, 3370, + 1, 0, 0, 0, 685, 3377, 1, 0, 0, 0, 687, 3384, 1, 0, 0, 0, 689, 3390, 1, + 0, 0, 0, 691, 3393, 1, 0, 0, 0, 693, 3399, 1, 0, 0, 0, 695, 3411, 1, 0, + 0, 0, 697, 3416, 1, 0, 0, 0, 699, 3427, 1, 0, 0, 0, 701, 3434, 1, 0, 0, + 0, 703, 3439, 1, 0, 0, 0, 705, 3447, 1, 0, 0, 0, 707, 3453, 1, 0, 0, 0, + 709, 3460, 1, 0, 0, 0, 711, 3462, 1, 0, 0, 0, 713, 3470, 1, 0, 0, 0, 715, + 3476, 1, 0, 0, 0, 717, 3478, 1, 0, 0, 0, 719, 3481, 1, 0, 0, 0, 721, 3486, + 1, 0, 0, 0, 723, 3488, 1, 0, 0, 0, 725, 3490, 1, 0, 0, 0, 727, 3492, 1, + 0, 0, 0, 729, 3494, 1, 0, 0, 0, 731, 3498, 1, 0, 0, 0, 733, 3502, 1, 0, + 0, 0, 735, 3506, 1, 0, 0, 0, 737, 3509, 1, 0, 0, 0, 739, 3512, 1, 0, 0, + 0, 741, 3515, 1, 0, 0, 0, 743, 3518, 1, 0, 0, 0, 745, 3521, 1, 0, 0, 0, + 747, 3524, 1, 0, 0, 0, 749, 3527, 1, 0, 0, 0, 751, 3531, 1, 0, 0, 0, 753, + 3535, 1, 0, 0, 0, 755, 3539, 1, 0, 0, 0, 757, 3543, 1, 0, 0, 0, 759, 3547, + 1, 0, 0, 0, 761, 3550, 1, 0, 0, 0, 763, 3553, 1, 0, 0, 0, 765, 3556, 1, + 0, 0, 0, 767, 3559, 1, 0, 0, 0, 769, 3562, 1, 0, 0, 0, 771, 3565, 1, 0, + 0, 0, 773, 3568, 1, 0, 0, 0, 775, 3571, 1, 0, 0, 0, 777, 3574, 1, 0, 0, + 0, 779, 3578, 1, 0, 0, 0, 781, 3581, 1, 0, 0, 0, 783, 3585, 1, 0, 0, 0, + 785, 3588, 1, 0, 0, 0, 787, 3591, 1, 0, 0, 0, 789, 3594, 1, 0, 0, 0, 791, + 3596, 1, 0, 0, 0, 793, 3598, 1, 0, 0, 0, 795, 3600, 1, 0, 0, 0, 797, 3602, + 1, 0, 0, 0, 799, 3604, 1, 0, 0, 0, 801, 3606, 1, 0, 0, 0, 803, 3608, 1, + 0, 0, 0, 805, 3610, 1, 0, 0, 0, 807, 3612, 1, 0, 0, 0, 809, 3614, 1, 0, + 0, 0, 811, 3616, 1, 0, 0, 0, 813, 3618, 1, 0, 0, 0, 815, 3620, 1, 0, 0, + 0, 817, 3622, 1, 0, 0, 0, 819, 3624, 1, 0, 0, 0, 821, 3626, 1, 0, 0, 0, + 823, 3628, 1, 0, 0, 0, 825, 3630, 1, 0, 0, 0, 827, 3632, 1, 0, 0, 0, 829, + 3634, 1, 0, 0, 0, 831, 3636, 1, 0, 0, 0, 833, 3638, 1, 0, 0, 0, 835, 3640, + 1, 0, 0, 0, 837, 3642, 1, 0, 0, 0, 839, 3644, 1, 0, 0, 0, 841, 3646, 1, + 0, 0, 0, 843, 3648, 1, 0, 0, 0, 845, 3650, 1, 0, 0, 0, 847, 3652, 1, 0, + 0, 0, 849, 3654, 1, 0, 0, 0, 851, 3656, 1, 0, 0, 0, 853, 3658, 1, 0, 0, + 0, 855, 3661, 1, 0, 0, 0, 857, 3678, 1, 0, 0, 0, 859, 3680, 1, 0, 0, 0, + 861, 3694, 1, 0, 0, 0, 863, 3705, 1, 0, 0, 0, 865, 3716, 1, 0, 0, 0, 867, + 3718, 1, 0, 0, 0, 869, 3720, 1, 0, 0, 0, 871, 3722, 1, 0, 0, 0, 873, 3724, + 1, 0, 0, 0, 875, 3726, 1, 0, 0, 0, 877, 3728, 1, 0, 0, 0, 879, 3730, 1, + 0, 0, 0, 881, 3732, 1, 0, 0, 0, 883, 3734, 1, 0, 0, 0, 885, 3736, 1, 0, + 0, 0, 887, 3738, 1, 0, 0, 0, 889, 898, 3, 773, 386, 0, 890, 891, 7, 0, + 0, 0, 891, 892, 7, 1, 0, 0, 892, 893, 7, 2, 0, 0, 893, 894, 7, 3, 0, 0, + 894, 895, 7, 0, 0, 0, 895, 896, 7, 4, 0, 0, 896, 898, 7, 5, 0, 0, 897, + 889, 1, 0, 0, 0, 897, 890, 1, 0, 0, 0, 898, 2, 1, 0, 0, 0, 899, 900, 3, + 709, 354, 0, 900, 4, 1, 0, 0, 0, 901, 902, 7, 6, 0, 0, 902, 903, 7, 7, + 0, 0, 903, 904, 7, 8, 0, 0, 904, 918, 7, 4, 0, 0, 905, 906, 7, 9, 0, 0, + 906, 907, 7, 10, 0, 0, 907, 908, 7, 3, 0, 0, 908, 909, 7, 5, 0, 0, 909, + 918, 7, 4, 0, 0, 910, 911, 7, 8, 0, 0, 911, 912, 7, 11, 0, 0, 912, 913, + 7, 12, 0, 0, 913, 914, 7, 11, 0, 0, 914, 915, 7, 13, 0, 0, 915, 916, 7, + 14, 0, 0, 916, 918, 7, 11, 0, 0, 917, 901, 1, 0, 0, 0, 917, 905, 1, 0, + 0, 0, 917, 910, 1, 0, 0, 0, 918, 6, 1, 0, 0, 0, 919, 921, 3, 13, 6, 0, + 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, + 923, 3, 15, 7, 0, 923, 8, 1, 0, 0, 0, 924, 926, 3, 13, 6, 0, 925, 924, + 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 928, 3, 17, + 8, 0, 928, 10, 1, 0, 0, 0, 929, 931, 3, 13, 6, 0, 930, 929, 1, 0, 0, 0, + 930, 931, 1, 0, 0, 0, 931, 932, 1, 0, 0, 0, 932, 933, 3, 19, 9, 0, 933, + 12, 1, 0, 0, 0, 934, 935, 3, 797, 398, 0, 935, 14, 1, 0, 0, 0, 936, 940, + 3, 829, 414, 0, 937, 939, 3, 21, 10, 0, 938, 937, 1, 0, 0, 0, 939, 942, + 1, 0, 0, 0, 940, 938, 1, 0, 0, 0, 940, 941, 1, 0, 0, 0, 941, 943, 1, 0, + 0, 0, 942, 940, 1, 0, 0, 0, 943, 944, 3, 829, 414, 0, 944, 16, 1, 0, 0, + 0, 945, 949, 3, 801, 400, 0, 946, 948, 3, 23, 11, 0, 947, 946, 1, 0, 0, + 0, 948, 951, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, + 952, 1, 0, 0, 0, 951, 949, 1, 0, 0, 0, 952, 953, 3, 801, 400, 0, 953, 18, + 1, 0, 0, 0, 954, 958, 3, 809, 404, 0, 955, 957, 3, 25, 12, 0, 956, 955, + 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 959, 1, 0, + 0, 0, 959, 961, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 962, 3, 809, 404, + 0, 962, 20, 1, 0, 0, 0, 963, 968, 3, 27, 13, 0, 964, 968, 8, 15, 0, 0, + 965, 966, 5, 39, 0, 0, 966, 968, 5, 39, 0, 0, 967, 963, 1, 0, 0, 0, 967, + 964, 1, 0, 0, 0, 967, 965, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 967, + 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 22, 1, 0, 0, 0, 971, 976, 3, 27, + 13, 0, 972, 976, 8, 16, 0, 0, 973, 974, 5, 34, 0, 0, 974, 976, 5, 34, 0, + 0, 975, 971, 1, 0, 0, 0, 975, 972, 1, 0, 0, 0, 975, 973, 1, 0, 0, 0, 976, + 977, 1, 0, 0, 0, 977, 975, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 24, 1, + 0, 0, 0, 979, 984, 3, 27, 13, 0, 980, 984, 8, 17, 0, 0, 981, 982, 5, 96, + 0, 0, 982, 984, 5, 96, 0, 0, 983, 979, 1, 0, 0, 0, 983, 980, 1, 0, 0, 0, + 983, 981, 1, 0, 0, 0, 984, 985, 1, 0, 0, 0, 985, 983, 1, 0, 0, 0, 985, + 986, 1, 0, 0, 0, 986, 26, 1, 0, 0, 0, 987, 999, 3, 29, 14, 0, 988, 999, + 3, 31, 15, 0, 989, 999, 3, 33, 16, 0, 990, 999, 3, 35, 17, 0, 991, 999, + 3, 37, 18, 0, 992, 999, 3, 39, 19, 0, 993, 999, 3, 41, 20, 0, 994, 999, + 3, 43, 21, 0, 995, 999, 3, 45, 22, 0, 996, 999, 3, 47, 23, 0, 997, 999, + 3, 49, 24, 0, 998, 987, 1, 0, 0, 0, 998, 988, 1, 0, 0, 0, 998, 989, 1, + 0, 0, 0, 998, 990, 1, 0, 0, 0, 998, 991, 1, 0, 0, 0, 998, 992, 1, 0, 0, + 0, 998, 993, 1, 0, 0, 0, 998, 994, 1, 0, 0, 0, 998, 995, 1, 0, 0, 0, 998, + 996, 1, 0, 0, 0, 998, 997, 1, 0, 0, 0, 999, 28, 1, 0, 0, 0, 1000, 1001, + 3, 831, 415, 0, 1001, 1002, 3, 831, 415, 0, 1002, 30, 1, 0, 0, 0, 1003, + 1004, 3, 831, 415, 0, 1004, 1005, 3, 829, 414, 0, 1005, 32, 1, 0, 0, 0, + 1006, 1007, 3, 831, 415, 0, 1007, 1008, 3, 801, 400, 0, 1008, 34, 1, 0, + 0, 0, 1009, 1010, 3, 831, 415, 0, 1010, 1011, 3, 809, 404, 0, 1011, 36, + 1, 0, 0, 0, 1012, 1013, 3, 831, 415, 0, 1013, 1014, 5, 116, 0, 0, 1014, + 38, 1, 0, 0, 0, 1015, 1016, 3, 831, 415, 0, 1016, 1017, 5, 98, 0, 0, 1017, + 40, 1, 0, 0, 0, 1018, 1019, 3, 831, 415, 0, 1019, 1020, 5, 110, 0, 0, 1020, + 42, 1, 0, 0, 0, 1021, 1022, 3, 831, 415, 0, 1022, 1023, 5, 114, 0, 0, 1023, + 44, 1, 0, 0, 0, 1024, 1025, 3, 831, 415, 0, 1025, 1026, 5, 102, 0, 0, 1026, + 46, 1, 0, 0, 0, 1027, 1028, 3, 51, 25, 0, 1028, 1029, 3, 847, 423, 0, 1029, + 1030, 3, 847, 423, 0, 1030, 1031, 3, 847, 423, 0, 1031, 1032, 3, 847, 423, + 0, 1032, 48, 1, 0, 0, 0, 1033, 1034, 3, 53, 26, 0, 1034, 1035, 3, 847, + 423, 0, 1035, 1036, 3, 847, 423, 0, 1036, 1037, 3, 847, 423, 0, 1037, 1038, + 3, 847, 423, 0, 1038, 1039, 3, 847, 423, 0, 1039, 1040, 3, 847, 423, 0, + 1040, 50, 1, 0, 0, 0, 1041, 1042, 3, 831, 415, 0, 1042, 1043, 5, 117, 0, + 0, 1043, 52, 1, 0, 0, 0, 1044, 1045, 3, 831, 415, 0, 1045, 1046, 5, 85, + 0, 0, 1046, 54, 1, 0, 0, 0, 1047, 1048, 7, 18, 0, 0, 1048, 1052, 3, 829, + 414, 0, 1049, 1051, 3, 873, 436, 0, 1050, 1049, 1, 0, 0, 0, 1051, 1054, + 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1071, + 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1055, 1059, 3, 847, 423, 0, 1056, 1058, + 3, 873, 436, 0, 1057, 1056, 1, 0, 0, 0, 1058, 1061, 1, 0, 0, 0, 1059, 1057, + 1, 0, 0, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1062, 1, 0, 0, 0, 1061, 1059, + 1, 0, 0, 0, 1062, 1066, 3, 847, 423, 0, 1063, 1065, 3, 873, 436, 0, 1064, + 1063, 1, 0, 0, 0, 1065, 1068, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1066, + 1067, 1, 0, 0, 0, 1067, 1070, 1, 0, 0, 0, 1068, 1066, 1, 0, 0, 0, 1069, + 1055, 1, 0, 0, 0, 1070, 1073, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1071, + 1072, 1, 0, 0, 0, 1072, 1074, 1, 0, 0, 0, 1073, 1071, 1, 0, 0, 0, 1074, + 1075, 3, 829, 414, 0, 1075, 56, 1, 0, 0, 0, 1076, 1077, 3, 77, 38, 0, 1077, + 1078, 3, 75, 37, 0, 1078, 58, 1, 0, 0, 0, 1079, 1080, 3, 77, 38, 0, 1080, + 60, 1, 0, 0, 0, 1081, 1082, 3, 77, 38, 0, 1082, 1083, 3, 99, 49, 0, 1083, + 62, 1, 0, 0, 0, 1084, 1085, 3, 83, 41, 0, 1085, 1086, 3, 75, 37, 0, 1086, + 64, 1, 0, 0, 0, 1087, 1088, 3, 83, 41, 0, 1088, 66, 1, 0, 0, 0, 1089, 1090, + 3, 83, 41, 0, 1090, 1091, 3, 99, 49, 0, 1091, 68, 1, 0, 0, 0, 1092, 1093, + 3, 73, 36, 0, 1093, 1094, 3, 75, 37, 0, 1094, 70, 1, 0, 0, 0, 1095, 1096, + 3, 73, 36, 0, 1096, 1097, 3, 99, 49, 0, 1097, 72, 1, 0, 0, 0, 1098, 1105, + 3, 849, 424, 0, 1099, 1101, 3, 843, 421, 0, 1100, 1099, 1, 0, 0, 0, 1100, + 1101, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1104, 3, 849, 424, 0, 1103, + 1100, 1, 0, 0, 0, 1104, 1107, 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1105, + 1106, 1, 0, 0, 0, 1106, 74, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1108, 1109, + 7, 1, 0, 0, 1109, 76, 1, 0, 0, 0, 1110, 1111, 3, 79, 39, 0, 1111, 1112, + 7, 4, 0, 0, 1112, 1113, 3, 81, 40, 0, 1113, 78, 1, 0, 0, 0, 1114, 1117, + 3, 83, 41, 0, 1115, 1117, 3, 73, 36, 0, 1116, 1114, 1, 0, 0, 0, 1116, 1115, + 1, 0, 0, 0, 1117, 80, 1, 0, 0, 0, 1118, 1119, 3, 85, 42, 0, 1119, 82, 1, + 0, 0, 0, 1120, 1121, 3, 73, 36, 0, 1121, 1123, 3, 823, 411, 0, 1122, 1124, + 3, 73, 36, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1129, + 1, 0, 0, 0, 1125, 1126, 3, 823, 411, 0, 1126, 1127, 3, 73, 36, 0, 1127, + 1129, 1, 0, 0, 0, 1128, 1120, 1, 0, 0, 0, 1128, 1125, 1, 0, 0, 0, 1129, + 84, 1, 0, 0, 0, 1130, 1133, 3, 825, 412, 0, 1131, 1133, 3, 819, 409, 0, + 1132, 1130, 1, 0, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, + 1133, 1134, 1, 0, 0, 0, 1134, 1135, 3, 73, 36, 0, 1135, 86, 1, 0, 0, 0, + 1136, 1141, 3, 89, 44, 0, 1137, 1139, 5, 95, 0, 0, 1138, 1137, 1, 0, 0, + 0, 1138, 1139, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1142, 3, 847, + 423, 0, 1141, 1138, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 1141, 1, + 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 88, 1, 0, 0, 0, 1145, 1146, 5, 48, + 0, 0, 1146, 1147, 5, 120, 0, 0, 1147, 90, 1, 0, 0, 0, 1148, 1153, 3, 93, + 46, 0, 1149, 1151, 5, 95, 0, 0, 1150, 1149, 1, 0, 0, 0, 1150, 1151, 1, + 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1154, 3, 851, 425, 0, 1153, 1150, + 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, + 1, 0, 0, 0, 1156, 92, 1, 0, 0, 0, 1157, 1158, 5, 48, 0, 0, 1158, 1159, + 5, 111, 0, 0, 1159, 94, 1, 0, 0, 0, 1160, 1165, 3, 97, 48, 0, 1161, 1163, + 5, 95, 0, 0, 1162, 1161, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, + 1, 0, 0, 0, 1164, 1166, 3, 853, 426, 0, 1165, 1162, 1, 0, 0, 0, 1166, 1167, + 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 96, 1, + 0, 0, 0, 1169, 1170, 5, 48, 0, 0, 1170, 1171, 5, 98, 0, 0, 1171, 98, 1, + 0, 0, 0, 1172, 1173, 7, 19, 0, 0, 1173, 100, 1, 0, 0, 0, 1174, 1175, 7, + 10, 0, 0, 1175, 1176, 7, 20, 0, 0, 1176, 1177, 7, 5, 0, 0, 1177, 102, 1, + 0, 0, 0, 1178, 1179, 7, 10, 0, 0, 1179, 1180, 7, 21, 0, 0, 1180, 1181, + 7, 13, 0, 0, 1181, 1182, 7, 5, 0, 0, 1182, 104, 1, 0, 0, 0, 1183, 1184, + 7, 10, 0, 0, 1184, 1185, 7, 3, 0, 0, 1185, 1186, 7, 3, 0, 0, 1186, 106, + 1, 0, 0, 0, 1187, 1188, 7, 10, 0, 0, 1188, 1189, 7, 3, 0, 0, 1189, 1190, + 7, 3, 0, 0, 1190, 1191, 5, 95, 0, 0, 1191, 1192, 7, 22, 0, 0, 1192, 1193, + 7, 0, 0, 0, 1193, 1194, 7, 9, 0, 0, 1194, 1195, 7, 9, 0, 0, 1195, 1196, + 7, 4, 0, 0, 1196, 1197, 7, 7, 0, 0, 1197, 1198, 7, 4, 0, 0, 1198, 1199, + 7, 11, 0, 0, 1199, 1200, 7, 6, 0, 0, 1200, 108, 1, 0, 0, 0, 1201, 1202, + 7, 10, 0, 0, 1202, 1203, 7, 11, 0, 0, 1203, 1204, 7, 22, 0, 0, 1204, 110, + 1, 0, 0, 0, 1205, 1206, 7, 10, 0, 0, 1206, 1207, 7, 11, 0, 0, 1207, 1208, + 7, 23, 0, 0, 1208, 112, 1, 0, 0, 0, 1209, 1210, 7, 10, 0, 0, 1210, 1211, + 7, 7, 0, 0, 1211, 1212, 7, 7, 0, 0, 1212, 1213, 7, 10, 0, 0, 1213, 1214, + 7, 23, 0, 0, 1214, 114, 1, 0, 0, 0, 1215, 1216, 7, 10, 0, 0, 1216, 1217, + 7, 5, 0, 0, 1217, 116, 1, 0, 0, 0, 1218, 1219, 7, 10, 0, 0, 1219, 1220, + 7, 5, 0, 0, 1220, 1221, 7, 21, 0, 0, 1221, 118, 1, 0, 0, 0, 1222, 1223, + 7, 10, 0, 0, 1223, 1224, 7, 5, 0, 0, 1224, 1225, 7, 21, 0, 0, 1225, 1226, + 7, 4, 0, 0, 1226, 1227, 7, 11, 0, 0, 1227, 1228, 7, 22, 0, 0, 1228, 1229, + 7, 0, 0, 0, 1229, 1230, 7, 11, 0, 0, 1230, 1231, 7, 24, 0, 0, 1231, 120, + 1, 0, 0, 0, 1232, 1233, 7, 10, 0, 0, 1233, 1234, 7, 5, 0, 0, 1234, 1235, + 7, 0, 0, 0, 1235, 1236, 7, 11, 0, 0, 1236, 122, 1, 0, 0, 0, 1237, 1238, + 7, 10, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 124, 1, 0, 0, 0, 1240, 1241, + 7, 10, 0, 0, 1241, 1242, 7, 6, 0, 0, 1242, 1243, 7, 10, 0, 0, 1243, 1244, + 7, 11, 0, 0, 1244, 126, 1, 0, 0, 0, 1245, 1246, 7, 10, 0, 0, 1246, 1247, + 7, 25, 0, 0, 1247, 1248, 7, 24, 0, 0, 1248, 128, 1, 0, 0, 0, 1249, 1250, + 7, 20, 0, 0, 1250, 1251, 7, 0, 0, 0, 1251, 1252, 7, 24, 0, 0, 1252, 130, + 1, 0, 0, 0, 1253, 1254, 7, 20, 0, 0, 1254, 1255, 7, 0, 0, 0, 1255, 1256, + 7, 24, 0, 0, 1256, 1257, 7, 0, 0, 0, 1257, 1258, 7, 11, 0, 0, 1258, 1259, + 7, 6, 0, 0, 1259, 132, 1, 0, 0, 0, 1260, 1261, 7, 20, 0, 0, 1261, 1262, + 7, 0, 0, 0, 1262, 1263, 7, 11, 0, 0, 1263, 1264, 7, 10, 0, 0, 1264, 1265, + 7, 7, 0, 0, 1265, 1266, 7, 23, 0, 0, 1266, 134, 1, 0, 0, 0, 1267, 1268, + 7, 20, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 13, 0, 0, 1270, 1271, + 7, 3, 0, 0, 1271, 136, 1, 0, 0, 0, 1272, 1273, 7, 20, 0, 0, 1273, 1274, + 7, 13, 0, 0, 1274, 1275, 7, 13, 0, 0, 1275, 1276, 7, 3, 0, 0, 1276, 1277, + 7, 4, 0, 0, 1277, 1278, 7, 10, 0, 0, 1278, 1279, 7, 11, 0, 0, 1279, 138, + 1, 0, 0, 0, 1280, 1281, 7, 20, 0, 0, 1281, 1282, 7, 13, 0, 0, 1282, 1283, + 7, 6, 0, 0, 1283, 1284, 7, 26, 0, 0, 1284, 140, 1, 0, 0, 0, 1285, 1286, + 7, 20, 0, 0, 1286, 1287, 7, 6, 0, 0, 1287, 1288, 7, 7, 0, 0, 1288, 1289, + 7, 0, 0, 0, 1289, 1290, 7, 1, 0, 0, 1290, 142, 1, 0, 0, 0, 1291, 1292, + 7, 20, 0, 0, 1292, 1293, 7, 23, 0, 0, 1293, 144, 1, 0, 0, 0, 1294, 1295, + 7, 20, 0, 0, 1295, 1296, 7, 23, 0, 0, 1296, 1297, 7, 6, 0, 0, 1297, 1298, + 7, 4, 0, 0, 1298, 1299, 5, 95, 0, 0, 1299, 1300, 7, 3, 0, 0, 1300, 1301, + 7, 4, 0, 0, 1301, 1302, 7, 11, 0, 0, 1302, 1303, 7, 24, 0, 0, 1303, 1304, + 7, 6, 0, 0, 1304, 1305, 7, 26, 0, 0, 1305, 146, 1, 0, 0, 0, 1306, 1307, + 7, 20, 0, 0, 1307, 1308, 7, 23, 0, 0, 1308, 1309, 7, 6, 0, 0, 1309, 1310, + 7, 4, 0, 0, 1310, 1311, 7, 5, 0, 0, 1311, 148, 1, 0, 0, 0, 1312, 1313, + 7, 21, 0, 0, 1313, 1314, 7, 10, 0, 0, 1314, 1315, 7, 3, 0, 0, 1315, 1316, + 7, 3, 0, 0, 1316, 150, 1, 0, 0, 0, 1317, 1318, 7, 21, 0, 0, 1318, 1319, + 7, 10, 0, 0, 1319, 1320, 7, 7, 0, 0, 1320, 1321, 7, 22, 0, 0, 1321, 1322, + 7, 0, 0, 0, 1322, 1323, 7, 11, 0, 0, 1323, 1324, 7, 10, 0, 0, 1324, 1325, + 7, 3, 0, 0, 1325, 1326, 7, 0, 0, 0, 1326, 1327, 7, 6, 0, 0, 1327, 1328, + 7, 23, 0, 0, 1328, 152, 1, 0, 0, 0, 1329, 1330, 7, 21, 0, 0, 1330, 1331, + 7, 10, 0, 0, 1331, 1332, 7, 5, 0, 0, 1332, 1333, 7, 4, 0, 0, 1333, 154, + 1, 0, 0, 0, 1334, 1335, 7, 21, 0, 0, 1335, 1336, 7, 10, 0, 0, 1336, 1337, + 7, 5, 0, 0, 1337, 1338, 7, 6, 0, 0, 1338, 156, 1, 0, 0, 0, 1339, 1340, + 7, 21, 0, 0, 1340, 1341, 7, 4, 0, 0, 1341, 1342, 7, 0, 0, 0, 1342, 1343, + 7, 3, 0, 0, 1343, 158, 1, 0, 0, 0, 1344, 1345, 7, 21, 0, 0, 1345, 1346, + 7, 4, 0, 0, 1346, 1347, 7, 0, 0, 0, 1347, 1348, 7, 3, 0, 0, 1348, 1349, + 7, 0, 0, 0, 1349, 1350, 7, 11, 0, 0, 1350, 1351, 7, 24, 0, 0, 1351, 160, + 1, 0, 0, 0, 1352, 1353, 7, 21, 0, 0, 1353, 1354, 7, 26, 0, 0, 1354, 1355, + 7, 10, 0, 0, 1355, 1356, 7, 7, 0, 0, 1356, 162, 1, 0, 0, 0, 1357, 1358, + 7, 21, 0, 0, 1358, 1359, 7, 26, 0, 0, 1359, 1360, 7, 10, 0, 0, 1360, 1361, + 7, 7, 0, 0, 1361, 1362, 5, 95, 0, 0, 1362, 1363, 7, 3, 0, 0, 1363, 1364, + 7, 4, 0, 0, 1364, 1365, 7, 11, 0, 0, 1365, 1366, 7, 24, 0, 0, 1366, 1367, + 7, 6, 0, 0, 1367, 1368, 7, 26, 0, 0, 1368, 164, 1, 0, 0, 0, 1369, 1370, + 7, 21, 0, 0, 1370, 1371, 7, 26, 0, 0, 1371, 1372, 7, 10, 0, 0, 1372, 1373, + 7, 7, 0, 0, 1373, 1374, 7, 10, 0, 0, 1374, 1375, 7, 21, 0, 0, 1375, 1376, + 7, 6, 0, 0, 1376, 1377, 7, 4, 0, 0, 1377, 1378, 7, 7, 0, 0, 1378, 1379, + 5, 95, 0, 0, 1379, 1380, 7, 3, 0, 0, 1380, 1381, 7, 4, 0, 0, 1381, 1382, + 7, 11, 0, 0, 1382, 1383, 7, 24, 0, 0, 1383, 1384, 7, 6, 0, 0, 1384, 1385, + 7, 26, 0, 0, 1385, 166, 1, 0, 0, 0, 1386, 1387, 7, 21, 0, 0, 1387, 1388, + 7, 26, 0, 0, 1388, 1389, 7, 10, 0, 0, 1389, 1390, 7, 7, 0, 0, 1390, 1391, + 7, 10, 0, 0, 1391, 1392, 7, 21, 0, 0, 1392, 1393, 7, 6, 0, 0, 1393, 1394, + 7, 4, 0, 0, 1394, 1395, 7, 7, 0, 0, 1395, 1396, 7, 0, 0, 0, 1396, 1397, + 7, 5, 0, 0, 1397, 1398, 7, 6, 0, 0, 1398, 1399, 7, 0, 0, 0, 1399, 1400, + 7, 21, 0, 0, 1400, 1401, 7, 5, 0, 0, 1401, 168, 1, 0, 0, 0, 1402, 1403, + 7, 21, 0, 0, 1403, 1404, 7, 3, 0, 0, 1404, 1405, 7, 13, 0, 0, 1405, 1406, + 7, 5, 0, 0, 1406, 1407, 7, 4, 0, 0, 1407, 170, 1, 0, 0, 0, 1408, 1409, + 7, 21, 0, 0, 1409, 1410, 7, 13, 0, 0, 1410, 1411, 7, 10, 0, 0, 1411, 1412, + 7, 3, 0, 0, 1412, 1413, 7, 4, 0, 0, 1413, 1414, 7, 5, 0, 0, 1414, 1415, + 7, 21, 0, 0, 1415, 1416, 7, 4, 0, 0, 1416, 172, 1, 0, 0, 0, 1417, 1418, + 7, 21, 0, 0, 1418, 1419, 7, 13, 0, 0, 1419, 1420, 7, 3, 0, 0, 1420, 1421, + 7, 3, 0, 0, 1421, 1422, 7, 4, 0, 0, 1422, 1423, 7, 21, 0, 0, 1423, 1424, + 7, 6, 0, 0, 1424, 1425, 5, 95, 0, 0, 1425, 1426, 7, 3, 0, 0, 1426, 1427, + 7, 0, 0, 0, 1427, 1428, 7, 5, 0, 0, 1428, 1429, 7, 6, 0, 0, 1429, 174, + 1, 0, 0, 0, 1430, 1431, 7, 21, 0, 0, 1431, 1432, 7, 13, 0, 0, 1432, 1433, + 7, 1, 0, 0, 1433, 1434, 7, 1, 0, 0, 1434, 1435, 7, 0, 0, 0, 1435, 1436, + 7, 6, 0, 0, 1436, 176, 1, 0, 0, 0, 1437, 1438, 7, 21, 0, 0, 1438, 1439, + 7, 13, 0, 0, 1439, 1440, 7, 2, 0, 0, 1440, 1441, 7, 23, 0, 0, 1441, 178, + 1, 0, 0, 0, 1442, 1443, 7, 21, 0, 0, 1443, 1444, 7, 13, 0, 0, 1444, 1445, + 7, 5, 0, 0, 1445, 180, 1, 0, 0, 0, 1446, 1447, 7, 21, 0, 0, 1447, 1448, + 7, 13, 0, 0, 1448, 1449, 7, 5, 0, 0, 1449, 1450, 7, 26, 0, 0, 1450, 182, + 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 1453, 7, 13, 0, 0, 1453, 1454, + 7, 6, 0, 0, 1454, 184, 1, 0, 0, 0, 1455, 1456, 7, 21, 0, 0, 1456, 1457, + 7, 13, 0, 0, 1457, 1458, 7, 8, 0, 0, 1458, 1459, 7, 11, 0, 0, 1459, 1460, + 7, 6, 0, 0, 1460, 186, 1, 0, 0, 0, 1461, 1462, 7, 21, 0, 0, 1462, 1463, + 7, 7, 0, 0, 1463, 1464, 7, 4, 0, 0, 1464, 1465, 7, 10, 0, 0, 1465, 1466, + 7, 6, 0, 0, 1466, 1467, 7, 4, 0, 0, 1467, 188, 1, 0, 0, 0, 1468, 1469, + 7, 21, 0, 0, 1469, 1470, 7, 8, 0, 0, 1470, 1471, 7, 7, 0, 0, 1471, 1472, + 7, 7, 0, 0, 1472, 1473, 7, 4, 0, 0, 1473, 1474, 7, 11, 0, 0, 1474, 1475, + 7, 6, 0, 0, 1475, 1476, 5, 95, 0, 0, 1476, 1477, 7, 22, 0, 0, 1477, 1478, + 7, 10, 0, 0, 1478, 1479, 7, 6, 0, 0, 1479, 1480, 7, 4, 0, 0, 1480, 190, + 1, 0, 0, 0, 1481, 1482, 7, 21, 0, 0, 1482, 1483, 7, 8, 0, 0, 1483, 1484, + 7, 7, 0, 0, 1484, 1485, 7, 7, 0, 0, 1485, 1486, 7, 4, 0, 0, 1486, 1487, + 7, 11, 0, 0, 1487, 1488, 7, 6, 0, 0, 1488, 1489, 5, 95, 0, 0, 1489, 1490, + 7, 24, 0, 0, 1490, 1491, 7, 7, 0, 0, 1491, 1492, 7, 10, 0, 0, 1492, 1493, + 7, 2, 0, 0, 1493, 1494, 7, 26, 0, 0, 1494, 192, 1, 0, 0, 0, 1495, 1496, + 7, 21, 0, 0, 1496, 1497, 7, 8, 0, 0, 1497, 1498, 7, 7, 0, 0, 1498, 1499, + 7, 7, 0, 0, 1499, 1500, 7, 4, 0, 0, 1500, 1501, 7, 11, 0, 0, 1501, 1502, + 7, 6, 0, 0, 1502, 1503, 5, 95, 0, 0, 1503, 1504, 7, 2, 0, 0, 1504, 1505, + 7, 7, 0, 0, 1505, 1506, 7, 13, 0, 0, 1506, 1507, 7, 2, 0, 0, 1507, 1508, + 7, 4, 0, 0, 1508, 1509, 7, 7, 0, 0, 1509, 1510, 7, 6, 0, 0, 1510, 1511, + 7, 23, 0, 0, 1511, 1512, 5, 95, 0, 0, 1512, 1513, 7, 24, 0, 0, 1513, 1514, + 7, 7, 0, 0, 1514, 1515, 7, 10, 0, 0, 1515, 1516, 7, 2, 0, 0, 1516, 1517, + 7, 26, 0, 0, 1517, 194, 1, 0, 0, 0, 1518, 1519, 7, 21, 0, 0, 1519, 1520, + 7, 8, 0, 0, 1520, 1521, 7, 7, 0, 0, 1521, 1522, 7, 7, 0, 0, 1522, 1523, + 7, 4, 0, 0, 1523, 1524, 7, 11, 0, 0, 1524, 1525, 7, 6, 0, 0, 1525, 1526, + 5, 95, 0, 0, 1526, 1527, 7, 5, 0, 0, 1527, 1528, 7, 21, 0, 0, 1528, 1529, + 7, 26, 0, 0, 1529, 1530, 7, 4, 0, 0, 1530, 1531, 7, 1, 0, 0, 1531, 1532, + 7, 10, 0, 0, 1532, 196, 1, 0, 0, 0, 1533, 1534, 7, 21, 0, 0, 1534, 1535, + 7, 8, 0, 0, 1535, 1536, 7, 7, 0, 0, 1536, 1537, 7, 7, 0, 0, 1537, 1538, + 7, 4, 0, 0, 1538, 1539, 7, 11, 0, 0, 1539, 1540, 7, 6, 0, 0, 1540, 1541, + 5, 95, 0, 0, 1541, 1542, 7, 6, 0, 0, 1542, 1543, 7, 0, 0, 0, 1543, 1544, + 7, 1, 0, 0, 1544, 1545, 7, 4, 0, 0, 1545, 198, 1, 0, 0, 0, 1546, 1547, + 7, 21, 0, 0, 1547, 1548, 7, 8, 0, 0, 1548, 1549, 7, 7, 0, 0, 1549, 1550, + 7, 7, 0, 0, 1550, 1551, 7, 4, 0, 0, 1551, 1552, 7, 11, 0, 0, 1552, 1553, + 7, 6, 0, 0, 1553, 1554, 5, 95, 0, 0, 1554, 1555, 7, 6, 0, 0, 1555, 1556, + 7, 0, 0, 0, 1556, 1557, 7, 1, 0, 0, 1557, 1558, 7, 4, 0, 0, 1558, 1559, + 7, 5, 0, 0, 1559, 1560, 7, 6, 0, 0, 1560, 1561, 7, 10, 0, 0, 1561, 1562, + 7, 1, 0, 0, 1562, 1563, 7, 2, 0, 0, 1563, 200, 1, 0, 0, 0, 1564, 1565, + 7, 22, 0, 0, 1565, 1566, 7, 10, 0, 0, 1566, 1567, 7, 6, 0, 0, 1567, 1568, + 7, 4, 0, 0, 1568, 202, 1, 0, 0, 0, 1569, 1570, 7, 22, 0, 0, 1570, 1571, + 7, 10, 0, 0, 1571, 1572, 7, 6, 0, 0, 1572, 1573, 7, 4, 0, 0, 1573, 1574, + 7, 6, 0, 0, 1574, 1575, 7, 0, 0, 0, 1575, 1576, 7, 1, 0, 0, 1576, 1577, + 7, 4, 0, 0, 1577, 204, 1, 0, 0, 0, 1578, 1579, 7, 22, 0, 0, 1579, 1580, + 7, 10, 0, 0, 1580, 1581, 7, 23, 0, 0, 1581, 206, 1, 0, 0, 0, 1582, 1583, + 7, 22, 0, 0, 1583, 1584, 7, 4, 0, 0, 1584, 1585, 7, 21, 0, 0, 1585, 208, + 1, 0, 0, 0, 1586, 1587, 7, 22, 0, 0, 1587, 1588, 7, 4, 0, 0, 1588, 1589, + 7, 21, 0, 0, 1589, 1590, 7, 0, 0, 0, 1590, 1591, 7, 1, 0, 0, 1591, 1592, + 7, 10, 0, 0, 1592, 1593, 7, 3, 0, 0, 1593, 210, 1, 0, 0, 0, 1594, 1595, + 7, 22, 0, 0, 1595, 1596, 7, 4, 0, 0, 1596, 1597, 7, 24, 0, 0, 1597, 1598, + 7, 7, 0, 0, 1598, 1599, 7, 4, 0, 0, 1599, 1600, 7, 4, 0, 0, 1600, 1601, + 7, 5, 0, 0, 1601, 212, 1, 0, 0, 0, 1602, 1603, 7, 22, 0, 0, 1603, 1604, + 7, 4, 0, 0, 1604, 1605, 7, 3, 0, 0, 1605, 1606, 7, 4, 0, 0, 1606, 1607, + 7, 6, 0, 0, 1607, 1608, 7, 4, 0, 0, 1608, 214, 1, 0, 0, 0, 1609, 1610, + 7, 22, 0, 0, 1610, 1611, 7, 4, 0, 0, 1611, 1612, 7, 5, 0, 0, 1612, 1613, + 7, 21, 0, 0, 1613, 216, 1, 0, 0, 0, 1614, 1615, 7, 22, 0, 0, 1615, 1616, + 7, 4, 0, 0, 1616, 1617, 7, 5, 0, 0, 1617, 1618, 7, 21, 0, 0, 1618, 1619, + 7, 4, 0, 0, 1619, 1620, 7, 11, 0, 0, 1620, 1621, 7, 22, 0, 0, 1621, 1622, + 7, 0, 0, 0, 1622, 1623, 7, 11, 0, 0, 1623, 1624, 7, 24, 0, 0, 1624, 218, + 1, 0, 0, 0, 1625, 1626, 7, 22, 0, 0, 1626, 1627, 7, 4, 0, 0, 1627, 1628, + 7, 6, 0, 0, 1628, 1629, 7, 10, 0, 0, 1629, 1630, 7, 21, 0, 0, 1630, 1631, + 7, 26, 0, 0, 1631, 220, 1, 0, 0, 0, 1632, 1633, 7, 22, 0, 0, 1633, 1634, + 7, 0, 0, 0, 1634, 1635, 7, 5, 0, 0, 1635, 1636, 7, 6, 0, 0, 1636, 1637, + 7, 0, 0, 0, 1637, 1638, 7, 11, 0, 0, 1638, 1639, 7, 21, 0, 0, 1639, 1640, + 7, 6, 0, 0, 1640, 222, 1, 0, 0, 0, 1641, 1642, 7, 22, 0, 0, 1642, 1643, + 7, 13, 0, 0, 1643, 1644, 7, 8, 0, 0, 1644, 1645, 7, 20, 0, 0, 1645, 1646, + 7, 3, 0, 0, 1646, 1647, 7, 4, 0, 0, 1647, 224, 1, 0, 0, 0, 1648, 1649, + 7, 22, 0, 0, 1649, 1650, 7, 7, 0, 0, 1650, 1651, 7, 13, 0, 0, 1651, 1652, + 7, 2, 0, 0, 1652, 226, 1, 0, 0, 0, 1653, 1654, 7, 22, 0, 0, 1654, 1655, + 7, 8, 0, 0, 1655, 1656, 7, 7, 0, 0, 1656, 1657, 7, 10, 0, 0, 1657, 1658, + 7, 6, 0, 0, 1658, 1659, 7, 0, 0, 0, 1659, 1660, 7, 13, 0, 0, 1660, 1661, + 7, 11, 0, 0, 1661, 228, 1, 0, 0, 0, 1662, 1663, 7, 22, 0, 0, 1663, 1664, + 7, 8, 0, 0, 1664, 1665, 7, 7, 0, 0, 1665, 1666, 7, 10, 0, 0, 1666, 1667, + 7, 6, 0, 0, 1667, 1668, 7, 0, 0, 0, 1668, 1669, 7, 13, 0, 0, 1669, 1670, + 7, 11, 0, 0, 1670, 1671, 5, 95, 0, 0, 1671, 1672, 7, 20, 0, 0, 1672, 1673, + 7, 4, 0, 0, 1673, 1674, 7, 6, 0, 0, 1674, 1675, 7, 14, 0, 0, 1675, 1676, + 7, 4, 0, 0, 1676, 1677, 7, 4, 0, 0, 1677, 1678, 7, 11, 0, 0, 1678, 230, + 1, 0, 0, 0, 1679, 1680, 7, 4, 0, 0, 1680, 1681, 7, 3, 0, 0, 1681, 1682, + 7, 4, 0, 0, 1682, 1683, 7, 1, 0, 0, 1683, 1684, 7, 4, 0, 0, 1684, 1685, + 7, 11, 0, 0, 1685, 1686, 7, 6, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, + 7, 0, 0, 0, 1688, 1689, 7, 22, 0, 0, 1689, 232, 1, 0, 0, 0, 1690, 1691, + 7, 4, 0, 0, 1691, 1692, 7, 3, 0, 0, 1692, 1693, 7, 5, 0, 0, 1693, 1694, + 7, 4, 0, 0, 1694, 234, 1, 0, 0, 0, 1695, 1696, 7, 4, 0, 0, 1696, 1697, + 7, 11, 0, 0, 1697, 1698, 7, 22, 0, 0, 1698, 236, 1, 0, 0, 0, 1699, 1700, + 7, 4, 0, 0, 1700, 1701, 7, 18, 0, 0, 1701, 1702, 7, 21, 0, 0, 1702, 1703, + 7, 4, 0, 0, 1703, 1704, 7, 2, 0, 0, 1704, 1705, 7, 6, 0, 0, 1705, 238, + 1, 0, 0, 0, 1706, 1707, 7, 4, 0, 0, 1707, 1708, 7, 18, 0, 0, 1708, 1709, + 7, 0, 0, 0, 1709, 1710, 7, 5, 0, 0, 1710, 1711, 7, 6, 0, 0, 1711, 1712, + 7, 5, 0, 0, 1712, 240, 1, 0, 0, 0, 1713, 1714, 7, 4, 0, 0, 1714, 1715, + 7, 18, 0, 0, 1715, 1716, 7, 2, 0, 0, 1716, 242, 1, 0, 0, 0, 1717, 1718, + 7, 9, 0, 0, 1718, 1719, 7, 0, 0, 0, 1719, 1720, 7, 3, 0, 0, 1720, 1721, + 7, 6, 0, 0, 1721, 1722, 7, 4, 0, 0, 1722, 1723, 7, 7, 0, 0, 1723, 244, + 1, 0, 0, 0, 1724, 1725, 7, 9, 0, 0, 1725, 1726, 7, 0, 0, 0, 1726, 1727, + 7, 11, 0, 0, 1727, 1728, 7, 0, 0, 0, 1728, 1729, 7, 5, 0, 0, 1729, 1730, + 7, 26, 0, 0, 1730, 246, 1, 0, 0, 0, 1731, 1732, 7, 9, 0, 0, 1732, 1733, + 7, 3, 0, 0, 1733, 1734, 7, 13, 0, 0, 1734, 1735, 7, 10, 0, 0, 1735, 1736, + 7, 6, 0, 0, 1736, 248, 1, 0, 0, 0, 1737, 1738, 7, 9, 0, 0, 1738, 1739, + 7, 3, 0, 0, 1739, 1740, 7, 13, 0, 0, 1740, 1741, 7, 10, 0, 0, 1741, 1742, + 7, 6, 0, 0, 1742, 1743, 5, 49, 0, 0, 1743, 1744, 5, 54, 0, 0, 1744, 250, + 1, 0, 0, 0, 1745, 1746, 7, 9, 0, 0, 1746, 1747, 7, 3, 0, 0, 1747, 1748, + 7, 13, 0, 0, 1748, 1749, 7, 10, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, + 5, 51, 0, 0, 1751, 1752, 5, 50, 0, 0, 1752, 252, 1, 0, 0, 0, 1753, 1754, + 7, 9, 0, 0, 1754, 1755, 7, 3, 0, 0, 1755, 1756, 7, 13, 0, 0, 1756, 1757, + 7, 10, 0, 0, 1757, 1758, 7, 6, 0, 0, 1758, 1759, 5, 54, 0, 0, 1759, 1760, + 5, 52, 0, 0, 1760, 254, 1, 0, 0, 0, 1761, 1762, 7, 9, 0, 0, 1762, 1763, + 7, 3, 0, 0, 1763, 1764, 7, 13, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, + 7, 6, 0, 0, 1766, 1767, 5, 49, 0, 0, 1767, 1768, 5, 50, 0, 0, 1768, 1769, + 5, 56, 0, 0, 1769, 256, 1, 0, 0, 0, 1770, 1771, 7, 9, 0, 0, 1771, 1772, + 7, 3, 0, 0, 1772, 1773, 7, 13, 0, 0, 1773, 1774, 7, 10, 0, 0, 1774, 1775, + 7, 6, 0, 0, 1775, 1776, 5, 50, 0, 0, 1776, 1777, 5, 53, 0, 0, 1777, 1778, + 5, 54, 0, 0, 1778, 258, 1, 0, 0, 0, 1779, 1780, 7, 9, 0, 0, 1780, 1781, + 7, 3, 0, 0, 1781, 1782, 7, 13, 0, 0, 1782, 1783, 7, 13, 0, 0, 1783, 1784, + 7, 7, 0, 0, 1784, 260, 1, 0, 0, 0, 1785, 1786, 7, 9, 0, 0, 1786, 1787, + 7, 13, 0, 0, 1787, 1788, 7, 7, 0, 0, 1788, 262, 1, 0, 0, 0, 1789, 1790, + 7, 9, 0, 0, 1790, 1791, 7, 7, 0, 0, 1791, 1792, 7, 13, 0, 0, 1792, 1793, + 7, 1, 0, 0, 1793, 264, 1, 0, 0, 0, 1794, 1795, 7, 24, 0, 0, 1795, 1796, + 7, 7, 0, 0, 1796, 1797, 7, 13, 0, 0, 1797, 1798, 7, 8, 0, 0, 1798, 1799, + 7, 2, 0, 0, 1799, 266, 1, 0, 0, 0, 1800, 1801, 7, 26, 0, 0, 1801, 1802, + 7, 10, 0, 0, 1802, 1803, 7, 25, 0, 0, 1803, 1804, 7, 0, 0, 0, 1804, 1805, + 7, 11, 0, 0, 1805, 1806, 7, 24, 0, 0, 1806, 268, 1, 0, 0, 0, 1807, 1808, + 7, 26, 0, 0, 1808, 1809, 7, 13, 0, 0, 1809, 1810, 7, 1, 0, 0, 1810, 1811, + 7, 4, 0, 0, 1811, 1812, 5, 95, 0, 0, 1812, 1813, 7, 24, 0, 0, 1813, 1814, + 7, 7, 0, 0, 1814, 1815, 7, 10, 0, 0, 1815, 1816, 7, 2, 0, 0, 1816, 1817, + 7, 26, 0, 0, 1817, 270, 1, 0, 0, 0, 1818, 1819, 7, 26, 0, 0, 1819, 1820, + 7, 13, 0, 0, 1820, 1821, 7, 1, 0, 0, 1821, 1822, 7, 4, 0, 0, 1822, 1823, + 5, 95, 0, 0, 1823, 1824, 7, 2, 0, 0, 1824, 1825, 7, 7, 0, 0, 1825, 1826, + 7, 13, 0, 0, 1826, 1827, 7, 2, 0, 0, 1827, 1828, 7, 4, 0, 0, 1828, 1829, + 7, 7, 0, 0, 1829, 1830, 7, 6, 0, 0, 1830, 1831, 7, 23, 0, 0, 1831, 1832, + 5, 95, 0, 0, 1832, 1833, 7, 24, 0, 0, 1833, 1834, 7, 7, 0, 0, 1834, 1835, + 7, 10, 0, 0, 1835, 1836, 7, 2, 0, 0, 1836, 1837, 7, 26, 0, 0, 1837, 272, + 1, 0, 0, 0, 1838, 1839, 7, 26, 0, 0, 1839, 1840, 7, 13, 0, 0, 1840, 1841, + 7, 1, 0, 0, 1841, 1842, 7, 4, 0, 0, 1842, 1843, 5, 95, 0, 0, 1843, 1844, + 7, 5, 0, 0, 1844, 1845, 7, 21, 0, 0, 1845, 1846, 7, 26, 0, 0, 1846, 1847, + 7, 4, 0, 0, 1847, 1848, 7, 1, 0, 0, 1848, 1849, 7, 10, 0, 0, 1849, 274, + 1, 0, 0, 0, 1850, 1851, 7, 26, 0, 0, 1851, 1852, 7, 13, 0, 0, 1852, 1853, + 7, 8, 0, 0, 1853, 1854, 7, 7, 0, 0, 1854, 276, 1, 0, 0, 0, 1855, 1856, + 7, 0, 0, 0, 1856, 1857, 7, 9, 0, 0, 1857, 278, 1, 0, 0, 0, 1858, 1859, + 7, 0, 0, 0, 1859, 1860, 7, 11, 0, 0, 1860, 280, 1, 0, 0, 0, 1861, 1862, + 7, 0, 0, 0, 1862, 1863, 7, 11, 0, 0, 1863, 1864, 7, 5, 0, 0, 1864, 1865, + 7, 4, 0, 0, 1865, 1866, 7, 7, 0, 0, 1866, 1867, 7, 6, 0, 0, 1867, 282, + 1, 0, 0, 0, 1868, 1869, 7, 0, 0, 0, 1869, 1870, 7, 11, 0, 0, 1870, 1871, + 7, 6, 0, 0, 1871, 284, 1, 0, 0, 0, 1872, 1873, 7, 0, 0, 0, 1873, 1874, + 7, 11, 0, 0, 1874, 1875, 7, 6, 0, 0, 1875, 1876, 7, 4, 0, 0, 1876, 1877, + 7, 24, 0, 0, 1877, 1878, 7, 4, 0, 0, 1878, 1879, 7, 7, 0, 0, 1879, 286, + 1, 0, 0, 0, 1880, 1881, 7, 0, 0, 0, 1881, 1882, 7, 11, 0, 0, 1882, 1883, + 7, 6, 0, 0, 1883, 1884, 5, 56, 0, 0, 1884, 288, 1, 0, 0, 0, 1885, 1886, + 7, 0, 0, 0, 1886, 1887, 7, 11, 0, 0, 1887, 1888, 7, 6, 0, 0, 1888, 1889, + 7, 4, 0, 0, 1889, 1890, 7, 24, 0, 0, 1890, 1891, 7, 4, 0, 0, 1891, 1892, + 7, 7, 0, 0, 1892, 1893, 5, 56, 0, 0, 1893, 290, 1, 0, 0, 0, 1894, 1895, + 7, 0, 0, 0, 1895, 1896, 7, 11, 0, 0, 1896, 1897, 7, 6, 0, 0, 1897, 1898, + 5, 49, 0, 0, 1898, 1899, 5, 54, 0, 0, 1899, 292, 1, 0, 0, 0, 1900, 1901, + 7, 0, 0, 0, 1901, 1902, 7, 11, 0, 0, 1902, 1903, 7, 6, 0, 0, 1903, 1904, + 7, 4, 0, 0, 1904, 1905, 7, 24, 0, 0, 1905, 1906, 7, 4, 0, 0, 1906, 1907, + 7, 7, 0, 0, 1907, 1908, 5, 49, 0, 0, 1908, 1909, 5, 54, 0, 0, 1909, 294, + 1, 0, 0, 0, 1910, 1911, 7, 0, 0, 0, 1911, 1912, 7, 11, 0, 0, 1912, 1913, + 7, 6, 0, 0, 1913, 1914, 5, 51, 0, 0, 1914, 1915, 5, 50, 0, 0, 1915, 296, + 1, 0, 0, 0, 1916, 1917, 7, 0, 0, 0, 1917, 1918, 7, 11, 0, 0, 1918, 1919, + 7, 6, 0, 0, 1919, 1920, 7, 4, 0, 0, 1920, 1921, 7, 24, 0, 0, 1921, 1922, + 7, 4, 0, 0, 1922, 1923, 7, 7, 0, 0, 1923, 1924, 5, 51, 0, 0, 1924, 1925, + 5, 50, 0, 0, 1925, 298, 1, 0, 0, 0, 1926, 1927, 7, 0, 0, 0, 1927, 1928, + 7, 11, 0, 0, 1928, 1929, 7, 6, 0, 0, 1929, 1930, 5, 54, 0, 0, 1930, 1931, + 5, 52, 0, 0, 1931, 300, 1, 0, 0, 0, 1932, 1933, 7, 0, 0, 0, 1933, 1934, + 7, 11, 0, 0, 1934, 1935, 7, 6, 0, 0, 1935, 1936, 7, 4, 0, 0, 1936, 1937, + 7, 24, 0, 0, 1937, 1938, 7, 4, 0, 0, 1938, 1939, 7, 7, 0, 0, 1939, 1940, + 5, 54, 0, 0, 1940, 1941, 5, 52, 0, 0, 1941, 302, 1, 0, 0, 0, 1942, 1943, + 7, 0, 0, 0, 1943, 1944, 7, 11, 0, 0, 1944, 1945, 7, 6, 0, 0, 1945, 1946, + 5, 49, 0, 0, 1946, 1947, 5, 50, 0, 0, 1947, 1948, 5, 56, 0, 0, 1948, 304, + 1, 0, 0, 0, 1949, 1950, 7, 0, 0, 0, 1950, 1951, 7, 11, 0, 0, 1951, 1952, + 7, 6, 0, 0, 1952, 1953, 7, 4, 0, 0, 1953, 1954, 7, 24, 0, 0, 1954, 1955, + 7, 4, 0, 0, 1955, 1956, 7, 7, 0, 0, 1956, 1957, 5, 49, 0, 0, 1957, 1958, + 5, 50, 0, 0, 1958, 1959, 5, 56, 0, 0, 1959, 306, 1, 0, 0, 0, 1960, 1961, + 7, 0, 0, 0, 1961, 1962, 7, 11, 0, 0, 1962, 1963, 7, 6, 0, 0, 1963, 1964, + 5, 50, 0, 0, 1964, 1965, 5, 53, 0, 0, 1965, 1966, 5, 54, 0, 0, 1966, 308, + 1, 0, 0, 0, 1967, 1968, 7, 0, 0, 0, 1968, 1969, 7, 11, 0, 0, 1969, 1970, + 7, 6, 0, 0, 1970, 1971, 7, 4, 0, 0, 1971, 1972, 7, 24, 0, 0, 1972, 1973, + 7, 4, 0, 0, 1973, 1974, 7, 7, 0, 0, 1974, 1975, 5, 50, 0, 0, 1975, 1976, + 5, 53, 0, 0, 1976, 1977, 5, 54, 0, 0, 1977, 310, 1, 0, 0, 0, 1978, 1979, + 7, 0, 0, 0, 1979, 1980, 7, 11, 0, 0, 1980, 1981, 7, 6, 0, 0, 1981, 1982, + 7, 4, 0, 0, 1982, 1983, 7, 7, 0, 0, 1983, 1984, 7, 5, 0, 0, 1984, 1985, + 7, 4, 0, 0, 1985, 1986, 7, 21, 0, 0, 1986, 1987, 7, 6, 0, 0, 1987, 312, + 1, 0, 0, 0, 1988, 1989, 7, 0, 0, 0, 1989, 1990, 7, 11, 0, 0, 1990, 1991, + 7, 6, 0, 0, 1991, 1992, 7, 4, 0, 0, 1992, 1993, 7, 7, 0, 0, 1993, 1994, + 7, 25, 0, 0, 1994, 1995, 7, 10, 0, 0, 1995, 1996, 7, 3, 0, 0, 1996, 314, + 1, 0, 0, 0, 1997, 1998, 7, 0, 0, 0, 1998, 1999, 7, 5, 0, 0, 1999, 316, + 1, 0, 0, 0, 2000, 2001, 7, 3, 0, 0, 2001, 2002, 7, 4, 0, 0, 2002, 2003, + 7, 10, 0, 0, 2003, 2004, 7, 22, 0, 0, 2004, 2005, 7, 0, 0, 0, 2005, 2006, + 7, 11, 0, 0, 2006, 2007, 7, 24, 0, 0, 2007, 318, 1, 0, 0, 0, 2008, 2009, + 7, 3, 0, 0, 2009, 2010, 7, 4, 0, 0, 2010, 2011, 7, 9, 0, 0, 2011, 2012, + 7, 6, 0, 0, 2012, 320, 1, 0, 0, 0, 2013, 2014, 7, 3, 0, 0, 2014, 2015, + 7, 4, 0, 0, 2015, 2016, 7, 6, 0, 0, 2016, 322, 1, 0, 0, 0, 2017, 2018, + 7, 3, 0, 0, 2018, 2019, 7, 0, 0, 0, 2019, 2020, 7, 12, 0, 0, 2020, 2021, + 7, 4, 0, 0, 2021, 324, 1, 0, 0, 0, 2022, 2023, 7, 3, 0, 0, 2023, 2024, + 7, 0, 0, 0, 2024, 2025, 7, 1, 0, 0, 2025, 2026, 7, 0, 0, 0, 2026, 2027, + 7, 6, 0, 0, 2027, 326, 1, 0, 0, 0, 2028, 2029, 7, 3, 0, 0, 2029, 2030, + 7, 0, 0, 0, 2030, 2031, 7, 5, 0, 0, 2031, 2032, 7, 6, 0, 0, 2032, 328, + 1, 0, 0, 0, 2033, 2034, 7, 3, 0, 0, 2034, 2035, 7, 11, 0, 0, 2035, 330, + 1, 0, 0, 0, 2036, 2037, 7, 3, 0, 0, 2037, 2038, 7, 13, 0, 0, 2038, 2039, + 7, 21, 0, 0, 2039, 2040, 7, 10, 0, 0, 2040, 2041, 7, 3, 0, 0, 2041, 332, + 1, 0, 0, 0, 2042, 2043, 7, 3, 0, 0, 2043, 2044, 7, 13, 0, 0, 2044, 2045, + 7, 21, 0, 0, 2045, 2046, 7, 10, 0, 0, 2046, 2047, 7, 3, 0, 0, 2047, 2048, + 5, 95, 0, 0, 2048, 2049, 7, 22, 0, 0, 2049, 2050, 7, 10, 0, 0, 2050, 2051, + 7, 6, 0, 0, 2051, 2052, 7, 4, 0, 0, 2052, 2053, 7, 6, 0, 0, 2053, 2054, + 7, 0, 0, 0, 2054, 2055, 7, 1, 0, 0, 2055, 2056, 7, 4, 0, 0, 2056, 334, + 1, 0, 0, 0, 2057, 2058, 7, 3, 0, 0, 2058, 2059, 7, 13, 0, 0, 2059, 2060, + 7, 21, 0, 0, 2060, 2061, 7, 10, 0, 0, 2061, 2062, 7, 3, 0, 0, 2062, 2063, + 5, 95, 0, 0, 2063, 2064, 7, 6, 0, 0, 2064, 2065, 7, 0, 0, 0, 2065, 2066, + 7, 1, 0, 0, 2066, 2067, 7, 4, 0, 0, 2067, 336, 1, 0, 0, 0, 2068, 2069, + 7, 3, 0, 0, 2069, 2070, 7, 13, 0, 0, 2070, 2071, 7, 21, 0, 0, 2071, 2072, + 7, 10, 0, 0, 2072, 2073, 7, 3, 0, 0, 2073, 2074, 5, 95, 0, 0, 2074, 2075, + 7, 6, 0, 0, 2075, 2076, 7, 0, 0, 0, 2076, 2077, 7, 1, 0, 0, 2077, 2078, + 7, 4, 0, 0, 2078, 2079, 7, 5, 0, 0, 2079, 2080, 7, 6, 0, 0, 2080, 2081, + 7, 10, 0, 0, 2081, 2082, 7, 1, 0, 0, 2082, 2083, 7, 2, 0, 0, 2083, 338, + 1, 0, 0, 0, 2084, 2085, 7, 3, 0, 0, 2085, 2086, 7, 13, 0, 0, 2086, 2087, + 7, 24, 0, 0, 2087, 340, 1, 0, 0, 0, 2088, 2089, 7, 3, 0, 0, 2089, 2090, + 7, 13, 0, 0, 2090, 2091, 7, 24, 0, 0, 2091, 2092, 5, 49, 0, 0, 2092, 2093, + 5, 48, 0, 0, 2093, 342, 1, 0, 0, 0, 2094, 2095, 7, 3, 0, 0, 2095, 2096, + 7, 13, 0, 0, 2096, 2097, 7, 14, 0, 0, 2097, 2098, 7, 4, 0, 0, 2098, 2099, + 7, 7, 0, 0, 2099, 344, 1, 0, 0, 0, 2100, 2101, 7, 3, 0, 0, 2101, 2102, + 7, 6, 0, 0, 2102, 2103, 7, 7, 0, 0, 2103, 2104, 7, 0, 0, 0, 2104, 2105, + 7, 1, 0, 0, 2105, 346, 1, 0, 0, 0, 2106, 2107, 7, 1, 0, 0, 2107, 2108, + 7, 10, 0, 0, 2108, 2109, 7, 6, 0, 0, 2109, 2110, 7, 21, 0, 0, 2110, 2111, + 7, 26, 0, 0, 2111, 348, 1, 0, 0, 0, 2112, 2113, 7, 1, 0, 0, 2113, 2114, + 7, 10, 0, 0, 2114, 2115, 7, 18, 0, 0, 2115, 350, 1, 0, 0, 0, 2116, 2117, + 7, 1, 0, 0, 2117, 2118, 7, 0, 0, 0, 2118, 2119, 7, 11, 0, 0, 2119, 352, + 1, 0, 0, 0, 2120, 2121, 7, 1, 0, 0, 2121, 2122, 7, 0, 0, 0, 2122, 2123, + 7, 11, 0, 0, 2123, 2124, 7, 8, 0, 0, 2124, 2125, 7, 6, 0, 0, 2125, 2126, + 7, 4, 0, 0, 2126, 354, 1, 0, 0, 0, 2127, 2128, 7, 1, 0, 0, 2128, 2129, + 7, 13, 0, 0, 2129, 2130, 7, 22, 0, 0, 2130, 356, 1, 0, 0, 0, 2131, 2132, + 7, 1, 0, 0, 2132, 2133, 7, 13, 0, 0, 2133, 2134, 7, 11, 0, 0, 2134, 2135, + 7, 6, 0, 0, 2135, 2136, 7, 26, 0, 0, 2136, 358, 1, 0, 0, 0, 2137, 2138, + 7, 11, 0, 0, 2138, 2139, 7, 4, 0, 0, 2139, 2140, 7, 18, 0, 0, 2140, 2141, + 7, 6, 0, 0, 2141, 360, 1, 0, 0, 0, 2142, 2143, 7, 11, 0, 0, 2143, 2144, + 7, 13, 0, 0, 2144, 2145, 7, 22, 0, 0, 2145, 2146, 7, 4, 0, 0, 2146, 2147, + 7, 6, 0, 0, 2147, 2148, 7, 10, 0, 0, 2148, 2149, 7, 21, 0, 0, 2149, 2150, + 7, 26, 0, 0, 2150, 362, 1, 0, 0, 0, 2151, 2152, 7, 11, 0, 0, 2152, 2153, + 7, 13, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 1, 0, 0, 2155, 2156, + 7, 10, 0, 0, 2156, 2157, 7, 3, 0, 0, 2157, 2158, 7, 0, 0, 0, 2158, 2159, + 7, 27, 0, 0, 2159, 2160, 7, 4, 0, 0, 2160, 364, 1, 0, 0, 0, 2161, 2162, + 7, 11, 0, 0, 2162, 2163, 7, 13, 0, 0, 2163, 2164, 7, 6, 0, 0, 2164, 366, + 1, 0, 0, 0, 2165, 2166, 7, 11, 0, 0, 2166, 2167, 7, 13, 0, 0, 2167, 2168, + 7, 6, 0, 0, 2168, 2169, 7, 26, 0, 0, 2169, 2170, 7, 0, 0, 0, 2170, 2171, + 7, 11, 0, 0, 2171, 2172, 7, 24, 0, 0, 2172, 368, 1, 0, 0, 0, 2173, 2174, + 7, 11, 0, 0, 2174, 2175, 7, 8, 0, 0, 2175, 2176, 7, 3, 0, 0, 2176, 2177, + 7, 3, 0, 0, 2177, 370, 1, 0, 0, 0, 2178, 2179, 7, 11, 0, 0, 2179, 2180, + 7, 8, 0, 0, 2180, 2181, 7, 3, 0, 0, 2181, 2182, 7, 3, 0, 0, 2182, 2183, + 7, 5, 0, 0, 2183, 372, 1, 0, 0, 0, 2184, 2185, 7, 11, 0, 0, 2185, 2186, + 7, 8, 0, 0, 2186, 2187, 7, 3, 0, 0, 2187, 2188, 7, 3, 0, 0, 2188, 2189, + 7, 0, 0, 0, 2189, 2190, 7, 9, 0, 0, 2190, 374, 1, 0, 0, 0, 2191, 2192, + 7, 13, 0, 0, 2192, 2193, 7, 21, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, + 7, 4, 0, 0, 2195, 2196, 7, 6, 0, 0, 2196, 2197, 5, 95, 0, 0, 2197, 2198, + 7, 3, 0, 0, 2198, 2199, 7, 4, 0, 0, 2199, 2200, 7, 11, 0, 0, 2200, 2201, + 7, 24, 0, 0, 2201, 2202, 7, 6, 0, 0, 2202, 2203, 7, 26, 0, 0, 2203, 376, + 1, 0, 0, 0, 2204, 2205, 7, 13, 0, 0, 2205, 2206, 7, 9, 0, 0, 2206, 378, + 1, 0, 0, 0, 2207, 2208, 7, 13, 0, 0, 2208, 2209, 7, 9, 0, 0, 2209, 2210, + 7, 9, 0, 0, 2210, 2211, 7, 5, 0, 0, 2211, 2212, 7, 4, 0, 0, 2212, 2213, + 7, 6, 0, 0, 2213, 380, 1, 0, 0, 0, 2214, 2215, 7, 13, 0, 0, 2215, 2216, + 7, 2, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 0, 0, 0, 2218, 2219, + 7, 13, 0, 0, 2219, 2220, 7, 11, 0, 0, 2220, 2221, 7, 10, 0, 0, 2221, 2222, + 7, 3, 0, 0, 2222, 382, 1, 0, 0, 0, 2223, 2224, 7, 13, 0, 0, 2224, 2225, + 7, 7, 0, 0, 2225, 384, 1, 0, 0, 0, 2226, 2227, 7, 13, 0, 0, 2227, 2228, + 7, 7, 0, 0, 2228, 2229, 7, 22, 0, 0, 2229, 2230, 7, 4, 0, 0, 2230, 2231, + 7, 7, 0, 0, 2231, 386, 1, 0, 0, 0, 2232, 2233, 7, 13, 0, 0, 2233, 2234, + 7, 6, 0, 0, 2234, 2235, 7, 26, 0, 0, 2235, 2236, 7, 4, 0, 0, 2236, 2237, + 7, 7, 0, 0, 2237, 2238, 7, 14, 0, 0, 2238, 2239, 7, 0, 0, 0, 2239, 2240, + 7, 5, 0, 0, 2240, 2241, 7, 4, 0, 0, 2241, 388, 1, 0, 0, 0, 2242, 2243, + 7, 2, 0, 0, 2243, 2244, 7, 10, 0, 0, 2244, 2245, 7, 7, 0, 0, 2245, 2246, + 7, 10, 0, 0, 2246, 2247, 7, 1, 0, 0, 2247, 2248, 7, 4, 0, 0, 2248, 2249, + 7, 6, 0, 0, 2249, 2250, 7, 4, 0, 0, 2250, 2251, 7, 7, 0, 0, 2251, 390, + 1, 0, 0, 0, 2252, 2253, 7, 2, 0, 0, 2253, 2254, 7, 10, 0, 0, 2254, 2255, + 7, 7, 0, 0, 2255, 2256, 7, 10, 0, 0, 2256, 2257, 7, 1, 0, 0, 2257, 2258, + 7, 4, 0, 0, 2258, 2259, 7, 6, 0, 0, 2259, 2260, 7, 4, 0, 0, 2260, 2261, + 7, 7, 0, 0, 2261, 2262, 7, 5, 0, 0, 2262, 392, 1, 0, 0, 0, 2263, 2264, + 7, 2, 0, 0, 2264, 2265, 7, 10, 0, 0, 2265, 2266, 7, 6, 0, 0, 2266, 2267, + 7, 26, 0, 0, 2267, 394, 1, 0, 0, 0, 2268, 2269, 7, 2, 0, 0, 2269, 2270, + 7, 10, 0, 0, 2270, 2271, 7, 6, 0, 0, 2271, 2272, 7, 26, 0, 0, 2272, 2273, + 5, 95, 0, 0, 2273, 2274, 7, 3, 0, 0, 2274, 2275, 7, 4, 0, 0, 2275, 2276, + 7, 11, 0, 0, 2276, 2277, 7, 24, 0, 0, 2277, 2278, 7, 6, 0, 0, 2278, 2279, + 7, 26, 0, 0, 2279, 396, 1, 0, 0, 0, 2280, 2281, 7, 2, 0, 0, 2281, 2282, + 7, 10, 0, 0, 2282, 2283, 7, 6, 0, 0, 2283, 2284, 7, 26, 0, 0, 2284, 2285, + 7, 5, 0, 0, 2285, 398, 1, 0, 0, 0, 2286, 2287, 7, 2, 0, 0, 2287, 2288, + 7, 4, 0, 0, 2288, 2289, 7, 7, 0, 0, 2289, 2290, 7, 21, 0, 0, 2290, 2291, + 7, 4, 0, 0, 2291, 2292, 7, 11, 0, 0, 2292, 2293, 7, 6, 0, 0, 2293, 2294, + 7, 0, 0, 0, 2294, 2295, 7, 3, 0, 0, 2295, 2296, 7, 4, 0, 0, 2296, 2297, + 5, 95, 0, 0, 2297, 2298, 7, 21, 0, 0, 2298, 2299, 7, 13, 0, 0, 2299, 2300, + 7, 11, 0, 0, 2300, 2301, 7, 6, 0, 0, 2301, 400, 1, 0, 0, 0, 2302, 2303, + 7, 2, 0, 0, 2303, 2304, 7, 4, 0, 0, 2304, 2305, 7, 7, 0, 0, 2305, 2306, + 7, 21, 0, 0, 2306, 2307, 7, 4, 0, 0, 2307, 2308, 7, 11, 0, 0, 2308, 2309, + 7, 6, 0, 0, 2309, 2310, 7, 0, 0, 0, 2310, 2311, 7, 3, 0, 0, 2311, 2312, + 7, 4, 0, 0, 2312, 2313, 5, 95, 0, 0, 2313, 2314, 7, 22, 0, 0, 2314, 2315, + 7, 0, 0, 0, 2315, 2316, 7, 5, 0, 0, 2316, 2317, 7, 21, 0, 0, 2317, 402, + 1, 0, 0, 0, 2318, 2319, 7, 2, 0, 0, 2319, 2320, 7, 13, 0, 0, 2320, 2321, + 7, 14, 0, 0, 2321, 2322, 7, 4, 0, 0, 2322, 2323, 7, 7, 0, 0, 2323, 404, + 1, 0, 0, 0, 2324, 2325, 7, 2, 0, 0, 2325, 2326, 7, 7, 0, 0, 2326, 2327, + 7, 4, 0, 0, 2327, 2328, 7, 21, 0, 0, 2328, 2329, 7, 0, 0, 0, 2329, 2330, + 7, 5, 0, 0, 2330, 2331, 7, 0, 0, 0, 2331, 2332, 7, 13, 0, 0, 2332, 2333, + 7, 11, 0, 0, 2333, 406, 1, 0, 0, 0, 2334, 2335, 7, 2, 0, 0, 2335, 2336, + 7, 7, 0, 0, 2336, 2337, 7, 13, 0, 0, 2337, 2338, 7, 2, 0, 0, 2338, 2339, + 7, 4, 0, 0, 2339, 2340, 7, 7, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, + 7, 23, 0, 0, 2342, 2343, 5, 95, 0, 0, 2343, 2344, 7, 4, 0, 0, 2344, 2345, + 7, 18, 0, 0, 2345, 2346, 7, 0, 0, 0, 2346, 2347, 7, 5, 0, 0, 2347, 2348, + 7, 6, 0, 0, 2348, 2349, 7, 5, 0, 0, 2349, 408, 1, 0, 0, 0, 2350, 2351, + 7, 7, 0, 0, 2351, 2352, 7, 10, 0, 0, 2352, 2353, 7, 22, 0, 0, 2353, 2354, + 7, 0, 0, 0, 2354, 2355, 7, 10, 0, 0, 2355, 2356, 7, 11, 0, 0, 2356, 2357, + 7, 5, 0, 0, 2357, 410, 1, 0, 0, 0, 2358, 2359, 7, 7, 0, 0, 2359, 2360, + 7, 4, 0, 0, 2360, 2361, 7, 10, 0, 0, 2361, 2362, 7, 3, 0, 0, 2362, 412, + 1, 0, 0, 0, 2363, 2364, 7, 7, 0, 0, 2364, 2365, 7, 4, 0, 0, 2365, 2366, + 7, 21, 0, 0, 2366, 2367, 7, 13, 0, 0, 2367, 2368, 7, 7, 0, 0, 2368, 2369, + 7, 22, 0, 0, 2369, 414, 1, 0, 0, 0, 2370, 2371, 7, 7, 0, 0, 2371, 2372, + 7, 4, 0, 0, 2372, 2373, 7, 1, 0, 0, 2373, 2374, 7, 13, 0, 0, 2374, 2375, + 7, 25, 0, 0, 2375, 2376, 7, 4, 0, 0, 2376, 416, 1, 0, 0, 0, 2377, 2378, + 7, 7, 0, 0, 2378, 2379, 7, 4, 0, 0, 2379, 2380, 7, 2, 0, 0, 2380, 2381, + 7, 3, 0, 0, 2381, 2382, 7, 10, 0, 0, 2382, 2383, 7, 21, 0, 0, 2383, 2384, + 7, 4, 0, 0, 2384, 418, 1, 0, 0, 0, 2385, 2386, 7, 7, 0, 0, 2386, 2387, + 7, 4, 0, 0, 2387, 2388, 7, 5, 0, 0, 2388, 2389, 7, 4, 0, 0, 2389, 2390, + 7, 6, 0, 0, 2390, 420, 1, 0, 0, 0, 2391, 2392, 7, 7, 0, 0, 2392, 2393, + 7, 4, 0, 0, 2393, 2394, 7, 6, 0, 0, 2394, 2395, 7, 8, 0, 0, 2395, 2396, + 7, 7, 0, 0, 2396, 2397, 7, 11, 0, 0, 2397, 422, 1, 0, 0, 0, 2398, 2399, + 7, 7, 0, 0, 2399, 2400, 7, 0, 0, 0, 2400, 2401, 7, 24, 0, 0, 2401, 2402, + 7, 26, 0, 0, 2402, 2403, 7, 6, 0, 0, 2403, 424, 1, 0, 0, 0, 2404, 2405, + 7, 7, 0, 0, 2405, 2406, 7, 13, 0, 0, 2406, 2407, 7, 3, 0, 0, 2407, 2408, + 7, 3, 0, 0, 2408, 2409, 7, 20, 0, 0, 2409, 2410, 7, 10, 0, 0, 2410, 2411, + 7, 21, 0, 0, 2411, 2412, 7, 12, 0, 0, 2412, 426, 1, 0, 0, 0, 2413, 2414, + 7, 7, 0, 0, 2414, 2415, 7, 6, 0, 0, 2415, 2416, 7, 7, 0, 0, 2416, 2417, + 7, 0, 0, 0, 2417, 2418, 7, 1, 0, 0, 2418, 428, 1, 0, 0, 0, 2419, 2420, + 7, 5, 0, 0, 2420, 2421, 7, 10, 0, 0, 2421, 2422, 7, 1, 0, 0, 2422, 2423, + 7, 4, 0, 0, 2423, 430, 1, 0, 0, 0, 2424, 2425, 7, 5, 0, 0, 2425, 2426, + 7, 21, 0, 0, 2426, 2427, 7, 26, 0, 0, 2427, 2428, 7, 4, 0, 0, 2428, 2429, + 7, 1, 0, 0, 2429, 2430, 7, 10, 0, 0, 2430, 432, 1, 0, 0, 0, 2431, 2432, + 7, 5, 0, 0, 2432, 2433, 7, 4, 0, 0, 2433, 2434, 7, 21, 0, 0, 2434, 2435, + 7, 13, 0, 0, 2435, 2436, 7, 11, 0, 0, 2436, 2437, 7, 22, 0, 0, 2437, 434, + 1, 0, 0, 0, 2438, 2439, 7, 5, 0, 0, 2439, 2440, 7, 4, 0, 0, 2440, 2441, + 7, 3, 0, 0, 2441, 2442, 7, 4, 0, 0, 2442, 2443, 7, 21, 0, 0, 2443, 2444, + 7, 6, 0, 0, 2444, 436, 1, 0, 0, 0, 2445, 2446, 7, 5, 0, 0, 2446, 2447, + 7, 4, 0, 0, 2447, 2448, 7, 5, 0, 0, 2448, 2449, 7, 5, 0, 0, 2449, 2450, + 7, 0, 0, 0, 2450, 2451, 7, 13, 0, 0, 2451, 2452, 7, 11, 0, 0, 2452, 438, + 1, 0, 0, 0, 2453, 2454, 7, 5, 0, 0, 2454, 2455, 7, 4, 0, 0, 2455, 2456, + 7, 5, 0, 0, 2456, 2457, 7, 5, 0, 0, 2457, 2458, 7, 0, 0, 0, 2458, 2459, + 7, 13, 0, 0, 2459, 2460, 7, 11, 0, 0, 2460, 2461, 5, 95, 0, 0, 2461, 2462, + 7, 8, 0, 0, 2462, 2463, 7, 5, 0, 0, 2463, 2464, 7, 4, 0, 0, 2464, 2465, + 7, 7, 0, 0, 2465, 440, 1, 0, 0, 0, 2466, 2467, 7, 5, 0, 0, 2467, 2468, + 7, 4, 0, 0, 2468, 2469, 7, 6, 0, 0, 2469, 442, 1, 0, 0, 0, 2470, 2471, + 7, 5, 0, 0, 2471, 2472, 7, 0, 0, 0, 2472, 2473, 7, 24, 0, 0, 2473, 2474, + 7, 11, 0, 0, 2474, 2475, 7, 4, 0, 0, 2475, 2476, 7, 22, 0, 0, 2476, 444, + 1, 0, 0, 0, 2477, 2478, 7, 5, 0, 0, 2478, 2479, 7, 0, 0, 0, 2479, 2480, + 7, 11, 0, 0, 2480, 446, 1, 0, 0, 0, 2481, 2482, 7, 5, 0, 0, 2482, 2483, + 7, 0, 0, 0, 2483, 2484, 7, 11, 0, 0, 2484, 2485, 7, 26, 0, 0, 2485, 448, + 1, 0, 0, 0, 2486, 2487, 7, 5, 0, 0, 2487, 2488, 7, 0, 0, 0, 2488, 2489, + 7, 27, 0, 0, 2489, 2490, 7, 4, 0, 0, 2490, 450, 1, 0, 0, 0, 2491, 2492, + 7, 5, 0, 0, 2492, 2493, 7, 12, 0, 0, 2493, 2494, 7, 0, 0, 0, 2494, 2495, + 7, 2, 0, 0, 2495, 452, 1, 0, 0, 0, 2496, 2497, 7, 5, 0, 0, 2497, 2498, + 7, 1, 0, 0, 2498, 2499, 7, 10, 0, 0, 2499, 2500, 7, 3, 0, 0, 2500, 2501, + 7, 3, 0, 0, 2501, 454, 1, 0, 0, 0, 2502, 2503, 7, 5, 0, 0, 2503, 2504, + 7, 1, 0, 0, 2504, 2505, 7, 10, 0, 0, 2505, 2506, 7, 3, 0, 0, 2506, 2507, + 7, 3, 0, 0, 2507, 2508, 7, 0, 0, 0, 2508, 2509, 7, 11, 0, 0, 2509, 2510, + 7, 6, 0, 0, 2510, 456, 1, 0, 0, 0, 2511, 2512, 7, 5, 0, 0, 2512, 2513, + 7, 28, 0, 0, 2513, 2514, 7, 7, 0, 0, 2514, 2515, 7, 6, 0, 0, 2515, 458, + 1, 0, 0, 0, 2516, 2517, 7, 5, 0, 0, 2517, 2518, 7, 6, 0, 0, 2518, 2519, + 7, 10, 0, 0, 2519, 2520, 7, 7, 0, 0, 2520, 2521, 7, 6, 0, 0, 2521, 460, + 1, 0, 0, 0, 2522, 2523, 7, 5, 0, 0, 2523, 2524, 7, 6, 0, 0, 2524, 2525, + 7, 22, 0, 0, 2525, 2526, 7, 22, 0, 0, 2526, 2527, 7, 4, 0, 0, 2527, 2528, + 7, 25, 0, 0, 2528, 2529, 5, 95, 0, 0, 2529, 2530, 7, 2, 0, 0, 2530, 2531, + 7, 13, 0, 0, 2531, 2532, 7, 2, 0, 0, 2532, 462, 1, 0, 0, 0, 2533, 2534, + 7, 5, 0, 0, 2534, 2535, 7, 6, 0, 0, 2535, 2536, 7, 22, 0, 0, 2536, 2537, + 7, 22, 0, 0, 2537, 2538, 7, 4, 0, 0, 2538, 2539, 7, 25, 0, 0, 2539, 2540, + 5, 95, 0, 0, 2540, 2541, 7, 5, 0, 0, 2541, 2542, 7, 10, 0, 0, 2542, 2543, + 7, 1, 0, 0, 2543, 2544, 7, 2, 0, 0, 2544, 464, 1, 0, 0, 0, 2545, 2546, + 7, 5, 0, 0, 2546, 2547, 7, 6, 0, 0, 2547, 2548, 7, 7, 0, 0, 2548, 2549, + 7, 0, 0, 0, 2549, 2550, 7, 11, 0, 0, 2550, 2551, 7, 24, 0, 0, 2551, 466, + 1, 0, 0, 0, 2552, 2553, 7, 5, 0, 0, 2553, 2554, 7, 8, 0, 0, 2554, 2555, + 7, 1, 0, 0, 2555, 468, 1, 0, 0, 0, 2556, 2557, 7, 6, 0, 0, 2557, 2558, + 7, 10, 0, 0, 2558, 2559, 7, 11, 0, 0, 2559, 470, 1, 0, 0, 0, 2560, 2561, + 7, 6, 0, 0, 2561, 2562, 7, 10, 0, 0, 2562, 2563, 7, 11, 0, 0, 2563, 2564, + 7, 26, 0, 0, 2564, 472, 1, 0, 0, 0, 2565, 2566, 7, 6, 0, 0, 2566, 2567, + 7, 26, 0, 0, 2567, 2568, 7, 4, 0, 0, 2568, 2569, 7, 11, 0, 0, 2569, 474, + 1, 0, 0, 0, 2570, 2571, 7, 6, 0, 0, 2571, 2572, 7, 0, 0, 0, 2572, 2573, + 7, 1, 0, 0, 2573, 2574, 7, 4, 0, 0, 2574, 476, 1, 0, 0, 0, 2575, 2576, + 7, 6, 0, 0, 2576, 2577, 7, 0, 0, 0, 2577, 2578, 7, 1, 0, 0, 2578, 2579, + 7, 4, 0, 0, 2579, 2580, 7, 5, 0, 0, 2580, 2581, 7, 6, 0, 0, 2581, 2582, + 7, 10, 0, 0, 2582, 2583, 7, 1, 0, 0, 2583, 2584, 7, 2, 0, 0, 2584, 478, + 1, 0, 0, 0, 2585, 2586, 7, 6, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 2588, + 7, 10, 0, 0, 2588, 2589, 7, 0, 0, 0, 2589, 2590, 7, 3, 0, 0, 2590, 2591, + 7, 0, 0, 0, 2591, 2592, 7, 11, 0, 0, 2592, 2593, 7, 24, 0, 0, 2593, 480, + 1, 0, 0, 0, 2594, 2595, 7, 6, 0, 0, 2595, 2596, 7, 7, 0, 0, 2596, 2597, + 7, 0, 0, 0, 2597, 2598, 7, 1, 0, 0, 2598, 482, 1, 0, 0, 0, 2599, 2600, + 7, 6, 0, 0, 2600, 2601, 7, 23, 0, 0, 2601, 2602, 7, 2, 0, 0, 2602, 2603, + 7, 4, 0, 0, 2603, 2604, 7, 22, 0, 0, 2604, 484, 1, 0, 0, 0, 2605, 2606, + 7, 8, 0, 0, 2606, 2607, 7, 20, 0, 0, 2607, 2608, 7, 0, 0, 0, 2608, 2609, + 7, 24, 0, 0, 2609, 2610, 7, 0, 0, 0, 2610, 2611, 7, 11, 0, 0, 2611, 2612, + 7, 6, 0, 0, 2612, 486, 1, 0, 0, 0, 2613, 2614, 7, 8, 0, 0, 2614, 2615, + 7, 0, 0, 0, 2615, 2616, 7, 11, 0, 0, 2616, 2617, 7, 6, 0, 0, 2617, 488, + 1, 0, 0, 0, 2618, 2619, 7, 8, 0, 0, 2619, 2620, 7, 0, 0, 0, 2620, 2621, + 7, 11, 0, 0, 2621, 2622, 7, 6, 0, 0, 2622, 2623, 5, 56, 0, 0, 2623, 490, + 1, 0, 0, 0, 2624, 2625, 7, 8, 0, 0, 2625, 2626, 7, 0, 0, 0, 2626, 2627, + 7, 11, 0, 0, 2627, 2628, 7, 6, 0, 0, 2628, 2629, 5, 49, 0, 0, 2629, 2630, + 5, 54, 0, 0, 2630, 492, 1, 0, 0, 0, 2631, 2632, 7, 8, 0, 0, 2632, 2633, + 7, 0, 0, 0, 2633, 2634, 7, 11, 0, 0, 2634, 2635, 7, 6, 0, 0, 2635, 2636, + 5, 51, 0, 0, 2636, 2637, 5, 50, 0, 0, 2637, 494, 1, 0, 0, 0, 2638, 2639, + 7, 8, 0, 0, 2639, 2640, 7, 0, 0, 0, 2640, 2641, 7, 11, 0, 0, 2641, 2642, + 7, 6, 0, 0, 2642, 2643, 5, 54, 0, 0, 2643, 2644, 5, 52, 0, 0, 2644, 496, + 1, 0, 0, 0, 2645, 2646, 7, 8, 0, 0, 2646, 2647, 7, 0, 0, 0, 2647, 2648, + 7, 11, 0, 0, 2648, 2649, 7, 6, 0, 0, 2649, 2650, 5, 49, 0, 0, 2650, 2651, + 5, 50, 0, 0, 2651, 2652, 5, 56, 0, 0, 2652, 498, 1, 0, 0, 0, 2653, 2654, + 7, 8, 0, 0, 2654, 2655, 7, 0, 0, 0, 2655, 2656, 7, 11, 0, 0, 2656, 2657, + 7, 6, 0, 0, 2657, 2658, 5, 50, 0, 0, 2658, 2659, 5, 53, 0, 0, 2659, 2660, + 5, 54, 0, 0, 2660, 500, 1, 0, 0, 0, 2661, 2662, 7, 8, 0, 0, 2662, 2663, + 7, 11, 0, 0, 2663, 2664, 7, 0, 0, 0, 2664, 2665, 7, 13, 0, 0, 2665, 2666, + 7, 11, 0, 0, 2666, 502, 1, 0, 0, 0, 2667, 2668, 7, 8, 0, 0, 2668, 2669, + 7, 11, 0, 0, 2669, 2670, 7, 5, 0, 0, 2670, 2671, 7, 0, 0, 0, 2671, 2672, + 7, 24, 0, 0, 2672, 2673, 7, 11, 0, 0, 2673, 2674, 7, 4, 0, 0, 2674, 2675, + 7, 22, 0, 0, 2675, 504, 1, 0, 0, 0, 2676, 2677, 7, 8, 0, 0, 2677, 2678, + 7, 2, 0, 0, 2678, 2679, 7, 2, 0, 0, 2679, 2680, 7, 4, 0, 0, 2680, 2681, + 7, 7, 0, 0, 2681, 506, 1, 0, 0, 0, 2682, 2683, 7, 8, 0, 0, 2683, 2684, + 7, 5, 0, 0, 2684, 2685, 7, 4, 0, 0, 2685, 508, 1, 0, 0, 0, 2686, 2687, + 7, 8, 0, 0, 2687, 2688, 7, 5, 0, 0, 2688, 2689, 7, 1, 0, 0, 2689, 2690, + 7, 10, 0, 0, 2690, 2691, 7, 3, 0, 0, 2691, 2692, 7, 3, 0, 0, 2692, 2693, + 7, 0, 0, 0, 2693, 2694, 7, 11, 0, 0, 2694, 2695, 7, 6, 0, 0, 2695, 510, + 1, 0, 0, 0, 2696, 2697, 7, 25, 0, 0, 2697, 2698, 7, 10, 0, 0, 2698, 2699, + 7, 3, 0, 0, 2699, 2700, 7, 8, 0, 0, 2700, 2701, 7, 4, 0, 0, 2701, 512, + 1, 0, 0, 0, 2702, 2703, 7, 25, 0, 0, 2703, 2704, 7, 10, 0, 0, 2704, 2705, + 7, 7, 0, 0, 2705, 2706, 7, 20, 0, 0, 2706, 2707, 7, 0, 0, 0, 2707, 2708, + 7, 11, 0, 0, 2708, 2709, 7, 10, 0, 0, 2709, 2710, 7, 7, 0, 0, 2710, 2711, + 7, 23, 0, 0, 2711, 514, 1, 0, 0, 0, 2712, 2713, 7, 25, 0, 0, 2713, 2714, + 7, 10, 0, 0, 2714, 2715, 7, 7, 0, 0, 2715, 2716, 7, 21, 0, 0, 2716, 2717, + 7, 26, 0, 0, 2717, 2718, 7, 10, 0, 0, 2718, 2719, 7, 7, 0, 0, 2719, 516, + 1, 0, 0, 0, 2720, 2721, 7, 25, 0, 0, 2721, 2722, 7, 10, 0, 0, 2722, 2723, + 7, 7, 0, 0, 2723, 2724, 7, 0, 0, 0, 2724, 2725, 7, 10, 0, 0, 2725, 2726, + 7, 20, 0, 0, 2726, 2727, 7, 3, 0, 0, 2727, 2728, 7, 4, 0, 0, 2728, 518, + 1, 0, 0, 0, 2729, 2730, 7, 14, 0, 0, 2730, 2731, 7, 26, 0, 0, 2731, 2732, + 7, 4, 0, 0, 2732, 2733, 7, 11, 0, 0, 2733, 520, 1, 0, 0, 0, 2734, 2735, + 7, 14, 0, 0, 2735, 2736, 7, 26, 0, 0, 2736, 2737, 7, 4, 0, 0, 2737, 2738, + 7, 7, 0, 0, 2738, 2739, 7, 4, 0, 0, 2739, 522, 1, 0, 0, 0, 2740, 2741, + 7, 14, 0, 0, 2741, 2742, 7, 0, 0, 0, 2742, 2743, 7, 6, 0, 0, 2743, 2744, + 7, 26, 0, 0, 2744, 524, 1, 0, 0, 0, 2745, 2746, 7, 18, 0, 0, 2746, 2747, + 7, 13, 0, 0, 2747, 2748, 7, 7, 0, 0, 2748, 526, 1, 0, 0, 0, 2749, 2750, + 7, 23, 0, 0, 2750, 2751, 7, 4, 0, 0, 2751, 2752, 7, 10, 0, 0, 2752, 2753, + 7, 7, 0, 0, 2753, 528, 1, 0, 0, 0, 2754, 2755, 7, 23, 0, 0, 2755, 2756, + 7, 0, 0, 0, 2756, 2757, 7, 4, 0, 0, 2757, 2758, 7, 3, 0, 0, 2758, 2759, + 7, 22, 0, 0, 2759, 530, 1, 0, 0, 0, 2760, 2761, 7, 27, 0, 0, 2761, 2762, + 7, 13, 0, 0, 2762, 2763, 7, 11, 0, 0, 2763, 2764, 7, 4, 0, 0, 2764, 2765, + 7, 22, 0, 0, 2765, 532, 1, 0, 0, 0, 2766, 2767, 7, 27, 0, 0, 2767, 2768, + 7, 13, 0, 0, 2768, 2769, 7, 11, 0, 0, 2769, 2770, 7, 4, 0, 0, 2770, 2771, + 7, 22, 0, 0, 2771, 2772, 5, 95, 0, 0, 2772, 2773, 7, 22, 0, 0, 2773, 2774, + 7, 10, 0, 0, 2774, 2775, 7, 6, 0, 0, 2775, 2776, 7, 4, 0, 0, 2776, 2777, + 7, 6, 0, 0, 2777, 2778, 7, 0, 0, 0, 2778, 2779, 7, 1, 0, 0, 2779, 2780, + 7, 4, 0, 0, 2780, 534, 1, 0, 0, 0, 2781, 2782, 7, 27, 0, 0, 2782, 2783, + 7, 13, 0, 0, 2783, 2784, 7, 11, 0, 0, 2784, 2785, 7, 4, 0, 0, 2785, 2786, + 7, 22, 0, 0, 2786, 2787, 5, 95, 0, 0, 2787, 2788, 7, 6, 0, 0, 2788, 2789, + 7, 0, 0, 0, 2789, 2790, 7, 1, 0, 0, 2790, 2791, 7, 4, 0, 0, 2791, 536, + 1, 0, 0, 0, 2792, 2793, 7, 10, 0, 0, 2793, 2794, 7, 20, 0, 0, 2794, 2795, + 7, 5, 0, 0, 2795, 2796, 7, 6, 0, 0, 2796, 2797, 7, 7, 0, 0, 2797, 2798, + 7, 10, 0, 0, 2798, 2799, 7, 21, 0, 0, 2799, 2800, 7, 6, 0, 0, 2800, 538, + 1, 0, 0, 0, 2801, 2802, 7, 10, 0, 0, 2802, 2803, 7, 24, 0, 0, 2803, 2804, + 7, 24, 0, 0, 2804, 2805, 7, 7, 0, 0, 2805, 2806, 7, 4, 0, 0, 2806, 2807, + 7, 24, 0, 0, 2807, 2808, 7, 10, 0, 0, 2808, 2809, 7, 6, 0, 0, 2809, 2810, + 7, 4, 0, 0, 2810, 540, 1, 0, 0, 0, 2811, 2812, 7, 10, 0, 0, 2812, 2813, + 7, 24, 0, 0, 2813, 2814, 7, 24, 0, 0, 2814, 2815, 7, 7, 0, 0, 2815, 2816, + 7, 4, 0, 0, 2816, 2817, 7, 24, 0, 0, 2817, 2818, 7, 10, 0, 0, 2818, 2819, + 7, 6, 0, 0, 2819, 2820, 7, 4, 0, 0, 2820, 2821, 7, 5, 0, 0, 2821, 542, + 1, 0, 0, 0, 2822, 2823, 7, 10, 0, 0, 2823, 2824, 7, 3, 0, 0, 2824, 2825, + 7, 6, 0, 0, 2825, 2826, 7, 4, 0, 0, 2826, 2827, 7, 7, 0, 0, 2827, 544, + 1, 0, 0, 0, 2828, 2829, 7, 21, 0, 0, 2829, 2830, 7, 10, 0, 0, 2830, 2831, + 7, 6, 0, 0, 2831, 2832, 7, 10, 0, 0, 2832, 2833, 7, 3, 0, 0, 2833, 2834, + 7, 13, 0, 0, 2834, 2835, 7, 24, 0, 0, 2835, 546, 1, 0, 0, 0, 2836, 2837, + 7, 21, 0, 0, 2837, 2838, 7, 3, 0, 0, 2838, 2839, 7, 4, 0, 0, 2839, 2840, + 7, 10, 0, 0, 2840, 2841, 7, 7, 0, 0, 2841, 548, 1, 0, 0, 0, 2842, 2843, + 7, 21, 0, 0, 2843, 2844, 7, 3, 0, 0, 2844, 2845, 7, 13, 0, 0, 2845, 2846, + 7, 11, 0, 0, 2846, 2847, 7, 4, 0, 0, 2847, 550, 1, 0, 0, 0, 2848, 2849, + 7, 21, 0, 0, 2849, 2850, 7, 13, 0, 0, 2850, 2851, 7, 11, 0, 0, 2851, 2852, + 7, 5, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 2854, 7, 7, 0, 0, 2854, 2855, + 7, 10, 0, 0, 2855, 2856, 7, 0, 0, 0, 2856, 2857, 7, 11, 0, 0, 2857, 2858, + 7, 6, 0, 0, 2858, 552, 1, 0, 0, 0, 2859, 2860, 7, 21, 0, 0, 2860, 2861, + 7, 8, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 7, 0, 0, 2863, 2864, + 7, 4, 0, 0, 2864, 2865, 7, 11, 0, 0, 2865, 2866, 7, 6, 0, 0, 2866, 2867, + 5, 95, 0, 0, 2867, 2868, 7, 7, 0, 0, 2868, 2869, 7, 13, 0, 0, 2869, 2870, + 7, 3, 0, 0, 2870, 2871, 7, 4, 0, 0, 2871, 554, 1, 0, 0, 0, 2872, 2873, + 7, 21, 0, 0, 2873, 2874, 7, 8, 0, 0, 2874, 2875, 7, 7, 0, 0, 2875, 2876, + 7, 7, 0, 0, 2876, 2877, 7, 4, 0, 0, 2877, 2878, 7, 11, 0, 0, 2878, 2879, + 7, 6, 0, 0, 2879, 2880, 5, 95, 0, 0, 2880, 2881, 7, 8, 0, 0, 2881, 2882, + 7, 5, 0, 0, 2882, 2883, 7, 4, 0, 0, 2883, 2884, 7, 7, 0, 0, 2884, 556, + 1, 0, 0, 0, 2885, 2886, 7, 22, 0, 0, 2886, 2887, 7, 10, 0, 0, 2887, 2888, + 7, 6, 0, 0, 2888, 2889, 7, 10, 0, 0, 2889, 558, 1, 0, 0, 0, 2890, 2891, + 7, 22, 0, 0, 2891, 2892, 7, 0, 0, 0, 2892, 2893, 7, 7, 0, 0, 2893, 2894, + 7, 4, 0, 0, 2894, 2895, 7, 21, 0, 0, 2895, 2896, 7, 6, 0, 0, 2896, 2897, + 7, 13, 0, 0, 2897, 2898, 7, 7, 0, 0, 2898, 2899, 7, 23, 0, 0, 2899, 560, + 1, 0, 0, 0, 2900, 2901, 7, 22, 0, 0, 2901, 2902, 7, 7, 0, 0, 2902, 2903, + 7, 23, 0, 0, 2903, 2904, 7, 7, 0, 0, 2904, 2905, 7, 8, 0, 0, 2905, 2906, + 7, 11, 0, 0, 2906, 562, 1, 0, 0, 0, 2907, 2908, 7, 4, 0, 0, 2908, 2909, + 7, 18, 0, 0, 2909, 2910, 7, 10, 0, 0, 2910, 2911, 7, 21, 0, 0, 2911, 2912, + 7, 6, 0, 0, 2912, 564, 1, 0, 0, 0, 2913, 2914, 7, 4, 0, 0, 2914, 2915, + 7, 18, 0, 0, 2915, 2916, 7, 0, 0, 0, 2916, 2917, 7, 5, 0, 0, 2917, 2918, + 7, 6, 0, 0, 2918, 2919, 7, 0, 0, 0, 2919, 2920, 7, 11, 0, 0, 2920, 2921, + 7, 24, 0, 0, 2921, 566, 1, 0, 0, 0, 2922, 2923, 7, 9, 0, 0, 2923, 2924, + 7, 8, 0, 0, 2924, 2925, 7, 11, 0, 0, 2925, 2926, 7, 21, 0, 0, 2926, 2927, + 7, 6, 0, 0, 2927, 2928, 7, 0, 0, 0, 2928, 2929, 7, 13, 0, 0, 2929, 2930, + 7, 11, 0, 0, 2930, 568, 1, 0, 0, 0, 2931, 2932, 7, 24, 0, 0, 2932, 2933, + 7, 28, 0, 0, 2933, 2934, 7, 3, 0, 0, 2934, 2935, 7, 5, 0, 0, 2935, 2936, + 7, 6, 0, 0, 2936, 2937, 7, 10, 0, 0, 2937, 2938, 7, 6, 0, 0, 2938, 2939, + 7, 8, 0, 0, 2939, 2940, 7, 5, 0, 0, 2940, 570, 1, 0, 0, 0, 2941, 2942, + 7, 24, 0, 0, 2942, 2943, 7, 7, 0, 0, 2943, 2944, 7, 10, 0, 0, 2944, 2945, + 7, 11, 0, 0, 2945, 2946, 7, 6, 0, 0, 2946, 572, 1, 0, 0, 0, 2947, 2948, + 7, 0, 0, 0, 2948, 2949, 7, 11, 0, 0, 2949, 2950, 7, 5, 0, 0, 2950, 2951, + 7, 6, 0, 0, 2951, 2952, 7, 10, 0, 0, 2952, 2953, 7, 11, 0, 0, 2953, 2954, + 7, 6, 0, 0, 2954, 574, 1, 0, 0, 0, 2955, 2956, 7, 0, 0, 0, 2956, 2957, + 7, 11, 0, 0, 2957, 2958, 7, 9, 0, 0, 2958, 2959, 7, 0, 0, 0, 2959, 2960, + 7, 11, 0, 0, 2960, 2961, 7, 0, 0, 0, 2961, 2962, 7, 6, 0, 0, 2962, 2963, + 7, 23, 0, 0, 2963, 576, 1, 0, 0, 0, 2964, 2965, 7, 11, 0, 0, 2965, 2966, + 7, 8, 0, 0, 2966, 2967, 7, 1, 0, 0, 2967, 2968, 7, 20, 0, 0, 2968, 2969, + 7, 4, 0, 0, 2969, 2970, 7, 7, 0, 0, 2970, 578, 1, 0, 0, 0, 2971, 2972, + 7, 11, 0, 0, 2972, 2973, 7, 8, 0, 0, 2973, 2974, 7, 1, 0, 0, 2974, 2975, + 7, 4, 0, 0, 2975, 2976, 7, 7, 0, 0, 2976, 2977, 7, 0, 0, 0, 2977, 2978, + 7, 21, 0, 0, 2978, 580, 1, 0, 0, 0, 2979, 2980, 7, 13, 0, 0, 2980, 2981, + 7, 11, 0, 0, 2981, 582, 1, 0, 0, 0, 2982, 2983, 7, 13, 0, 0, 2983, 2984, + 7, 2, 0, 0, 2984, 2985, 7, 4, 0, 0, 2985, 2986, 7, 11, 0, 0, 2986, 584, + 1, 0, 0, 0, 2987, 2988, 7, 2, 0, 0, 2988, 2989, 7, 10, 0, 0, 2989, 2990, + 7, 7, 0, 0, 2990, 2991, 7, 6, 0, 0, 2991, 2992, 7, 0, 0, 0, 2992, 2993, + 7, 6, 0, 0, 2993, 2994, 7, 0, 0, 0, 2994, 2995, 7, 13, 0, 0, 2995, 2996, + 7, 11, 0, 0, 2996, 586, 1, 0, 0, 0, 2997, 2998, 7, 2, 0, 0, 2998, 2999, + 7, 7, 0, 0, 2999, 3000, 7, 13, 0, 0, 3000, 3001, 7, 21, 0, 0, 3001, 3002, + 7, 4, 0, 0, 3002, 3003, 7, 22, 0, 0, 3003, 3004, 7, 8, 0, 0, 3004, 3005, + 7, 7, 0, 0, 3005, 3006, 7, 4, 0, 0, 3006, 588, 1, 0, 0, 0, 3007, 3008, + 7, 2, 0, 0, 3008, 3009, 7, 7, 0, 0, 3009, 3010, 7, 13, 0, 0, 3010, 3011, + 7, 22, 0, 0, 3011, 3012, 7, 8, 0, 0, 3012, 3013, 7, 21, 0, 0, 3013, 3014, + 7, 6, 0, 0, 3014, 590, 1, 0, 0, 0, 3015, 3016, 7, 2, 0, 0, 3016, 3017, + 7, 7, 0, 0, 3017, 3018, 7, 13, 0, 0, 3018, 3019, 7, 29, 0, 0, 3019, 3020, + 7, 4, 0, 0, 3020, 3021, 7, 21, 0, 0, 3021, 3022, 7, 6, 0, 0, 3022, 592, + 1, 0, 0, 0, 3023, 3024, 7, 28, 0, 0, 3024, 3025, 7, 8, 0, 0, 3025, 3026, + 7, 4, 0, 0, 3026, 3027, 7, 7, 0, 0, 3027, 3028, 7, 23, 0, 0, 3028, 594, + 1, 0, 0, 0, 3029, 3030, 7, 7, 0, 0, 3030, 3031, 7, 4, 0, 0, 3031, 3032, + 7, 21, 0, 0, 3032, 3033, 7, 13, 0, 0, 3033, 3034, 7, 7, 0, 0, 3034, 3035, + 7, 22, 0, 0, 3035, 3036, 7, 5, 0, 0, 3036, 596, 1, 0, 0, 0, 3037, 3038, + 7, 7, 0, 0, 3038, 3039, 7, 4, 0, 0, 3039, 3040, 7, 9, 0, 0, 3040, 3041, + 7, 4, 0, 0, 3041, 3042, 7, 7, 0, 0, 3042, 3043, 7, 4, 0, 0, 3043, 3044, + 7, 11, 0, 0, 3044, 3045, 7, 21, 0, 0, 3045, 3046, 7, 4, 0, 0, 3046, 598, + 1, 0, 0, 0, 3047, 3048, 7, 7, 0, 0, 3048, 3049, 7, 4, 0, 0, 3049, 3050, + 7, 11, 0, 0, 3050, 3051, 7, 10, 0, 0, 3051, 3052, 7, 1, 0, 0, 3052, 3053, + 7, 4, 0, 0, 3053, 600, 1, 0, 0, 0, 3054, 3055, 7, 7, 0, 0, 3055, 3056, + 7, 4, 0, 0, 3056, 3057, 7, 25, 0, 0, 3057, 3058, 7, 13, 0, 0, 3058, 3059, + 7, 12, 0, 0, 3059, 3060, 7, 4, 0, 0, 3060, 602, 1, 0, 0, 0, 3061, 3062, + 7, 5, 0, 0, 3062, 3063, 7, 8, 0, 0, 3063, 3064, 7, 20, 0, 0, 3064, 3065, + 7, 5, 0, 0, 3065, 3066, 7, 6, 0, 0, 3066, 3067, 7, 7, 0, 0, 3067, 3068, + 7, 0, 0, 0, 3068, 3069, 7, 11, 0, 0, 3069, 3070, 7, 24, 0, 0, 3070, 604, + 1, 0, 0, 0, 3071, 3072, 7, 5, 0, 0, 3072, 3073, 7, 23, 0, 0, 3073, 3074, + 7, 5, 0, 0, 3074, 3075, 7, 6, 0, 0, 3075, 3076, 7, 4, 0, 0, 3076, 3077, + 7, 1, 0, 0, 3077, 3078, 5, 95, 0, 0, 3078, 3079, 7, 8, 0, 0, 3079, 3080, + 7, 5, 0, 0, 3080, 3081, 7, 4, 0, 0, 3081, 3082, 7, 7, 0, 0, 3082, 606, + 1, 0, 0, 0, 3083, 3084, 7, 6, 0, 0, 3084, 3085, 7, 4, 0, 0, 3085, 3086, + 7, 1, 0, 0, 3086, 3087, 7, 2, 0, 0, 3087, 3088, 7, 13, 0, 0, 3088, 3089, + 7, 7, 0, 0, 3089, 3090, 7, 10, 0, 0, 3090, 3091, 7, 3, 0, 0, 3091, 608, + 1, 0, 0, 0, 3092, 3093, 7, 8, 0, 0, 3093, 3094, 7, 11, 0, 0, 3094, 3095, + 7, 0, 0, 0, 3095, 3096, 7, 28, 0, 0, 3096, 3097, 7, 8, 0, 0, 3097, 3098, + 7, 4, 0, 0, 3098, 610, 1, 0, 0, 0, 3099, 3100, 7, 8, 0, 0, 3100, 3101, + 7, 11, 0, 0, 3101, 3102, 7, 0, 0, 0, 3102, 3103, 7, 6, 0, 0, 3103, 612, + 1, 0, 0, 0, 3104, 3105, 7, 25, 0, 0, 3105, 3106, 7, 10, 0, 0, 3106, 3107, + 7, 3, 0, 0, 3107, 3108, 7, 8, 0, 0, 3108, 3109, 7, 4, 0, 0, 3109, 3110, + 7, 5, 0, 0, 3110, 614, 1, 0, 0, 0, 3111, 3112, 7, 10, 0, 0, 3112, 3113, + 7, 21, 0, 0, 3113, 3114, 7, 23, 0, 0, 3114, 3115, 7, 21, 0, 0, 3115, 3116, + 7, 3, 0, 0, 3116, 3117, 7, 0, 0, 0, 3117, 3118, 7, 21, 0, 0, 3118, 616, + 1, 0, 0, 0, 3119, 3120, 7, 20, 0, 0, 3120, 3121, 7, 0, 0, 0, 3121, 3122, + 7, 11, 0, 0, 3122, 3123, 7, 22, 0, 0, 3123, 3124, 7, 0, 0, 0, 3124, 3125, + 7, 11, 0, 0, 3125, 3126, 7, 24, 0, 0, 3126, 618, 1, 0, 0, 0, 3127, 3128, + 7, 20, 0, 0, 3128, 3129, 7, 0, 0, 0, 3129, 3130, 7, 11, 0, 0, 3130, 3131, + 7, 22, 0, 0, 3131, 3132, 7, 0, 0, 0, 3132, 3133, 7, 11, 0, 0, 3133, 3134, + 7, 24, 0, 0, 3134, 3135, 7, 5, 0, 0, 3135, 620, 1, 0, 0, 0, 3136, 3137, + 7, 21, 0, 0, 3137, 3138, 7, 13, 0, 0, 3138, 3139, 7, 11, 0, 0, 3139, 3140, + 7, 11, 0, 0, 3140, 3141, 7, 4, 0, 0, 3141, 3142, 7, 21, 0, 0, 3142, 3143, + 7, 6, 0, 0, 3143, 3144, 7, 0, 0, 0, 3144, 3145, 7, 11, 0, 0, 3145, 3146, + 7, 24, 0, 0, 3146, 622, 1, 0, 0, 0, 3147, 3148, 7, 22, 0, 0, 3148, 3149, + 7, 4, 0, 0, 3149, 3150, 7, 5, 0, 0, 3150, 3151, 7, 6, 0, 0, 3151, 3152, + 7, 0, 0, 0, 3152, 3153, 7, 11, 0, 0, 3153, 3154, 7, 10, 0, 0, 3154, 3155, + 7, 6, 0, 0, 3155, 3156, 7, 0, 0, 0, 3156, 3157, 7, 13, 0, 0, 3157, 3158, + 7, 11, 0, 0, 3158, 624, 1, 0, 0, 0, 3159, 3160, 7, 22, 0, 0, 3160, 3161, + 7, 0, 0, 0, 3161, 3162, 7, 9, 0, 0, 3162, 3163, 7, 9, 0, 0, 3163, 3164, + 7, 4, 0, 0, 3164, 3165, 7, 7, 0, 0, 3165, 3166, 7, 4, 0, 0, 3166, 3167, + 7, 11, 0, 0, 3167, 3168, 7, 6, 0, 0, 3168, 626, 1, 0, 0, 0, 3169, 3170, + 7, 22, 0, 0, 3170, 3171, 7, 0, 0, 0, 3171, 3172, 7, 7, 0, 0, 3172, 3173, + 7, 4, 0, 0, 3173, 3174, 7, 21, 0, 0, 3174, 3175, 7, 6, 0, 0, 3175, 3176, + 7, 4, 0, 0, 3176, 3177, 7, 22, 0, 0, 3177, 628, 1, 0, 0, 0, 3178, 3179, + 7, 4, 0, 0, 3179, 3180, 7, 22, 0, 0, 3180, 3181, 7, 24, 0, 0, 3181, 3182, + 7, 4, 0, 0, 3182, 630, 1, 0, 0, 0, 3183, 3184, 7, 4, 0, 0, 3184, 3185, + 7, 22, 0, 0, 3185, 3186, 7, 24, 0, 0, 3186, 3187, 7, 4, 0, 0, 3187, 3188, + 7, 5, 0, 0, 3188, 632, 1, 0, 0, 0, 3189, 3190, 7, 4, 0, 0, 3190, 3191, + 7, 3, 0, 0, 3191, 3192, 7, 4, 0, 0, 3192, 3193, 7, 1, 0, 0, 3193, 3194, + 7, 4, 0, 0, 3194, 3195, 7, 11, 0, 0, 3195, 3196, 7, 6, 0, 0, 3196, 634, + 1, 0, 0, 0, 3197, 3198, 7, 4, 0, 0, 3198, 3199, 7, 3, 0, 0, 3199, 3200, + 7, 4, 0, 0, 3200, 3201, 7, 1, 0, 0, 3201, 3202, 7, 4, 0, 0, 3202, 3203, + 7, 11, 0, 0, 3203, 3204, 7, 6, 0, 0, 3204, 3205, 7, 5, 0, 0, 3205, 636, + 1, 0, 0, 0, 3206, 3207, 7, 9, 0, 0, 3207, 3208, 7, 0, 0, 0, 3208, 3209, + 7, 7, 0, 0, 3209, 3210, 7, 5, 0, 0, 3210, 3211, 7, 6, 0, 0, 3211, 638, + 1, 0, 0, 0, 3212, 3213, 7, 24, 0, 0, 3213, 3214, 7, 7, 0, 0, 3214, 3215, + 7, 10, 0, 0, 3215, 3216, 7, 2, 0, 0, 3216, 3217, 7, 26, 0, 0, 3217, 640, + 1, 0, 0, 0, 3218, 3219, 7, 24, 0, 0, 3219, 3220, 7, 7, 0, 0, 3220, 3221, + 7, 13, 0, 0, 3221, 3222, 7, 8, 0, 0, 3222, 3223, 7, 2, 0, 0, 3223, 3224, + 7, 5, 0, 0, 3224, 642, 1, 0, 0, 0, 3225, 3226, 7, 12, 0, 0, 3226, 3227, + 7, 4, 0, 0, 3227, 3228, 7, 4, 0, 0, 3228, 3229, 7, 2, 0, 0, 3229, 644, + 1, 0, 0, 0, 3230, 3231, 7, 3, 0, 0, 3231, 3232, 7, 10, 0, 0, 3232, 3233, + 7, 20, 0, 0, 3233, 3234, 7, 4, 0, 0, 3234, 3235, 7, 3, 0, 0, 3235, 646, + 1, 0, 0, 0, 3236, 3237, 7, 3, 0, 0, 3237, 3238, 7, 10, 0, 0, 3238, 3239, + 7, 20, 0, 0, 3239, 3240, 7, 4, 0, 0, 3240, 3241, 7, 3, 0, 0, 3241, 3242, + 7, 4, 0, 0, 3242, 3243, 7, 22, 0, 0, 3243, 648, 1, 0, 0, 0, 3244, 3245, + 7, 3, 0, 0, 3245, 3246, 7, 10, 0, 0, 3246, 3247, 7, 20, 0, 0, 3247, 3248, + 7, 4, 0, 0, 3248, 3249, 7, 3, 0, 0, 3249, 3250, 7, 5, 0, 0, 3250, 650, + 1, 0, 0, 0, 3251, 3252, 7, 3, 0, 0, 3252, 3253, 7, 10, 0, 0, 3253, 3254, + 7, 5, 0, 0, 3254, 3255, 7, 6, 0, 0, 3255, 652, 1, 0, 0, 0, 3256, 3257, + 7, 11, 0, 0, 3257, 3258, 7, 9, 0, 0, 3258, 3259, 7, 21, 0, 0, 3259, 654, + 1, 0, 0, 0, 3260, 3261, 7, 11, 0, 0, 3261, 3262, 7, 9, 0, 0, 3262, 3263, + 7, 22, 0, 0, 3263, 656, 1, 0, 0, 0, 3264, 3265, 7, 11, 0, 0, 3265, 3266, + 7, 9, 0, 0, 3266, 3267, 7, 12, 0, 0, 3267, 3268, 7, 21, 0, 0, 3268, 658, + 1, 0, 0, 0, 3269, 3270, 7, 11, 0, 0, 3270, 3271, 7, 9, 0, 0, 3271, 3272, + 7, 12, 0, 0, 3272, 3273, 7, 22, 0, 0, 3273, 660, 1, 0, 0, 0, 3274, 3275, + 7, 11, 0, 0, 3275, 3276, 7, 13, 0, 0, 3276, 662, 1, 0, 0, 0, 3277, 3278, + 7, 11, 0, 0, 3278, 3279, 7, 13, 0, 0, 3279, 3280, 7, 22, 0, 0, 3280, 3281, + 7, 4, 0, 0, 3281, 664, 1, 0, 0, 0, 3282, 3283, 7, 11, 0, 0, 3283, 3284, + 7, 13, 0, 0, 3284, 3285, 7, 7, 0, 0, 3285, 3286, 7, 1, 0, 0, 3286, 3287, + 7, 10, 0, 0, 3287, 3288, 7, 3, 0, 0, 3288, 3289, 7, 0, 0, 0, 3289, 3290, + 7, 27, 0, 0, 3290, 3291, 7, 4, 0, 0, 3291, 3292, 7, 22, 0, 0, 3292, 666, + 1, 0, 0, 0, 3293, 3294, 7, 13, 0, 0, 3294, 3295, 7, 11, 0, 0, 3295, 3296, + 7, 3, 0, 0, 3296, 3297, 7, 23, 0, 0, 3297, 668, 1, 0, 0, 0, 3298, 3299, + 7, 13, 0, 0, 3299, 3300, 7, 7, 0, 0, 3300, 3301, 7, 22, 0, 0, 3301, 3302, + 7, 0, 0, 0, 3302, 3303, 7, 11, 0, 0, 3303, 3304, 7, 10, 0, 0, 3304, 3305, + 7, 3, 0, 0, 3305, 3306, 7, 0, 0, 0, 3306, 3307, 7, 6, 0, 0, 3307, 3308, + 7, 23, 0, 0, 3308, 670, 1, 0, 0, 0, 3309, 3310, 7, 2, 0, 0, 3310, 3311, + 7, 7, 0, 0, 3311, 3312, 7, 13, 0, 0, 3312, 3313, 7, 2, 0, 0, 3313, 3314, + 7, 4, 0, 0, 3314, 3315, 7, 7, 0, 0, 3315, 3316, 7, 6, 0, 0, 3316, 3317, + 7, 23, 0, 0, 3317, 672, 1, 0, 0, 0, 3318, 3319, 7, 7, 0, 0, 3319, 3320, + 7, 4, 0, 0, 3320, 3321, 7, 10, 0, 0, 3321, 3322, 7, 22, 0, 0, 3322, 674, + 1, 0, 0, 0, 3323, 3324, 7, 7, 0, 0, 3324, 3325, 7, 4, 0, 0, 3325, 3326, + 7, 3, 0, 0, 3326, 3327, 7, 10, 0, 0, 3327, 3328, 7, 6, 0, 0, 3328, 3329, + 7, 0, 0, 0, 3329, 3330, 7, 13, 0, 0, 3330, 3331, 7, 11, 0, 0, 3331, 3332, + 7, 5, 0, 0, 3332, 3333, 7, 26, 0, 0, 3333, 3334, 7, 0, 0, 0, 3334, 3335, + 7, 2, 0, 0, 3335, 676, 1, 0, 0, 0, 3336, 3337, 7, 7, 0, 0, 3337, 3338, + 7, 4, 0, 0, 3338, 3339, 7, 3, 0, 0, 3339, 3340, 7, 10, 0, 0, 3340, 3341, + 7, 6, 0, 0, 3341, 3342, 7, 0, 0, 0, 3342, 3343, 7, 13, 0, 0, 3343, 3344, + 7, 11, 0, 0, 3344, 3345, 7, 5, 0, 0, 3345, 3346, 7, 26, 0, 0, 3346, 3347, + 7, 0, 0, 0, 3347, 3348, 7, 2, 0, 0, 3348, 3349, 7, 5, 0, 0, 3349, 678, + 1, 0, 0, 0, 3350, 3351, 7, 7, 0, 0, 3351, 3352, 7, 4, 0, 0, 3352, 3353, + 7, 2, 0, 0, 3353, 3354, 7, 4, 0, 0, 3354, 3355, 7, 10, 0, 0, 3355, 3356, + 7, 6, 0, 0, 3356, 3357, 7, 10, 0, 0, 3357, 3358, 7, 20, 0, 0, 3358, 3359, + 7, 3, 0, 0, 3359, 3360, 7, 4, 0, 0, 3360, 680, 1, 0, 0, 0, 3361, 3362, + 7, 5, 0, 0, 3362, 3363, 7, 26, 0, 0, 3363, 3364, 7, 13, 0, 0, 3364, 3365, + 7, 7, 0, 0, 3365, 3366, 7, 6, 0, 0, 3366, 3367, 7, 4, 0, 0, 3367, 3368, + 7, 5, 0, 0, 3368, 3369, 7, 6, 0, 0, 3369, 682, 1, 0, 0, 0, 3370, 3371, + 7, 5, 0, 0, 3371, 3372, 7, 0, 0, 0, 3372, 3373, 7, 1, 0, 0, 3373, 3374, + 7, 2, 0, 0, 3374, 3375, 7, 3, 0, 0, 3375, 3376, 7, 4, 0, 0, 3376, 684, + 1, 0, 0, 0, 3377, 3378, 7, 5, 0, 0, 3378, 3379, 7, 13, 0, 0, 3379, 3380, + 7, 8, 0, 0, 3380, 3381, 7, 7, 0, 0, 3381, 3382, 7, 21, 0, 0, 3382, 3383, + 7, 4, 0, 0, 3383, 686, 1, 0, 0, 0, 3384, 3385, 7, 6, 0, 0, 3385, 3386, + 7, 10, 0, 0, 3386, 3387, 7, 20, 0, 0, 3387, 3388, 7, 3, 0, 0, 3388, 3389, + 7, 4, 0, 0, 3389, 688, 1, 0, 0, 0, 3390, 3391, 7, 6, 0, 0, 3391, 3392, + 7, 13, 0, 0, 3392, 690, 1, 0, 0, 0, 3393, 3394, 7, 6, 0, 0, 3394, 3395, + 7, 7, 0, 0, 3395, 3396, 7, 10, 0, 0, 3396, 3397, 7, 0, 0, 0, 3397, 3398, + 7, 3, 0, 0, 3398, 692, 1, 0, 0, 0, 3399, 3400, 7, 6, 0, 0, 3400, 3401, + 7, 7, 0, 0, 3401, 3402, 7, 10, 0, 0, 3402, 3403, 7, 11, 0, 0, 3403, 3404, + 7, 5, 0, 0, 3404, 3405, 7, 10, 0, 0, 3405, 3406, 7, 21, 0, 0, 3406, 3407, + 7, 6, 0, 0, 3407, 3408, 7, 0, 0, 0, 3408, 3409, 7, 13, 0, 0, 3409, 3410, + 7, 11, 0, 0, 3410, 694, 1, 0, 0, 0, 3411, 3412, 7, 6, 0, 0, 3412, 3413, + 7, 23, 0, 0, 3413, 3414, 7, 2, 0, 0, 3414, 3415, 7, 4, 0, 0, 3415, 696, + 1, 0, 0, 0, 3416, 3417, 7, 8, 0, 0, 3417, 3418, 7, 11, 0, 0, 3418, 3419, + 7, 22, 0, 0, 3419, 3420, 7, 0, 0, 0, 3420, 3421, 7, 7, 0, 0, 3421, 3422, + 7, 4, 0, 0, 3422, 3423, 7, 21, 0, 0, 3423, 3424, 7, 6, 0, 0, 3424, 3425, + 7, 4, 0, 0, 3425, 3426, 7, 22, 0, 0, 3426, 698, 1, 0, 0, 0, 3427, 3428, + 7, 25, 0, 0, 3428, 3429, 7, 4, 0, 0, 3429, 3430, 7, 7, 0, 0, 3430, 3431, + 7, 6, 0, 0, 3431, 3432, 7, 4, 0, 0, 3432, 3433, 7, 18, 0, 0, 3433, 700, + 1, 0, 0, 0, 3434, 3435, 7, 14, 0, 0, 3435, 3436, 7, 10, 0, 0, 3436, 3437, + 7, 3, 0, 0, 3437, 3438, 7, 12, 0, 0, 3438, 702, 1, 0, 0, 0, 3439, 3440, + 7, 14, 0, 0, 3440, 3441, 7, 0, 0, 0, 3441, 3442, 7, 6, 0, 0, 3442, 3443, + 7, 26, 0, 0, 3443, 3444, 7, 13, 0, 0, 3444, 3445, 7, 8, 0, 0, 3445, 3446, + 7, 6, 0, 0, 3446, 704, 1, 0, 0, 0, 3447, 3448, 7, 14, 0, 0, 3448, 3449, + 7, 7, 0, 0, 3449, 3450, 7, 0, 0, 0, 3450, 3451, 7, 6, 0, 0, 3451, 3452, + 7, 4, 0, 0, 3452, 706, 1, 0, 0, 0, 3453, 3454, 7, 27, 0, 0, 3454, 3455, + 7, 13, 0, 0, 3455, 3456, 7, 11, 0, 0, 3456, 3457, 7, 4, 0, 0, 3457, 708, + 1, 0, 0, 0, 3458, 3461, 3, 715, 357, 0, 3459, 3461, 3, 713, 356, 0, 3460, + 3458, 1, 0, 0, 0, 3460, 3459, 1, 0, 0, 0, 3461, 710, 1, 0, 0, 0, 3462, + 3466, 3, 721, 360, 0, 3463, 3465, 3, 723, 361, 0, 3464, 3463, 1, 0, 0, + 0, 3465, 3468, 1, 0, 0, 0, 3466, 3464, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, + 0, 3467, 712, 1, 0, 0, 0, 3468, 3466, 1, 0, 0, 0, 3469, 3471, 3, 723, 361, + 0, 3470, 3469, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3470, 1, 0, 0, + 0, 3472, 3473, 1, 0, 0, 0, 3473, 714, 1, 0, 0, 0, 3474, 3477, 3, 9, 4, + 0, 3475, 3477, 3, 11, 5, 0, 3476, 3474, 1, 0, 0, 0, 3476, 3475, 1, 0, 0, + 0, 3477, 716, 1, 0, 0, 0, 3478, 3479, 3, 739, 369, 0, 3479, 3480, 3, 3, + 1, 0, 3480, 718, 1, 0, 0, 0, 3481, 3482, 3, 799, 399, 0, 3482, 3483, 3, + 3, 1, 0, 3483, 720, 1, 0, 0, 0, 3484, 3487, 3, 725, 362, 0, 3485, 3487, + 3, 875, 437, 0, 3486, 3484, 1, 0, 0, 0, 3486, 3485, 1, 0, 0, 0, 3487, 722, + 1, 0, 0, 0, 3488, 3489, 3, 727, 363, 0, 3489, 724, 1, 0, 0, 0, 3490, 3491, + 7, 30, 0, 0, 3491, 726, 1, 0, 0, 0, 3492, 3493, 7, 31, 0, 0, 3493, 728, + 1, 0, 0, 0, 3494, 3495, 5, 124, 0, 0, 3495, 3496, 5, 43, 0, 0, 3496, 3497, + 5, 124, 0, 0, 3497, 730, 1, 0, 0, 0, 3498, 3499, 5, 93, 0, 0, 3499, 3500, + 5, 45, 0, 0, 3500, 3501, 5, 62, 0, 0, 3501, 732, 1, 0, 0, 0, 3502, 3503, + 5, 93, 0, 0, 3503, 3504, 5, 126, 0, 0, 3504, 3505, 5, 62, 0, 0, 3505, 734, + 1, 0, 0, 0, 3506, 3507, 5, 124, 0, 0, 3507, 3508, 5, 124, 0, 0, 3508, 736, + 1, 0, 0, 0, 3509, 3510, 5, 58, 0, 0, 3510, 3511, 5, 58, 0, 0, 3511, 738, + 1, 0, 0, 0, 3512, 3513, 5, 36, 0, 0, 3513, 3514, 5, 36, 0, 0, 3514, 740, + 1, 0, 0, 0, 3515, 3516, 5, 46, 0, 0, 3516, 3517, 5, 46, 0, 0, 3517, 742, + 1, 0, 0, 0, 3518, 3519, 5, 62, 0, 0, 3519, 3520, 5, 61, 0, 0, 3520, 744, + 1, 0, 0, 0, 3521, 3522, 5, 60, 0, 0, 3522, 3523, 5, 45, 0, 0, 3523, 746, + 1, 0, 0, 0, 3524, 3525, 5, 60, 0, 0, 3525, 3526, 5, 126, 0, 0, 3526, 748, + 1, 0, 0, 0, 3527, 3528, 5, 60, 0, 0, 3528, 3529, 5, 45, 0, 0, 3529, 3530, + 5, 91, 0, 0, 3530, 750, 1, 0, 0, 0, 3531, 3532, 5, 60, 0, 0, 3532, 3533, + 5, 126, 0, 0, 3533, 3534, 5, 91, 0, 0, 3534, 752, 1, 0, 0, 0, 3535, 3536, + 5, 60, 0, 0, 3536, 3537, 5, 45, 0, 0, 3537, 3538, 5, 62, 0, 0, 3538, 754, + 1, 0, 0, 0, 3539, 3540, 5, 60, 0, 0, 3540, 3541, 5, 45, 0, 0, 3541, 3542, + 5, 47, 0, 0, 3542, 756, 1, 0, 0, 0, 3543, 3544, 5, 60, 0, 0, 3544, 3545, + 5, 126, 0, 0, 3545, 3546, 5, 47, 0, 0, 3546, 758, 1, 0, 0, 0, 3547, 3548, + 5, 60, 0, 0, 3548, 3549, 5, 61, 0, 0, 3549, 760, 1, 0, 0, 0, 3550, 3551, + 5, 45, 0, 0, 3551, 3552, 5, 91, 0, 0, 3552, 762, 1, 0, 0, 0, 3553, 3554, + 5, 45, 0, 0, 3554, 3555, 5, 47, 0, 0, 3555, 764, 1, 0, 0, 0, 3556, 3557, + 5, 60, 0, 0, 3557, 3558, 5, 62, 0, 0, 3558, 766, 1, 0, 0, 0, 3559, 3560, + 5, 45, 0, 0, 3560, 3561, 5, 62, 0, 0, 3561, 768, 1, 0, 0, 0, 3562, 3563, + 5, 93, 0, 0, 3563, 3564, 5, 45, 0, 0, 3564, 770, 1, 0, 0, 0, 3565, 3566, + 5, 93, 0, 0, 3566, 3567, 5, 126, 0, 0, 3567, 772, 1, 0, 0, 0, 3568, 3569, + 5, 61, 0, 0, 3569, 3570, 5, 62, 0, 0, 3570, 774, 1, 0, 0, 0, 3571, 3572, + 5, 47, 0, 0, 3572, 3573, 5, 45, 0, 0, 3573, 776, 1, 0, 0, 0, 3574, 3575, + 5, 47, 0, 0, 3575, 3576, 5, 45, 0, 0, 3576, 3577, 5, 62, 0, 0, 3577, 778, + 1, 0, 0, 0, 3578, 3579, 5, 47, 0, 0, 3579, 3580, 5, 126, 0, 0, 3580, 780, + 1, 0, 0, 0, 3581, 3582, 5, 47, 0, 0, 3582, 3583, 5, 126, 0, 0, 3583, 3584, + 5, 62, 0, 0, 3584, 782, 1, 0, 0, 0, 3585, 3586, 5, 126, 0, 0, 3586, 3587, + 5, 91, 0, 0, 3587, 784, 1, 0, 0, 0, 3588, 3589, 5, 126, 0, 0, 3589, 3590, + 5, 62, 0, 0, 3590, 786, 1, 0, 0, 0, 3591, 3592, 5, 126, 0, 0, 3592, 3593, + 5, 47, 0, 0, 3593, 788, 1, 0, 0, 0, 3594, 3595, 5, 38, 0, 0, 3595, 790, + 1, 0, 0, 0, 3596, 3597, 5, 42, 0, 0, 3597, 792, 1, 0, 0, 0, 3598, 3599, + 5, 58, 0, 0, 3599, 794, 1, 0, 0, 0, 3600, 3601, 5, 44, 0, 0, 3601, 796, + 1, 0, 0, 0, 3602, 3603, 5, 64, 0, 0, 3603, 798, 1, 0, 0, 0, 3604, 3605, + 5, 36, 0, 0, 3605, 800, 1, 0, 0, 0, 3606, 3607, 5, 34, 0, 0, 3607, 802, + 1, 0, 0, 0, 3608, 3609, 5, 61, 0, 0, 3609, 804, 1, 0, 0, 0, 3610, 3611, + 5, 33, 0, 0, 3611, 806, 1, 0, 0, 0, 3612, 3613, 5, 62, 0, 0, 3613, 808, + 1, 0, 0, 0, 3614, 3615, 5, 96, 0, 0, 3615, 810, 1, 0, 0, 0, 3616, 3617, + 5, 123, 0, 0, 3617, 812, 1, 0, 0, 0, 3618, 3619, 5, 91, 0, 0, 3619, 814, + 1, 0, 0, 0, 3620, 3621, 5, 40, 0, 0, 3621, 816, 1, 0, 0, 0, 3622, 3623, + 5, 60, 0, 0, 3623, 818, 1, 0, 0, 0, 3624, 3625, 5, 45, 0, 0, 3625, 820, + 1, 0, 0, 0, 3626, 3627, 5, 37, 0, 0, 3627, 822, 1, 0, 0, 0, 3628, 3629, + 5, 46, 0, 0, 3629, 824, 1, 0, 0, 0, 3630, 3631, 5, 43, 0, 0, 3631, 826, + 1, 0, 0, 0, 3632, 3633, 5, 63, 0, 0, 3633, 828, 1, 0, 0, 0, 3634, 3635, + 5, 39, 0, 0, 3635, 830, 1, 0, 0, 0, 3636, 3637, 5, 92, 0, 0, 3637, 832, + 1, 0, 0, 0, 3638, 3639, 5, 125, 0, 0, 3639, 834, 1, 0, 0, 0, 3640, 3641, + 5, 93, 0, 0, 3641, 836, 1, 0, 0, 0, 3642, 3643, 5, 41, 0, 0, 3643, 838, + 1, 0, 0, 0, 3644, 3645, 5, 47, 0, 0, 3645, 840, 1, 0, 0, 0, 3646, 3647, + 5, 126, 0, 0, 3647, 842, 1, 0, 0, 0, 3648, 3649, 5, 95, 0, 0, 3649, 844, + 1, 0, 0, 0, 3650, 3651, 5, 124, 0, 0, 3651, 846, 1, 0, 0, 0, 3652, 3653, + 7, 32, 0, 0, 3653, 848, 1, 0, 0, 0, 3654, 3655, 7, 33, 0, 0, 3655, 850, + 1, 0, 0, 0, 3656, 3657, 7, 34, 0, 0, 3657, 852, 1, 0, 0, 0, 3658, 3659, + 7, 35, 0, 0, 3659, 854, 1, 0, 0, 0, 3660, 3662, 3, 857, 428, 0, 3661, 3660, + 1, 0, 0, 0, 3662, 3663, 1, 0, 0, 0, 3663, 3661, 1, 0, 0, 0, 3663, 3664, + 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3666, 6, 427, 0, 0, 3666, 856, + 1, 0, 0, 0, 3667, 3679, 3, 873, 436, 0, 3668, 3679, 3, 877, 438, 0, 3669, + 3679, 3, 879, 439, 0, 3670, 3679, 3, 881, 440, 0, 3671, 3679, 3, 885, 442, + 0, 3672, 3679, 3, 869, 434, 0, 3673, 3679, 3, 867, 433, 0, 3674, 3679, + 3, 865, 432, 0, 3675, 3679, 3, 887, 443, 0, 3676, 3679, 3, 883, 441, 0, + 3677, 3679, 7, 36, 0, 0, 3678, 3667, 1, 0, 0, 0, 3678, 3668, 1, 0, 0, 0, + 3678, 3669, 1, 0, 0, 0, 3678, 3670, 1, 0, 0, 0, 3678, 3671, 1, 0, 0, 0, + 3678, 3672, 1, 0, 0, 0, 3678, 3673, 1, 0, 0, 0, 3678, 3674, 1, 0, 0, 0, + 3678, 3675, 1, 0, 0, 0, 3678, 3676, 1, 0, 0, 0, 3678, 3677, 1, 0, 0, 0, + 3679, 858, 1, 0, 0, 0, 3680, 3681, 5, 47, 0, 0, 3681, 3682, 5, 42, 0, 0, + 3682, 3686, 1, 0, 0, 0, 3683, 3685, 9, 0, 0, 0, 3684, 3683, 1, 0, 0, 0, + 3685, 3688, 1, 0, 0, 0, 3686, 3687, 1, 0, 0, 0, 3686, 3684, 1, 0, 0, 0, + 3687, 3689, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, 3689, 3690, 5, 42, 0, 0, + 3690, 3691, 5, 47, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3693, 6, 429, 0, + 0, 3693, 860, 1, 0, 0, 0, 3694, 3695, 5, 47, 0, 0, 3695, 3696, 5, 47, 0, + 0, 3696, 3700, 1, 0, 0, 0, 3697, 3699, 8, 37, 0, 0, 3698, 3697, 1, 0, 0, + 0, 3699, 3702, 1, 0, 0, 0, 3700, 3698, 1, 0, 0, 0, 3700, 3701, 1, 0, 0, + 0, 3701, 3703, 1, 0, 0, 0, 3702, 3700, 1, 0, 0, 0, 3703, 3704, 6, 430, + 0, 0, 3704, 862, 1, 0, 0, 0, 3705, 3706, 5, 45, 0, 0, 3706, 3707, 5, 45, + 0, 0, 3707, 3711, 1, 0, 0, 0, 3708, 3710, 8, 37, 0, 0, 3709, 3708, 1, 0, + 0, 0, 3710, 3713, 1, 0, 0, 0, 3711, 3709, 1, 0, 0, 0, 3711, 3712, 1, 0, + 0, 0, 3712, 3714, 1, 0, 0, 0, 3713, 3711, 1, 0, 0, 0, 3714, 3715, 6, 431, + 0, 0, 3715, 864, 1, 0, 0, 0, 3716, 3717, 7, 38, 0, 0, 3717, 866, 1, 0, + 0, 0, 3718, 3719, 7, 39, 0, 0, 3719, 868, 1, 0, 0, 0, 3720, 3721, 7, 40, + 0, 0, 3721, 870, 1, 0, 0, 0, 3722, 3723, 7, 41, 0, 0, 3723, 872, 1, 0, + 0, 0, 3724, 3725, 7, 42, 0, 0, 3725, 874, 1, 0, 0, 0, 3726, 3727, 7, 43, + 0, 0, 3727, 876, 1, 0, 0, 0, 3728, 3729, 7, 44, 0, 0, 3729, 878, 1, 0, + 0, 0, 3730, 3731, 7, 45, 0, 0, 3731, 880, 1, 0, 0, 0, 3732, 3733, 7, 46, + 0, 0, 3733, 882, 1, 0, 0, 0, 3734, 3735, 7, 47, 0, 0, 3735, 884, 1, 0, + 0, 0, 3736, 3737, 7, 48, 0, 0, 3737, 886, 1, 0, 0, 0, 3738, 3739, 7, 49, + 0, 0, 3739, 888, 1, 0, 0, 0, 42, 0, 897, 917, 920, 925, 930, 940, 949, + 958, 967, 969, 975, 977, 983, 985, 998, 1052, 1059, 1066, 1071, 1100, 1105, + 1116, 1123, 1128, 1132, 1138, 1143, 1150, 1155, 1162, 1167, 3460, 3466, + 3472, 3476, 3486, 3663, 3678, 3686, 3700, 3711, 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// GQLLexerInit initializes any static state used to implement GQLLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewGQLLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func GQLLexerInit() { + staticData := &GQLLexerLexerStaticData + staticData.once.Do(gqllexerLexerInit) +} + +// NewGQLLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewGQLLexer(input antlr.CharStream) *GQLLexer { + GQLLexerInit() + l := new(GQLLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &GQLLexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.PredictionContextCache) + l.channelNames = staticData.ChannelNames + l.modeNames = staticData.ModeNames + l.RuleNames = staticData.RuleNames + l.LiteralNames = staticData.LiteralNames + l.SymbolicNames = staticData.SymbolicNames + l.GrammarFileName = "GQL.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// GQLLexer tokens. +const ( + GQLLexerIMPLIES = 1 + GQLLexerBOOLEAN_LITERAL = 2 + GQLLexerSINGLE_QUOTED_CHARACTER_SEQUENCE = 3 + GQLLexerDOUBLE_QUOTED_CHARACTER_SEQUENCE = 4 + GQLLexerACCENT_QUOTED_CHARACTER_SEQUENCE = 5 + GQLLexerNO_ESCAPE = 6 + GQLLexerBYTE_STRING_LITERAL = 7 + GQLLexerUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX = 8 + GQLLexerUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX = 9 + GQLLexerUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX = 10 + GQLLexerUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX = 11 + GQLLexerUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX = 12 + GQLLexerUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX = 13 + GQLLexerUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX = 14 + GQLLexerUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX = 15 + GQLLexerUNSIGNED_DECIMAL_INTEGER = 16 + GQLLexerUNSIGNED_HEXADECIMAL_INTEGER = 17 + GQLLexerUNSIGNED_OCTAL_INTEGER = 18 + GQLLexerUNSIGNED_BINARY_INTEGER = 19 + GQLLexerABS = 20 + GQLLexerACOS = 21 + GQLLexerALL = 22 + GQLLexerALL_DIFFERENT = 23 + GQLLexerAND = 24 + GQLLexerANY = 25 + GQLLexerARRAY = 26 + GQLLexerAS = 27 + GQLLexerASC = 28 + GQLLexerASCENDING = 29 + GQLLexerASIN = 30 + GQLLexerAT = 31 + GQLLexerATAN = 32 + GQLLexerAVG = 33 + GQLLexerBIG = 34 + GQLLexerBIGINT = 35 + GQLLexerBINARY = 36 + GQLLexerBOOL = 37 + GQLLexerBOOLEAN = 38 + GQLLexerBOTH = 39 + GQLLexerBTRIM = 40 + GQLLexerBY = 41 + GQLLexerBYTE_LENGTH = 42 + GQLLexerBYTES = 43 + GQLLexerCALL = 44 + GQLLexerCARDINALITY = 45 + GQLLexerCASE = 46 + GQLLexerCAST = 47 + GQLLexerCEIL = 48 + GQLLexerCEILING = 49 + GQLLexerCHAR = 50 + GQLLexerCHAR_LENGTH = 51 + GQLLexerCHARACTER_LENGTH = 52 + GQLLexerCHARACTERISTICS = 53 + GQLLexerCLOSE = 54 + GQLLexerCOALESCE = 55 + GQLLexerCOLLECT_LIST = 56 + GQLLexerCOMMIT = 57 + GQLLexerCOPY = 58 + GQLLexerCOS = 59 + GQLLexerCOSH = 60 + GQLLexerCOT = 61 + GQLLexerCOUNT = 62 + GQLLexerCREATE = 63 + GQLLexerCURRENT_DATE = 64 + GQLLexerCURRENT_GRAPH = 65 + GQLLexerCURRENT_PROPERTY_GRAPH = 66 + GQLLexerCURRENT_SCHEMA = 67 + GQLLexerCURRENT_TIME = 68 + GQLLexerCURRENT_TIMESTAMP = 69 + GQLLexerDATE = 70 + GQLLexerDATETIME = 71 + GQLLexerDAY = 72 + GQLLexerDEC = 73 + GQLLexerDECIMAL = 74 + GQLLexerDEGREES = 75 + GQLLexerDELETE = 76 + GQLLexerDESC = 77 + GQLLexerDESCENDING = 78 + GQLLexerDETACH = 79 + GQLLexerDISTINCT = 80 + GQLLexerDOUBLE = 81 + GQLLexerDROP = 82 + GQLLexerDURATION = 83 + GQLLexerDURATION_BETWEEN = 84 + GQLLexerELEMENT_ID = 85 + GQLLexerELSE = 86 + GQLLexerEND = 87 + GQLLexerEXCEPT = 88 + GQLLexerEXISTS = 89 + GQLLexerEXP = 90 + GQLLexerFILTER = 91 + GQLLexerFINISH = 92 + GQLLexerFLOAT = 93 + GQLLexerFLOAT16 = 94 + GQLLexerFLOAT32 = 95 + GQLLexerFLOAT64 = 96 + GQLLexerFLOAT128 = 97 + GQLLexerFLOAT256 = 98 + GQLLexerFLOOR = 99 + GQLLexerFOR = 100 + GQLLexerFROM = 101 + GQLLexerGROUP = 102 + GQLLexerHAVING = 103 + GQLLexerHOME_GRAPH = 104 + GQLLexerHOME_PROPERTY_GRAPH = 105 + GQLLexerHOME_SCHEMA = 106 + GQLLexerHOUR = 107 + GQLLexerIF = 108 + GQLLexerIN = 109 + GQLLexerINSERT = 110 + GQLLexerINT = 111 + GQLLexerINTEGER = 112 + GQLLexerINT8 = 113 + GQLLexerINTEGER8 = 114 + GQLLexerINT16 = 115 + GQLLexerINTEGER16 = 116 + GQLLexerINT32 = 117 + GQLLexerINTEGER32 = 118 + GQLLexerINT64 = 119 + GQLLexerINTEGER64 = 120 + GQLLexerINT128 = 121 + GQLLexerINTEGER128 = 122 + GQLLexerINT256 = 123 + GQLLexerINTEGER256 = 124 + GQLLexerINTERSECT = 125 + GQLLexerINTERVAL = 126 + GQLLexerIS = 127 + GQLLexerLEADING = 128 + GQLLexerLEFT = 129 + GQLLexerLET = 130 + GQLLexerLIKE = 131 + GQLLexerLIMIT = 132 + GQLLexerLIST = 133 + GQLLexerLN = 134 + GQLLexerLOCAL = 135 + GQLLexerLOCAL_DATETIME = 136 + GQLLexerLOCAL_TIME = 137 + GQLLexerLOCAL_TIMESTAMP = 138 + GQLLexerLOG_KW = 139 + GQLLexerLOG10 = 140 + GQLLexerLOWER = 141 + GQLLexerLTRIM = 142 + GQLLexerMATCH = 143 + GQLLexerMAX = 144 + GQLLexerMIN = 145 + GQLLexerMINUTE = 146 + GQLLexerMOD = 147 + GQLLexerMONTH = 148 + GQLLexerNEXT = 149 + GQLLexerNODETACH = 150 + GQLLexerNORMALIZE = 151 + GQLLexerNOT = 152 + GQLLexerNOTHING = 153 + GQLLexerNULL_KW = 154 + GQLLexerNULLS = 155 + GQLLexerNULLIF = 156 + GQLLexerOCTET_LENGTH = 157 + GQLLexerOF = 158 + GQLLexerOFFSET = 159 + GQLLexerOPTIONAL = 160 + GQLLexerOR = 161 + GQLLexerORDER = 162 + GQLLexerOTHERWISE = 163 + GQLLexerPARAMETER = 164 + GQLLexerPARAMETERS = 165 + GQLLexerPATH = 166 + GQLLexerPATH_LENGTH = 167 + GQLLexerPATHS = 168 + GQLLexerPERCENTILE_CONT = 169 + GQLLexerPERCENTILE_DISC = 170 + GQLLexerPOWER = 171 + GQLLexerPRECISION = 172 + GQLLexerPROPERTY_EXISTS = 173 + GQLLexerRADIANS = 174 + GQLLexerREAL = 175 + GQLLexerRECORD = 176 + GQLLexerREMOVE = 177 + GQLLexerREPLACE = 178 + GQLLexerRESET = 179 + GQLLexerRETURN = 180 + GQLLexerRIGHT = 181 + GQLLexerROLLBACK = 182 + GQLLexerRTRIM = 183 + GQLLexerSAME = 184 + GQLLexerSCHEMA = 185 + GQLLexerSECOND = 186 + GQLLexerSELECT = 187 + GQLLexerSESSION = 188 + GQLLexerSESSION_USER = 189 + GQLLexerSET = 190 + GQLLexerSIGNED = 191 + GQLLexerSIN = 192 + GQLLexerSINH = 193 + GQLLexerSIZE = 194 + GQLLexerSKIP_RESERVED_WORD = 195 + GQLLexerSMALL = 196 + GQLLexerSMALLINT = 197 + GQLLexerSQRT = 198 + GQLLexerSTART = 199 + GQLLexerSTDDEV_POP = 200 + GQLLexerSTDDEV_SAMP = 201 + GQLLexerSTRING = 202 + GQLLexerSUM = 203 + GQLLexerTAN = 204 + GQLLexerTANH = 205 + GQLLexerTHEN = 206 + GQLLexerTIME = 207 + GQLLexerTIMESTAMP = 208 + GQLLexerTRAILING = 209 + GQLLexerTRIM = 210 + GQLLexerTYPED = 211 + GQLLexerUBIGINT = 212 + GQLLexerUINT = 213 + GQLLexerUINT8 = 214 + GQLLexerUINT16 = 215 + GQLLexerUINT32 = 216 + GQLLexerUINT64 = 217 + GQLLexerUINT128 = 218 + GQLLexerUINT256 = 219 + GQLLexerUNION = 220 + GQLLexerUNSIGNED = 221 + GQLLexerUPPER = 222 + GQLLexerUSE = 223 + GQLLexerUSMALLINT = 224 + GQLLexerVALUE = 225 + GQLLexerVARBINARY = 226 + GQLLexerVARCHAR = 227 + GQLLexerVARIABLE = 228 + GQLLexerWHEN = 229 + GQLLexerWHERE = 230 + GQLLexerWITH = 231 + GQLLexerXOR = 232 + GQLLexerYEAR = 233 + GQLLexerYIELD = 234 + GQLLexerZONED = 235 + GQLLexerZONED_DATETIME = 236 + GQLLexerZONED_TIME = 237 + GQLLexerABSTRACT = 238 + GQLLexerAGGREGATE = 239 + GQLLexerAGGREGATES = 240 + GQLLexerALTER = 241 + GQLLexerCATALOG = 242 + GQLLexerCLEAR = 243 + GQLLexerCLONE = 244 + GQLLexerCONSTRAINT = 245 + GQLLexerCURRENT_ROLE = 246 + GQLLexerCURRENT_USER = 247 + GQLLexerDATA = 248 + GQLLexerDIRECTORY = 249 + GQLLexerDRYRUN = 250 + GQLLexerEXACT = 251 + GQLLexerEXISTING = 252 + GQLLexerFUNCTION = 253 + GQLLexerGQLSTATUS = 254 + GQLLexerGRANT = 255 + GQLLexerINSTANT = 256 + GQLLexerINFINITY_KW = 257 + GQLLexerNUMBER = 258 + GQLLexerNUMERIC = 259 + GQLLexerON = 260 + GQLLexerOPEN = 261 + GQLLexerPARTITION = 262 + GQLLexerPROCEDURE = 263 + GQLLexerPRODUCT = 264 + GQLLexerPROJECT = 265 + GQLLexerQUERY = 266 + GQLLexerRECORDS = 267 + GQLLexerREFERENCE = 268 + GQLLexerRENAME = 269 + GQLLexerREVOKE = 270 + GQLLexerSUBSTRING = 271 + GQLLexerSYSTEM_USER = 272 + GQLLexerTEMPORAL = 273 + GQLLexerUNIQUE = 274 + GQLLexerUNIT = 275 + GQLLexerVALUES = 276 + GQLLexerACYCLIC = 277 + GQLLexerBINDING = 278 + GQLLexerBINDINGS = 279 + GQLLexerCONNECTING = 280 + GQLLexerDESTINATION = 281 + GQLLexerDIFFERENT = 282 + GQLLexerDIRECTED = 283 + GQLLexerEDGE = 284 + GQLLexerEDGES = 285 + GQLLexerELEMENT = 286 + GQLLexerELEMENTS = 287 + GQLLexerFIRST = 288 + GQLLexerGRAPH = 289 + GQLLexerGROUPS = 290 + GQLLexerKEEP = 291 + GQLLexerLABEL = 292 + GQLLexerLABELED = 293 + GQLLexerLABELS = 294 + GQLLexerLAST = 295 + GQLLexerNFC = 296 + GQLLexerNFD = 297 + GQLLexerNFKC = 298 + GQLLexerNFKD = 299 + GQLLexerNO = 300 + GQLLexerNODE = 301 + GQLLexerNORMALIZED = 302 + GQLLexerONLY = 303 + GQLLexerORDINALITY = 304 + GQLLexerPROPERTY = 305 + GQLLexerREAD = 306 + GQLLexerRELATIONSHIP = 307 + GQLLexerRELATIONSHIPS = 308 + GQLLexerREPEATABLE = 309 + GQLLexerSHORTEST = 310 + GQLLexerSIMPLE = 311 + GQLLexerSOURCE = 312 + GQLLexerTABLE = 313 + GQLLexerTO = 314 + GQLLexerTRAIL = 315 + GQLLexerTRANSACTION = 316 + GQLLexerTYPE = 317 + GQLLexerUNDIRECTED = 318 + GQLLexerVERTEX = 319 + GQLLexerWALK = 320 + GQLLexerWITHOUT = 321 + GQLLexerWRITE = 322 + GQLLexerZONE = 323 + GQLLexerREGULAR_IDENTIFIER = 324 + GQLLexerSUBSTITUTED_PARAMETER_REFERENCE = 325 + GQLLexerGENERAL_PARAMETER_REFERENCE = 326 + GQLLexerMULTISET_ALTERNATION_OPERATOR = 327 + GQLLexerBRACKET_RIGHT_ARROW = 328 + GQLLexerBRACKET_TILDE_RIGHT_ARROW = 329 + GQLLexerCONCATENATION_OPERATOR = 330 + GQLLexerDOUBLE_COLON = 331 + GQLLexerDOUBLE_DOLLAR_SIGN = 332 + GQLLexerDOUBLE_PERIOD = 333 + GQLLexerGREATER_THAN_OR_EQUALS_OPERATOR = 334 + GQLLexerLEFT_ARROW = 335 + GQLLexerLEFT_ARROW_TILDE = 336 + GQLLexerLEFT_ARROW_BRACKET = 337 + GQLLexerLEFT_ARROW_TILDE_BRACKET = 338 + GQLLexerLEFT_MINUS_RIGHT = 339 + GQLLexerLEFT_MINUS_SLASH = 340 + GQLLexerLEFT_TILDE_SLASH = 341 + GQLLexerLESS_THAN_OR_EQUALS_OPERATOR = 342 + GQLLexerMINUS_LEFT_BRACKET = 343 + GQLLexerMINUS_SLASH = 344 + GQLLexerNOT_EQUALS_OPERATOR = 345 + GQLLexerRIGHT_ARROW = 346 + GQLLexerRIGHT_BRACKET_MINUS = 347 + GQLLexerRIGHT_BRACKET_TILDE = 348 + GQLLexerRIGHT_DOUBLE_ARROW = 349 + GQLLexerSLASH_MINUS = 350 + GQLLexerSLASH_MINUS_RIGHT = 351 + GQLLexerSLASH_TILDE = 352 + GQLLexerSLASH_TILDE_RIGHT = 353 + GQLLexerTILDE_LEFT_BRACKET = 354 + GQLLexerTILDE_RIGHT_ARROW = 355 + GQLLexerTILDE_SLASH = 356 + GQLLexerAMPERSAND = 357 + GQLLexerASTERISK = 358 + GQLLexerCOLON = 359 + GQLLexerCOMMA = 360 + GQLLexerCOMMERCIAL_AT = 361 + GQLLexerDOLLAR_SIGN = 362 + GQLLexerDOUBLE_QUOTE = 363 + GQLLexerEQUALS_OPERATOR = 364 + GQLLexerEXCLAMATION_MARK = 365 + GQLLexerRIGHT_ANGLE_BRACKET = 366 + GQLLexerGRAVE_ACCENT = 367 + GQLLexerLEFT_BRACE = 368 + GQLLexerLEFT_BRACKET = 369 + GQLLexerLEFT_PAREN = 370 + GQLLexerLEFT_ANGLE_BRACKET = 371 + GQLLexerMINUS_SIGN = 372 + GQLLexerPERCENT = 373 + GQLLexerPERIOD = 374 + GQLLexerPLUS_SIGN = 375 + GQLLexerQUESTION_MARK = 376 + GQLLexerQUOTE = 377 + GQLLexerREVERSE_SOLIDUS = 378 + GQLLexerRIGHT_BRACE = 379 + GQLLexerRIGHT_BRACKET = 380 + GQLLexerRIGHT_PAREN = 381 + GQLLexerSOLIDUS = 382 + GQLLexerTILDE = 383 + GQLLexerUNDERSCORE = 384 + GQLLexerVERTICAL_BAR = 385 + GQLLexerSP = 386 + GQLLexerWHITESPACE = 387 + GQLLexerBRACKETED_COMMENT = 388 + GQLLexerSIMPLE_COMMENT_SOLIDUS = 389 + GQLLexerSIMPLE_COMMENT_MINUS = 390 +) diff --git a/endpoints/gql/parser/gql_listener.go b/endpoints/gql/parser/gql_listener.go new file mode 100644 index 00000000..ed8a532b --- /dev/null +++ b/endpoints/gql/parser/gql_listener.go @@ -0,0 +1,3670 @@ +// Code generated from GQL.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser // GQL + +import "github.com/antlr4-go/antlr/v4" + +// GQLListener is a complete listener for a parse tree produced by GQLParser. +type GQLListener interface { + antlr.ParseTreeListener + + // EnterGqlProgram is called when entering the gqlProgram production. + EnterGqlProgram(c *GqlProgramContext) + + // EnterProgramActivity is called when entering the programActivity production. + EnterProgramActivity(c *ProgramActivityContext) + + // EnterSessionActivity is called when entering the sessionActivity production. + EnterSessionActivity(c *SessionActivityContext) + + // EnterTransactionActivity is called when entering the transactionActivity production. + EnterTransactionActivity(c *TransactionActivityContext) + + // EnterEndTransactionCommand is called when entering the endTransactionCommand production. + EnterEndTransactionCommand(c *EndTransactionCommandContext) + + // EnterSessionSetCommand is called when entering the sessionSetCommand production. + EnterSessionSetCommand(c *SessionSetCommandContext) + + // EnterSessionSetSchemaClause is called when entering the sessionSetSchemaClause production. + EnterSessionSetSchemaClause(c *SessionSetSchemaClauseContext) + + // EnterSessionSetGraphClause is called when entering the sessionSetGraphClause production. + EnterSessionSetGraphClause(c *SessionSetGraphClauseContext) + + // EnterSessionSetTimeZoneClause is called when entering the sessionSetTimeZoneClause production. + EnterSessionSetTimeZoneClause(c *SessionSetTimeZoneClauseContext) + + // EnterSetTimeZoneValue is called when entering the setTimeZoneValue production. + EnterSetTimeZoneValue(c *SetTimeZoneValueContext) + + // EnterSessionSetParameterClause is called when entering the sessionSetParameterClause production. + EnterSessionSetParameterClause(c *SessionSetParameterClauseContext) + + // EnterSessionSetGraphParameterClause is called when entering the sessionSetGraphParameterClause production. + EnterSessionSetGraphParameterClause(c *SessionSetGraphParameterClauseContext) + + // EnterSessionSetBindingTableParameterClause is called when entering the sessionSetBindingTableParameterClause production. + EnterSessionSetBindingTableParameterClause(c *SessionSetBindingTableParameterClauseContext) + + // EnterSessionSetValueParameterClause is called when entering the sessionSetValueParameterClause production. + EnterSessionSetValueParameterClause(c *SessionSetValueParameterClauseContext) + + // EnterSessionSetParameterName is called when entering the sessionSetParameterName production. + EnterSessionSetParameterName(c *SessionSetParameterNameContext) + + // EnterSessionResetCommand is called when entering the sessionResetCommand production. + EnterSessionResetCommand(c *SessionResetCommandContext) + + // EnterSessionResetArguments is called when entering the sessionResetArguments production. + EnterSessionResetArguments(c *SessionResetArgumentsContext) + + // EnterSessionCloseCommand is called when entering the sessionCloseCommand production. + EnterSessionCloseCommand(c *SessionCloseCommandContext) + + // EnterSessionParameterSpecification is called when entering the sessionParameterSpecification production. + EnterSessionParameterSpecification(c *SessionParameterSpecificationContext) + + // EnterStartTransactionCommand is called when entering the startTransactionCommand production. + EnterStartTransactionCommand(c *StartTransactionCommandContext) + + // EnterTransactionCharacteristics is called when entering the transactionCharacteristics production. + EnterTransactionCharacteristics(c *TransactionCharacteristicsContext) + + // EnterTransactionMode is called when entering the transactionMode production. + EnterTransactionMode(c *TransactionModeContext) + + // EnterTransactionAccessMode is called when entering the transactionAccessMode production. + EnterTransactionAccessMode(c *TransactionAccessModeContext) + + // EnterRollbackCommand is called when entering the rollbackCommand production. + EnterRollbackCommand(c *RollbackCommandContext) + + // EnterCommitCommand is called when entering the commitCommand production. + EnterCommitCommand(c *CommitCommandContext) + + // EnterNestedProcedureSpecification is called when entering the nestedProcedureSpecification production. + EnterNestedProcedureSpecification(c *NestedProcedureSpecificationContext) + + // EnterProcedureSpecification is called when entering the procedureSpecification production. + EnterProcedureSpecification(c *ProcedureSpecificationContext) + + // EnterNestedDataModifyingProcedureSpecification is called when entering the nestedDataModifyingProcedureSpecification production. + EnterNestedDataModifyingProcedureSpecification(c *NestedDataModifyingProcedureSpecificationContext) + + // EnterNestedQuerySpecification is called when entering the nestedQuerySpecification production. + EnterNestedQuerySpecification(c *NestedQuerySpecificationContext) + + // EnterProcedureBody is called when entering the procedureBody production. + EnterProcedureBody(c *ProcedureBodyContext) + + // EnterBindingVariableDefinitionBlock is called when entering the bindingVariableDefinitionBlock production. + EnterBindingVariableDefinitionBlock(c *BindingVariableDefinitionBlockContext) + + // EnterBindingVariableDefinition is called when entering the bindingVariableDefinition production. + EnterBindingVariableDefinition(c *BindingVariableDefinitionContext) + + // EnterStatementBlock is called when entering the statementBlock production. + EnterStatementBlock(c *StatementBlockContext) + + // EnterStatement is called when entering the statement production. + EnterStatement(c *StatementContext) + + // EnterNextStatement is called when entering the nextStatement production. + EnterNextStatement(c *NextStatementContext) + + // EnterGraphVariableDefinition is called when entering the graphVariableDefinition production. + EnterGraphVariableDefinition(c *GraphVariableDefinitionContext) + + // EnterOptTypedGraphInitializer is called when entering the optTypedGraphInitializer production. + EnterOptTypedGraphInitializer(c *OptTypedGraphInitializerContext) + + // EnterGraphInitializer is called when entering the graphInitializer production. + EnterGraphInitializer(c *GraphInitializerContext) + + // EnterBindingTableVariableDefinition is called when entering the bindingTableVariableDefinition production. + EnterBindingTableVariableDefinition(c *BindingTableVariableDefinitionContext) + + // EnterOptTypedBindingTableInitializer is called when entering the optTypedBindingTableInitializer production. + EnterOptTypedBindingTableInitializer(c *OptTypedBindingTableInitializerContext) + + // EnterBindingTableInitializer is called when entering the bindingTableInitializer production. + EnterBindingTableInitializer(c *BindingTableInitializerContext) + + // EnterValueVariableDefinition is called when entering the valueVariableDefinition production. + EnterValueVariableDefinition(c *ValueVariableDefinitionContext) + + // EnterOptTypedValueInitializer is called when entering the optTypedValueInitializer production. + EnterOptTypedValueInitializer(c *OptTypedValueInitializerContext) + + // EnterValueInitializer is called when entering the valueInitializer production. + EnterValueInitializer(c *ValueInitializerContext) + + // EnterGraphExpression is called when entering the graphExpression production. + EnterGraphExpression(c *GraphExpressionContext) + + // EnterCurrentGraph is called when entering the currentGraph production. + EnterCurrentGraph(c *CurrentGraphContext) + + // EnterBindingTableExpression is called when entering the bindingTableExpression production. + EnterBindingTableExpression(c *BindingTableExpressionContext) + + // EnterNestedBindingTableQuerySpecification is called when entering the nestedBindingTableQuerySpecification production. + EnterNestedBindingTableQuerySpecification(c *NestedBindingTableQuerySpecificationContext) + + // EnterObjectExpressionPrimary is called when entering the objectExpressionPrimary production. + EnterObjectExpressionPrimary(c *ObjectExpressionPrimaryContext) + + // EnterLinearCatalogModifyingStatement is called when entering the linearCatalogModifyingStatement production. + EnterLinearCatalogModifyingStatement(c *LinearCatalogModifyingStatementContext) + + // EnterSimpleCatalogModifyingStatement is called when entering the simpleCatalogModifyingStatement production. + EnterSimpleCatalogModifyingStatement(c *SimpleCatalogModifyingStatementContext) + + // EnterPrimitiveCatalogModifyingStatement is called when entering the primitiveCatalogModifyingStatement production. + EnterPrimitiveCatalogModifyingStatement(c *PrimitiveCatalogModifyingStatementContext) + + // EnterCreateSchemaStatement is called when entering the createSchemaStatement production. + EnterCreateSchemaStatement(c *CreateSchemaStatementContext) + + // EnterDropSchemaStatement is called when entering the dropSchemaStatement production. + EnterDropSchemaStatement(c *DropSchemaStatementContext) + + // EnterCreateGraphStatement is called when entering the createGraphStatement production. + EnterCreateGraphStatement(c *CreateGraphStatementContext) + + // EnterOpenGraphType is called when entering the openGraphType production. + EnterOpenGraphType(c *OpenGraphTypeContext) + + // EnterOfGraphType is called when entering the ofGraphType production. + EnterOfGraphType(c *OfGraphTypeContext) + + // EnterGraphTypeLikeGraph is called when entering the graphTypeLikeGraph production. + EnterGraphTypeLikeGraph(c *GraphTypeLikeGraphContext) + + // EnterGraphSource is called when entering the graphSource production. + EnterGraphSource(c *GraphSourceContext) + + // EnterDropGraphStatement is called when entering the dropGraphStatement production. + EnterDropGraphStatement(c *DropGraphStatementContext) + + // EnterCreateGraphTypeStatement is called when entering the createGraphTypeStatement production. + EnterCreateGraphTypeStatement(c *CreateGraphTypeStatementContext) + + // EnterGraphTypeSource is called when entering the graphTypeSource production. + EnterGraphTypeSource(c *GraphTypeSourceContext) + + // EnterCopyOfGraphType is called when entering the copyOfGraphType production. + EnterCopyOfGraphType(c *CopyOfGraphTypeContext) + + // EnterDropGraphTypeStatement is called when entering the dropGraphTypeStatement production. + EnterDropGraphTypeStatement(c *DropGraphTypeStatementContext) + + // EnterCallCatalogModifyingProcedureStatement is called when entering the callCatalogModifyingProcedureStatement production. + EnterCallCatalogModifyingProcedureStatement(c *CallCatalogModifyingProcedureStatementContext) + + // EnterLinearDataModifyingStatement is called when entering the linearDataModifyingStatement production. + EnterLinearDataModifyingStatement(c *LinearDataModifyingStatementContext) + + // EnterFocusedLinearDataModifyingStatement is called when entering the focusedLinearDataModifyingStatement production. + EnterFocusedLinearDataModifyingStatement(c *FocusedLinearDataModifyingStatementContext) + + // EnterFocusedLinearDataModifyingStatementBody is called when entering the focusedLinearDataModifyingStatementBody production. + EnterFocusedLinearDataModifyingStatementBody(c *FocusedLinearDataModifyingStatementBodyContext) + + // EnterFocusedNestedDataModifyingProcedureSpecification is called when entering the focusedNestedDataModifyingProcedureSpecification production. + EnterFocusedNestedDataModifyingProcedureSpecification(c *FocusedNestedDataModifyingProcedureSpecificationContext) + + // EnterAmbientLinearDataModifyingStatement is called when entering the ambientLinearDataModifyingStatement production. + EnterAmbientLinearDataModifyingStatement(c *AmbientLinearDataModifyingStatementContext) + + // EnterAmbientLinearDataModifyingStatementBody is called when entering the ambientLinearDataModifyingStatementBody production. + EnterAmbientLinearDataModifyingStatementBody(c *AmbientLinearDataModifyingStatementBodyContext) + + // EnterSimpleLinearDataAccessingStatement is called when entering the simpleLinearDataAccessingStatement production. + EnterSimpleLinearDataAccessingStatement(c *SimpleLinearDataAccessingStatementContext) + + // EnterSimpleDataAccessingStatement is called when entering the simpleDataAccessingStatement production. + EnterSimpleDataAccessingStatement(c *SimpleDataAccessingStatementContext) + + // EnterSimpleDataModifyingStatement is called when entering the simpleDataModifyingStatement production. + EnterSimpleDataModifyingStatement(c *SimpleDataModifyingStatementContext) + + // EnterPrimitiveDataModifyingStatement is called when entering the primitiveDataModifyingStatement production. + EnterPrimitiveDataModifyingStatement(c *PrimitiveDataModifyingStatementContext) + + // EnterInsertStatement is called when entering the insertStatement production. + EnterInsertStatement(c *InsertStatementContext) + + // EnterSetStatement is called when entering the setStatement production. + EnterSetStatement(c *SetStatementContext) + + // EnterSetItemList is called when entering the setItemList production. + EnterSetItemList(c *SetItemListContext) + + // EnterSetItem is called when entering the setItem production. + EnterSetItem(c *SetItemContext) + + // EnterSetPropertyItem is called when entering the setPropertyItem production. + EnterSetPropertyItem(c *SetPropertyItemContext) + + // EnterSetAllPropertiesItem is called when entering the setAllPropertiesItem production. + EnterSetAllPropertiesItem(c *SetAllPropertiesItemContext) + + // EnterSetLabelItem is called when entering the setLabelItem production. + EnterSetLabelItem(c *SetLabelItemContext) + + // EnterRemoveStatement is called when entering the removeStatement production. + EnterRemoveStatement(c *RemoveStatementContext) + + // EnterRemoveItemList is called when entering the removeItemList production. + EnterRemoveItemList(c *RemoveItemListContext) + + // EnterRemoveItem is called when entering the removeItem production. + EnterRemoveItem(c *RemoveItemContext) + + // EnterRemovePropertyItem is called when entering the removePropertyItem production. + EnterRemovePropertyItem(c *RemovePropertyItemContext) + + // EnterRemoveLabelItem is called when entering the removeLabelItem production. + EnterRemoveLabelItem(c *RemoveLabelItemContext) + + // EnterDeleteStatement is called when entering the deleteStatement production. + EnterDeleteStatement(c *DeleteStatementContext) + + // EnterDeleteItemList is called when entering the deleteItemList production. + EnterDeleteItemList(c *DeleteItemListContext) + + // EnterDeleteItem is called when entering the deleteItem production. + EnterDeleteItem(c *DeleteItemContext) + + // EnterCallDataModifyingProcedureStatement is called when entering the callDataModifyingProcedureStatement production. + EnterCallDataModifyingProcedureStatement(c *CallDataModifyingProcedureStatementContext) + + // EnterCompositeQueryStatement is called when entering the compositeQueryStatement production. + EnterCompositeQueryStatement(c *CompositeQueryStatementContext) + + // EnterCompositeQueryExpression is called when entering the compositeQueryExpression production. + EnterCompositeQueryExpression(c *CompositeQueryExpressionContext) + + // EnterQueryConjunction is called when entering the queryConjunction production. + EnterQueryConjunction(c *QueryConjunctionContext) + + // EnterSetOperator is called when entering the setOperator production. + EnterSetOperator(c *SetOperatorContext) + + // EnterCompositeQueryPrimary is called when entering the compositeQueryPrimary production. + EnterCompositeQueryPrimary(c *CompositeQueryPrimaryContext) + + // EnterLinearQueryStatement is called when entering the linearQueryStatement production. + EnterLinearQueryStatement(c *LinearQueryStatementContext) + + // EnterFocusedLinearQueryStatement is called when entering the focusedLinearQueryStatement production. + EnterFocusedLinearQueryStatement(c *FocusedLinearQueryStatementContext) + + // EnterFocusedLinearQueryStatementPart is called when entering the focusedLinearQueryStatementPart production. + EnterFocusedLinearQueryStatementPart(c *FocusedLinearQueryStatementPartContext) + + // EnterFocusedLinearQueryAndPrimitiveResultStatementPart is called when entering the focusedLinearQueryAndPrimitiveResultStatementPart production. + EnterFocusedLinearQueryAndPrimitiveResultStatementPart(c *FocusedLinearQueryAndPrimitiveResultStatementPartContext) + + // EnterFocusedPrimitiveResultStatement is called when entering the focusedPrimitiveResultStatement production. + EnterFocusedPrimitiveResultStatement(c *FocusedPrimitiveResultStatementContext) + + // EnterFocusedNestedQuerySpecification is called when entering the focusedNestedQuerySpecification production. + EnterFocusedNestedQuerySpecification(c *FocusedNestedQuerySpecificationContext) + + // EnterAmbientLinearQueryStatement is called when entering the ambientLinearQueryStatement production. + EnterAmbientLinearQueryStatement(c *AmbientLinearQueryStatementContext) + + // EnterSimpleLinearQueryStatement is called when entering the simpleLinearQueryStatement production. + EnterSimpleLinearQueryStatement(c *SimpleLinearQueryStatementContext) + + // EnterSimpleQueryStatement is called when entering the simpleQueryStatement production. + EnterSimpleQueryStatement(c *SimpleQueryStatementContext) + + // EnterPrimitiveQueryStatement is called when entering the primitiveQueryStatement production. + EnterPrimitiveQueryStatement(c *PrimitiveQueryStatementContext) + + // EnterMatchStatement is called when entering the matchStatement production. + EnterMatchStatement(c *MatchStatementContext) + + // EnterSimpleMatchStatement is called when entering the simpleMatchStatement production. + EnterSimpleMatchStatement(c *SimpleMatchStatementContext) + + // EnterOptionalMatchStatement is called when entering the optionalMatchStatement production. + EnterOptionalMatchStatement(c *OptionalMatchStatementContext) + + // EnterOptionalOperand is called when entering the optionalOperand production. + EnterOptionalOperand(c *OptionalOperandContext) + + // EnterMatchStatementBlock is called when entering the matchStatementBlock production. + EnterMatchStatementBlock(c *MatchStatementBlockContext) + + // EnterCallQueryStatement is called when entering the callQueryStatement production. + EnterCallQueryStatement(c *CallQueryStatementContext) + + // EnterFilterStatement is called when entering the filterStatement production. + EnterFilterStatement(c *FilterStatementContext) + + // EnterLetStatement is called when entering the letStatement production. + EnterLetStatement(c *LetStatementContext) + + // EnterLetVariableDefinitionList is called when entering the letVariableDefinitionList production. + EnterLetVariableDefinitionList(c *LetVariableDefinitionListContext) + + // EnterLetVariableDefinition is called when entering the letVariableDefinition production. + EnterLetVariableDefinition(c *LetVariableDefinitionContext) + + // EnterForStatement is called when entering the forStatement production. + EnterForStatement(c *ForStatementContext) + + // EnterForItem is called when entering the forItem production. + EnterForItem(c *ForItemContext) + + // EnterForItemAlias is called when entering the forItemAlias production. + EnterForItemAlias(c *ForItemAliasContext) + + // EnterForItemSource is called when entering the forItemSource production. + EnterForItemSource(c *ForItemSourceContext) + + // EnterForOrdinalityOrOffset is called when entering the forOrdinalityOrOffset production. + EnterForOrdinalityOrOffset(c *ForOrdinalityOrOffsetContext) + + // EnterOrderByAndPageStatement is called when entering the orderByAndPageStatement production. + EnterOrderByAndPageStatement(c *OrderByAndPageStatementContext) + + // EnterPrimitiveResultStatement is called when entering the primitiveResultStatement production. + EnterPrimitiveResultStatement(c *PrimitiveResultStatementContext) + + // EnterReturnStatement is called when entering the returnStatement production. + EnterReturnStatement(c *ReturnStatementContext) + + // EnterReturnStatementBody is called when entering the returnStatementBody production. + EnterReturnStatementBody(c *ReturnStatementBodyContext) + + // EnterReturnItemList is called when entering the returnItemList production. + EnterReturnItemList(c *ReturnItemListContext) + + // EnterReturnItem is called when entering the returnItem production. + EnterReturnItem(c *ReturnItemContext) + + // EnterReturnItemAlias is called when entering the returnItemAlias production. + EnterReturnItemAlias(c *ReturnItemAliasContext) + + // EnterSelectStatement is called when entering the selectStatement production. + EnterSelectStatement(c *SelectStatementContext) + + // EnterSelectItemList is called when entering the selectItemList production. + EnterSelectItemList(c *SelectItemListContext) + + // EnterSelectItem is called when entering the selectItem production. + EnterSelectItem(c *SelectItemContext) + + // EnterSelectItemAlias is called when entering the selectItemAlias production. + EnterSelectItemAlias(c *SelectItemAliasContext) + + // EnterHavingClause is called when entering the havingClause production. + EnterHavingClause(c *HavingClauseContext) + + // EnterSelectStatementBody is called when entering the selectStatementBody production. + EnterSelectStatementBody(c *SelectStatementBodyContext) + + // EnterSelectGraphMatchList is called when entering the selectGraphMatchList production. + EnterSelectGraphMatchList(c *SelectGraphMatchListContext) + + // EnterSelectGraphMatch is called when entering the selectGraphMatch production. + EnterSelectGraphMatch(c *SelectGraphMatchContext) + + // EnterSelectQuerySpecification is called when entering the selectQuerySpecification production. + EnterSelectQuerySpecification(c *SelectQuerySpecificationContext) + + // EnterCallProcedureStatement is called when entering the callProcedureStatement production. + EnterCallProcedureStatement(c *CallProcedureStatementContext) + + // EnterProcedureCall is called when entering the procedureCall production. + EnterProcedureCall(c *ProcedureCallContext) + + // EnterInlineProcedureCall is called when entering the inlineProcedureCall production. + EnterInlineProcedureCall(c *InlineProcedureCallContext) + + // EnterVariableScopeClause is called when entering the variableScopeClause production. + EnterVariableScopeClause(c *VariableScopeClauseContext) + + // EnterBindingVariableReferenceList is called when entering the bindingVariableReferenceList production. + EnterBindingVariableReferenceList(c *BindingVariableReferenceListContext) + + // EnterNamedProcedureCall is called when entering the namedProcedureCall production. + EnterNamedProcedureCall(c *NamedProcedureCallContext) + + // EnterProcedureArgumentList is called when entering the procedureArgumentList production. + EnterProcedureArgumentList(c *ProcedureArgumentListContext) + + // EnterProcedureArgument is called when entering the procedureArgument production. + EnterProcedureArgument(c *ProcedureArgumentContext) + + // EnterAtSchemaClause is called when entering the atSchemaClause production. + EnterAtSchemaClause(c *AtSchemaClauseContext) + + // EnterUseGraphClause is called when entering the useGraphClause production. + EnterUseGraphClause(c *UseGraphClauseContext) + + // EnterGraphPatternBindingTable is called when entering the graphPatternBindingTable production. + EnterGraphPatternBindingTable(c *GraphPatternBindingTableContext) + + // EnterGraphPatternYieldClause is called when entering the graphPatternYieldClause production. + EnterGraphPatternYieldClause(c *GraphPatternYieldClauseContext) + + // EnterGraphPatternYieldItemList is called when entering the graphPatternYieldItemList production. + EnterGraphPatternYieldItemList(c *GraphPatternYieldItemListContext) + + // EnterGraphPatternYieldItem is called when entering the graphPatternYieldItem production. + EnterGraphPatternYieldItem(c *GraphPatternYieldItemContext) + + // EnterGraphPattern is called when entering the graphPattern production. + EnterGraphPattern(c *GraphPatternContext) + + // EnterMatchMode is called when entering the matchMode production. + EnterMatchMode(c *MatchModeContext) + + // EnterRepeatableElementsMatchMode is called when entering the repeatableElementsMatchMode production. + EnterRepeatableElementsMatchMode(c *RepeatableElementsMatchModeContext) + + // EnterDifferentEdgesMatchMode is called when entering the differentEdgesMatchMode production. + EnterDifferentEdgesMatchMode(c *DifferentEdgesMatchModeContext) + + // EnterElementBindingsOrElements is called when entering the elementBindingsOrElements production. + EnterElementBindingsOrElements(c *ElementBindingsOrElementsContext) + + // EnterEdgeBindingsOrEdges is called when entering the edgeBindingsOrEdges production. + EnterEdgeBindingsOrEdges(c *EdgeBindingsOrEdgesContext) + + // EnterPathPatternList is called when entering the pathPatternList production. + EnterPathPatternList(c *PathPatternListContext) + + // EnterPathPattern is called when entering the pathPattern production. + EnterPathPattern(c *PathPatternContext) + + // EnterPathVariableDeclaration is called when entering the pathVariableDeclaration production. + EnterPathVariableDeclaration(c *PathVariableDeclarationContext) + + // EnterKeepClause is called when entering the keepClause production. + EnterKeepClause(c *KeepClauseContext) + + // EnterGraphPatternWhereClause is called when entering the graphPatternWhereClause production. + EnterGraphPatternWhereClause(c *GraphPatternWhereClauseContext) + + // EnterInsertGraphPattern is called when entering the insertGraphPattern production. + EnterInsertGraphPattern(c *InsertGraphPatternContext) + + // EnterInsertPathPatternList is called when entering the insertPathPatternList production. + EnterInsertPathPatternList(c *InsertPathPatternListContext) + + // EnterInsertPathPattern is called when entering the insertPathPattern production. + EnterInsertPathPattern(c *InsertPathPatternContext) + + // EnterInsertNodePattern is called when entering the insertNodePattern production. + EnterInsertNodePattern(c *InsertNodePatternContext) + + // EnterInsertEdgePattern is called when entering the insertEdgePattern production. + EnterInsertEdgePattern(c *InsertEdgePatternContext) + + // EnterInsertEdgePointingLeft is called when entering the insertEdgePointingLeft production. + EnterInsertEdgePointingLeft(c *InsertEdgePointingLeftContext) + + // EnterInsertEdgePointingRight is called when entering the insertEdgePointingRight production. + EnterInsertEdgePointingRight(c *InsertEdgePointingRightContext) + + // EnterInsertEdgeUndirected is called when entering the insertEdgeUndirected production. + EnterInsertEdgeUndirected(c *InsertEdgeUndirectedContext) + + // EnterInsertElementPatternFiller is called when entering the insertElementPatternFiller production. + EnterInsertElementPatternFiller(c *InsertElementPatternFillerContext) + + // EnterLabelAndPropertySetSpecification is called when entering the labelAndPropertySetSpecification production. + EnterLabelAndPropertySetSpecification(c *LabelAndPropertySetSpecificationContext) + + // EnterPathPatternPrefix is called when entering the pathPatternPrefix production. + EnterPathPatternPrefix(c *PathPatternPrefixContext) + + // EnterPathModePrefix is called when entering the pathModePrefix production. + EnterPathModePrefix(c *PathModePrefixContext) + + // EnterPathMode is called when entering the pathMode production. + EnterPathMode(c *PathModeContext) + + // EnterPathSearchPrefix is called when entering the pathSearchPrefix production. + EnterPathSearchPrefix(c *PathSearchPrefixContext) + + // EnterAllPathSearch is called when entering the allPathSearch production. + EnterAllPathSearch(c *AllPathSearchContext) + + // EnterPathOrPaths is called when entering the pathOrPaths production. + EnterPathOrPaths(c *PathOrPathsContext) + + // EnterAnyPathSearch is called when entering the anyPathSearch production. + EnterAnyPathSearch(c *AnyPathSearchContext) + + // EnterNumberOfPaths is called when entering the numberOfPaths production. + EnterNumberOfPaths(c *NumberOfPathsContext) + + // EnterShortestPathSearch is called when entering the shortestPathSearch production. + EnterShortestPathSearch(c *ShortestPathSearchContext) + + // EnterAllShortestPathSearch is called when entering the allShortestPathSearch production. + EnterAllShortestPathSearch(c *AllShortestPathSearchContext) + + // EnterAnyShortestPathSearch is called when entering the anyShortestPathSearch production. + EnterAnyShortestPathSearch(c *AnyShortestPathSearchContext) + + // EnterCountedShortestPathSearch is called when entering the countedShortestPathSearch production. + EnterCountedShortestPathSearch(c *CountedShortestPathSearchContext) + + // EnterCountedShortestGroupSearch is called when entering the countedShortestGroupSearch production. + EnterCountedShortestGroupSearch(c *CountedShortestGroupSearchContext) + + // EnterNumberOfGroups is called when entering the numberOfGroups production. + EnterNumberOfGroups(c *NumberOfGroupsContext) + + // EnterPpePathTerm is called when entering the ppePathTerm production. + EnterPpePathTerm(c *PpePathTermContext) + + // EnterPpeMultisetAlternation is called when entering the ppeMultisetAlternation production. + EnterPpeMultisetAlternation(c *PpeMultisetAlternationContext) + + // EnterPpePatternUnion is called when entering the ppePatternUnion production. + EnterPpePatternUnion(c *PpePatternUnionContext) + + // EnterPathTerm is called when entering the pathTerm production. + EnterPathTerm(c *PathTermContext) + + // EnterPfPathPrimary is called when entering the pfPathPrimary production. + EnterPfPathPrimary(c *PfPathPrimaryContext) + + // EnterPfQuantifiedPathPrimary is called when entering the pfQuantifiedPathPrimary production. + EnterPfQuantifiedPathPrimary(c *PfQuantifiedPathPrimaryContext) + + // EnterPfQuestionedPathPrimary is called when entering the pfQuestionedPathPrimary production. + EnterPfQuestionedPathPrimary(c *PfQuestionedPathPrimaryContext) + + // EnterPpElementPattern is called when entering the ppElementPattern production. + EnterPpElementPattern(c *PpElementPatternContext) + + // EnterPpParenthesizedPathPatternExpression is called when entering the ppParenthesizedPathPatternExpression production. + EnterPpParenthesizedPathPatternExpression(c *PpParenthesizedPathPatternExpressionContext) + + // EnterPpSimplifiedPathPatternExpression is called when entering the ppSimplifiedPathPatternExpression production. + EnterPpSimplifiedPathPatternExpression(c *PpSimplifiedPathPatternExpressionContext) + + // EnterElementPattern is called when entering the elementPattern production. + EnterElementPattern(c *ElementPatternContext) + + // EnterNodePattern is called when entering the nodePattern production. + EnterNodePattern(c *NodePatternContext) + + // EnterElementPatternFiller is called when entering the elementPatternFiller production. + EnterElementPatternFiller(c *ElementPatternFillerContext) + + // EnterElementVariableDeclaration is called when entering the elementVariableDeclaration production. + EnterElementVariableDeclaration(c *ElementVariableDeclarationContext) + + // EnterIsLabelExpression is called when entering the isLabelExpression production. + EnterIsLabelExpression(c *IsLabelExpressionContext) + + // EnterIsOrColon is called when entering the isOrColon production. + EnterIsOrColon(c *IsOrColonContext) + + // EnterElementPatternPredicate is called when entering the elementPatternPredicate production. + EnterElementPatternPredicate(c *ElementPatternPredicateContext) + + // EnterElementPatternWhereClause is called when entering the elementPatternWhereClause production. + EnterElementPatternWhereClause(c *ElementPatternWhereClauseContext) + + // EnterElementPropertySpecification is called when entering the elementPropertySpecification production. + EnterElementPropertySpecification(c *ElementPropertySpecificationContext) + + // EnterPropertyKeyValuePairList is called when entering the propertyKeyValuePairList production. + EnterPropertyKeyValuePairList(c *PropertyKeyValuePairListContext) + + // EnterPropertyKeyValuePair is called when entering the propertyKeyValuePair production. + EnterPropertyKeyValuePair(c *PropertyKeyValuePairContext) + + // EnterEdgePattern is called when entering the edgePattern production. + EnterEdgePattern(c *EdgePatternContext) + + // EnterFullEdgePattern is called when entering the fullEdgePattern production. + EnterFullEdgePattern(c *FullEdgePatternContext) + + // EnterFullEdgePointingLeft is called when entering the fullEdgePointingLeft production. + EnterFullEdgePointingLeft(c *FullEdgePointingLeftContext) + + // EnterFullEdgeUndirected is called when entering the fullEdgeUndirected production. + EnterFullEdgeUndirected(c *FullEdgeUndirectedContext) + + // EnterFullEdgePointingRight is called when entering the fullEdgePointingRight production. + EnterFullEdgePointingRight(c *FullEdgePointingRightContext) + + // EnterFullEdgeLeftOrUndirected is called when entering the fullEdgeLeftOrUndirected production. + EnterFullEdgeLeftOrUndirected(c *FullEdgeLeftOrUndirectedContext) + + // EnterFullEdgeUndirectedOrRight is called when entering the fullEdgeUndirectedOrRight production. + EnterFullEdgeUndirectedOrRight(c *FullEdgeUndirectedOrRightContext) + + // EnterFullEdgeLeftOrRight is called when entering the fullEdgeLeftOrRight production. + EnterFullEdgeLeftOrRight(c *FullEdgeLeftOrRightContext) + + // EnterFullEdgeAnyDirection is called when entering the fullEdgeAnyDirection production. + EnterFullEdgeAnyDirection(c *FullEdgeAnyDirectionContext) + + // EnterAbbreviatedEdgePattern is called when entering the abbreviatedEdgePattern production. + EnterAbbreviatedEdgePattern(c *AbbreviatedEdgePatternContext) + + // EnterParenthesizedPathPatternExpression is called when entering the parenthesizedPathPatternExpression production. + EnterParenthesizedPathPatternExpression(c *ParenthesizedPathPatternExpressionContext) + + // EnterSubpathVariableDeclaration is called when entering the subpathVariableDeclaration production. + EnterSubpathVariableDeclaration(c *SubpathVariableDeclarationContext) + + // EnterParenthesizedPathPatternWhereClause is called when entering the parenthesizedPathPatternWhereClause production. + EnterParenthesizedPathPatternWhereClause(c *ParenthesizedPathPatternWhereClauseContext) + + // EnterLabelExpressionNegation is called when entering the labelExpressionNegation production. + EnterLabelExpressionNegation(c *LabelExpressionNegationContext) + + // EnterLabelExpressionDisjunction is called when entering the labelExpressionDisjunction production. + EnterLabelExpressionDisjunction(c *LabelExpressionDisjunctionContext) + + // EnterLabelExpressionParenthesized is called when entering the labelExpressionParenthesized production. + EnterLabelExpressionParenthesized(c *LabelExpressionParenthesizedContext) + + // EnterLabelExpressionWildcard is called when entering the labelExpressionWildcard production. + EnterLabelExpressionWildcard(c *LabelExpressionWildcardContext) + + // EnterLabelExpressionConjunction is called when entering the labelExpressionConjunction production. + EnterLabelExpressionConjunction(c *LabelExpressionConjunctionContext) + + // EnterLabelExpressionName is called when entering the labelExpressionName production. + EnterLabelExpressionName(c *LabelExpressionNameContext) + + // EnterPathVariableReference is called when entering the pathVariableReference production. + EnterPathVariableReference(c *PathVariableReferenceContext) + + // EnterElementVariableReference is called when entering the elementVariableReference production. + EnterElementVariableReference(c *ElementVariableReferenceContext) + + // EnterGraphPatternQuantifier is called when entering the graphPatternQuantifier production. + EnterGraphPatternQuantifier(c *GraphPatternQuantifierContext) + + // EnterFixedQuantifier is called when entering the fixedQuantifier production. + EnterFixedQuantifier(c *FixedQuantifierContext) + + // EnterGeneralQuantifier is called when entering the generalQuantifier production. + EnterGeneralQuantifier(c *GeneralQuantifierContext) + + // EnterLowerBound is called when entering the lowerBound production. + EnterLowerBound(c *LowerBoundContext) + + // EnterUpperBound is called when entering the upperBound production. + EnterUpperBound(c *UpperBoundContext) + + // EnterSimplifiedPathPatternExpression is called when entering the simplifiedPathPatternExpression production. + EnterSimplifiedPathPatternExpression(c *SimplifiedPathPatternExpressionContext) + + // EnterSimplifiedDefaultingLeft is called when entering the simplifiedDefaultingLeft production. + EnterSimplifiedDefaultingLeft(c *SimplifiedDefaultingLeftContext) + + // EnterSimplifiedDefaultingUndirected is called when entering the simplifiedDefaultingUndirected production. + EnterSimplifiedDefaultingUndirected(c *SimplifiedDefaultingUndirectedContext) + + // EnterSimplifiedDefaultingRight is called when entering the simplifiedDefaultingRight production. + EnterSimplifiedDefaultingRight(c *SimplifiedDefaultingRightContext) + + // EnterSimplifiedDefaultingLeftOrUndirected is called when entering the simplifiedDefaultingLeftOrUndirected production. + EnterSimplifiedDefaultingLeftOrUndirected(c *SimplifiedDefaultingLeftOrUndirectedContext) + + // EnterSimplifiedDefaultingUndirectedOrRight is called when entering the simplifiedDefaultingUndirectedOrRight production. + EnterSimplifiedDefaultingUndirectedOrRight(c *SimplifiedDefaultingUndirectedOrRightContext) + + // EnterSimplifiedDefaultingLeftOrRight is called when entering the simplifiedDefaultingLeftOrRight production. + EnterSimplifiedDefaultingLeftOrRight(c *SimplifiedDefaultingLeftOrRightContext) + + // EnterSimplifiedDefaultingAnyDirection is called when entering the simplifiedDefaultingAnyDirection production. + EnterSimplifiedDefaultingAnyDirection(c *SimplifiedDefaultingAnyDirectionContext) + + // EnterSimplifiedContents is called when entering the simplifiedContents production. + EnterSimplifiedContents(c *SimplifiedContentsContext) + + // EnterSimplifiedPathUnion is called when entering the simplifiedPathUnion production. + EnterSimplifiedPathUnion(c *SimplifiedPathUnionContext) + + // EnterSimplifiedMultisetAlternation is called when entering the simplifiedMultisetAlternation production. + EnterSimplifiedMultisetAlternation(c *SimplifiedMultisetAlternationContext) + + // EnterSimplifiedFactorLowLabel is called when entering the simplifiedFactorLowLabel production. + EnterSimplifiedFactorLowLabel(c *SimplifiedFactorLowLabelContext) + + // EnterSimplifiedConcatenationLabel is called when entering the simplifiedConcatenationLabel production. + EnterSimplifiedConcatenationLabel(c *SimplifiedConcatenationLabelContext) + + // EnterSimplifiedConjunctionLabel is called when entering the simplifiedConjunctionLabel production. + EnterSimplifiedConjunctionLabel(c *SimplifiedConjunctionLabelContext) + + // EnterSimplifiedFactorHighLabel is called when entering the simplifiedFactorHighLabel production. + EnterSimplifiedFactorHighLabel(c *SimplifiedFactorHighLabelContext) + + // EnterSimplifiedFactorHigh is called when entering the simplifiedFactorHigh production. + EnterSimplifiedFactorHigh(c *SimplifiedFactorHighContext) + + // EnterSimplifiedQuantified is called when entering the simplifiedQuantified production. + EnterSimplifiedQuantified(c *SimplifiedQuantifiedContext) + + // EnterSimplifiedQuestioned is called when entering the simplifiedQuestioned production. + EnterSimplifiedQuestioned(c *SimplifiedQuestionedContext) + + // EnterSimplifiedTertiary is called when entering the simplifiedTertiary production. + EnterSimplifiedTertiary(c *SimplifiedTertiaryContext) + + // EnterSimplifiedDirectionOverride is called when entering the simplifiedDirectionOverride production. + EnterSimplifiedDirectionOverride(c *SimplifiedDirectionOverrideContext) + + // EnterSimplifiedOverrideLeft is called when entering the simplifiedOverrideLeft production. + EnterSimplifiedOverrideLeft(c *SimplifiedOverrideLeftContext) + + // EnterSimplifiedOverrideUndirected is called when entering the simplifiedOverrideUndirected production. + EnterSimplifiedOverrideUndirected(c *SimplifiedOverrideUndirectedContext) + + // EnterSimplifiedOverrideRight is called when entering the simplifiedOverrideRight production. + EnterSimplifiedOverrideRight(c *SimplifiedOverrideRightContext) + + // EnterSimplifiedOverrideLeftOrUndirected is called when entering the simplifiedOverrideLeftOrUndirected production. + EnterSimplifiedOverrideLeftOrUndirected(c *SimplifiedOverrideLeftOrUndirectedContext) + + // EnterSimplifiedOverrideUndirectedOrRight is called when entering the simplifiedOverrideUndirectedOrRight production. + EnterSimplifiedOverrideUndirectedOrRight(c *SimplifiedOverrideUndirectedOrRightContext) + + // EnterSimplifiedOverrideLeftOrRight is called when entering the simplifiedOverrideLeftOrRight production. + EnterSimplifiedOverrideLeftOrRight(c *SimplifiedOverrideLeftOrRightContext) + + // EnterSimplifiedOverrideAnyDirection is called when entering the simplifiedOverrideAnyDirection production. + EnterSimplifiedOverrideAnyDirection(c *SimplifiedOverrideAnyDirectionContext) + + // EnterSimplifiedSecondary is called when entering the simplifiedSecondary production. + EnterSimplifiedSecondary(c *SimplifiedSecondaryContext) + + // EnterSimplifiedNegation is called when entering the simplifiedNegation production. + EnterSimplifiedNegation(c *SimplifiedNegationContext) + + // EnterSimplifiedPrimary is called when entering the simplifiedPrimary production. + EnterSimplifiedPrimary(c *SimplifiedPrimaryContext) + + // EnterWhereClause is called when entering the whereClause production. + EnterWhereClause(c *WhereClauseContext) + + // EnterYieldClause is called when entering the yieldClause production. + EnterYieldClause(c *YieldClauseContext) + + // EnterYieldItemList is called when entering the yieldItemList production. + EnterYieldItemList(c *YieldItemListContext) + + // EnterYieldItem is called when entering the yieldItem production. + EnterYieldItem(c *YieldItemContext) + + // EnterYieldItemName is called when entering the yieldItemName production. + EnterYieldItemName(c *YieldItemNameContext) + + // EnterYieldItemAlias is called when entering the yieldItemAlias production. + EnterYieldItemAlias(c *YieldItemAliasContext) + + // EnterGroupByClause is called when entering the groupByClause production. + EnterGroupByClause(c *GroupByClauseContext) + + // EnterGroupingElementList is called when entering the groupingElementList production. + EnterGroupingElementList(c *GroupingElementListContext) + + // EnterGroupingElement is called when entering the groupingElement production. + EnterGroupingElement(c *GroupingElementContext) + + // EnterEmptyGroupingSet is called when entering the emptyGroupingSet production. + EnterEmptyGroupingSet(c *EmptyGroupingSetContext) + + // EnterOrderByClause is called when entering the orderByClause production. + EnterOrderByClause(c *OrderByClauseContext) + + // EnterSortSpecificationList is called when entering the sortSpecificationList production. + EnterSortSpecificationList(c *SortSpecificationListContext) + + // EnterSortSpecification is called when entering the sortSpecification production. + EnterSortSpecification(c *SortSpecificationContext) + + // EnterSortKey is called when entering the sortKey production. + EnterSortKey(c *SortKeyContext) + + // EnterOrderingSpecification is called when entering the orderingSpecification production. + EnterOrderingSpecification(c *OrderingSpecificationContext) + + // EnterNullOrdering is called when entering the nullOrdering production. + EnterNullOrdering(c *NullOrderingContext) + + // EnterLimitClause is called when entering the limitClause production. + EnterLimitClause(c *LimitClauseContext) + + // EnterOffsetClause is called when entering the offsetClause production. + EnterOffsetClause(c *OffsetClauseContext) + + // EnterOffsetSynonym is called when entering the offsetSynonym production. + EnterOffsetSynonym(c *OffsetSynonymContext) + + // EnterSchemaReference is called when entering the schemaReference production. + EnterSchemaReference(c *SchemaReferenceContext) + + // EnterAbsoluteCatalogSchemaReference is called when entering the absoluteCatalogSchemaReference production. + EnterAbsoluteCatalogSchemaReference(c *AbsoluteCatalogSchemaReferenceContext) + + // EnterCatalogSchemaParentAndName is called when entering the catalogSchemaParentAndName production. + EnterCatalogSchemaParentAndName(c *CatalogSchemaParentAndNameContext) + + // EnterRelativeCatalogSchemaReference is called when entering the relativeCatalogSchemaReference production. + EnterRelativeCatalogSchemaReference(c *RelativeCatalogSchemaReferenceContext) + + // EnterPredefinedSchemaReference is called when entering the predefinedSchemaReference production. + EnterPredefinedSchemaReference(c *PredefinedSchemaReferenceContext) + + // EnterAbsoluteDirectoryPath is called when entering the absoluteDirectoryPath production. + EnterAbsoluteDirectoryPath(c *AbsoluteDirectoryPathContext) + + // EnterRelativeDirectoryPath is called when entering the relativeDirectoryPath production. + EnterRelativeDirectoryPath(c *RelativeDirectoryPathContext) + + // EnterSimpleDirectoryPath is called when entering the simpleDirectoryPath production. + EnterSimpleDirectoryPath(c *SimpleDirectoryPathContext) + + // EnterGraphReference is called when entering the graphReference production. + EnterGraphReference(c *GraphReferenceContext) + + // EnterCatalogGraphParentAndName is called when entering the catalogGraphParentAndName production. + EnterCatalogGraphParentAndName(c *CatalogGraphParentAndNameContext) + + // EnterHomeGraph is called when entering the homeGraph production. + EnterHomeGraph(c *HomeGraphContext) + + // EnterGraphTypeReference is called when entering the graphTypeReference production. + EnterGraphTypeReference(c *GraphTypeReferenceContext) + + // EnterCatalogGraphTypeParentAndName is called when entering the catalogGraphTypeParentAndName production. + EnterCatalogGraphTypeParentAndName(c *CatalogGraphTypeParentAndNameContext) + + // EnterBindingTableReference is called when entering the bindingTableReference production. + EnterBindingTableReference(c *BindingTableReferenceContext) + + // EnterProcedureReference is called when entering the procedureReference production. + EnterProcedureReference(c *ProcedureReferenceContext) + + // EnterCatalogProcedureParentAndName is called when entering the catalogProcedureParentAndName production. + EnterCatalogProcedureParentAndName(c *CatalogProcedureParentAndNameContext) + + // EnterCatalogObjectParentReference is called when entering the catalogObjectParentReference production. + EnterCatalogObjectParentReference(c *CatalogObjectParentReferenceContext) + + // EnterReferenceParameterSpecification is called when entering the referenceParameterSpecification production. + EnterReferenceParameterSpecification(c *ReferenceParameterSpecificationContext) + + // EnterNestedGraphTypeSpecification is called when entering the nestedGraphTypeSpecification production. + EnterNestedGraphTypeSpecification(c *NestedGraphTypeSpecificationContext) + + // EnterGraphTypeSpecificationBody is called when entering the graphTypeSpecificationBody production. + EnterGraphTypeSpecificationBody(c *GraphTypeSpecificationBodyContext) + + // EnterElementTypeList is called when entering the elementTypeList production. + EnterElementTypeList(c *ElementTypeListContext) + + // EnterElementTypeSpecification is called when entering the elementTypeSpecification production. + EnterElementTypeSpecification(c *ElementTypeSpecificationContext) + + // EnterNodeTypeSpecification is called when entering the nodeTypeSpecification production. + EnterNodeTypeSpecification(c *NodeTypeSpecificationContext) + + // EnterNodeTypePattern is called when entering the nodeTypePattern production. + EnterNodeTypePattern(c *NodeTypePatternContext) + + // EnterNodeTypePhrase is called when entering the nodeTypePhrase production. + EnterNodeTypePhrase(c *NodeTypePhraseContext) + + // EnterNodeTypePhraseFiller is called when entering the nodeTypePhraseFiller production. + EnterNodeTypePhraseFiller(c *NodeTypePhraseFillerContext) + + // EnterNodeTypeFiller is called when entering the nodeTypeFiller production. + EnterNodeTypeFiller(c *NodeTypeFillerContext) + + // EnterLocalNodeTypeAlias is called when entering the localNodeTypeAlias production. + EnterLocalNodeTypeAlias(c *LocalNodeTypeAliasContext) + + // EnterNodeTypeImpliedContent is called when entering the nodeTypeImpliedContent production. + EnterNodeTypeImpliedContent(c *NodeTypeImpliedContentContext) + + // EnterNodeTypeKeyLabelSet is called when entering the nodeTypeKeyLabelSet production. + EnterNodeTypeKeyLabelSet(c *NodeTypeKeyLabelSetContext) + + // EnterNodeTypeLabelSet is called when entering the nodeTypeLabelSet production. + EnterNodeTypeLabelSet(c *NodeTypeLabelSetContext) + + // EnterNodeTypePropertyTypes is called when entering the nodeTypePropertyTypes production. + EnterNodeTypePropertyTypes(c *NodeTypePropertyTypesContext) + + // EnterEdgeTypeSpecification is called when entering the edgeTypeSpecification production. + EnterEdgeTypeSpecification(c *EdgeTypeSpecificationContext) + + // EnterEdgeTypePattern is called when entering the edgeTypePattern production. + EnterEdgeTypePattern(c *EdgeTypePatternContext) + + // EnterEdgeTypePhrase is called when entering the edgeTypePhrase production. + EnterEdgeTypePhrase(c *EdgeTypePhraseContext) + + // EnterEdgeTypePhraseFiller is called when entering the edgeTypePhraseFiller production. + EnterEdgeTypePhraseFiller(c *EdgeTypePhraseFillerContext) + + // EnterEdgeTypeFiller is called when entering the edgeTypeFiller production. + EnterEdgeTypeFiller(c *EdgeTypeFillerContext) + + // EnterEdgeTypeImpliedContent is called when entering the edgeTypeImpliedContent production. + EnterEdgeTypeImpliedContent(c *EdgeTypeImpliedContentContext) + + // EnterEdgeTypeKeyLabelSet is called when entering the edgeTypeKeyLabelSet production. + EnterEdgeTypeKeyLabelSet(c *EdgeTypeKeyLabelSetContext) + + // EnterEdgeTypeLabelSet is called when entering the edgeTypeLabelSet production. + EnterEdgeTypeLabelSet(c *EdgeTypeLabelSetContext) + + // EnterEdgeTypePropertyTypes is called when entering the edgeTypePropertyTypes production. + EnterEdgeTypePropertyTypes(c *EdgeTypePropertyTypesContext) + + // EnterEdgeTypePatternDirected is called when entering the edgeTypePatternDirected production. + EnterEdgeTypePatternDirected(c *EdgeTypePatternDirectedContext) + + // EnterEdgeTypePatternPointingRight is called when entering the edgeTypePatternPointingRight production. + EnterEdgeTypePatternPointingRight(c *EdgeTypePatternPointingRightContext) + + // EnterEdgeTypePatternPointingLeft is called when entering the edgeTypePatternPointingLeft production. + EnterEdgeTypePatternPointingLeft(c *EdgeTypePatternPointingLeftContext) + + // EnterEdgeTypePatternUndirected is called when entering the edgeTypePatternUndirected production. + EnterEdgeTypePatternUndirected(c *EdgeTypePatternUndirectedContext) + + // EnterArcTypePointingRight is called when entering the arcTypePointingRight production. + EnterArcTypePointingRight(c *ArcTypePointingRightContext) + + // EnterArcTypePointingLeft is called when entering the arcTypePointingLeft production. + EnterArcTypePointingLeft(c *ArcTypePointingLeftContext) + + // EnterArcTypeUndirected is called when entering the arcTypeUndirected production. + EnterArcTypeUndirected(c *ArcTypeUndirectedContext) + + // EnterSourceNodeTypeReference is called when entering the sourceNodeTypeReference production. + EnterSourceNodeTypeReference(c *SourceNodeTypeReferenceContext) + + // EnterDestinationNodeTypeReference is called when entering the destinationNodeTypeReference production. + EnterDestinationNodeTypeReference(c *DestinationNodeTypeReferenceContext) + + // EnterEdgeKind is called when entering the edgeKind production. + EnterEdgeKind(c *EdgeKindContext) + + // EnterEndpointPairPhrase is called when entering the endpointPairPhrase production. + EnterEndpointPairPhrase(c *EndpointPairPhraseContext) + + // EnterEndpointPair is called when entering the endpointPair production. + EnterEndpointPair(c *EndpointPairContext) + + // EnterEndpointPairDirected is called when entering the endpointPairDirected production. + EnterEndpointPairDirected(c *EndpointPairDirectedContext) + + // EnterEndpointPairPointingRight is called when entering the endpointPairPointingRight production. + EnterEndpointPairPointingRight(c *EndpointPairPointingRightContext) + + // EnterEndpointPairPointingLeft is called when entering the endpointPairPointingLeft production. + EnterEndpointPairPointingLeft(c *EndpointPairPointingLeftContext) + + // EnterEndpointPairUndirected is called when entering the endpointPairUndirected production. + EnterEndpointPairUndirected(c *EndpointPairUndirectedContext) + + // EnterConnectorPointingRight is called when entering the connectorPointingRight production. + EnterConnectorPointingRight(c *ConnectorPointingRightContext) + + // EnterConnectorUndirected is called when entering the connectorUndirected production. + EnterConnectorUndirected(c *ConnectorUndirectedContext) + + // EnterSourceNodeTypeAlias is called when entering the sourceNodeTypeAlias production. + EnterSourceNodeTypeAlias(c *SourceNodeTypeAliasContext) + + // EnterDestinationNodeTypeAlias is called when entering the destinationNodeTypeAlias production. + EnterDestinationNodeTypeAlias(c *DestinationNodeTypeAliasContext) + + // EnterLabelSetPhrase is called when entering the labelSetPhrase production. + EnterLabelSetPhrase(c *LabelSetPhraseContext) + + // EnterLabelSetSpecification is called when entering the labelSetSpecification production. + EnterLabelSetSpecification(c *LabelSetSpecificationContext) + + // EnterPropertyTypesSpecification is called when entering the propertyTypesSpecification production. + EnterPropertyTypesSpecification(c *PropertyTypesSpecificationContext) + + // EnterPropertyTypeList is called when entering the propertyTypeList production. + EnterPropertyTypeList(c *PropertyTypeListContext) + + // EnterPropertyType is called when entering the propertyType production. + EnterPropertyType(c *PropertyTypeContext) + + // EnterPropertyValueType is called when entering the propertyValueType production. + EnterPropertyValueType(c *PropertyValueTypeContext) + + // EnterBindingTableType is called when entering the bindingTableType production. + EnterBindingTableType(c *BindingTableTypeContext) + + // EnterDynamicPropertyValueTypeLabel is called when entering the dynamicPropertyValueTypeLabel production. + EnterDynamicPropertyValueTypeLabel(c *DynamicPropertyValueTypeLabelContext) + + // EnterClosedDynamicUnionTypeAtl1 is called when entering the closedDynamicUnionTypeAtl1 production. + EnterClosedDynamicUnionTypeAtl1(c *ClosedDynamicUnionTypeAtl1Context) + + // EnterClosedDynamicUnionTypeAtl2 is called when entering the closedDynamicUnionTypeAtl2 production. + EnterClosedDynamicUnionTypeAtl2(c *ClosedDynamicUnionTypeAtl2Context) + + // EnterPathValueTypeLabel is called when entering the pathValueTypeLabel production. + EnterPathValueTypeLabel(c *PathValueTypeLabelContext) + + // EnterListValueTypeAlt3 is called when entering the listValueTypeAlt3 production. + EnterListValueTypeAlt3(c *ListValueTypeAlt3Context) + + // EnterListValueTypeAlt2 is called when entering the listValueTypeAlt2 production. + EnterListValueTypeAlt2(c *ListValueTypeAlt2Context) + + // EnterListValueTypeAlt1 is called when entering the listValueTypeAlt1 production. + EnterListValueTypeAlt1(c *ListValueTypeAlt1Context) + + // EnterPredefinedTypeLabel is called when entering the predefinedTypeLabel production. + EnterPredefinedTypeLabel(c *PredefinedTypeLabelContext) + + // EnterRecordTypeLabel is called when entering the recordTypeLabel production. + EnterRecordTypeLabel(c *RecordTypeLabelContext) + + // EnterOpenDynamicUnionTypeLabel is called when entering the openDynamicUnionTypeLabel production. + EnterOpenDynamicUnionTypeLabel(c *OpenDynamicUnionTypeLabelContext) + + // EnterTyped is called when entering the typed production. + EnterTyped(c *TypedContext) + + // EnterPredefinedType is called when entering the predefinedType production. + EnterPredefinedType(c *PredefinedTypeContext) + + // EnterBooleanType is called when entering the booleanType production. + EnterBooleanType(c *BooleanTypeContext) + + // EnterCharacterStringType is called when entering the characterStringType production. + EnterCharacterStringType(c *CharacterStringTypeContext) + + // EnterByteStringType is called when entering the byteStringType production. + EnterByteStringType(c *ByteStringTypeContext) + + // EnterMinLength is called when entering the minLength production. + EnterMinLength(c *MinLengthContext) + + // EnterMaxLength is called when entering the maxLength production. + EnterMaxLength(c *MaxLengthContext) + + // EnterFixedLength is called when entering the fixedLength production. + EnterFixedLength(c *FixedLengthContext) + + // EnterNumericType is called when entering the numericType production. + EnterNumericType(c *NumericTypeContext) + + // EnterExactNumericType is called when entering the exactNumericType production. + EnterExactNumericType(c *ExactNumericTypeContext) + + // EnterBinaryExactNumericType is called when entering the binaryExactNumericType production. + EnterBinaryExactNumericType(c *BinaryExactNumericTypeContext) + + // EnterSignedBinaryExactNumericType is called when entering the signedBinaryExactNumericType production. + EnterSignedBinaryExactNumericType(c *SignedBinaryExactNumericTypeContext) + + // EnterUnsignedBinaryExactNumericType is called when entering the unsignedBinaryExactNumericType production. + EnterUnsignedBinaryExactNumericType(c *UnsignedBinaryExactNumericTypeContext) + + // EnterVerboseBinaryExactNumericType is called when entering the verboseBinaryExactNumericType production. + EnterVerboseBinaryExactNumericType(c *VerboseBinaryExactNumericTypeContext) + + // EnterDecimalExactNumericType is called when entering the decimalExactNumericType production. + EnterDecimalExactNumericType(c *DecimalExactNumericTypeContext) + + // EnterPrecision is called when entering the precision production. + EnterPrecision(c *PrecisionContext) + + // EnterScale is called when entering the scale production. + EnterScale(c *ScaleContext) + + // EnterApproximateNumericType is called when entering the approximateNumericType production. + EnterApproximateNumericType(c *ApproximateNumericTypeContext) + + // EnterTemporalType is called when entering the temporalType production. + EnterTemporalType(c *TemporalTypeContext) + + // EnterTemporalInstantType is called when entering the temporalInstantType production. + EnterTemporalInstantType(c *TemporalInstantTypeContext) + + // EnterDatetimeType is called when entering the datetimeType production. + EnterDatetimeType(c *DatetimeTypeContext) + + // EnterLocaldatetimeType is called when entering the localdatetimeType production. + EnterLocaldatetimeType(c *LocaldatetimeTypeContext) + + // EnterDateType is called when entering the dateType production. + EnterDateType(c *DateTypeContext) + + // EnterTimeType is called when entering the timeType production. + EnterTimeType(c *TimeTypeContext) + + // EnterLocaltimeType is called when entering the localtimeType production. + EnterLocaltimeType(c *LocaltimeTypeContext) + + // EnterTemporalDurationType is called when entering the temporalDurationType production. + EnterTemporalDurationType(c *TemporalDurationTypeContext) + + // EnterTemporalDurationQualifier is called when entering the temporalDurationQualifier production. + EnterTemporalDurationQualifier(c *TemporalDurationQualifierContext) + + // EnterReferenceValueType is called when entering the referenceValueType production. + EnterReferenceValueType(c *ReferenceValueTypeContext) + + // EnterImmaterialValueType is called when entering the immaterialValueType production. + EnterImmaterialValueType(c *ImmaterialValueTypeContext) + + // EnterNullType is called when entering the nullType production. + EnterNullType(c *NullTypeContext) + + // EnterEmptyType is called when entering the emptyType production. + EnterEmptyType(c *EmptyTypeContext) + + // EnterGraphReferenceValueType is called when entering the graphReferenceValueType production. + EnterGraphReferenceValueType(c *GraphReferenceValueTypeContext) + + // EnterClosedGraphReferenceValueType is called when entering the closedGraphReferenceValueType production. + EnterClosedGraphReferenceValueType(c *ClosedGraphReferenceValueTypeContext) + + // EnterOpenGraphReferenceValueType is called when entering the openGraphReferenceValueType production. + EnterOpenGraphReferenceValueType(c *OpenGraphReferenceValueTypeContext) + + // EnterBindingTableReferenceValueType is called when entering the bindingTableReferenceValueType production. + EnterBindingTableReferenceValueType(c *BindingTableReferenceValueTypeContext) + + // EnterNodeReferenceValueType is called when entering the nodeReferenceValueType production. + EnterNodeReferenceValueType(c *NodeReferenceValueTypeContext) + + // EnterClosedNodeReferenceValueType is called when entering the closedNodeReferenceValueType production. + EnterClosedNodeReferenceValueType(c *ClosedNodeReferenceValueTypeContext) + + // EnterOpenNodeReferenceValueType is called when entering the openNodeReferenceValueType production. + EnterOpenNodeReferenceValueType(c *OpenNodeReferenceValueTypeContext) + + // EnterEdgeReferenceValueType is called when entering the edgeReferenceValueType production. + EnterEdgeReferenceValueType(c *EdgeReferenceValueTypeContext) + + // EnterClosedEdgeReferenceValueType is called when entering the closedEdgeReferenceValueType production. + EnterClosedEdgeReferenceValueType(c *ClosedEdgeReferenceValueTypeContext) + + // EnterOpenEdgeReferenceValueType is called when entering the openEdgeReferenceValueType production. + EnterOpenEdgeReferenceValueType(c *OpenEdgeReferenceValueTypeContext) + + // EnterPathValueType is called when entering the pathValueType production. + EnterPathValueType(c *PathValueTypeContext) + + // EnterListValueTypeName is called when entering the listValueTypeName production. + EnterListValueTypeName(c *ListValueTypeNameContext) + + // EnterListValueTypeNameSynonym is called when entering the listValueTypeNameSynonym production. + EnterListValueTypeNameSynonym(c *ListValueTypeNameSynonymContext) + + // EnterRecordType is called when entering the recordType production. + EnterRecordType(c *RecordTypeContext) + + // EnterFieldTypesSpecification is called when entering the fieldTypesSpecification production. + EnterFieldTypesSpecification(c *FieldTypesSpecificationContext) + + // EnterFieldTypeList is called when entering the fieldTypeList production. + EnterFieldTypeList(c *FieldTypeListContext) + + // EnterNotNull is called when entering the notNull production. + EnterNotNull(c *NotNullContext) + + // EnterFieldType is called when entering the fieldType production. + EnterFieldType(c *FieldTypeContext) + + // EnterSearchCondition is called when entering the searchCondition production. + EnterSearchCondition(c *SearchConditionContext) + + // EnterPredicate is called when entering the predicate production. + EnterPredicate(c *PredicateContext) + + // EnterCompOp is called when entering the compOp production. + EnterCompOp(c *CompOpContext) + + // EnterExistsPredicate is called when entering the existsPredicate production. + EnterExistsPredicate(c *ExistsPredicateContext) + + // EnterNullPredicate is called when entering the nullPredicate production. + EnterNullPredicate(c *NullPredicateContext) + + // EnterNullPredicatePart2 is called when entering the nullPredicatePart2 production. + EnterNullPredicatePart2(c *NullPredicatePart2Context) + + // EnterValueTypePredicate is called when entering the valueTypePredicate production. + EnterValueTypePredicate(c *ValueTypePredicateContext) + + // EnterValueTypePredicatePart2 is called when entering the valueTypePredicatePart2 production. + EnterValueTypePredicatePart2(c *ValueTypePredicatePart2Context) + + // EnterNormalizedPredicatePart2 is called when entering the normalizedPredicatePart2 production. + EnterNormalizedPredicatePart2(c *NormalizedPredicatePart2Context) + + // EnterDirectedPredicate is called when entering the directedPredicate production. + EnterDirectedPredicate(c *DirectedPredicateContext) + + // EnterDirectedPredicatePart2 is called when entering the directedPredicatePart2 production. + EnterDirectedPredicatePart2(c *DirectedPredicatePart2Context) + + // EnterLabeledPredicate is called when entering the labeledPredicate production. + EnterLabeledPredicate(c *LabeledPredicateContext) + + // EnterLabeledPredicatePart2 is called when entering the labeledPredicatePart2 production. + EnterLabeledPredicatePart2(c *LabeledPredicatePart2Context) + + // EnterIsLabeledOrColon is called when entering the isLabeledOrColon production. + EnterIsLabeledOrColon(c *IsLabeledOrColonContext) + + // EnterSourceDestinationPredicate is called when entering the sourceDestinationPredicate production. + EnterSourceDestinationPredicate(c *SourceDestinationPredicateContext) + + // EnterNodeReference is called when entering the nodeReference production. + EnterNodeReference(c *NodeReferenceContext) + + // EnterSourcePredicatePart2 is called when entering the sourcePredicatePart2 production. + EnterSourcePredicatePart2(c *SourcePredicatePart2Context) + + // EnterDestinationPredicatePart2 is called when entering the destinationPredicatePart2 production. + EnterDestinationPredicatePart2(c *DestinationPredicatePart2Context) + + // EnterEdgeReference is called when entering the edgeReference production. + EnterEdgeReference(c *EdgeReferenceContext) + + // EnterAll_differentPredicate is called when entering the all_differentPredicate production. + EnterAll_differentPredicate(c *All_differentPredicateContext) + + // EnterSamePredicate is called when entering the samePredicate production. + EnterSamePredicate(c *SamePredicateContext) + + // EnterProperty_existsPredicate is called when entering the property_existsPredicate production. + EnterProperty_existsPredicate(c *Property_existsPredicateContext) + + // EnterConjunctiveExprAlt is called when entering the conjunctiveExprAlt production. + EnterConjunctiveExprAlt(c *ConjunctiveExprAltContext) + + // EnterPropertyGraphExprAlt is called when entering the propertyGraphExprAlt production. + EnterPropertyGraphExprAlt(c *PropertyGraphExprAltContext) + + // EnterMultDivExprAlt is called when entering the multDivExprAlt production. + EnterMultDivExprAlt(c *MultDivExprAltContext) + + // EnterBindingTableExprAlt is called when entering the bindingTableExprAlt production. + EnterBindingTableExprAlt(c *BindingTableExprAltContext) + + // EnterSignedExprAlt is called when entering the signedExprAlt production. + EnterSignedExprAlt(c *SignedExprAltContext) + + // EnterIsNotExprAlt is called when entering the isNotExprAlt production. + EnterIsNotExprAlt(c *IsNotExprAltContext) + + // EnterNormalizedPredicateExprAlt is called when entering the normalizedPredicateExprAlt production. + EnterNormalizedPredicateExprAlt(c *NormalizedPredicateExprAltContext) + + // EnterNotExprAlt is called when entering the notExprAlt production. + EnterNotExprAlt(c *NotExprAltContext) + + // EnterValueFunctionExprAlt is called when entering the valueFunctionExprAlt production. + EnterValueFunctionExprAlt(c *ValueFunctionExprAltContext) + + // EnterConcatenationExprAlt is called when entering the concatenationExprAlt production. + EnterConcatenationExprAlt(c *ConcatenationExprAltContext) + + // EnterDisjunctiveExprAlt is called when entering the disjunctiveExprAlt production. + EnterDisjunctiveExprAlt(c *DisjunctiveExprAltContext) + + // EnterComparisonExprAlt is called when entering the comparisonExprAlt production. + EnterComparisonExprAlt(c *ComparisonExprAltContext) + + // EnterPrimaryExprAlt is called when entering the primaryExprAlt production. + EnterPrimaryExprAlt(c *PrimaryExprAltContext) + + // EnterAddSubtractExprAlt is called when entering the addSubtractExprAlt production. + EnterAddSubtractExprAlt(c *AddSubtractExprAltContext) + + // EnterPredicateExprAlt is called when entering the predicateExprAlt production. + EnterPredicateExprAlt(c *PredicateExprAltContext) + + // EnterValueFunction is called when entering the valueFunction production. + EnterValueFunction(c *ValueFunctionContext) + + // EnterBooleanValueExpression is called when entering the booleanValueExpression production. + EnterBooleanValueExpression(c *BooleanValueExpressionContext) + + // EnterCharacterOrByteStringFunction is called when entering the characterOrByteStringFunction production. + EnterCharacterOrByteStringFunction(c *CharacterOrByteStringFunctionContext) + + // EnterSubCharacterOrByteString is called when entering the subCharacterOrByteString production. + EnterSubCharacterOrByteString(c *SubCharacterOrByteStringContext) + + // EnterTrimSingleCharacterOrByteString is called when entering the trimSingleCharacterOrByteString production. + EnterTrimSingleCharacterOrByteString(c *TrimSingleCharacterOrByteStringContext) + + // EnterFoldCharacterString is called when entering the foldCharacterString production. + EnterFoldCharacterString(c *FoldCharacterStringContext) + + // EnterTrimMultiCharacterCharacterString is called when entering the trimMultiCharacterCharacterString production. + EnterTrimMultiCharacterCharacterString(c *TrimMultiCharacterCharacterStringContext) + + // EnterNormalizeCharacterString is called when entering the normalizeCharacterString production. + EnterNormalizeCharacterString(c *NormalizeCharacterStringContext) + + // EnterNodeReferenceValueExpression is called when entering the nodeReferenceValueExpression production. + EnterNodeReferenceValueExpression(c *NodeReferenceValueExpressionContext) + + // EnterEdgeReferenceValueExpression is called when entering the edgeReferenceValueExpression production. + EnterEdgeReferenceValueExpression(c *EdgeReferenceValueExpressionContext) + + // EnterAggregatingValueExpression is called when entering the aggregatingValueExpression production. + EnterAggregatingValueExpression(c *AggregatingValueExpressionContext) + + // EnterValueExpressionPrimary is called when entering the valueExpressionPrimary production. + EnterValueExpressionPrimary(c *ValueExpressionPrimaryContext) + + // EnterParenthesizedValueExpression is called when entering the parenthesizedValueExpression production. + EnterParenthesizedValueExpression(c *ParenthesizedValueExpressionContext) + + // EnterNonParenthesizedValueExpressionPrimary is called when entering the nonParenthesizedValueExpressionPrimary production. + EnterNonParenthesizedValueExpressionPrimary(c *NonParenthesizedValueExpressionPrimaryContext) + + // EnterNonParenthesizedValueExpressionPrimarySpecialCase is called when entering the nonParenthesizedValueExpressionPrimarySpecialCase production. + EnterNonParenthesizedValueExpressionPrimarySpecialCase(c *NonParenthesizedValueExpressionPrimarySpecialCaseContext) + + // EnterUnsignedValueSpecification is called when entering the unsignedValueSpecification production. + EnterUnsignedValueSpecification(c *UnsignedValueSpecificationContext) + + // EnterNonNegativeIntegerSpecification is called when entering the nonNegativeIntegerSpecification production. + EnterNonNegativeIntegerSpecification(c *NonNegativeIntegerSpecificationContext) + + // EnterGeneralValueSpecification is called when entering the generalValueSpecification production. + EnterGeneralValueSpecification(c *GeneralValueSpecificationContext) + + // EnterDynamicParameterSpecification is called when entering the dynamicParameterSpecification production. + EnterDynamicParameterSpecification(c *DynamicParameterSpecificationContext) + + // EnterLetValueExpression is called when entering the letValueExpression production. + EnterLetValueExpression(c *LetValueExpressionContext) + + // EnterValueQueryExpression is called when entering the valueQueryExpression production. + EnterValueQueryExpression(c *ValueQueryExpressionContext) + + // EnterCaseExpression is called when entering the caseExpression production. + EnterCaseExpression(c *CaseExpressionContext) + + // EnterCaseAbbreviation is called when entering the caseAbbreviation production. + EnterCaseAbbreviation(c *CaseAbbreviationContext) + + // EnterCaseSpecification is called when entering the caseSpecification production. + EnterCaseSpecification(c *CaseSpecificationContext) + + // EnterSimpleCase is called when entering the simpleCase production. + EnterSimpleCase(c *SimpleCaseContext) + + // EnterSearchedCase is called when entering the searchedCase production. + EnterSearchedCase(c *SearchedCaseContext) + + // EnterSimpleWhenClause is called when entering the simpleWhenClause production. + EnterSimpleWhenClause(c *SimpleWhenClauseContext) + + // EnterSearchedWhenClause is called when entering the searchedWhenClause production. + EnterSearchedWhenClause(c *SearchedWhenClauseContext) + + // EnterElseClause is called when entering the elseClause production. + EnterElseClause(c *ElseClauseContext) + + // EnterCaseOperand is called when entering the caseOperand production. + EnterCaseOperand(c *CaseOperandContext) + + // EnterWhenOperandList is called when entering the whenOperandList production. + EnterWhenOperandList(c *WhenOperandListContext) + + // EnterWhenOperand is called when entering the whenOperand production. + EnterWhenOperand(c *WhenOperandContext) + + // EnterResult is called when entering the result production. + EnterResult(c *ResultContext) + + // EnterResultExpression is called when entering the resultExpression production. + EnterResultExpression(c *ResultExpressionContext) + + // EnterCastSpecification is called when entering the castSpecification production. + EnterCastSpecification(c *CastSpecificationContext) + + // EnterCastOperand is called when entering the castOperand production. + EnterCastOperand(c *CastOperandContext) + + // EnterCastTarget is called when entering the castTarget production. + EnterCastTarget(c *CastTargetContext) + + // EnterAggregateFunction is called when entering the aggregateFunction production. + EnterAggregateFunction(c *AggregateFunctionContext) + + // EnterGeneralSetFunction is called when entering the generalSetFunction production. + EnterGeneralSetFunction(c *GeneralSetFunctionContext) + + // EnterBinarySetFunction is called when entering the binarySetFunction production. + EnterBinarySetFunction(c *BinarySetFunctionContext) + + // EnterGeneralSetFunctionType is called when entering the generalSetFunctionType production. + EnterGeneralSetFunctionType(c *GeneralSetFunctionTypeContext) + + // EnterSetQuantifier is called when entering the setQuantifier production. + EnterSetQuantifier(c *SetQuantifierContext) + + // EnterBinarySetFunctionType is called when entering the binarySetFunctionType production. + EnterBinarySetFunctionType(c *BinarySetFunctionTypeContext) + + // EnterDependentValueExpression is called when entering the dependentValueExpression production. + EnterDependentValueExpression(c *DependentValueExpressionContext) + + // EnterIndependentValueExpression is called when entering the independentValueExpression production. + EnterIndependentValueExpression(c *IndependentValueExpressionContext) + + // EnterElement_idFunction is called when entering the element_idFunction production. + EnterElement_idFunction(c *Element_idFunctionContext) + + // EnterBindingVariableReference is called when entering the bindingVariableReference production. + EnterBindingVariableReference(c *BindingVariableReferenceContext) + + // EnterPathValueExpression is called when entering the pathValueExpression production. + EnterPathValueExpression(c *PathValueExpressionContext) + + // EnterPathValueConstructor is called when entering the pathValueConstructor production. + EnterPathValueConstructor(c *PathValueConstructorContext) + + // EnterPathValueConstructorByEnumeration is called when entering the pathValueConstructorByEnumeration production. + EnterPathValueConstructorByEnumeration(c *PathValueConstructorByEnumerationContext) + + // EnterPathElementList is called when entering the pathElementList production. + EnterPathElementList(c *PathElementListContext) + + // EnterPathElementListStart is called when entering the pathElementListStart production. + EnterPathElementListStart(c *PathElementListStartContext) + + // EnterPathElementListStep is called when entering the pathElementListStep production. + EnterPathElementListStep(c *PathElementListStepContext) + + // EnterListValueExpression is called when entering the listValueExpression production. + EnterListValueExpression(c *ListValueExpressionContext) + + // EnterListValueFunction is called when entering the listValueFunction production. + EnterListValueFunction(c *ListValueFunctionContext) + + // EnterTrimListFunction is called when entering the trimListFunction production. + EnterTrimListFunction(c *TrimListFunctionContext) + + // EnterElementsFunction is called when entering the elementsFunction production. + EnterElementsFunction(c *ElementsFunctionContext) + + // EnterListValueConstructor is called when entering the listValueConstructor production. + EnterListValueConstructor(c *ListValueConstructorContext) + + // EnterListValueConstructorByEnumeration is called when entering the listValueConstructorByEnumeration production. + EnterListValueConstructorByEnumeration(c *ListValueConstructorByEnumerationContext) + + // EnterListElementList is called when entering the listElementList production. + EnterListElementList(c *ListElementListContext) + + // EnterListElement is called when entering the listElement production. + EnterListElement(c *ListElementContext) + + // EnterRecordConstructor is called when entering the recordConstructor production. + EnterRecordConstructor(c *RecordConstructorContext) + + // EnterFieldsSpecification is called when entering the fieldsSpecification production. + EnterFieldsSpecification(c *FieldsSpecificationContext) + + // EnterFieldList is called when entering the fieldList production. + EnterFieldList(c *FieldListContext) + + // EnterField is called when entering the field production. + EnterField(c *FieldContext) + + // EnterTruthValue is called when entering the truthValue production. + EnterTruthValue(c *TruthValueContext) + + // EnterNumericValueExpression is called when entering the numericValueExpression production. + EnterNumericValueExpression(c *NumericValueExpressionContext) + + // EnterNumericValueFunction is called when entering the numericValueFunction production. + EnterNumericValueFunction(c *NumericValueFunctionContext) + + // EnterLengthExpression is called when entering the lengthExpression production. + EnterLengthExpression(c *LengthExpressionContext) + + // EnterCardinalityExpression is called when entering the cardinalityExpression production. + EnterCardinalityExpression(c *CardinalityExpressionContext) + + // EnterCardinalityExpressionArgument is called when entering the cardinalityExpressionArgument production. + EnterCardinalityExpressionArgument(c *CardinalityExpressionArgumentContext) + + // EnterCharLengthExpression is called when entering the charLengthExpression production. + EnterCharLengthExpression(c *CharLengthExpressionContext) + + // EnterByteLengthExpression is called when entering the byteLengthExpression production. + EnterByteLengthExpression(c *ByteLengthExpressionContext) + + // EnterPathLengthExpression is called when entering the pathLengthExpression production. + EnterPathLengthExpression(c *PathLengthExpressionContext) + + // EnterAbsoluteValueExpression is called when entering the absoluteValueExpression production. + EnterAbsoluteValueExpression(c *AbsoluteValueExpressionContext) + + // EnterModulusExpression is called when entering the modulusExpression production. + EnterModulusExpression(c *ModulusExpressionContext) + + // EnterNumericValueExpressionDividend is called when entering the numericValueExpressionDividend production. + EnterNumericValueExpressionDividend(c *NumericValueExpressionDividendContext) + + // EnterNumericValueExpressionDivisor is called when entering the numericValueExpressionDivisor production. + EnterNumericValueExpressionDivisor(c *NumericValueExpressionDivisorContext) + + // EnterTrigonometricFunction is called when entering the trigonometricFunction production. + EnterTrigonometricFunction(c *TrigonometricFunctionContext) + + // EnterTrigonometricFunctionName is called when entering the trigonometricFunctionName production. + EnterTrigonometricFunctionName(c *TrigonometricFunctionNameContext) + + // EnterGeneralLogarithmFunction is called when entering the generalLogarithmFunction production. + EnterGeneralLogarithmFunction(c *GeneralLogarithmFunctionContext) + + // EnterGeneralLogarithmBase is called when entering the generalLogarithmBase production. + EnterGeneralLogarithmBase(c *GeneralLogarithmBaseContext) + + // EnterGeneralLogarithmArgument is called when entering the generalLogarithmArgument production. + EnterGeneralLogarithmArgument(c *GeneralLogarithmArgumentContext) + + // EnterCommonLogarithm is called when entering the commonLogarithm production. + EnterCommonLogarithm(c *CommonLogarithmContext) + + // EnterNaturalLogarithm is called when entering the naturalLogarithm production. + EnterNaturalLogarithm(c *NaturalLogarithmContext) + + // EnterExponentialFunction is called when entering the exponentialFunction production. + EnterExponentialFunction(c *ExponentialFunctionContext) + + // EnterPowerFunction is called when entering the powerFunction production. + EnterPowerFunction(c *PowerFunctionContext) + + // EnterNumericValueExpressionBase is called when entering the numericValueExpressionBase production. + EnterNumericValueExpressionBase(c *NumericValueExpressionBaseContext) + + // EnterNumericValueExpressionExponent is called when entering the numericValueExpressionExponent production. + EnterNumericValueExpressionExponent(c *NumericValueExpressionExponentContext) + + // EnterSquareRoot is called when entering the squareRoot production. + EnterSquareRoot(c *SquareRootContext) + + // EnterFloorFunction is called when entering the floorFunction production. + EnterFloorFunction(c *FloorFunctionContext) + + // EnterCeilingFunction is called when entering the ceilingFunction production. + EnterCeilingFunction(c *CeilingFunctionContext) + + // EnterCharacterStringValueExpression is called when entering the characterStringValueExpression production. + EnterCharacterStringValueExpression(c *CharacterStringValueExpressionContext) + + // EnterByteStringValueExpression is called when entering the byteStringValueExpression production. + EnterByteStringValueExpression(c *ByteStringValueExpressionContext) + + // EnterTrimOperands is called when entering the trimOperands production. + EnterTrimOperands(c *TrimOperandsContext) + + // EnterTrimCharacterOrByteStringSource is called when entering the trimCharacterOrByteStringSource production. + EnterTrimCharacterOrByteStringSource(c *TrimCharacterOrByteStringSourceContext) + + // EnterTrimSpecification is called when entering the trimSpecification production. + EnterTrimSpecification(c *TrimSpecificationContext) + + // EnterTrimCharacterOrByteString is called when entering the trimCharacterOrByteString production. + EnterTrimCharacterOrByteString(c *TrimCharacterOrByteStringContext) + + // EnterNormalForm is called when entering the normalForm production. + EnterNormalForm(c *NormalFormContext) + + // EnterStringLength is called when entering the stringLength production. + EnterStringLength(c *StringLengthContext) + + // EnterDatetimeValueExpression is called when entering the datetimeValueExpression production. + EnterDatetimeValueExpression(c *DatetimeValueExpressionContext) + + // EnterDatetimeValueFunction is called when entering the datetimeValueFunction production. + EnterDatetimeValueFunction(c *DatetimeValueFunctionContext) + + // EnterDateFunction is called when entering the dateFunction production. + EnterDateFunction(c *DateFunctionContext) + + // EnterTimeFunction is called when entering the timeFunction production. + EnterTimeFunction(c *TimeFunctionContext) + + // EnterLocaltimeFunction is called when entering the localtimeFunction production. + EnterLocaltimeFunction(c *LocaltimeFunctionContext) + + // EnterDatetimeFunction is called when entering the datetimeFunction production. + EnterDatetimeFunction(c *DatetimeFunctionContext) + + // EnterLocaldatetimeFunction is called when entering the localdatetimeFunction production. + EnterLocaldatetimeFunction(c *LocaldatetimeFunctionContext) + + // EnterDateFunctionParameters is called when entering the dateFunctionParameters production. + EnterDateFunctionParameters(c *DateFunctionParametersContext) + + // EnterTimeFunctionParameters is called when entering the timeFunctionParameters production. + EnterTimeFunctionParameters(c *TimeFunctionParametersContext) + + // EnterDatetimeFunctionParameters is called when entering the datetimeFunctionParameters production. + EnterDatetimeFunctionParameters(c *DatetimeFunctionParametersContext) + + // EnterDurationValueExpression is called when entering the durationValueExpression production. + EnterDurationValueExpression(c *DurationValueExpressionContext) + + // EnterDatetimeSubtraction is called when entering the datetimeSubtraction production. + EnterDatetimeSubtraction(c *DatetimeSubtractionContext) + + // EnterDatetimeSubtractionParameters is called when entering the datetimeSubtractionParameters production. + EnterDatetimeSubtractionParameters(c *DatetimeSubtractionParametersContext) + + // EnterDatetimeValueExpression1 is called when entering the datetimeValueExpression1 production. + EnterDatetimeValueExpression1(c *DatetimeValueExpression1Context) + + // EnterDatetimeValueExpression2 is called when entering the datetimeValueExpression2 production. + EnterDatetimeValueExpression2(c *DatetimeValueExpression2Context) + + // EnterDurationValueFunction is called when entering the durationValueFunction production. + EnterDurationValueFunction(c *DurationValueFunctionContext) + + // EnterDurationFunction is called when entering the durationFunction production. + EnterDurationFunction(c *DurationFunctionContext) + + // EnterDurationFunctionParameters is called when entering the durationFunctionParameters production. + EnterDurationFunctionParameters(c *DurationFunctionParametersContext) + + // EnterObjectName is called when entering the objectName production. + EnterObjectName(c *ObjectNameContext) + + // EnterObjectNameOrBindingVariable is called when entering the objectNameOrBindingVariable production. + EnterObjectNameOrBindingVariable(c *ObjectNameOrBindingVariableContext) + + // EnterDirectoryName is called when entering the directoryName production. + EnterDirectoryName(c *DirectoryNameContext) + + // EnterSchemaName is called when entering the schemaName production. + EnterSchemaName(c *SchemaNameContext) + + // EnterGraphName is called when entering the graphName production. + EnterGraphName(c *GraphNameContext) + + // EnterDelimitedGraphName is called when entering the delimitedGraphName production. + EnterDelimitedGraphName(c *DelimitedGraphNameContext) + + // EnterGraphTypeName is called when entering the graphTypeName production. + EnterGraphTypeName(c *GraphTypeNameContext) + + // EnterNodeTypeName is called when entering the nodeTypeName production. + EnterNodeTypeName(c *NodeTypeNameContext) + + // EnterEdgeTypeName is called when entering the edgeTypeName production. + EnterEdgeTypeName(c *EdgeTypeNameContext) + + // EnterBindingTableName is called when entering the bindingTableName production. + EnterBindingTableName(c *BindingTableNameContext) + + // EnterDelimitedBindingTableName is called when entering the delimitedBindingTableName production. + EnterDelimitedBindingTableName(c *DelimitedBindingTableNameContext) + + // EnterProcedureName is called when entering the procedureName production. + EnterProcedureName(c *ProcedureNameContext) + + // EnterLabelName is called when entering the labelName production. + EnterLabelName(c *LabelNameContext) + + // EnterPropertyName is called when entering the propertyName production. + EnterPropertyName(c *PropertyNameContext) + + // EnterFieldName is called when entering the fieldName production. + EnterFieldName(c *FieldNameContext) + + // EnterElementVariable is called when entering the elementVariable production. + EnterElementVariable(c *ElementVariableContext) + + // EnterPathVariable is called when entering the pathVariable production. + EnterPathVariable(c *PathVariableContext) + + // EnterSubpathVariable is called when entering the subpathVariable production. + EnterSubpathVariable(c *SubpathVariableContext) + + // EnterBindingVariable is called when entering the bindingVariable production. + EnterBindingVariable(c *BindingVariableContext) + + // EnterUnsignedLiteral is called when entering the unsignedLiteral production. + EnterUnsignedLiteral(c *UnsignedLiteralContext) + + // EnterGeneralLiteral is called when entering the generalLiteral production. + EnterGeneralLiteral(c *GeneralLiteralContext) + + // EnterTemporalLiteral is called when entering the temporalLiteral production. + EnterTemporalLiteral(c *TemporalLiteralContext) + + // EnterDateLiteral is called when entering the dateLiteral production. + EnterDateLiteral(c *DateLiteralContext) + + // EnterTimeLiteral is called when entering the timeLiteral production. + EnterTimeLiteral(c *TimeLiteralContext) + + // EnterDatetimeLiteral is called when entering the datetimeLiteral production. + EnterDatetimeLiteral(c *DatetimeLiteralContext) + + // EnterListLiteral is called when entering the listLiteral production. + EnterListLiteral(c *ListLiteralContext) + + // EnterRecordLiteral is called when entering the recordLiteral production. + EnterRecordLiteral(c *RecordLiteralContext) + + // EnterIdentifier is called when entering the identifier production. + EnterIdentifier(c *IdentifierContext) + + // EnterRegularIdentifier is called when entering the regularIdentifier production. + EnterRegularIdentifier(c *RegularIdentifierContext) + + // EnterTimeZoneString is called when entering the timeZoneString production. + EnterTimeZoneString(c *TimeZoneStringContext) + + // EnterCharacterStringLiteral is called when entering the characterStringLiteral production. + EnterCharacterStringLiteral(c *CharacterStringLiteralContext) + + // EnterUnsignedNumericLiteral is called when entering the unsignedNumericLiteral production. + EnterUnsignedNumericLiteral(c *UnsignedNumericLiteralContext) + + // EnterExactNumericLiteral is called when entering the exactNumericLiteral production. + EnterExactNumericLiteral(c *ExactNumericLiteralContext) + + // EnterApproximateNumericLiteral is called when entering the approximateNumericLiteral production. + EnterApproximateNumericLiteral(c *ApproximateNumericLiteralContext) + + // EnterUnsignedInteger is called when entering the unsignedInteger production. + EnterUnsignedInteger(c *UnsignedIntegerContext) + + // EnterUnsignedDecimalInteger is called when entering the unsignedDecimalInteger production. + EnterUnsignedDecimalInteger(c *UnsignedDecimalIntegerContext) + + // EnterNullLiteral is called when entering the nullLiteral production. + EnterNullLiteral(c *NullLiteralContext) + + // EnterDateString is called when entering the dateString production. + EnterDateString(c *DateStringContext) + + // EnterTimeString is called when entering the timeString production. + EnterTimeString(c *TimeStringContext) + + // EnterDatetimeString is called when entering the datetimeString production. + EnterDatetimeString(c *DatetimeStringContext) + + // EnterDurationLiteral is called when entering the durationLiteral production. + EnterDurationLiteral(c *DurationLiteralContext) + + // EnterDurationString is called when entering the durationString production. + EnterDurationString(c *DurationStringContext) + + // EnterNodeSynonym is called when entering the nodeSynonym production. + EnterNodeSynonym(c *NodeSynonymContext) + + // EnterEdgesSynonym is called when entering the edgesSynonym production. + EnterEdgesSynonym(c *EdgesSynonymContext) + + // EnterEdgeSynonym is called when entering the edgeSynonym production. + EnterEdgeSynonym(c *EdgeSynonymContext) + + // EnterNonReservedWords is called when entering the nonReservedWords production. + EnterNonReservedWords(c *NonReservedWordsContext) + + // ExitGqlProgram is called when exiting the gqlProgram production. + ExitGqlProgram(c *GqlProgramContext) + + // ExitProgramActivity is called when exiting the programActivity production. + ExitProgramActivity(c *ProgramActivityContext) + + // ExitSessionActivity is called when exiting the sessionActivity production. + ExitSessionActivity(c *SessionActivityContext) + + // ExitTransactionActivity is called when exiting the transactionActivity production. + ExitTransactionActivity(c *TransactionActivityContext) + + // ExitEndTransactionCommand is called when exiting the endTransactionCommand production. + ExitEndTransactionCommand(c *EndTransactionCommandContext) + + // ExitSessionSetCommand is called when exiting the sessionSetCommand production. + ExitSessionSetCommand(c *SessionSetCommandContext) + + // ExitSessionSetSchemaClause is called when exiting the sessionSetSchemaClause production. + ExitSessionSetSchemaClause(c *SessionSetSchemaClauseContext) + + // ExitSessionSetGraphClause is called when exiting the sessionSetGraphClause production. + ExitSessionSetGraphClause(c *SessionSetGraphClauseContext) + + // ExitSessionSetTimeZoneClause is called when exiting the sessionSetTimeZoneClause production. + ExitSessionSetTimeZoneClause(c *SessionSetTimeZoneClauseContext) + + // ExitSetTimeZoneValue is called when exiting the setTimeZoneValue production. + ExitSetTimeZoneValue(c *SetTimeZoneValueContext) + + // ExitSessionSetParameterClause is called when exiting the sessionSetParameterClause production. + ExitSessionSetParameterClause(c *SessionSetParameterClauseContext) + + // ExitSessionSetGraphParameterClause is called when exiting the sessionSetGraphParameterClause production. + ExitSessionSetGraphParameterClause(c *SessionSetGraphParameterClauseContext) + + // ExitSessionSetBindingTableParameterClause is called when exiting the sessionSetBindingTableParameterClause production. + ExitSessionSetBindingTableParameterClause(c *SessionSetBindingTableParameterClauseContext) + + // ExitSessionSetValueParameterClause is called when exiting the sessionSetValueParameterClause production. + ExitSessionSetValueParameterClause(c *SessionSetValueParameterClauseContext) + + // ExitSessionSetParameterName is called when exiting the sessionSetParameterName production. + ExitSessionSetParameterName(c *SessionSetParameterNameContext) + + // ExitSessionResetCommand is called when exiting the sessionResetCommand production. + ExitSessionResetCommand(c *SessionResetCommandContext) + + // ExitSessionResetArguments is called when exiting the sessionResetArguments production. + ExitSessionResetArguments(c *SessionResetArgumentsContext) + + // ExitSessionCloseCommand is called when exiting the sessionCloseCommand production. + ExitSessionCloseCommand(c *SessionCloseCommandContext) + + // ExitSessionParameterSpecification is called when exiting the sessionParameterSpecification production. + ExitSessionParameterSpecification(c *SessionParameterSpecificationContext) + + // ExitStartTransactionCommand is called when exiting the startTransactionCommand production. + ExitStartTransactionCommand(c *StartTransactionCommandContext) + + // ExitTransactionCharacteristics is called when exiting the transactionCharacteristics production. + ExitTransactionCharacteristics(c *TransactionCharacteristicsContext) + + // ExitTransactionMode is called when exiting the transactionMode production. + ExitTransactionMode(c *TransactionModeContext) + + // ExitTransactionAccessMode is called when exiting the transactionAccessMode production. + ExitTransactionAccessMode(c *TransactionAccessModeContext) + + // ExitRollbackCommand is called when exiting the rollbackCommand production. + ExitRollbackCommand(c *RollbackCommandContext) + + // ExitCommitCommand is called when exiting the commitCommand production. + ExitCommitCommand(c *CommitCommandContext) + + // ExitNestedProcedureSpecification is called when exiting the nestedProcedureSpecification production. + ExitNestedProcedureSpecification(c *NestedProcedureSpecificationContext) + + // ExitProcedureSpecification is called when exiting the procedureSpecification production. + ExitProcedureSpecification(c *ProcedureSpecificationContext) + + // ExitNestedDataModifyingProcedureSpecification is called when exiting the nestedDataModifyingProcedureSpecification production. + ExitNestedDataModifyingProcedureSpecification(c *NestedDataModifyingProcedureSpecificationContext) + + // ExitNestedQuerySpecification is called when exiting the nestedQuerySpecification production. + ExitNestedQuerySpecification(c *NestedQuerySpecificationContext) + + // ExitProcedureBody is called when exiting the procedureBody production. + ExitProcedureBody(c *ProcedureBodyContext) + + // ExitBindingVariableDefinitionBlock is called when exiting the bindingVariableDefinitionBlock production. + ExitBindingVariableDefinitionBlock(c *BindingVariableDefinitionBlockContext) + + // ExitBindingVariableDefinition is called when exiting the bindingVariableDefinition production. + ExitBindingVariableDefinition(c *BindingVariableDefinitionContext) + + // ExitStatementBlock is called when exiting the statementBlock production. + ExitStatementBlock(c *StatementBlockContext) + + // ExitStatement is called when exiting the statement production. + ExitStatement(c *StatementContext) + + // ExitNextStatement is called when exiting the nextStatement production. + ExitNextStatement(c *NextStatementContext) + + // ExitGraphVariableDefinition is called when exiting the graphVariableDefinition production. + ExitGraphVariableDefinition(c *GraphVariableDefinitionContext) + + // ExitOptTypedGraphInitializer is called when exiting the optTypedGraphInitializer production. + ExitOptTypedGraphInitializer(c *OptTypedGraphInitializerContext) + + // ExitGraphInitializer is called when exiting the graphInitializer production. + ExitGraphInitializer(c *GraphInitializerContext) + + // ExitBindingTableVariableDefinition is called when exiting the bindingTableVariableDefinition production. + ExitBindingTableVariableDefinition(c *BindingTableVariableDefinitionContext) + + // ExitOptTypedBindingTableInitializer is called when exiting the optTypedBindingTableInitializer production. + ExitOptTypedBindingTableInitializer(c *OptTypedBindingTableInitializerContext) + + // ExitBindingTableInitializer is called when exiting the bindingTableInitializer production. + ExitBindingTableInitializer(c *BindingTableInitializerContext) + + // ExitValueVariableDefinition is called when exiting the valueVariableDefinition production. + ExitValueVariableDefinition(c *ValueVariableDefinitionContext) + + // ExitOptTypedValueInitializer is called when exiting the optTypedValueInitializer production. + ExitOptTypedValueInitializer(c *OptTypedValueInitializerContext) + + // ExitValueInitializer is called when exiting the valueInitializer production. + ExitValueInitializer(c *ValueInitializerContext) + + // ExitGraphExpression is called when exiting the graphExpression production. + ExitGraphExpression(c *GraphExpressionContext) + + // ExitCurrentGraph is called when exiting the currentGraph production. + ExitCurrentGraph(c *CurrentGraphContext) + + // ExitBindingTableExpression is called when exiting the bindingTableExpression production. + ExitBindingTableExpression(c *BindingTableExpressionContext) + + // ExitNestedBindingTableQuerySpecification is called when exiting the nestedBindingTableQuerySpecification production. + ExitNestedBindingTableQuerySpecification(c *NestedBindingTableQuerySpecificationContext) + + // ExitObjectExpressionPrimary is called when exiting the objectExpressionPrimary production. + ExitObjectExpressionPrimary(c *ObjectExpressionPrimaryContext) + + // ExitLinearCatalogModifyingStatement is called when exiting the linearCatalogModifyingStatement production. + ExitLinearCatalogModifyingStatement(c *LinearCatalogModifyingStatementContext) + + // ExitSimpleCatalogModifyingStatement is called when exiting the simpleCatalogModifyingStatement production. + ExitSimpleCatalogModifyingStatement(c *SimpleCatalogModifyingStatementContext) + + // ExitPrimitiveCatalogModifyingStatement is called when exiting the primitiveCatalogModifyingStatement production. + ExitPrimitiveCatalogModifyingStatement(c *PrimitiveCatalogModifyingStatementContext) + + // ExitCreateSchemaStatement is called when exiting the createSchemaStatement production. + ExitCreateSchemaStatement(c *CreateSchemaStatementContext) + + // ExitDropSchemaStatement is called when exiting the dropSchemaStatement production. + ExitDropSchemaStatement(c *DropSchemaStatementContext) + + // ExitCreateGraphStatement is called when exiting the createGraphStatement production. + ExitCreateGraphStatement(c *CreateGraphStatementContext) + + // ExitOpenGraphType is called when exiting the openGraphType production. + ExitOpenGraphType(c *OpenGraphTypeContext) + + // ExitOfGraphType is called when exiting the ofGraphType production. + ExitOfGraphType(c *OfGraphTypeContext) + + // ExitGraphTypeLikeGraph is called when exiting the graphTypeLikeGraph production. + ExitGraphTypeLikeGraph(c *GraphTypeLikeGraphContext) + + // ExitGraphSource is called when exiting the graphSource production. + ExitGraphSource(c *GraphSourceContext) + + // ExitDropGraphStatement is called when exiting the dropGraphStatement production. + ExitDropGraphStatement(c *DropGraphStatementContext) + + // ExitCreateGraphTypeStatement is called when exiting the createGraphTypeStatement production. + ExitCreateGraphTypeStatement(c *CreateGraphTypeStatementContext) + + // ExitGraphTypeSource is called when exiting the graphTypeSource production. + ExitGraphTypeSource(c *GraphTypeSourceContext) + + // ExitCopyOfGraphType is called when exiting the copyOfGraphType production. + ExitCopyOfGraphType(c *CopyOfGraphTypeContext) + + // ExitDropGraphTypeStatement is called when exiting the dropGraphTypeStatement production. + ExitDropGraphTypeStatement(c *DropGraphTypeStatementContext) + + // ExitCallCatalogModifyingProcedureStatement is called when exiting the callCatalogModifyingProcedureStatement production. + ExitCallCatalogModifyingProcedureStatement(c *CallCatalogModifyingProcedureStatementContext) + + // ExitLinearDataModifyingStatement is called when exiting the linearDataModifyingStatement production. + ExitLinearDataModifyingStatement(c *LinearDataModifyingStatementContext) + + // ExitFocusedLinearDataModifyingStatement is called when exiting the focusedLinearDataModifyingStatement production. + ExitFocusedLinearDataModifyingStatement(c *FocusedLinearDataModifyingStatementContext) + + // ExitFocusedLinearDataModifyingStatementBody is called when exiting the focusedLinearDataModifyingStatementBody production. + ExitFocusedLinearDataModifyingStatementBody(c *FocusedLinearDataModifyingStatementBodyContext) + + // ExitFocusedNestedDataModifyingProcedureSpecification is called when exiting the focusedNestedDataModifyingProcedureSpecification production. + ExitFocusedNestedDataModifyingProcedureSpecification(c *FocusedNestedDataModifyingProcedureSpecificationContext) + + // ExitAmbientLinearDataModifyingStatement is called when exiting the ambientLinearDataModifyingStatement production. + ExitAmbientLinearDataModifyingStatement(c *AmbientLinearDataModifyingStatementContext) + + // ExitAmbientLinearDataModifyingStatementBody is called when exiting the ambientLinearDataModifyingStatementBody production. + ExitAmbientLinearDataModifyingStatementBody(c *AmbientLinearDataModifyingStatementBodyContext) + + // ExitSimpleLinearDataAccessingStatement is called when exiting the simpleLinearDataAccessingStatement production. + ExitSimpleLinearDataAccessingStatement(c *SimpleLinearDataAccessingStatementContext) + + // ExitSimpleDataAccessingStatement is called when exiting the simpleDataAccessingStatement production. + ExitSimpleDataAccessingStatement(c *SimpleDataAccessingStatementContext) + + // ExitSimpleDataModifyingStatement is called when exiting the simpleDataModifyingStatement production. + ExitSimpleDataModifyingStatement(c *SimpleDataModifyingStatementContext) + + // ExitPrimitiveDataModifyingStatement is called when exiting the primitiveDataModifyingStatement production. + ExitPrimitiveDataModifyingStatement(c *PrimitiveDataModifyingStatementContext) + + // ExitInsertStatement is called when exiting the insertStatement production. + ExitInsertStatement(c *InsertStatementContext) + + // ExitSetStatement is called when exiting the setStatement production. + ExitSetStatement(c *SetStatementContext) + + // ExitSetItemList is called when exiting the setItemList production. + ExitSetItemList(c *SetItemListContext) + + // ExitSetItem is called when exiting the setItem production. + ExitSetItem(c *SetItemContext) + + // ExitSetPropertyItem is called when exiting the setPropertyItem production. + ExitSetPropertyItem(c *SetPropertyItemContext) + + // ExitSetAllPropertiesItem is called when exiting the setAllPropertiesItem production. + ExitSetAllPropertiesItem(c *SetAllPropertiesItemContext) + + // ExitSetLabelItem is called when exiting the setLabelItem production. + ExitSetLabelItem(c *SetLabelItemContext) + + // ExitRemoveStatement is called when exiting the removeStatement production. + ExitRemoveStatement(c *RemoveStatementContext) + + // ExitRemoveItemList is called when exiting the removeItemList production. + ExitRemoveItemList(c *RemoveItemListContext) + + // ExitRemoveItem is called when exiting the removeItem production. + ExitRemoveItem(c *RemoveItemContext) + + // ExitRemovePropertyItem is called when exiting the removePropertyItem production. + ExitRemovePropertyItem(c *RemovePropertyItemContext) + + // ExitRemoveLabelItem is called when exiting the removeLabelItem production. + ExitRemoveLabelItem(c *RemoveLabelItemContext) + + // ExitDeleteStatement is called when exiting the deleteStatement production. + ExitDeleteStatement(c *DeleteStatementContext) + + // ExitDeleteItemList is called when exiting the deleteItemList production. + ExitDeleteItemList(c *DeleteItemListContext) + + // ExitDeleteItem is called when exiting the deleteItem production. + ExitDeleteItem(c *DeleteItemContext) + + // ExitCallDataModifyingProcedureStatement is called when exiting the callDataModifyingProcedureStatement production. + ExitCallDataModifyingProcedureStatement(c *CallDataModifyingProcedureStatementContext) + + // ExitCompositeQueryStatement is called when exiting the compositeQueryStatement production. + ExitCompositeQueryStatement(c *CompositeQueryStatementContext) + + // ExitCompositeQueryExpression is called when exiting the compositeQueryExpression production. + ExitCompositeQueryExpression(c *CompositeQueryExpressionContext) + + // ExitQueryConjunction is called when exiting the queryConjunction production. + ExitQueryConjunction(c *QueryConjunctionContext) + + // ExitSetOperator is called when exiting the setOperator production. + ExitSetOperator(c *SetOperatorContext) + + // ExitCompositeQueryPrimary is called when exiting the compositeQueryPrimary production. + ExitCompositeQueryPrimary(c *CompositeQueryPrimaryContext) + + // ExitLinearQueryStatement is called when exiting the linearQueryStatement production. + ExitLinearQueryStatement(c *LinearQueryStatementContext) + + // ExitFocusedLinearQueryStatement is called when exiting the focusedLinearQueryStatement production. + ExitFocusedLinearQueryStatement(c *FocusedLinearQueryStatementContext) + + // ExitFocusedLinearQueryStatementPart is called when exiting the focusedLinearQueryStatementPart production. + ExitFocusedLinearQueryStatementPart(c *FocusedLinearQueryStatementPartContext) + + // ExitFocusedLinearQueryAndPrimitiveResultStatementPart is called when exiting the focusedLinearQueryAndPrimitiveResultStatementPart production. + ExitFocusedLinearQueryAndPrimitiveResultStatementPart(c *FocusedLinearQueryAndPrimitiveResultStatementPartContext) + + // ExitFocusedPrimitiveResultStatement is called when exiting the focusedPrimitiveResultStatement production. + ExitFocusedPrimitiveResultStatement(c *FocusedPrimitiveResultStatementContext) + + // ExitFocusedNestedQuerySpecification is called when exiting the focusedNestedQuerySpecification production. + ExitFocusedNestedQuerySpecification(c *FocusedNestedQuerySpecificationContext) + + // ExitAmbientLinearQueryStatement is called when exiting the ambientLinearQueryStatement production. + ExitAmbientLinearQueryStatement(c *AmbientLinearQueryStatementContext) + + // ExitSimpleLinearQueryStatement is called when exiting the simpleLinearQueryStatement production. + ExitSimpleLinearQueryStatement(c *SimpleLinearQueryStatementContext) + + // ExitSimpleQueryStatement is called when exiting the simpleQueryStatement production. + ExitSimpleQueryStatement(c *SimpleQueryStatementContext) + + // ExitPrimitiveQueryStatement is called when exiting the primitiveQueryStatement production. + ExitPrimitiveQueryStatement(c *PrimitiveQueryStatementContext) + + // ExitMatchStatement is called when exiting the matchStatement production. + ExitMatchStatement(c *MatchStatementContext) + + // ExitSimpleMatchStatement is called when exiting the simpleMatchStatement production. + ExitSimpleMatchStatement(c *SimpleMatchStatementContext) + + // ExitOptionalMatchStatement is called when exiting the optionalMatchStatement production. + ExitOptionalMatchStatement(c *OptionalMatchStatementContext) + + // ExitOptionalOperand is called when exiting the optionalOperand production. + ExitOptionalOperand(c *OptionalOperandContext) + + // ExitMatchStatementBlock is called when exiting the matchStatementBlock production. + ExitMatchStatementBlock(c *MatchStatementBlockContext) + + // ExitCallQueryStatement is called when exiting the callQueryStatement production. + ExitCallQueryStatement(c *CallQueryStatementContext) + + // ExitFilterStatement is called when exiting the filterStatement production. + ExitFilterStatement(c *FilterStatementContext) + + // ExitLetStatement is called when exiting the letStatement production. + ExitLetStatement(c *LetStatementContext) + + // ExitLetVariableDefinitionList is called when exiting the letVariableDefinitionList production. + ExitLetVariableDefinitionList(c *LetVariableDefinitionListContext) + + // ExitLetVariableDefinition is called when exiting the letVariableDefinition production. + ExitLetVariableDefinition(c *LetVariableDefinitionContext) + + // ExitForStatement is called when exiting the forStatement production. + ExitForStatement(c *ForStatementContext) + + // ExitForItem is called when exiting the forItem production. + ExitForItem(c *ForItemContext) + + // ExitForItemAlias is called when exiting the forItemAlias production. + ExitForItemAlias(c *ForItemAliasContext) + + // ExitForItemSource is called when exiting the forItemSource production. + ExitForItemSource(c *ForItemSourceContext) + + // ExitForOrdinalityOrOffset is called when exiting the forOrdinalityOrOffset production. + ExitForOrdinalityOrOffset(c *ForOrdinalityOrOffsetContext) + + // ExitOrderByAndPageStatement is called when exiting the orderByAndPageStatement production. + ExitOrderByAndPageStatement(c *OrderByAndPageStatementContext) + + // ExitPrimitiveResultStatement is called when exiting the primitiveResultStatement production. + ExitPrimitiveResultStatement(c *PrimitiveResultStatementContext) + + // ExitReturnStatement is called when exiting the returnStatement production. + ExitReturnStatement(c *ReturnStatementContext) + + // ExitReturnStatementBody is called when exiting the returnStatementBody production. + ExitReturnStatementBody(c *ReturnStatementBodyContext) + + // ExitReturnItemList is called when exiting the returnItemList production. + ExitReturnItemList(c *ReturnItemListContext) + + // ExitReturnItem is called when exiting the returnItem production. + ExitReturnItem(c *ReturnItemContext) + + // ExitReturnItemAlias is called when exiting the returnItemAlias production. + ExitReturnItemAlias(c *ReturnItemAliasContext) + + // ExitSelectStatement is called when exiting the selectStatement production. + ExitSelectStatement(c *SelectStatementContext) + + // ExitSelectItemList is called when exiting the selectItemList production. + ExitSelectItemList(c *SelectItemListContext) + + // ExitSelectItem is called when exiting the selectItem production. + ExitSelectItem(c *SelectItemContext) + + // ExitSelectItemAlias is called when exiting the selectItemAlias production. + ExitSelectItemAlias(c *SelectItemAliasContext) + + // ExitHavingClause is called when exiting the havingClause production. + ExitHavingClause(c *HavingClauseContext) + + // ExitSelectStatementBody is called when exiting the selectStatementBody production. + ExitSelectStatementBody(c *SelectStatementBodyContext) + + // ExitSelectGraphMatchList is called when exiting the selectGraphMatchList production. + ExitSelectGraphMatchList(c *SelectGraphMatchListContext) + + // ExitSelectGraphMatch is called when exiting the selectGraphMatch production. + ExitSelectGraphMatch(c *SelectGraphMatchContext) + + // ExitSelectQuerySpecification is called when exiting the selectQuerySpecification production. + ExitSelectQuerySpecification(c *SelectQuerySpecificationContext) + + // ExitCallProcedureStatement is called when exiting the callProcedureStatement production. + ExitCallProcedureStatement(c *CallProcedureStatementContext) + + // ExitProcedureCall is called when exiting the procedureCall production. + ExitProcedureCall(c *ProcedureCallContext) + + // ExitInlineProcedureCall is called when exiting the inlineProcedureCall production. + ExitInlineProcedureCall(c *InlineProcedureCallContext) + + // ExitVariableScopeClause is called when exiting the variableScopeClause production. + ExitVariableScopeClause(c *VariableScopeClauseContext) + + // ExitBindingVariableReferenceList is called when exiting the bindingVariableReferenceList production. + ExitBindingVariableReferenceList(c *BindingVariableReferenceListContext) + + // ExitNamedProcedureCall is called when exiting the namedProcedureCall production. + ExitNamedProcedureCall(c *NamedProcedureCallContext) + + // ExitProcedureArgumentList is called when exiting the procedureArgumentList production. + ExitProcedureArgumentList(c *ProcedureArgumentListContext) + + // ExitProcedureArgument is called when exiting the procedureArgument production. + ExitProcedureArgument(c *ProcedureArgumentContext) + + // ExitAtSchemaClause is called when exiting the atSchemaClause production. + ExitAtSchemaClause(c *AtSchemaClauseContext) + + // ExitUseGraphClause is called when exiting the useGraphClause production. + ExitUseGraphClause(c *UseGraphClauseContext) + + // ExitGraphPatternBindingTable is called when exiting the graphPatternBindingTable production. + ExitGraphPatternBindingTable(c *GraphPatternBindingTableContext) + + // ExitGraphPatternYieldClause is called when exiting the graphPatternYieldClause production. + ExitGraphPatternYieldClause(c *GraphPatternYieldClauseContext) + + // ExitGraphPatternYieldItemList is called when exiting the graphPatternYieldItemList production. + ExitGraphPatternYieldItemList(c *GraphPatternYieldItemListContext) + + // ExitGraphPatternYieldItem is called when exiting the graphPatternYieldItem production. + ExitGraphPatternYieldItem(c *GraphPatternYieldItemContext) + + // ExitGraphPattern is called when exiting the graphPattern production. + ExitGraphPattern(c *GraphPatternContext) + + // ExitMatchMode is called when exiting the matchMode production. + ExitMatchMode(c *MatchModeContext) + + // ExitRepeatableElementsMatchMode is called when exiting the repeatableElementsMatchMode production. + ExitRepeatableElementsMatchMode(c *RepeatableElementsMatchModeContext) + + // ExitDifferentEdgesMatchMode is called when exiting the differentEdgesMatchMode production. + ExitDifferentEdgesMatchMode(c *DifferentEdgesMatchModeContext) + + // ExitElementBindingsOrElements is called when exiting the elementBindingsOrElements production. + ExitElementBindingsOrElements(c *ElementBindingsOrElementsContext) + + // ExitEdgeBindingsOrEdges is called when exiting the edgeBindingsOrEdges production. + ExitEdgeBindingsOrEdges(c *EdgeBindingsOrEdgesContext) + + // ExitPathPatternList is called when exiting the pathPatternList production. + ExitPathPatternList(c *PathPatternListContext) + + // ExitPathPattern is called when exiting the pathPattern production. + ExitPathPattern(c *PathPatternContext) + + // ExitPathVariableDeclaration is called when exiting the pathVariableDeclaration production. + ExitPathVariableDeclaration(c *PathVariableDeclarationContext) + + // ExitKeepClause is called when exiting the keepClause production. + ExitKeepClause(c *KeepClauseContext) + + // ExitGraphPatternWhereClause is called when exiting the graphPatternWhereClause production. + ExitGraphPatternWhereClause(c *GraphPatternWhereClauseContext) + + // ExitInsertGraphPattern is called when exiting the insertGraphPattern production. + ExitInsertGraphPattern(c *InsertGraphPatternContext) + + // ExitInsertPathPatternList is called when exiting the insertPathPatternList production. + ExitInsertPathPatternList(c *InsertPathPatternListContext) + + // ExitInsertPathPattern is called when exiting the insertPathPattern production. + ExitInsertPathPattern(c *InsertPathPatternContext) + + // ExitInsertNodePattern is called when exiting the insertNodePattern production. + ExitInsertNodePattern(c *InsertNodePatternContext) + + // ExitInsertEdgePattern is called when exiting the insertEdgePattern production. + ExitInsertEdgePattern(c *InsertEdgePatternContext) + + // ExitInsertEdgePointingLeft is called when exiting the insertEdgePointingLeft production. + ExitInsertEdgePointingLeft(c *InsertEdgePointingLeftContext) + + // ExitInsertEdgePointingRight is called when exiting the insertEdgePointingRight production. + ExitInsertEdgePointingRight(c *InsertEdgePointingRightContext) + + // ExitInsertEdgeUndirected is called when exiting the insertEdgeUndirected production. + ExitInsertEdgeUndirected(c *InsertEdgeUndirectedContext) + + // ExitInsertElementPatternFiller is called when exiting the insertElementPatternFiller production. + ExitInsertElementPatternFiller(c *InsertElementPatternFillerContext) + + // ExitLabelAndPropertySetSpecification is called when exiting the labelAndPropertySetSpecification production. + ExitLabelAndPropertySetSpecification(c *LabelAndPropertySetSpecificationContext) + + // ExitPathPatternPrefix is called when exiting the pathPatternPrefix production. + ExitPathPatternPrefix(c *PathPatternPrefixContext) + + // ExitPathModePrefix is called when exiting the pathModePrefix production. + ExitPathModePrefix(c *PathModePrefixContext) + + // ExitPathMode is called when exiting the pathMode production. + ExitPathMode(c *PathModeContext) + + // ExitPathSearchPrefix is called when exiting the pathSearchPrefix production. + ExitPathSearchPrefix(c *PathSearchPrefixContext) + + // ExitAllPathSearch is called when exiting the allPathSearch production. + ExitAllPathSearch(c *AllPathSearchContext) + + // ExitPathOrPaths is called when exiting the pathOrPaths production. + ExitPathOrPaths(c *PathOrPathsContext) + + // ExitAnyPathSearch is called when exiting the anyPathSearch production. + ExitAnyPathSearch(c *AnyPathSearchContext) + + // ExitNumberOfPaths is called when exiting the numberOfPaths production. + ExitNumberOfPaths(c *NumberOfPathsContext) + + // ExitShortestPathSearch is called when exiting the shortestPathSearch production. + ExitShortestPathSearch(c *ShortestPathSearchContext) + + // ExitAllShortestPathSearch is called when exiting the allShortestPathSearch production. + ExitAllShortestPathSearch(c *AllShortestPathSearchContext) + + // ExitAnyShortestPathSearch is called when exiting the anyShortestPathSearch production. + ExitAnyShortestPathSearch(c *AnyShortestPathSearchContext) + + // ExitCountedShortestPathSearch is called when exiting the countedShortestPathSearch production. + ExitCountedShortestPathSearch(c *CountedShortestPathSearchContext) + + // ExitCountedShortestGroupSearch is called when exiting the countedShortestGroupSearch production. + ExitCountedShortestGroupSearch(c *CountedShortestGroupSearchContext) + + // ExitNumberOfGroups is called when exiting the numberOfGroups production. + ExitNumberOfGroups(c *NumberOfGroupsContext) + + // ExitPpePathTerm is called when exiting the ppePathTerm production. + ExitPpePathTerm(c *PpePathTermContext) + + // ExitPpeMultisetAlternation is called when exiting the ppeMultisetAlternation production. + ExitPpeMultisetAlternation(c *PpeMultisetAlternationContext) + + // ExitPpePatternUnion is called when exiting the ppePatternUnion production. + ExitPpePatternUnion(c *PpePatternUnionContext) + + // ExitPathTerm is called when exiting the pathTerm production. + ExitPathTerm(c *PathTermContext) + + // ExitPfPathPrimary is called when exiting the pfPathPrimary production. + ExitPfPathPrimary(c *PfPathPrimaryContext) + + // ExitPfQuantifiedPathPrimary is called when exiting the pfQuantifiedPathPrimary production. + ExitPfQuantifiedPathPrimary(c *PfQuantifiedPathPrimaryContext) + + // ExitPfQuestionedPathPrimary is called when exiting the pfQuestionedPathPrimary production. + ExitPfQuestionedPathPrimary(c *PfQuestionedPathPrimaryContext) + + // ExitPpElementPattern is called when exiting the ppElementPattern production. + ExitPpElementPattern(c *PpElementPatternContext) + + // ExitPpParenthesizedPathPatternExpression is called when exiting the ppParenthesizedPathPatternExpression production. + ExitPpParenthesizedPathPatternExpression(c *PpParenthesizedPathPatternExpressionContext) + + // ExitPpSimplifiedPathPatternExpression is called when exiting the ppSimplifiedPathPatternExpression production. + ExitPpSimplifiedPathPatternExpression(c *PpSimplifiedPathPatternExpressionContext) + + // ExitElementPattern is called when exiting the elementPattern production. + ExitElementPattern(c *ElementPatternContext) + + // ExitNodePattern is called when exiting the nodePattern production. + ExitNodePattern(c *NodePatternContext) + + // ExitElementPatternFiller is called when exiting the elementPatternFiller production. + ExitElementPatternFiller(c *ElementPatternFillerContext) + + // ExitElementVariableDeclaration is called when exiting the elementVariableDeclaration production. + ExitElementVariableDeclaration(c *ElementVariableDeclarationContext) + + // ExitIsLabelExpression is called when exiting the isLabelExpression production. + ExitIsLabelExpression(c *IsLabelExpressionContext) + + // ExitIsOrColon is called when exiting the isOrColon production. + ExitIsOrColon(c *IsOrColonContext) + + // ExitElementPatternPredicate is called when exiting the elementPatternPredicate production. + ExitElementPatternPredicate(c *ElementPatternPredicateContext) + + // ExitElementPatternWhereClause is called when exiting the elementPatternWhereClause production. + ExitElementPatternWhereClause(c *ElementPatternWhereClauseContext) + + // ExitElementPropertySpecification is called when exiting the elementPropertySpecification production. + ExitElementPropertySpecification(c *ElementPropertySpecificationContext) + + // ExitPropertyKeyValuePairList is called when exiting the propertyKeyValuePairList production. + ExitPropertyKeyValuePairList(c *PropertyKeyValuePairListContext) + + // ExitPropertyKeyValuePair is called when exiting the propertyKeyValuePair production. + ExitPropertyKeyValuePair(c *PropertyKeyValuePairContext) + + // ExitEdgePattern is called when exiting the edgePattern production. + ExitEdgePattern(c *EdgePatternContext) + + // ExitFullEdgePattern is called when exiting the fullEdgePattern production. + ExitFullEdgePattern(c *FullEdgePatternContext) + + // ExitFullEdgePointingLeft is called when exiting the fullEdgePointingLeft production. + ExitFullEdgePointingLeft(c *FullEdgePointingLeftContext) + + // ExitFullEdgeUndirected is called when exiting the fullEdgeUndirected production. + ExitFullEdgeUndirected(c *FullEdgeUndirectedContext) + + // ExitFullEdgePointingRight is called when exiting the fullEdgePointingRight production. + ExitFullEdgePointingRight(c *FullEdgePointingRightContext) + + // ExitFullEdgeLeftOrUndirected is called when exiting the fullEdgeLeftOrUndirected production. + ExitFullEdgeLeftOrUndirected(c *FullEdgeLeftOrUndirectedContext) + + // ExitFullEdgeUndirectedOrRight is called when exiting the fullEdgeUndirectedOrRight production. + ExitFullEdgeUndirectedOrRight(c *FullEdgeUndirectedOrRightContext) + + // ExitFullEdgeLeftOrRight is called when exiting the fullEdgeLeftOrRight production. + ExitFullEdgeLeftOrRight(c *FullEdgeLeftOrRightContext) + + // ExitFullEdgeAnyDirection is called when exiting the fullEdgeAnyDirection production. + ExitFullEdgeAnyDirection(c *FullEdgeAnyDirectionContext) + + // ExitAbbreviatedEdgePattern is called when exiting the abbreviatedEdgePattern production. + ExitAbbreviatedEdgePattern(c *AbbreviatedEdgePatternContext) + + // ExitParenthesizedPathPatternExpression is called when exiting the parenthesizedPathPatternExpression production. + ExitParenthesizedPathPatternExpression(c *ParenthesizedPathPatternExpressionContext) + + // ExitSubpathVariableDeclaration is called when exiting the subpathVariableDeclaration production. + ExitSubpathVariableDeclaration(c *SubpathVariableDeclarationContext) + + // ExitParenthesizedPathPatternWhereClause is called when exiting the parenthesizedPathPatternWhereClause production. + ExitParenthesizedPathPatternWhereClause(c *ParenthesizedPathPatternWhereClauseContext) + + // ExitLabelExpressionNegation is called when exiting the labelExpressionNegation production. + ExitLabelExpressionNegation(c *LabelExpressionNegationContext) + + // ExitLabelExpressionDisjunction is called when exiting the labelExpressionDisjunction production. + ExitLabelExpressionDisjunction(c *LabelExpressionDisjunctionContext) + + // ExitLabelExpressionParenthesized is called when exiting the labelExpressionParenthesized production. + ExitLabelExpressionParenthesized(c *LabelExpressionParenthesizedContext) + + // ExitLabelExpressionWildcard is called when exiting the labelExpressionWildcard production. + ExitLabelExpressionWildcard(c *LabelExpressionWildcardContext) + + // ExitLabelExpressionConjunction is called when exiting the labelExpressionConjunction production. + ExitLabelExpressionConjunction(c *LabelExpressionConjunctionContext) + + // ExitLabelExpressionName is called when exiting the labelExpressionName production. + ExitLabelExpressionName(c *LabelExpressionNameContext) + + // ExitPathVariableReference is called when exiting the pathVariableReference production. + ExitPathVariableReference(c *PathVariableReferenceContext) + + // ExitElementVariableReference is called when exiting the elementVariableReference production. + ExitElementVariableReference(c *ElementVariableReferenceContext) + + // ExitGraphPatternQuantifier is called when exiting the graphPatternQuantifier production. + ExitGraphPatternQuantifier(c *GraphPatternQuantifierContext) + + // ExitFixedQuantifier is called when exiting the fixedQuantifier production. + ExitFixedQuantifier(c *FixedQuantifierContext) + + // ExitGeneralQuantifier is called when exiting the generalQuantifier production. + ExitGeneralQuantifier(c *GeneralQuantifierContext) + + // ExitLowerBound is called when exiting the lowerBound production. + ExitLowerBound(c *LowerBoundContext) + + // ExitUpperBound is called when exiting the upperBound production. + ExitUpperBound(c *UpperBoundContext) + + // ExitSimplifiedPathPatternExpression is called when exiting the simplifiedPathPatternExpression production. + ExitSimplifiedPathPatternExpression(c *SimplifiedPathPatternExpressionContext) + + // ExitSimplifiedDefaultingLeft is called when exiting the simplifiedDefaultingLeft production. + ExitSimplifiedDefaultingLeft(c *SimplifiedDefaultingLeftContext) + + // ExitSimplifiedDefaultingUndirected is called when exiting the simplifiedDefaultingUndirected production. + ExitSimplifiedDefaultingUndirected(c *SimplifiedDefaultingUndirectedContext) + + // ExitSimplifiedDefaultingRight is called when exiting the simplifiedDefaultingRight production. + ExitSimplifiedDefaultingRight(c *SimplifiedDefaultingRightContext) + + // ExitSimplifiedDefaultingLeftOrUndirected is called when exiting the simplifiedDefaultingLeftOrUndirected production. + ExitSimplifiedDefaultingLeftOrUndirected(c *SimplifiedDefaultingLeftOrUndirectedContext) + + // ExitSimplifiedDefaultingUndirectedOrRight is called when exiting the simplifiedDefaultingUndirectedOrRight production. + ExitSimplifiedDefaultingUndirectedOrRight(c *SimplifiedDefaultingUndirectedOrRightContext) + + // ExitSimplifiedDefaultingLeftOrRight is called when exiting the simplifiedDefaultingLeftOrRight production. + ExitSimplifiedDefaultingLeftOrRight(c *SimplifiedDefaultingLeftOrRightContext) + + // ExitSimplifiedDefaultingAnyDirection is called when exiting the simplifiedDefaultingAnyDirection production. + ExitSimplifiedDefaultingAnyDirection(c *SimplifiedDefaultingAnyDirectionContext) + + // ExitSimplifiedContents is called when exiting the simplifiedContents production. + ExitSimplifiedContents(c *SimplifiedContentsContext) + + // ExitSimplifiedPathUnion is called when exiting the simplifiedPathUnion production. + ExitSimplifiedPathUnion(c *SimplifiedPathUnionContext) + + // ExitSimplifiedMultisetAlternation is called when exiting the simplifiedMultisetAlternation production. + ExitSimplifiedMultisetAlternation(c *SimplifiedMultisetAlternationContext) + + // ExitSimplifiedFactorLowLabel is called when exiting the simplifiedFactorLowLabel production. + ExitSimplifiedFactorLowLabel(c *SimplifiedFactorLowLabelContext) + + // ExitSimplifiedConcatenationLabel is called when exiting the simplifiedConcatenationLabel production. + ExitSimplifiedConcatenationLabel(c *SimplifiedConcatenationLabelContext) + + // ExitSimplifiedConjunctionLabel is called when exiting the simplifiedConjunctionLabel production. + ExitSimplifiedConjunctionLabel(c *SimplifiedConjunctionLabelContext) + + // ExitSimplifiedFactorHighLabel is called when exiting the simplifiedFactorHighLabel production. + ExitSimplifiedFactorHighLabel(c *SimplifiedFactorHighLabelContext) + + // ExitSimplifiedFactorHigh is called when exiting the simplifiedFactorHigh production. + ExitSimplifiedFactorHigh(c *SimplifiedFactorHighContext) + + // ExitSimplifiedQuantified is called when exiting the simplifiedQuantified production. + ExitSimplifiedQuantified(c *SimplifiedQuantifiedContext) + + // ExitSimplifiedQuestioned is called when exiting the simplifiedQuestioned production. + ExitSimplifiedQuestioned(c *SimplifiedQuestionedContext) + + // ExitSimplifiedTertiary is called when exiting the simplifiedTertiary production. + ExitSimplifiedTertiary(c *SimplifiedTertiaryContext) + + // ExitSimplifiedDirectionOverride is called when exiting the simplifiedDirectionOverride production. + ExitSimplifiedDirectionOverride(c *SimplifiedDirectionOverrideContext) + + // ExitSimplifiedOverrideLeft is called when exiting the simplifiedOverrideLeft production. + ExitSimplifiedOverrideLeft(c *SimplifiedOverrideLeftContext) + + // ExitSimplifiedOverrideUndirected is called when exiting the simplifiedOverrideUndirected production. + ExitSimplifiedOverrideUndirected(c *SimplifiedOverrideUndirectedContext) + + // ExitSimplifiedOverrideRight is called when exiting the simplifiedOverrideRight production. + ExitSimplifiedOverrideRight(c *SimplifiedOverrideRightContext) + + // ExitSimplifiedOverrideLeftOrUndirected is called when exiting the simplifiedOverrideLeftOrUndirected production. + ExitSimplifiedOverrideLeftOrUndirected(c *SimplifiedOverrideLeftOrUndirectedContext) + + // ExitSimplifiedOverrideUndirectedOrRight is called when exiting the simplifiedOverrideUndirectedOrRight production. + ExitSimplifiedOverrideUndirectedOrRight(c *SimplifiedOverrideUndirectedOrRightContext) + + // ExitSimplifiedOverrideLeftOrRight is called when exiting the simplifiedOverrideLeftOrRight production. + ExitSimplifiedOverrideLeftOrRight(c *SimplifiedOverrideLeftOrRightContext) + + // ExitSimplifiedOverrideAnyDirection is called when exiting the simplifiedOverrideAnyDirection production. + ExitSimplifiedOverrideAnyDirection(c *SimplifiedOverrideAnyDirectionContext) + + // ExitSimplifiedSecondary is called when exiting the simplifiedSecondary production. + ExitSimplifiedSecondary(c *SimplifiedSecondaryContext) + + // ExitSimplifiedNegation is called when exiting the simplifiedNegation production. + ExitSimplifiedNegation(c *SimplifiedNegationContext) + + // ExitSimplifiedPrimary is called when exiting the simplifiedPrimary production. + ExitSimplifiedPrimary(c *SimplifiedPrimaryContext) + + // ExitWhereClause is called when exiting the whereClause production. + ExitWhereClause(c *WhereClauseContext) + + // ExitYieldClause is called when exiting the yieldClause production. + ExitYieldClause(c *YieldClauseContext) + + // ExitYieldItemList is called when exiting the yieldItemList production. + ExitYieldItemList(c *YieldItemListContext) + + // ExitYieldItem is called when exiting the yieldItem production. + ExitYieldItem(c *YieldItemContext) + + // ExitYieldItemName is called when exiting the yieldItemName production. + ExitYieldItemName(c *YieldItemNameContext) + + // ExitYieldItemAlias is called when exiting the yieldItemAlias production. + ExitYieldItemAlias(c *YieldItemAliasContext) + + // ExitGroupByClause is called when exiting the groupByClause production. + ExitGroupByClause(c *GroupByClauseContext) + + // ExitGroupingElementList is called when exiting the groupingElementList production. + ExitGroupingElementList(c *GroupingElementListContext) + + // ExitGroupingElement is called when exiting the groupingElement production. + ExitGroupingElement(c *GroupingElementContext) + + // ExitEmptyGroupingSet is called when exiting the emptyGroupingSet production. + ExitEmptyGroupingSet(c *EmptyGroupingSetContext) + + // ExitOrderByClause is called when exiting the orderByClause production. + ExitOrderByClause(c *OrderByClauseContext) + + // ExitSortSpecificationList is called when exiting the sortSpecificationList production. + ExitSortSpecificationList(c *SortSpecificationListContext) + + // ExitSortSpecification is called when exiting the sortSpecification production. + ExitSortSpecification(c *SortSpecificationContext) + + // ExitSortKey is called when exiting the sortKey production. + ExitSortKey(c *SortKeyContext) + + // ExitOrderingSpecification is called when exiting the orderingSpecification production. + ExitOrderingSpecification(c *OrderingSpecificationContext) + + // ExitNullOrdering is called when exiting the nullOrdering production. + ExitNullOrdering(c *NullOrderingContext) + + // ExitLimitClause is called when exiting the limitClause production. + ExitLimitClause(c *LimitClauseContext) + + // ExitOffsetClause is called when exiting the offsetClause production. + ExitOffsetClause(c *OffsetClauseContext) + + // ExitOffsetSynonym is called when exiting the offsetSynonym production. + ExitOffsetSynonym(c *OffsetSynonymContext) + + // ExitSchemaReference is called when exiting the schemaReference production. + ExitSchemaReference(c *SchemaReferenceContext) + + // ExitAbsoluteCatalogSchemaReference is called when exiting the absoluteCatalogSchemaReference production. + ExitAbsoluteCatalogSchemaReference(c *AbsoluteCatalogSchemaReferenceContext) + + // ExitCatalogSchemaParentAndName is called when exiting the catalogSchemaParentAndName production. + ExitCatalogSchemaParentAndName(c *CatalogSchemaParentAndNameContext) + + // ExitRelativeCatalogSchemaReference is called when exiting the relativeCatalogSchemaReference production. + ExitRelativeCatalogSchemaReference(c *RelativeCatalogSchemaReferenceContext) + + // ExitPredefinedSchemaReference is called when exiting the predefinedSchemaReference production. + ExitPredefinedSchemaReference(c *PredefinedSchemaReferenceContext) + + // ExitAbsoluteDirectoryPath is called when exiting the absoluteDirectoryPath production. + ExitAbsoluteDirectoryPath(c *AbsoluteDirectoryPathContext) + + // ExitRelativeDirectoryPath is called when exiting the relativeDirectoryPath production. + ExitRelativeDirectoryPath(c *RelativeDirectoryPathContext) + + // ExitSimpleDirectoryPath is called when exiting the simpleDirectoryPath production. + ExitSimpleDirectoryPath(c *SimpleDirectoryPathContext) + + // ExitGraphReference is called when exiting the graphReference production. + ExitGraphReference(c *GraphReferenceContext) + + // ExitCatalogGraphParentAndName is called when exiting the catalogGraphParentAndName production. + ExitCatalogGraphParentAndName(c *CatalogGraphParentAndNameContext) + + // ExitHomeGraph is called when exiting the homeGraph production. + ExitHomeGraph(c *HomeGraphContext) + + // ExitGraphTypeReference is called when exiting the graphTypeReference production. + ExitGraphTypeReference(c *GraphTypeReferenceContext) + + // ExitCatalogGraphTypeParentAndName is called when exiting the catalogGraphTypeParentAndName production. + ExitCatalogGraphTypeParentAndName(c *CatalogGraphTypeParentAndNameContext) + + // ExitBindingTableReference is called when exiting the bindingTableReference production. + ExitBindingTableReference(c *BindingTableReferenceContext) + + // ExitProcedureReference is called when exiting the procedureReference production. + ExitProcedureReference(c *ProcedureReferenceContext) + + // ExitCatalogProcedureParentAndName is called when exiting the catalogProcedureParentAndName production. + ExitCatalogProcedureParentAndName(c *CatalogProcedureParentAndNameContext) + + // ExitCatalogObjectParentReference is called when exiting the catalogObjectParentReference production. + ExitCatalogObjectParentReference(c *CatalogObjectParentReferenceContext) + + // ExitReferenceParameterSpecification is called when exiting the referenceParameterSpecification production. + ExitReferenceParameterSpecification(c *ReferenceParameterSpecificationContext) + + // ExitNestedGraphTypeSpecification is called when exiting the nestedGraphTypeSpecification production. + ExitNestedGraphTypeSpecification(c *NestedGraphTypeSpecificationContext) + + // ExitGraphTypeSpecificationBody is called when exiting the graphTypeSpecificationBody production. + ExitGraphTypeSpecificationBody(c *GraphTypeSpecificationBodyContext) + + // ExitElementTypeList is called when exiting the elementTypeList production. + ExitElementTypeList(c *ElementTypeListContext) + + // ExitElementTypeSpecification is called when exiting the elementTypeSpecification production. + ExitElementTypeSpecification(c *ElementTypeSpecificationContext) + + // ExitNodeTypeSpecification is called when exiting the nodeTypeSpecification production. + ExitNodeTypeSpecification(c *NodeTypeSpecificationContext) + + // ExitNodeTypePattern is called when exiting the nodeTypePattern production. + ExitNodeTypePattern(c *NodeTypePatternContext) + + // ExitNodeTypePhrase is called when exiting the nodeTypePhrase production. + ExitNodeTypePhrase(c *NodeTypePhraseContext) + + // ExitNodeTypePhraseFiller is called when exiting the nodeTypePhraseFiller production. + ExitNodeTypePhraseFiller(c *NodeTypePhraseFillerContext) + + // ExitNodeTypeFiller is called when exiting the nodeTypeFiller production. + ExitNodeTypeFiller(c *NodeTypeFillerContext) + + // ExitLocalNodeTypeAlias is called when exiting the localNodeTypeAlias production. + ExitLocalNodeTypeAlias(c *LocalNodeTypeAliasContext) + + // ExitNodeTypeImpliedContent is called when exiting the nodeTypeImpliedContent production. + ExitNodeTypeImpliedContent(c *NodeTypeImpliedContentContext) + + // ExitNodeTypeKeyLabelSet is called when exiting the nodeTypeKeyLabelSet production. + ExitNodeTypeKeyLabelSet(c *NodeTypeKeyLabelSetContext) + + // ExitNodeTypeLabelSet is called when exiting the nodeTypeLabelSet production. + ExitNodeTypeLabelSet(c *NodeTypeLabelSetContext) + + // ExitNodeTypePropertyTypes is called when exiting the nodeTypePropertyTypes production. + ExitNodeTypePropertyTypes(c *NodeTypePropertyTypesContext) + + // ExitEdgeTypeSpecification is called when exiting the edgeTypeSpecification production. + ExitEdgeTypeSpecification(c *EdgeTypeSpecificationContext) + + // ExitEdgeTypePattern is called when exiting the edgeTypePattern production. + ExitEdgeTypePattern(c *EdgeTypePatternContext) + + // ExitEdgeTypePhrase is called when exiting the edgeTypePhrase production. + ExitEdgeTypePhrase(c *EdgeTypePhraseContext) + + // ExitEdgeTypePhraseFiller is called when exiting the edgeTypePhraseFiller production. + ExitEdgeTypePhraseFiller(c *EdgeTypePhraseFillerContext) + + // ExitEdgeTypeFiller is called when exiting the edgeTypeFiller production. + ExitEdgeTypeFiller(c *EdgeTypeFillerContext) + + // ExitEdgeTypeImpliedContent is called when exiting the edgeTypeImpliedContent production. + ExitEdgeTypeImpliedContent(c *EdgeTypeImpliedContentContext) + + // ExitEdgeTypeKeyLabelSet is called when exiting the edgeTypeKeyLabelSet production. + ExitEdgeTypeKeyLabelSet(c *EdgeTypeKeyLabelSetContext) + + // ExitEdgeTypeLabelSet is called when exiting the edgeTypeLabelSet production. + ExitEdgeTypeLabelSet(c *EdgeTypeLabelSetContext) + + // ExitEdgeTypePropertyTypes is called when exiting the edgeTypePropertyTypes production. + ExitEdgeTypePropertyTypes(c *EdgeTypePropertyTypesContext) + + // ExitEdgeTypePatternDirected is called when exiting the edgeTypePatternDirected production. + ExitEdgeTypePatternDirected(c *EdgeTypePatternDirectedContext) + + // ExitEdgeTypePatternPointingRight is called when exiting the edgeTypePatternPointingRight production. + ExitEdgeTypePatternPointingRight(c *EdgeTypePatternPointingRightContext) + + // ExitEdgeTypePatternPointingLeft is called when exiting the edgeTypePatternPointingLeft production. + ExitEdgeTypePatternPointingLeft(c *EdgeTypePatternPointingLeftContext) + + // ExitEdgeTypePatternUndirected is called when exiting the edgeTypePatternUndirected production. + ExitEdgeTypePatternUndirected(c *EdgeTypePatternUndirectedContext) + + // ExitArcTypePointingRight is called when exiting the arcTypePointingRight production. + ExitArcTypePointingRight(c *ArcTypePointingRightContext) + + // ExitArcTypePointingLeft is called when exiting the arcTypePointingLeft production. + ExitArcTypePointingLeft(c *ArcTypePointingLeftContext) + + // ExitArcTypeUndirected is called when exiting the arcTypeUndirected production. + ExitArcTypeUndirected(c *ArcTypeUndirectedContext) + + // ExitSourceNodeTypeReference is called when exiting the sourceNodeTypeReference production. + ExitSourceNodeTypeReference(c *SourceNodeTypeReferenceContext) + + // ExitDestinationNodeTypeReference is called when exiting the destinationNodeTypeReference production. + ExitDestinationNodeTypeReference(c *DestinationNodeTypeReferenceContext) + + // ExitEdgeKind is called when exiting the edgeKind production. + ExitEdgeKind(c *EdgeKindContext) + + // ExitEndpointPairPhrase is called when exiting the endpointPairPhrase production. + ExitEndpointPairPhrase(c *EndpointPairPhraseContext) + + // ExitEndpointPair is called when exiting the endpointPair production. + ExitEndpointPair(c *EndpointPairContext) + + // ExitEndpointPairDirected is called when exiting the endpointPairDirected production. + ExitEndpointPairDirected(c *EndpointPairDirectedContext) + + // ExitEndpointPairPointingRight is called when exiting the endpointPairPointingRight production. + ExitEndpointPairPointingRight(c *EndpointPairPointingRightContext) + + // ExitEndpointPairPointingLeft is called when exiting the endpointPairPointingLeft production. + ExitEndpointPairPointingLeft(c *EndpointPairPointingLeftContext) + + // ExitEndpointPairUndirected is called when exiting the endpointPairUndirected production. + ExitEndpointPairUndirected(c *EndpointPairUndirectedContext) + + // ExitConnectorPointingRight is called when exiting the connectorPointingRight production. + ExitConnectorPointingRight(c *ConnectorPointingRightContext) + + // ExitConnectorUndirected is called when exiting the connectorUndirected production. + ExitConnectorUndirected(c *ConnectorUndirectedContext) + + // ExitSourceNodeTypeAlias is called when exiting the sourceNodeTypeAlias production. + ExitSourceNodeTypeAlias(c *SourceNodeTypeAliasContext) + + // ExitDestinationNodeTypeAlias is called when exiting the destinationNodeTypeAlias production. + ExitDestinationNodeTypeAlias(c *DestinationNodeTypeAliasContext) + + // ExitLabelSetPhrase is called when exiting the labelSetPhrase production. + ExitLabelSetPhrase(c *LabelSetPhraseContext) + + // ExitLabelSetSpecification is called when exiting the labelSetSpecification production. + ExitLabelSetSpecification(c *LabelSetSpecificationContext) + + // ExitPropertyTypesSpecification is called when exiting the propertyTypesSpecification production. + ExitPropertyTypesSpecification(c *PropertyTypesSpecificationContext) + + // ExitPropertyTypeList is called when exiting the propertyTypeList production. + ExitPropertyTypeList(c *PropertyTypeListContext) + + // ExitPropertyType is called when exiting the propertyType production. + ExitPropertyType(c *PropertyTypeContext) + + // ExitPropertyValueType is called when exiting the propertyValueType production. + ExitPropertyValueType(c *PropertyValueTypeContext) + + // ExitBindingTableType is called when exiting the bindingTableType production. + ExitBindingTableType(c *BindingTableTypeContext) + + // ExitDynamicPropertyValueTypeLabel is called when exiting the dynamicPropertyValueTypeLabel production. + ExitDynamicPropertyValueTypeLabel(c *DynamicPropertyValueTypeLabelContext) + + // ExitClosedDynamicUnionTypeAtl1 is called when exiting the closedDynamicUnionTypeAtl1 production. + ExitClosedDynamicUnionTypeAtl1(c *ClosedDynamicUnionTypeAtl1Context) + + // ExitClosedDynamicUnionTypeAtl2 is called when exiting the closedDynamicUnionTypeAtl2 production. + ExitClosedDynamicUnionTypeAtl2(c *ClosedDynamicUnionTypeAtl2Context) + + // ExitPathValueTypeLabel is called when exiting the pathValueTypeLabel production. + ExitPathValueTypeLabel(c *PathValueTypeLabelContext) + + // ExitListValueTypeAlt3 is called when exiting the listValueTypeAlt3 production. + ExitListValueTypeAlt3(c *ListValueTypeAlt3Context) + + // ExitListValueTypeAlt2 is called when exiting the listValueTypeAlt2 production. + ExitListValueTypeAlt2(c *ListValueTypeAlt2Context) + + // ExitListValueTypeAlt1 is called when exiting the listValueTypeAlt1 production. + ExitListValueTypeAlt1(c *ListValueTypeAlt1Context) + + // ExitPredefinedTypeLabel is called when exiting the predefinedTypeLabel production. + ExitPredefinedTypeLabel(c *PredefinedTypeLabelContext) + + // ExitRecordTypeLabel is called when exiting the recordTypeLabel production. + ExitRecordTypeLabel(c *RecordTypeLabelContext) + + // ExitOpenDynamicUnionTypeLabel is called when exiting the openDynamicUnionTypeLabel production. + ExitOpenDynamicUnionTypeLabel(c *OpenDynamicUnionTypeLabelContext) + + // ExitTyped is called when exiting the typed production. + ExitTyped(c *TypedContext) + + // ExitPredefinedType is called when exiting the predefinedType production. + ExitPredefinedType(c *PredefinedTypeContext) + + // ExitBooleanType is called when exiting the booleanType production. + ExitBooleanType(c *BooleanTypeContext) + + // ExitCharacterStringType is called when exiting the characterStringType production. + ExitCharacterStringType(c *CharacterStringTypeContext) + + // ExitByteStringType is called when exiting the byteStringType production. + ExitByteStringType(c *ByteStringTypeContext) + + // ExitMinLength is called when exiting the minLength production. + ExitMinLength(c *MinLengthContext) + + // ExitMaxLength is called when exiting the maxLength production. + ExitMaxLength(c *MaxLengthContext) + + // ExitFixedLength is called when exiting the fixedLength production. + ExitFixedLength(c *FixedLengthContext) + + // ExitNumericType is called when exiting the numericType production. + ExitNumericType(c *NumericTypeContext) + + // ExitExactNumericType is called when exiting the exactNumericType production. + ExitExactNumericType(c *ExactNumericTypeContext) + + // ExitBinaryExactNumericType is called when exiting the binaryExactNumericType production. + ExitBinaryExactNumericType(c *BinaryExactNumericTypeContext) + + // ExitSignedBinaryExactNumericType is called when exiting the signedBinaryExactNumericType production. + ExitSignedBinaryExactNumericType(c *SignedBinaryExactNumericTypeContext) + + // ExitUnsignedBinaryExactNumericType is called when exiting the unsignedBinaryExactNumericType production. + ExitUnsignedBinaryExactNumericType(c *UnsignedBinaryExactNumericTypeContext) + + // ExitVerboseBinaryExactNumericType is called when exiting the verboseBinaryExactNumericType production. + ExitVerboseBinaryExactNumericType(c *VerboseBinaryExactNumericTypeContext) + + // ExitDecimalExactNumericType is called when exiting the decimalExactNumericType production. + ExitDecimalExactNumericType(c *DecimalExactNumericTypeContext) + + // ExitPrecision is called when exiting the precision production. + ExitPrecision(c *PrecisionContext) + + // ExitScale is called when exiting the scale production. + ExitScale(c *ScaleContext) + + // ExitApproximateNumericType is called when exiting the approximateNumericType production. + ExitApproximateNumericType(c *ApproximateNumericTypeContext) + + // ExitTemporalType is called when exiting the temporalType production. + ExitTemporalType(c *TemporalTypeContext) + + // ExitTemporalInstantType is called when exiting the temporalInstantType production. + ExitTemporalInstantType(c *TemporalInstantTypeContext) + + // ExitDatetimeType is called when exiting the datetimeType production. + ExitDatetimeType(c *DatetimeTypeContext) + + // ExitLocaldatetimeType is called when exiting the localdatetimeType production. + ExitLocaldatetimeType(c *LocaldatetimeTypeContext) + + // ExitDateType is called when exiting the dateType production. + ExitDateType(c *DateTypeContext) + + // ExitTimeType is called when exiting the timeType production. + ExitTimeType(c *TimeTypeContext) + + // ExitLocaltimeType is called when exiting the localtimeType production. + ExitLocaltimeType(c *LocaltimeTypeContext) + + // ExitTemporalDurationType is called when exiting the temporalDurationType production. + ExitTemporalDurationType(c *TemporalDurationTypeContext) + + // ExitTemporalDurationQualifier is called when exiting the temporalDurationQualifier production. + ExitTemporalDurationQualifier(c *TemporalDurationQualifierContext) + + // ExitReferenceValueType is called when exiting the referenceValueType production. + ExitReferenceValueType(c *ReferenceValueTypeContext) + + // ExitImmaterialValueType is called when exiting the immaterialValueType production. + ExitImmaterialValueType(c *ImmaterialValueTypeContext) + + // ExitNullType is called when exiting the nullType production. + ExitNullType(c *NullTypeContext) + + // ExitEmptyType is called when exiting the emptyType production. + ExitEmptyType(c *EmptyTypeContext) + + // ExitGraphReferenceValueType is called when exiting the graphReferenceValueType production. + ExitGraphReferenceValueType(c *GraphReferenceValueTypeContext) + + // ExitClosedGraphReferenceValueType is called when exiting the closedGraphReferenceValueType production. + ExitClosedGraphReferenceValueType(c *ClosedGraphReferenceValueTypeContext) + + // ExitOpenGraphReferenceValueType is called when exiting the openGraphReferenceValueType production. + ExitOpenGraphReferenceValueType(c *OpenGraphReferenceValueTypeContext) + + // ExitBindingTableReferenceValueType is called when exiting the bindingTableReferenceValueType production. + ExitBindingTableReferenceValueType(c *BindingTableReferenceValueTypeContext) + + // ExitNodeReferenceValueType is called when exiting the nodeReferenceValueType production. + ExitNodeReferenceValueType(c *NodeReferenceValueTypeContext) + + // ExitClosedNodeReferenceValueType is called when exiting the closedNodeReferenceValueType production. + ExitClosedNodeReferenceValueType(c *ClosedNodeReferenceValueTypeContext) + + // ExitOpenNodeReferenceValueType is called when exiting the openNodeReferenceValueType production. + ExitOpenNodeReferenceValueType(c *OpenNodeReferenceValueTypeContext) + + // ExitEdgeReferenceValueType is called when exiting the edgeReferenceValueType production. + ExitEdgeReferenceValueType(c *EdgeReferenceValueTypeContext) + + // ExitClosedEdgeReferenceValueType is called when exiting the closedEdgeReferenceValueType production. + ExitClosedEdgeReferenceValueType(c *ClosedEdgeReferenceValueTypeContext) + + // ExitOpenEdgeReferenceValueType is called when exiting the openEdgeReferenceValueType production. + ExitOpenEdgeReferenceValueType(c *OpenEdgeReferenceValueTypeContext) + + // ExitPathValueType is called when exiting the pathValueType production. + ExitPathValueType(c *PathValueTypeContext) + + // ExitListValueTypeName is called when exiting the listValueTypeName production. + ExitListValueTypeName(c *ListValueTypeNameContext) + + // ExitListValueTypeNameSynonym is called when exiting the listValueTypeNameSynonym production. + ExitListValueTypeNameSynonym(c *ListValueTypeNameSynonymContext) + + // ExitRecordType is called when exiting the recordType production. + ExitRecordType(c *RecordTypeContext) + + // ExitFieldTypesSpecification is called when exiting the fieldTypesSpecification production. + ExitFieldTypesSpecification(c *FieldTypesSpecificationContext) + + // ExitFieldTypeList is called when exiting the fieldTypeList production. + ExitFieldTypeList(c *FieldTypeListContext) + + // ExitNotNull is called when exiting the notNull production. + ExitNotNull(c *NotNullContext) + + // ExitFieldType is called when exiting the fieldType production. + ExitFieldType(c *FieldTypeContext) + + // ExitSearchCondition is called when exiting the searchCondition production. + ExitSearchCondition(c *SearchConditionContext) + + // ExitPredicate is called when exiting the predicate production. + ExitPredicate(c *PredicateContext) + + // ExitCompOp is called when exiting the compOp production. + ExitCompOp(c *CompOpContext) + + // ExitExistsPredicate is called when exiting the existsPredicate production. + ExitExistsPredicate(c *ExistsPredicateContext) + + // ExitNullPredicate is called when exiting the nullPredicate production. + ExitNullPredicate(c *NullPredicateContext) + + // ExitNullPredicatePart2 is called when exiting the nullPredicatePart2 production. + ExitNullPredicatePart2(c *NullPredicatePart2Context) + + // ExitValueTypePredicate is called when exiting the valueTypePredicate production. + ExitValueTypePredicate(c *ValueTypePredicateContext) + + // ExitValueTypePredicatePart2 is called when exiting the valueTypePredicatePart2 production. + ExitValueTypePredicatePart2(c *ValueTypePredicatePart2Context) + + // ExitNormalizedPredicatePart2 is called when exiting the normalizedPredicatePart2 production. + ExitNormalizedPredicatePart2(c *NormalizedPredicatePart2Context) + + // ExitDirectedPredicate is called when exiting the directedPredicate production. + ExitDirectedPredicate(c *DirectedPredicateContext) + + // ExitDirectedPredicatePart2 is called when exiting the directedPredicatePart2 production. + ExitDirectedPredicatePart2(c *DirectedPredicatePart2Context) + + // ExitLabeledPredicate is called when exiting the labeledPredicate production. + ExitLabeledPredicate(c *LabeledPredicateContext) + + // ExitLabeledPredicatePart2 is called when exiting the labeledPredicatePart2 production. + ExitLabeledPredicatePart2(c *LabeledPredicatePart2Context) + + // ExitIsLabeledOrColon is called when exiting the isLabeledOrColon production. + ExitIsLabeledOrColon(c *IsLabeledOrColonContext) + + // ExitSourceDestinationPredicate is called when exiting the sourceDestinationPredicate production. + ExitSourceDestinationPredicate(c *SourceDestinationPredicateContext) + + // ExitNodeReference is called when exiting the nodeReference production. + ExitNodeReference(c *NodeReferenceContext) + + // ExitSourcePredicatePart2 is called when exiting the sourcePredicatePart2 production. + ExitSourcePredicatePart2(c *SourcePredicatePart2Context) + + // ExitDestinationPredicatePart2 is called when exiting the destinationPredicatePart2 production. + ExitDestinationPredicatePart2(c *DestinationPredicatePart2Context) + + // ExitEdgeReference is called when exiting the edgeReference production. + ExitEdgeReference(c *EdgeReferenceContext) + + // ExitAll_differentPredicate is called when exiting the all_differentPredicate production. + ExitAll_differentPredicate(c *All_differentPredicateContext) + + // ExitSamePredicate is called when exiting the samePredicate production. + ExitSamePredicate(c *SamePredicateContext) + + // ExitProperty_existsPredicate is called when exiting the property_existsPredicate production. + ExitProperty_existsPredicate(c *Property_existsPredicateContext) + + // ExitConjunctiveExprAlt is called when exiting the conjunctiveExprAlt production. + ExitConjunctiveExprAlt(c *ConjunctiveExprAltContext) + + // ExitPropertyGraphExprAlt is called when exiting the propertyGraphExprAlt production. + ExitPropertyGraphExprAlt(c *PropertyGraphExprAltContext) + + // ExitMultDivExprAlt is called when exiting the multDivExprAlt production. + ExitMultDivExprAlt(c *MultDivExprAltContext) + + // ExitBindingTableExprAlt is called when exiting the bindingTableExprAlt production. + ExitBindingTableExprAlt(c *BindingTableExprAltContext) + + // ExitSignedExprAlt is called when exiting the signedExprAlt production. + ExitSignedExprAlt(c *SignedExprAltContext) + + // ExitIsNotExprAlt is called when exiting the isNotExprAlt production. + ExitIsNotExprAlt(c *IsNotExprAltContext) + + // ExitNormalizedPredicateExprAlt is called when exiting the normalizedPredicateExprAlt production. + ExitNormalizedPredicateExprAlt(c *NormalizedPredicateExprAltContext) + + // ExitNotExprAlt is called when exiting the notExprAlt production. + ExitNotExprAlt(c *NotExprAltContext) + + // ExitValueFunctionExprAlt is called when exiting the valueFunctionExprAlt production. + ExitValueFunctionExprAlt(c *ValueFunctionExprAltContext) + + // ExitConcatenationExprAlt is called when exiting the concatenationExprAlt production. + ExitConcatenationExprAlt(c *ConcatenationExprAltContext) + + // ExitDisjunctiveExprAlt is called when exiting the disjunctiveExprAlt production. + ExitDisjunctiveExprAlt(c *DisjunctiveExprAltContext) + + // ExitComparisonExprAlt is called when exiting the comparisonExprAlt production. + ExitComparisonExprAlt(c *ComparisonExprAltContext) + + // ExitPrimaryExprAlt is called when exiting the primaryExprAlt production. + ExitPrimaryExprAlt(c *PrimaryExprAltContext) + + // ExitAddSubtractExprAlt is called when exiting the addSubtractExprAlt production. + ExitAddSubtractExprAlt(c *AddSubtractExprAltContext) + + // ExitPredicateExprAlt is called when exiting the predicateExprAlt production. + ExitPredicateExprAlt(c *PredicateExprAltContext) + + // ExitValueFunction is called when exiting the valueFunction production. + ExitValueFunction(c *ValueFunctionContext) + + // ExitBooleanValueExpression is called when exiting the booleanValueExpression production. + ExitBooleanValueExpression(c *BooleanValueExpressionContext) + + // ExitCharacterOrByteStringFunction is called when exiting the characterOrByteStringFunction production. + ExitCharacterOrByteStringFunction(c *CharacterOrByteStringFunctionContext) + + // ExitSubCharacterOrByteString is called when exiting the subCharacterOrByteString production. + ExitSubCharacterOrByteString(c *SubCharacterOrByteStringContext) + + // ExitTrimSingleCharacterOrByteString is called when exiting the trimSingleCharacterOrByteString production. + ExitTrimSingleCharacterOrByteString(c *TrimSingleCharacterOrByteStringContext) + + // ExitFoldCharacterString is called when exiting the foldCharacterString production. + ExitFoldCharacterString(c *FoldCharacterStringContext) + + // ExitTrimMultiCharacterCharacterString is called when exiting the trimMultiCharacterCharacterString production. + ExitTrimMultiCharacterCharacterString(c *TrimMultiCharacterCharacterStringContext) + + // ExitNormalizeCharacterString is called when exiting the normalizeCharacterString production. + ExitNormalizeCharacterString(c *NormalizeCharacterStringContext) + + // ExitNodeReferenceValueExpression is called when exiting the nodeReferenceValueExpression production. + ExitNodeReferenceValueExpression(c *NodeReferenceValueExpressionContext) + + // ExitEdgeReferenceValueExpression is called when exiting the edgeReferenceValueExpression production. + ExitEdgeReferenceValueExpression(c *EdgeReferenceValueExpressionContext) + + // ExitAggregatingValueExpression is called when exiting the aggregatingValueExpression production. + ExitAggregatingValueExpression(c *AggregatingValueExpressionContext) + + // ExitValueExpressionPrimary is called when exiting the valueExpressionPrimary production. + ExitValueExpressionPrimary(c *ValueExpressionPrimaryContext) + + // ExitParenthesizedValueExpression is called when exiting the parenthesizedValueExpression production. + ExitParenthesizedValueExpression(c *ParenthesizedValueExpressionContext) + + // ExitNonParenthesizedValueExpressionPrimary is called when exiting the nonParenthesizedValueExpressionPrimary production. + ExitNonParenthesizedValueExpressionPrimary(c *NonParenthesizedValueExpressionPrimaryContext) + + // ExitNonParenthesizedValueExpressionPrimarySpecialCase is called when exiting the nonParenthesizedValueExpressionPrimarySpecialCase production. + ExitNonParenthesizedValueExpressionPrimarySpecialCase(c *NonParenthesizedValueExpressionPrimarySpecialCaseContext) + + // ExitUnsignedValueSpecification is called when exiting the unsignedValueSpecification production. + ExitUnsignedValueSpecification(c *UnsignedValueSpecificationContext) + + // ExitNonNegativeIntegerSpecification is called when exiting the nonNegativeIntegerSpecification production. + ExitNonNegativeIntegerSpecification(c *NonNegativeIntegerSpecificationContext) + + // ExitGeneralValueSpecification is called when exiting the generalValueSpecification production. + ExitGeneralValueSpecification(c *GeneralValueSpecificationContext) + + // ExitDynamicParameterSpecification is called when exiting the dynamicParameterSpecification production. + ExitDynamicParameterSpecification(c *DynamicParameterSpecificationContext) + + // ExitLetValueExpression is called when exiting the letValueExpression production. + ExitLetValueExpression(c *LetValueExpressionContext) + + // ExitValueQueryExpression is called when exiting the valueQueryExpression production. + ExitValueQueryExpression(c *ValueQueryExpressionContext) + + // ExitCaseExpression is called when exiting the caseExpression production. + ExitCaseExpression(c *CaseExpressionContext) + + // ExitCaseAbbreviation is called when exiting the caseAbbreviation production. + ExitCaseAbbreviation(c *CaseAbbreviationContext) + + // ExitCaseSpecification is called when exiting the caseSpecification production. + ExitCaseSpecification(c *CaseSpecificationContext) + + // ExitSimpleCase is called when exiting the simpleCase production. + ExitSimpleCase(c *SimpleCaseContext) + + // ExitSearchedCase is called when exiting the searchedCase production. + ExitSearchedCase(c *SearchedCaseContext) + + // ExitSimpleWhenClause is called when exiting the simpleWhenClause production. + ExitSimpleWhenClause(c *SimpleWhenClauseContext) + + // ExitSearchedWhenClause is called when exiting the searchedWhenClause production. + ExitSearchedWhenClause(c *SearchedWhenClauseContext) + + // ExitElseClause is called when exiting the elseClause production. + ExitElseClause(c *ElseClauseContext) + + // ExitCaseOperand is called when exiting the caseOperand production. + ExitCaseOperand(c *CaseOperandContext) + + // ExitWhenOperandList is called when exiting the whenOperandList production. + ExitWhenOperandList(c *WhenOperandListContext) + + // ExitWhenOperand is called when exiting the whenOperand production. + ExitWhenOperand(c *WhenOperandContext) + + // ExitResult is called when exiting the result production. + ExitResult(c *ResultContext) + + // ExitResultExpression is called when exiting the resultExpression production. + ExitResultExpression(c *ResultExpressionContext) + + // ExitCastSpecification is called when exiting the castSpecification production. + ExitCastSpecification(c *CastSpecificationContext) + + // ExitCastOperand is called when exiting the castOperand production. + ExitCastOperand(c *CastOperandContext) + + // ExitCastTarget is called when exiting the castTarget production. + ExitCastTarget(c *CastTargetContext) + + // ExitAggregateFunction is called when exiting the aggregateFunction production. + ExitAggregateFunction(c *AggregateFunctionContext) + + // ExitGeneralSetFunction is called when exiting the generalSetFunction production. + ExitGeneralSetFunction(c *GeneralSetFunctionContext) + + // ExitBinarySetFunction is called when exiting the binarySetFunction production. + ExitBinarySetFunction(c *BinarySetFunctionContext) + + // ExitGeneralSetFunctionType is called when exiting the generalSetFunctionType production. + ExitGeneralSetFunctionType(c *GeneralSetFunctionTypeContext) + + // ExitSetQuantifier is called when exiting the setQuantifier production. + ExitSetQuantifier(c *SetQuantifierContext) + + // ExitBinarySetFunctionType is called when exiting the binarySetFunctionType production. + ExitBinarySetFunctionType(c *BinarySetFunctionTypeContext) + + // ExitDependentValueExpression is called when exiting the dependentValueExpression production. + ExitDependentValueExpression(c *DependentValueExpressionContext) + + // ExitIndependentValueExpression is called when exiting the independentValueExpression production. + ExitIndependentValueExpression(c *IndependentValueExpressionContext) + + // ExitElement_idFunction is called when exiting the element_idFunction production. + ExitElement_idFunction(c *Element_idFunctionContext) + + // ExitBindingVariableReference is called when exiting the bindingVariableReference production. + ExitBindingVariableReference(c *BindingVariableReferenceContext) + + // ExitPathValueExpression is called when exiting the pathValueExpression production. + ExitPathValueExpression(c *PathValueExpressionContext) + + // ExitPathValueConstructor is called when exiting the pathValueConstructor production. + ExitPathValueConstructor(c *PathValueConstructorContext) + + // ExitPathValueConstructorByEnumeration is called when exiting the pathValueConstructorByEnumeration production. + ExitPathValueConstructorByEnumeration(c *PathValueConstructorByEnumerationContext) + + // ExitPathElementList is called when exiting the pathElementList production. + ExitPathElementList(c *PathElementListContext) + + // ExitPathElementListStart is called when exiting the pathElementListStart production. + ExitPathElementListStart(c *PathElementListStartContext) + + // ExitPathElementListStep is called when exiting the pathElementListStep production. + ExitPathElementListStep(c *PathElementListStepContext) + + // ExitListValueExpression is called when exiting the listValueExpression production. + ExitListValueExpression(c *ListValueExpressionContext) + + // ExitListValueFunction is called when exiting the listValueFunction production. + ExitListValueFunction(c *ListValueFunctionContext) + + // ExitTrimListFunction is called when exiting the trimListFunction production. + ExitTrimListFunction(c *TrimListFunctionContext) + + // ExitElementsFunction is called when exiting the elementsFunction production. + ExitElementsFunction(c *ElementsFunctionContext) + + // ExitListValueConstructor is called when exiting the listValueConstructor production. + ExitListValueConstructor(c *ListValueConstructorContext) + + // ExitListValueConstructorByEnumeration is called when exiting the listValueConstructorByEnumeration production. + ExitListValueConstructorByEnumeration(c *ListValueConstructorByEnumerationContext) + + // ExitListElementList is called when exiting the listElementList production. + ExitListElementList(c *ListElementListContext) + + // ExitListElement is called when exiting the listElement production. + ExitListElement(c *ListElementContext) + + // ExitRecordConstructor is called when exiting the recordConstructor production. + ExitRecordConstructor(c *RecordConstructorContext) + + // ExitFieldsSpecification is called when exiting the fieldsSpecification production. + ExitFieldsSpecification(c *FieldsSpecificationContext) + + // ExitFieldList is called when exiting the fieldList production. + ExitFieldList(c *FieldListContext) + + // ExitField is called when exiting the field production. + ExitField(c *FieldContext) + + // ExitTruthValue is called when exiting the truthValue production. + ExitTruthValue(c *TruthValueContext) + + // ExitNumericValueExpression is called when exiting the numericValueExpression production. + ExitNumericValueExpression(c *NumericValueExpressionContext) + + // ExitNumericValueFunction is called when exiting the numericValueFunction production. + ExitNumericValueFunction(c *NumericValueFunctionContext) + + // ExitLengthExpression is called when exiting the lengthExpression production. + ExitLengthExpression(c *LengthExpressionContext) + + // ExitCardinalityExpression is called when exiting the cardinalityExpression production. + ExitCardinalityExpression(c *CardinalityExpressionContext) + + // ExitCardinalityExpressionArgument is called when exiting the cardinalityExpressionArgument production. + ExitCardinalityExpressionArgument(c *CardinalityExpressionArgumentContext) + + // ExitCharLengthExpression is called when exiting the charLengthExpression production. + ExitCharLengthExpression(c *CharLengthExpressionContext) + + // ExitByteLengthExpression is called when exiting the byteLengthExpression production. + ExitByteLengthExpression(c *ByteLengthExpressionContext) + + // ExitPathLengthExpression is called when exiting the pathLengthExpression production. + ExitPathLengthExpression(c *PathLengthExpressionContext) + + // ExitAbsoluteValueExpression is called when exiting the absoluteValueExpression production. + ExitAbsoluteValueExpression(c *AbsoluteValueExpressionContext) + + // ExitModulusExpression is called when exiting the modulusExpression production. + ExitModulusExpression(c *ModulusExpressionContext) + + // ExitNumericValueExpressionDividend is called when exiting the numericValueExpressionDividend production. + ExitNumericValueExpressionDividend(c *NumericValueExpressionDividendContext) + + // ExitNumericValueExpressionDivisor is called when exiting the numericValueExpressionDivisor production. + ExitNumericValueExpressionDivisor(c *NumericValueExpressionDivisorContext) + + // ExitTrigonometricFunction is called when exiting the trigonometricFunction production. + ExitTrigonometricFunction(c *TrigonometricFunctionContext) + + // ExitTrigonometricFunctionName is called when exiting the trigonometricFunctionName production. + ExitTrigonometricFunctionName(c *TrigonometricFunctionNameContext) + + // ExitGeneralLogarithmFunction is called when exiting the generalLogarithmFunction production. + ExitGeneralLogarithmFunction(c *GeneralLogarithmFunctionContext) + + // ExitGeneralLogarithmBase is called when exiting the generalLogarithmBase production. + ExitGeneralLogarithmBase(c *GeneralLogarithmBaseContext) + + // ExitGeneralLogarithmArgument is called when exiting the generalLogarithmArgument production. + ExitGeneralLogarithmArgument(c *GeneralLogarithmArgumentContext) + + // ExitCommonLogarithm is called when exiting the commonLogarithm production. + ExitCommonLogarithm(c *CommonLogarithmContext) + + // ExitNaturalLogarithm is called when exiting the naturalLogarithm production. + ExitNaturalLogarithm(c *NaturalLogarithmContext) + + // ExitExponentialFunction is called when exiting the exponentialFunction production. + ExitExponentialFunction(c *ExponentialFunctionContext) + + // ExitPowerFunction is called when exiting the powerFunction production. + ExitPowerFunction(c *PowerFunctionContext) + + // ExitNumericValueExpressionBase is called when exiting the numericValueExpressionBase production. + ExitNumericValueExpressionBase(c *NumericValueExpressionBaseContext) + + // ExitNumericValueExpressionExponent is called when exiting the numericValueExpressionExponent production. + ExitNumericValueExpressionExponent(c *NumericValueExpressionExponentContext) + + // ExitSquareRoot is called when exiting the squareRoot production. + ExitSquareRoot(c *SquareRootContext) + + // ExitFloorFunction is called when exiting the floorFunction production. + ExitFloorFunction(c *FloorFunctionContext) + + // ExitCeilingFunction is called when exiting the ceilingFunction production. + ExitCeilingFunction(c *CeilingFunctionContext) + + // ExitCharacterStringValueExpression is called when exiting the characterStringValueExpression production. + ExitCharacterStringValueExpression(c *CharacterStringValueExpressionContext) + + // ExitByteStringValueExpression is called when exiting the byteStringValueExpression production. + ExitByteStringValueExpression(c *ByteStringValueExpressionContext) + + // ExitTrimOperands is called when exiting the trimOperands production. + ExitTrimOperands(c *TrimOperandsContext) + + // ExitTrimCharacterOrByteStringSource is called when exiting the trimCharacterOrByteStringSource production. + ExitTrimCharacterOrByteStringSource(c *TrimCharacterOrByteStringSourceContext) + + // ExitTrimSpecification is called when exiting the trimSpecification production. + ExitTrimSpecification(c *TrimSpecificationContext) + + // ExitTrimCharacterOrByteString is called when exiting the trimCharacterOrByteString production. + ExitTrimCharacterOrByteString(c *TrimCharacterOrByteStringContext) + + // ExitNormalForm is called when exiting the normalForm production. + ExitNormalForm(c *NormalFormContext) + + // ExitStringLength is called when exiting the stringLength production. + ExitStringLength(c *StringLengthContext) + + // ExitDatetimeValueExpression is called when exiting the datetimeValueExpression production. + ExitDatetimeValueExpression(c *DatetimeValueExpressionContext) + + // ExitDatetimeValueFunction is called when exiting the datetimeValueFunction production. + ExitDatetimeValueFunction(c *DatetimeValueFunctionContext) + + // ExitDateFunction is called when exiting the dateFunction production. + ExitDateFunction(c *DateFunctionContext) + + // ExitTimeFunction is called when exiting the timeFunction production. + ExitTimeFunction(c *TimeFunctionContext) + + // ExitLocaltimeFunction is called when exiting the localtimeFunction production. + ExitLocaltimeFunction(c *LocaltimeFunctionContext) + + // ExitDatetimeFunction is called when exiting the datetimeFunction production. + ExitDatetimeFunction(c *DatetimeFunctionContext) + + // ExitLocaldatetimeFunction is called when exiting the localdatetimeFunction production. + ExitLocaldatetimeFunction(c *LocaldatetimeFunctionContext) + + // ExitDateFunctionParameters is called when exiting the dateFunctionParameters production. + ExitDateFunctionParameters(c *DateFunctionParametersContext) + + // ExitTimeFunctionParameters is called when exiting the timeFunctionParameters production. + ExitTimeFunctionParameters(c *TimeFunctionParametersContext) + + // ExitDatetimeFunctionParameters is called when exiting the datetimeFunctionParameters production. + ExitDatetimeFunctionParameters(c *DatetimeFunctionParametersContext) + + // ExitDurationValueExpression is called when exiting the durationValueExpression production. + ExitDurationValueExpression(c *DurationValueExpressionContext) + + // ExitDatetimeSubtraction is called when exiting the datetimeSubtraction production. + ExitDatetimeSubtraction(c *DatetimeSubtractionContext) + + // ExitDatetimeSubtractionParameters is called when exiting the datetimeSubtractionParameters production. + ExitDatetimeSubtractionParameters(c *DatetimeSubtractionParametersContext) + + // ExitDatetimeValueExpression1 is called when exiting the datetimeValueExpression1 production. + ExitDatetimeValueExpression1(c *DatetimeValueExpression1Context) + + // ExitDatetimeValueExpression2 is called when exiting the datetimeValueExpression2 production. + ExitDatetimeValueExpression2(c *DatetimeValueExpression2Context) + + // ExitDurationValueFunction is called when exiting the durationValueFunction production. + ExitDurationValueFunction(c *DurationValueFunctionContext) + + // ExitDurationFunction is called when exiting the durationFunction production. + ExitDurationFunction(c *DurationFunctionContext) + + // ExitDurationFunctionParameters is called when exiting the durationFunctionParameters production. + ExitDurationFunctionParameters(c *DurationFunctionParametersContext) + + // ExitObjectName is called when exiting the objectName production. + ExitObjectName(c *ObjectNameContext) + + // ExitObjectNameOrBindingVariable is called when exiting the objectNameOrBindingVariable production. + ExitObjectNameOrBindingVariable(c *ObjectNameOrBindingVariableContext) + + // ExitDirectoryName is called when exiting the directoryName production. + ExitDirectoryName(c *DirectoryNameContext) + + // ExitSchemaName is called when exiting the schemaName production. + ExitSchemaName(c *SchemaNameContext) + + // ExitGraphName is called when exiting the graphName production. + ExitGraphName(c *GraphNameContext) + + // ExitDelimitedGraphName is called when exiting the delimitedGraphName production. + ExitDelimitedGraphName(c *DelimitedGraphNameContext) + + // ExitGraphTypeName is called when exiting the graphTypeName production. + ExitGraphTypeName(c *GraphTypeNameContext) + + // ExitNodeTypeName is called when exiting the nodeTypeName production. + ExitNodeTypeName(c *NodeTypeNameContext) + + // ExitEdgeTypeName is called when exiting the edgeTypeName production. + ExitEdgeTypeName(c *EdgeTypeNameContext) + + // ExitBindingTableName is called when exiting the bindingTableName production. + ExitBindingTableName(c *BindingTableNameContext) + + // ExitDelimitedBindingTableName is called when exiting the delimitedBindingTableName production. + ExitDelimitedBindingTableName(c *DelimitedBindingTableNameContext) + + // ExitProcedureName is called when exiting the procedureName production. + ExitProcedureName(c *ProcedureNameContext) + + // ExitLabelName is called when exiting the labelName production. + ExitLabelName(c *LabelNameContext) + + // ExitPropertyName is called when exiting the propertyName production. + ExitPropertyName(c *PropertyNameContext) + + // ExitFieldName is called when exiting the fieldName production. + ExitFieldName(c *FieldNameContext) + + // ExitElementVariable is called when exiting the elementVariable production. + ExitElementVariable(c *ElementVariableContext) + + // ExitPathVariable is called when exiting the pathVariable production. + ExitPathVariable(c *PathVariableContext) + + // ExitSubpathVariable is called when exiting the subpathVariable production. + ExitSubpathVariable(c *SubpathVariableContext) + + // ExitBindingVariable is called when exiting the bindingVariable production. + ExitBindingVariable(c *BindingVariableContext) + + // ExitUnsignedLiteral is called when exiting the unsignedLiteral production. + ExitUnsignedLiteral(c *UnsignedLiteralContext) + + // ExitGeneralLiteral is called when exiting the generalLiteral production. + ExitGeneralLiteral(c *GeneralLiteralContext) + + // ExitTemporalLiteral is called when exiting the temporalLiteral production. + ExitTemporalLiteral(c *TemporalLiteralContext) + + // ExitDateLiteral is called when exiting the dateLiteral production. + ExitDateLiteral(c *DateLiteralContext) + + // ExitTimeLiteral is called when exiting the timeLiteral production. + ExitTimeLiteral(c *TimeLiteralContext) + + // ExitDatetimeLiteral is called when exiting the datetimeLiteral production. + ExitDatetimeLiteral(c *DatetimeLiteralContext) + + // ExitListLiteral is called when exiting the listLiteral production. + ExitListLiteral(c *ListLiteralContext) + + // ExitRecordLiteral is called when exiting the recordLiteral production. + ExitRecordLiteral(c *RecordLiteralContext) + + // ExitIdentifier is called when exiting the identifier production. + ExitIdentifier(c *IdentifierContext) + + // ExitRegularIdentifier is called when exiting the regularIdentifier production. + ExitRegularIdentifier(c *RegularIdentifierContext) + + // ExitTimeZoneString is called when exiting the timeZoneString production. + ExitTimeZoneString(c *TimeZoneStringContext) + + // ExitCharacterStringLiteral is called when exiting the characterStringLiteral production. + ExitCharacterStringLiteral(c *CharacterStringLiteralContext) + + // ExitUnsignedNumericLiteral is called when exiting the unsignedNumericLiteral production. + ExitUnsignedNumericLiteral(c *UnsignedNumericLiteralContext) + + // ExitExactNumericLiteral is called when exiting the exactNumericLiteral production. + ExitExactNumericLiteral(c *ExactNumericLiteralContext) + + // ExitApproximateNumericLiteral is called when exiting the approximateNumericLiteral production. + ExitApproximateNumericLiteral(c *ApproximateNumericLiteralContext) + + // ExitUnsignedInteger is called when exiting the unsignedInteger production. + ExitUnsignedInteger(c *UnsignedIntegerContext) + + // ExitUnsignedDecimalInteger is called when exiting the unsignedDecimalInteger production. + ExitUnsignedDecimalInteger(c *UnsignedDecimalIntegerContext) + + // ExitNullLiteral is called when exiting the nullLiteral production. + ExitNullLiteral(c *NullLiteralContext) + + // ExitDateString is called when exiting the dateString production. + ExitDateString(c *DateStringContext) + + // ExitTimeString is called when exiting the timeString production. + ExitTimeString(c *TimeStringContext) + + // ExitDatetimeString is called when exiting the datetimeString production. + ExitDatetimeString(c *DatetimeStringContext) + + // ExitDurationLiteral is called when exiting the durationLiteral production. + ExitDurationLiteral(c *DurationLiteralContext) + + // ExitDurationString is called when exiting the durationString production. + ExitDurationString(c *DurationStringContext) + + // ExitNodeSynonym is called when exiting the nodeSynonym production. + ExitNodeSynonym(c *NodeSynonymContext) + + // ExitEdgesSynonym is called when exiting the edgesSynonym production. + ExitEdgesSynonym(c *EdgesSynonymContext) + + // ExitEdgeSynonym is called when exiting the edgeSynonym production. + ExitEdgeSynonym(c *EdgeSynonymContext) + + // ExitNonReservedWords is called when exiting the nonReservedWords production. + ExitNonReservedWords(c *NonReservedWordsContext) +} diff --git a/endpoints/gql/parser/gql_parser.go b/endpoints/gql/parser/gql_parser.go new file mode 100644 index 00000000..719620d1 --- /dev/null +++ b/endpoints/gql/parser/gql_parser.go @@ -0,0 +1,93870 @@ +// Code generated from GQL.g4 by ANTLR 4.13.2. DO NOT EDIT. + +package parser // GQL + +import ( + "fmt" + "strconv" + "sync" + + "github.com/antlr4-go/antlr/v4" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = strconv.Itoa +var _ = sync.Once{} + +type GQLParser struct { + *antlr.BaseParser +} + +var GQLParserStaticData struct { + once sync.Once + serializedATN []int32 + LiteralNames []string + SymbolicNames []string + RuleNames []string + PredictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func gqlParserInit() { + staticData := &GQLParserStaticData + staticData.LiteralNames = []string{ + "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "'ABS'", "'ACOS'", "'ALL'", "'ALL_DIFFERENT'", "'AND'", + "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'ASCENDING'", "'ASIN'", "'AT'", + "'ATAN'", "'AVG'", "'BIG'", "'BIGINT'", "'BINARY'", "'BOOL'", "'BOOLEAN'", + "'BOTH'", "'BTRIM'", "'BY'", "'BYTE_LENGTH'", "'BYTES'", "'CALL'", "'CARDINALITY'", + "'CASE'", "'CAST'", "'CEIL'", "'CEILING'", "'CHAR'", "'CHAR_LENGTH'", + "'CHARACTER_LENGTH'", "'CHARACTERISTICS'", "'CLOSE'", "'COALESCE'", + "'COLLECT_LIST'", "'COMMIT'", "'COPY'", "'COS'", "'COSH'", "'COT'", + "'COUNT'", "'CREATE'", "'CURRENT_DATE'", "'CURRENT_GRAPH'", "'CURRENT_PROPERTY_GRAPH'", + "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'DATE'", + "'DATETIME'", "'DAY'", "'DEC'", "'DECIMAL'", "'DEGREES'", "'DELETE'", + "'DESC'", "'DESCENDING'", "'DETACH'", "'DISTINCT'", "'DOUBLE'", "'DROP'", + "'DURATION'", "'DURATION_BETWEEN'", "'ELEMENT_ID'", "'ELSE'", "'END'", + "'EXCEPT'", "'EXISTS'", "'EXP'", "'FILTER'", "'FINISH'", "'FLOAT'", + "'FLOAT16'", "'FLOAT32'", "'FLOAT64'", "'FLOAT128'", "'FLOAT256'", "'FLOOR'", + "'FOR'", "'FROM'", "'GROUP'", "'HAVING'", "'HOME_GRAPH'", "'HOME_PROPERTY_GRAPH'", + "'HOME_SCHEMA'", "'HOUR'", "'IF'", "'IN'", "'INSERT'", "'INT'", "'INTEGER'", + "'INT8'", "'INTEGER8'", "'INT16'", "'INTEGER16'", "'INT32'", "'INTEGER32'", + "'INT64'", "'INTEGER64'", "'INT128'", "'INTEGER128'", "'INT256'", "'INTEGER256'", + "'INTERSECT'", "'INTERVAL'", "'IS'", "'LEADING'", "'LEFT'", "'LET'", + "'LIKE'", "'LIMIT'", "'LIST'", "'LN'", "'LOCAL'", "'LOCAL_DATETIME'", + "'LOCAL_TIME'", "'LOCAL_TIMESTAMP'", "'LOG'", "'LOG10'", "'LOWER'", + "'LTRIM'", "'MATCH'", "'MAX'", "'MIN'", "'MINUTE'", "'MOD'", "'MONTH'", + "'NEXT'", "'NODETACH'", "'NORMALIZE'", "'NOT'", "'NOTHING'", "'NULL'", + "'NULLS'", "'NULLIF'", "'OCTET_LENGTH'", "'OF'", "'OFFSET'", "'OPTIONAL'", + "'OR'", "'ORDER'", "'OTHERWISE'", "'PARAMETER'", "'PARAMETERS'", "'PATH'", + "'PATH_LENGTH'", "'PATHS'", "'PERCENTILE_CONT'", "'PERCENTILE_DISC'", + "'POWER'", "'PRECISION'", "'PROPERTY_EXISTS'", "'RADIANS'", "'REAL'", + "'RECORD'", "'REMOVE'", "'REPLACE'", "'RESET'", "'RETURN'", "'RIGHT'", + "'ROLLBACK'", "'RTRIM'", "'SAME'", "'SCHEMA'", "'SECOND'", "'SELECT'", + "'SESSION'", "'SESSION_USER'", "'SET'", "'SIGNED'", "'SIN'", "'SINH'", + "'SIZE'", "'SKIP'", "'SMALL'", "'SMALLINT'", "'SQRT'", "'START'", "'STDDEV_POP'", + "'STDDEV_SAMP'", "'STRING'", "'SUM'", "'TAN'", "'TANH'", "'THEN'", "'TIME'", + "'TIMESTAMP'", "'TRAILING'", "'TRIM'", "'TYPED'", "'UBIGINT'", "'UINT'", + "'UINT8'", "'UINT16'", "'UINT32'", "'UINT64'", "'UINT128'", "'UINT256'", + "'UNION'", "'UNSIGNED'", "'UPPER'", "'USE'", "'USMALLINT'", "'VALUE'", + "'VARBINARY'", "'VARCHAR'", "'VARIABLE'", "'WHEN'", "'WHERE'", "'WITH'", + "'XOR'", "'YEAR'", "'YIELD'", "'ZONED'", "'ZONED_DATETIME'", "'ZONED_TIME'", + "'ABSTRACT'", "'AGGREGATE'", "'AGGREGATES'", "'ALTER'", "'CATALOG'", + "'CLEAR'", "'CLONE'", "'CONSTRAINT'", "'CURRENT_ROLE'", "'CURRENT_USER'", + "'DATA'", "'DIRECTORY'", "'DRYRUN'", "'EXACT'", "'EXISTING'", "'FUNCTION'", + "'GQLSTATUS'", "'GRANT'", "'INSTANT'", "'INFINITY'", "'NUMBER'", "'NUMERIC'", + "'ON'", "'OPEN'", "'PARTITION'", "'PROCEDURE'", "'PRODUCT'", "'PROJECT'", + "'QUERY'", "'RECORDS'", "'REFERENCE'", "'RENAME'", "'REVOKE'", "'SUBSTRING'", + "'SYSTEM_USER'", "'TEMPORAL'", "'UNIQUE'", "'UNIT'", "'VALUES'", "'ACYCLIC'", + "'BINDING'", "'BINDINGS'", "'CONNECTING'", "'DESTINATION'", "'DIFFERENT'", + "'DIRECTED'", "'EDGE'", "'EDGES'", "'ELEMENT'", "'ELEMENTS'", "'FIRST'", + "'GRAPH'", "'GROUPS'", "'KEEP'", "'LABEL'", "'LABELED'", "'LABELS'", + "'LAST'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NODE'", "'NORMALIZED'", + "'ONLY'", "'ORDINALITY'", "'PROPERTY'", "'READ'", "'RELATIONSHIP'", + "'RELATIONSHIPS'", "'REPEATABLE'", "'SHORTEST'", "'SIMPLE'", "'SOURCE'", + "'TABLE'", "'TO'", "'TRAIL'", "'TRANSACTION'", "'TYPE'", "'UNDIRECTED'", + "'VERTEX'", "'WALK'", "'WITHOUT'", "'WRITE'", "'ZONE'", "", "", "", + "'|+|'", "']->'", "']~>'", "'||'", "'::'", "'$$'", "'..'", "'>='", "'<-'", + "'<~'", "'<-['", "'<~['", "'<->'", "'<-/'", "'<~/'", "'<='", "'-['", + "'-/'", "'<>'", "'->'", "']-'", "']~'", "'=>'", "'/-'", "'/->'", "'/~'", + "'/~>'", "'~['", "'~>'", "'~/'", "'&'", "'*'", "':'", "','", "'@'", + "'$'", "'\"'", "'='", "'!'", "'>'", "'`'", "'{'", "'['", "'('", "'<'", + "'-'", "'%'", "'.'", "'+'", "'?'", "'''", "'\\'", "'}'", "']'", "')'", + "'/'", "'~'", "'_'", "'|'", + } + staticData.SymbolicNames = []string{ + "", "IMPLIES", "BOOLEAN_LITERAL", "SINGLE_QUOTED_CHARACTER_SEQUENCE", + "DOUBLE_QUOTED_CHARACTER_SEQUENCE", "ACCENT_QUOTED_CHARACTER_SEQUENCE", + "NO_ESCAPE", "BYTE_STRING_LITERAL", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX", "UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX", + "UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX", "UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX", + "UNSIGNED_DECIMAL_INTEGER", "UNSIGNED_HEXADECIMAL_INTEGER", "UNSIGNED_OCTAL_INTEGER", + "UNSIGNED_BINARY_INTEGER", "ABS", "ACOS", "ALL", "ALL_DIFFERENT", "AND", + "ANY", "ARRAY", "AS", "ASC", "ASCENDING", "ASIN", "AT", "ATAN", "AVG", + "BIG", "BIGINT", "BINARY", "BOOL", "BOOLEAN", "BOTH", "BTRIM", "BY", + "BYTE_LENGTH", "BYTES", "CALL", "CARDINALITY", "CASE", "CAST", "CEIL", + "CEILING", "CHAR", "CHAR_LENGTH", "CHARACTER_LENGTH", "CHARACTERISTICS", + "CLOSE", "COALESCE", "COLLECT_LIST", "COMMIT", "COPY", "COS", "COSH", + "COT", "COUNT", "CREATE", "CURRENT_DATE", "CURRENT_GRAPH", "CURRENT_PROPERTY_GRAPH", + "CURRENT_SCHEMA", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DATE", "DATETIME", + "DAY", "DEC", "DECIMAL", "DEGREES", "DELETE", "DESC", "DESCENDING", + "DETACH", "DISTINCT", "DOUBLE", "DROP", "DURATION", "DURATION_BETWEEN", + "ELEMENT_ID", "ELSE", "END", "EXCEPT", "EXISTS", "EXP", "FILTER", "FINISH", + "FLOAT", "FLOAT16", "FLOAT32", "FLOAT64", "FLOAT128", "FLOAT256", "FLOOR", + "FOR", "FROM", "GROUP", "HAVING", "HOME_GRAPH", "HOME_PROPERTY_GRAPH", + "HOME_SCHEMA", "HOUR", "IF", "IN", "INSERT", "INT", "INTEGER", "INT8", + "INTEGER8", "INT16", "INTEGER16", "INT32", "INTEGER32", "INT64", "INTEGER64", + "INT128", "INTEGER128", "INT256", "INTEGER256", "INTERSECT", "INTERVAL", + "IS", "LEADING", "LEFT", "LET", "LIKE", "LIMIT", "LIST", "LN", "LOCAL", + "LOCAL_DATETIME", "LOCAL_TIME", "LOCAL_TIMESTAMP", "LOG_KW", "LOG10", + "LOWER", "LTRIM", "MATCH", "MAX", "MIN", "MINUTE", "MOD", "MONTH", "NEXT", + "NODETACH", "NORMALIZE", "NOT", "NOTHING", "NULL_KW", "NULLS", "NULLIF", + "OCTET_LENGTH", "OF", "OFFSET", "OPTIONAL", "OR", "ORDER", "OTHERWISE", + "PARAMETER", "PARAMETERS", "PATH", "PATH_LENGTH", "PATHS", "PERCENTILE_CONT", + "PERCENTILE_DISC", "POWER", "PRECISION", "PROPERTY_EXISTS", "RADIANS", + "REAL", "RECORD", "REMOVE", "REPLACE", "RESET", "RETURN", "RIGHT", "ROLLBACK", + "RTRIM", "SAME", "SCHEMA", "SECOND", "SELECT", "SESSION", "SESSION_USER", + "SET", "SIGNED", "SIN", "SINH", "SIZE", "SKIP_RESERVED_WORD", "SMALL", + "SMALLINT", "SQRT", "START", "STDDEV_POP", "STDDEV_SAMP", "STRING", + "SUM", "TAN", "TANH", "THEN", "TIME", "TIMESTAMP", "TRAILING", "TRIM", + "TYPED", "UBIGINT", "UINT", "UINT8", "UINT16", "UINT32", "UINT64", "UINT128", + "UINT256", "UNION", "UNSIGNED", "UPPER", "USE", "USMALLINT", "VALUE", + "VARBINARY", "VARCHAR", "VARIABLE", "WHEN", "WHERE", "WITH", "XOR", + "YEAR", "YIELD", "ZONED", "ZONED_DATETIME", "ZONED_TIME", "ABSTRACT", + "AGGREGATE", "AGGREGATES", "ALTER", "CATALOG", "CLEAR", "CLONE", "CONSTRAINT", + "CURRENT_ROLE", "CURRENT_USER", "DATA", "DIRECTORY", "DRYRUN", "EXACT", + "EXISTING", "FUNCTION", "GQLSTATUS", "GRANT", "INSTANT", "INFINITY_KW", + "NUMBER", "NUMERIC", "ON", "OPEN", "PARTITION", "PROCEDURE", "PRODUCT", + "PROJECT", "QUERY", "RECORDS", "REFERENCE", "RENAME", "REVOKE", "SUBSTRING", + "SYSTEM_USER", "TEMPORAL", "UNIQUE", "UNIT", "VALUES", "ACYCLIC", "BINDING", + "BINDINGS", "CONNECTING", "DESTINATION", "DIFFERENT", "DIRECTED", "EDGE", + "EDGES", "ELEMENT", "ELEMENTS", "FIRST", "GRAPH", "GROUPS", "KEEP", + "LABEL", "LABELED", "LABELS", "LAST", "NFC", "NFD", "NFKC", "NFKD", + "NO", "NODE", "NORMALIZED", "ONLY", "ORDINALITY", "PROPERTY", "READ", + "RELATIONSHIP", "RELATIONSHIPS", "REPEATABLE", "SHORTEST", "SIMPLE", + "SOURCE", "TABLE", "TO", "TRAIL", "TRANSACTION", "TYPE", "UNDIRECTED", + "VERTEX", "WALK", "WITHOUT", "WRITE", "ZONE", "REGULAR_IDENTIFIER", + "SUBSTITUTED_PARAMETER_REFERENCE", "GENERAL_PARAMETER_REFERENCE", "MULTISET_ALTERNATION_OPERATOR", + "BRACKET_RIGHT_ARROW", "BRACKET_TILDE_RIGHT_ARROW", "CONCATENATION_OPERATOR", + "DOUBLE_COLON", "DOUBLE_DOLLAR_SIGN", "DOUBLE_PERIOD", "GREATER_THAN_OR_EQUALS_OPERATOR", + "LEFT_ARROW", "LEFT_ARROW_TILDE", "LEFT_ARROW_BRACKET", "LEFT_ARROW_TILDE_BRACKET", + "LEFT_MINUS_RIGHT", "LEFT_MINUS_SLASH", "LEFT_TILDE_SLASH", "LESS_THAN_OR_EQUALS_OPERATOR", + "MINUS_LEFT_BRACKET", "MINUS_SLASH", "NOT_EQUALS_OPERATOR", "RIGHT_ARROW", + "RIGHT_BRACKET_MINUS", "RIGHT_BRACKET_TILDE", "RIGHT_DOUBLE_ARROW", + "SLASH_MINUS", "SLASH_MINUS_RIGHT", "SLASH_TILDE", "SLASH_TILDE_RIGHT", + "TILDE_LEFT_BRACKET", "TILDE_RIGHT_ARROW", "TILDE_SLASH", "AMPERSAND", + "ASTERISK", "COLON", "COMMA", "COMMERCIAL_AT", "DOLLAR_SIGN", "DOUBLE_QUOTE", + "EQUALS_OPERATOR", "EXCLAMATION_MARK", "RIGHT_ANGLE_BRACKET", "GRAVE_ACCENT", + "LEFT_BRACE", "LEFT_BRACKET", "LEFT_PAREN", "LEFT_ANGLE_BRACKET", "MINUS_SIGN", + "PERCENT", "PERIOD", "PLUS_SIGN", "QUESTION_MARK", "QUOTE", "REVERSE_SOLIDUS", + "RIGHT_BRACE", "RIGHT_BRACKET", "RIGHT_PAREN", "SOLIDUS", "TILDE", "UNDERSCORE", + "VERTICAL_BAR", "SP", "WHITESPACE", "BRACKETED_COMMENT", "SIMPLE_COMMENT_SOLIDUS", + "SIMPLE_COMMENT_MINUS", + } + staticData.RuleNames = []string{ + "gqlProgram", "programActivity", "sessionActivity", "transactionActivity", + "endTransactionCommand", "sessionSetCommand", "sessionSetSchemaClause", + "sessionSetGraphClause", "sessionSetTimeZoneClause", "setTimeZoneValue", + "sessionSetParameterClause", "sessionSetGraphParameterClause", "sessionSetBindingTableParameterClause", + "sessionSetValueParameterClause", "sessionSetParameterName", "sessionResetCommand", + "sessionResetArguments", "sessionCloseCommand", "sessionParameterSpecification", + "startTransactionCommand", "transactionCharacteristics", "transactionMode", + "transactionAccessMode", "rollbackCommand", "commitCommand", "nestedProcedureSpecification", + "procedureSpecification", "nestedDataModifyingProcedureSpecification", + "nestedQuerySpecification", "procedureBody", "bindingVariableDefinitionBlock", + "bindingVariableDefinition", "statementBlock", "statement", "nextStatement", + "graphVariableDefinition", "optTypedGraphInitializer", "graphInitializer", + "bindingTableVariableDefinition", "optTypedBindingTableInitializer", + "bindingTableInitializer", "valueVariableDefinition", "optTypedValueInitializer", + "valueInitializer", "graphExpression", "currentGraph", "bindingTableExpression", + "nestedBindingTableQuerySpecification", "objectExpressionPrimary", "linearCatalogModifyingStatement", + "simpleCatalogModifyingStatement", "primitiveCatalogModifyingStatement", + "createSchemaStatement", "dropSchemaStatement", "createGraphStatement", + "openGraphType", "ofGraphType", "graphTypeLikeGraph", "graphSource", + "dropGraphStatement", "createGraphTypeStatement", "graphTypeSource", + "copyOfGraphType", "dropGraphTypeStatement", "callCatalogModifyingProcedureStatement", + "linearDataModifyingStatement", "focusedLinearDataModifyingStatement", + "focusedLinearDataModifyingStatementBody", "focusedNestedDataModifyingProcedureSpecification", + "ambientLinearDataModifyingStatement", "ambientLinearDataModifyingStatementBody", + "simpleLinearDataAccessingStatement", "simpleDataAccessingStatement", + "simpleDataModifyingStatement", "primitiveDataModifyingStatement", "insertStatement", + "setStatement", "setItemList", "setItem", "setPropertyItem", "setAllPropertiesItem", + "setLabelItem", "removeStatement", "removeItemList", "removeItem", "removePropertyItem", + "removeLabelItem", "deleteStatement", "deleteItemList", "deleteItem", + "callDataModifyingProcedureStatement", "compositeQueryStatement", "compositeQueryExpression", + "queryConjunction", "setOperator", "compositeQueryPrimary", "linearQueryStatement", + "focusedLinearQueryStatement", "focusedLinearQueryStatementPart", "focusedLinearQueryAndPrimitiveResultStatementPart", + "focusedPrimitiveResultStatement", "focusedNestedQuerySpecification", + "ambientLinearQueryStatement", "simpleLinearQueryStatement", "simpleQueryStatement", + "primitiveQueryStatement", "matchStatement", "simpleMatchStatement", + "optionalMatchStatement", "optionalOperand", "matchStatementBlock", + "callQueryStatement", "filterStatement", "letStatement", "letVariableDefinitionList", + "letVariableDefinition", "forStatement", "forItem", "forItemAlias", + "forItemSource", "forOrdinalityOrOffset", "orderByAndPageStatement", + "primitiveResultStatement", "returnStatement", "returnStatementBody", + "returnItemList", "returnItem", "returnItemAlias", "selectStatement", + "selectItemList", "selectItem", "selectItemAlias", "havingClause", "selectStatementBody", + "selectGraphMatchList", "selectGraphMatch", "selectQuerySpecification", + "callProcedureStatement", "procedureCall", "inlineProcedureCall", "variableScopeClause", + "bindingVariableReferenceList", "namedProcedureCall", "procedureArgumentList", + "procedureArgument", "atSchemaClause", "useGraphClause", "graphPatternBindingTable", + "graphPatternYieldClause", "graphPatternYieldItemList", "graphPatternYieldItem", + "graphPattern", "matchMode", "repeatableElementsMatchMode", "differentEdgesMatchMode", + "elementBindingsOrElements", "edgeBindingsOrEdges", "pathPatternList", + "pathPattern", "pathVariableDeclaration", "keepClause", "graphPatternWhereClause", + "insertGraphPattern", "insertPathPatternList", "insertPathPattern", + "insertNodePattern", "insertEdgePattern", "insertEdgePointingLeft", + "insertEdgePointingRight", "insertEdgeUndirected", "insertElementPatternFiller", + "labelAndPropertySetSpecification", "pathPatternPrefix", "pathModePrefix", + "pathMode", "pathSearchPrefix", "allPathSearch", "pathOrPaths", "anyPathSearch", + "numberOfPaths", "shortestPathSearch", "allShortestPathSearch", "anyShortestPathSearch", + "countedShortestPathSearch", "countedShortestGroupSearch", "numberOfGroups", + "pathPatternExpression", "pathTerm", "pathFactor", "pathPrimary", "elementPattern", + "nodePattern", "elementPatternFiller", "elementVariableDeclaration", + "isLabelExpression", "isOrColon", "elementPatternPredicate", "elementPatternWhereClause", + "elementPropertySpecification", "propertyKeyValuePairList", "propertyKeyValuePair", + "edgePattern", "fullEdgePattern", "fullEdgePointingLeft", "fullEdgeUndirected", + "fullEdgePointingRight", "fullEdgeLeftOrUndirected", "fullEdgeUndirectedOrRight", + "fullEdgeLeftOrRight", "fullEdgeAnyDirection", "abbreviatedEdgePattern", + "parenthesizedPathPatternExpression", "subpathVariableDeclaration", + "parenthesizedPathPatternWhereClause", "labelExpression", "pathVariableReference", + "elementVariableReference", "graphPatternQuantifier", "fixedQuantifier", + "generalQuantifier", "lowerBound", "upperBound", "simplifiedPathPatternExpression", + "simplifiedDefaultingLeft", "simplifiedDefaultingUndirected", "simplifiedDefaultingRight", + "simplifiedDefaultingLeftOrUndirected", "simplifiedDefaultingUndirectedOrRight", + "simplifiedDefaultingLeftOrRight", "simplifiedDefaultingAnyDirection", + "simplifiedContents", "simplifiedPathUnion", "simplifiedMultisetAlternation", + "simplifiedTerm", "simplifiedFactorLow", "simplifiedFactorHigh", "simplifiedQuantified", + "simplifiedQuestioned", "simplifiedTertiary", "simplifiedDirectionOverride", + "simplifiedOverrideLeft", "simplifiedOverrideUndirected", "simplifiedOverrideRight", + "simplifiedOverrideLeftOrUndirected", "simplifiedOverrideUndirectedOrRight", + "simplifiedOverrideLeftOrRight", "simplifiedOverrideAnyDirection", "simplifiedSecondary", + "simplifiedNegation", "simplifiedPrimary", "whereClause", "yieldClause", + "yieldItemList", "yieldItem", "yieldItemName", "yieldItemAlias", "groupByClause", + "groupingElementList", "groupingElement", "emptyGroupingSet", "orderByClause", + "sortSpecificationList", "sortSpecification", "sortKey", "orderingSpecification", + "nullOrdering", "limitClause", "offsetClause", "offsetSynonym", "schemaReference", + "absoluteCatalogSchemaReference", "catalogSchemaParentAndName", "relativeCatalogSchemaReference", + "predefinedSchemaReference", "absoluteDirectoryPath", "relativeDirectoryPath", + "simpleDirectoryPath", "graphReference", "catalogGraphParentAndName", + "homeGraph", "graphTypeReference", "catalogGraphTypeParentAndName", + "bindingTableReference", "procedureReference", "catalogProcedureParentAndName", + "catalogObjectParentReference", "referenceParameterSpecification", "nestedGraphTypeSpecification", + "graphTypeSpecificationBody", "elementTypeList", "elementTypeSpecification", + "nodeTypeSpecification", "nodeTypePattern", "nodeTypePhrase", "nodeTypePhraseFiller", + "nodeTypeFiller", "localNodeTypeAlias", "nodeTypeImpliedContent", "nodeTypeKeyLabelSet", + "nodeTypeLabelSet", "nodeTypePropertyTypes", "edgeTypeSpecification", + "edgeTypePattern", "edgeTypePhrase", "edgeTypePhraseFiller", "edgeTypeFiller", + "edgeTypeImpliedContent", "edgeTypeKeyLabelSet", "edgeTypeLabelSet", + "edgeTypePropertyTypes", "edgeTypePatternDirected", "edgeTypePatternPointingRight", + "edgeTypePatternPointingLeft", "edgeTypePatternUndirected", "arcTypePointingRight", + "arcTypePointingLeft", "arcTypeUndirected", "sourceNodeTypeReference", + "destinationNodeTypeReference", "edgeKind", "endpointPairPhrase", "endpointPair", + "endpointPairDirected", "endpointPairPointingRight", "endpointPairPointingLeft", + "endpointPairUndirected", "connectorPointingRight", "connectorUndirected", + "sourceNodeTypeAlias", "destinationNodeTypeAlias", "labelSetPhrase", + "labelSetSpecification", "propertyTypesSpecification", "propertyTypeList", + "propertyType", "propertyValueType", "bindingTableType", "valueType", + "typed", "predefinedType", "booleanType", "characterStringType", "byteStringType", + "minLength", "maxLength", "fixedLength", "numericType", "exactNumericType", + "binaryExactNumericType", "signedBinaryExactNumericType", "unsignedBinaryExactNumericType", + "verboseBinaryExactNumericType", "decimalExactNumericType", "precision", + "scale", "approximateNumericType", "temporalType", "temporalInstantType", + "datetimeType", "localdatetimeType", "dateType", "timeType", "localtimeType", + "temporalDurationType", "temporalDurationQualifier", "referenceValueType", + "immaterialValueType", "nullType", "emptyType", "graphReferenceValueType", + "closedGraphReferenceValueType", "openGraphReferenceValueType", "bindingTableReferenceValueType", + "nodeReferenceValueType", "closedNodeReferenceValueType", "openNodeReferenceValueType", + "edgeReferenceValueType", "closedEdgeReferenceValueType", "openEdgeReferenceValueType", + "pathValueType", "listValueTypeName", "listValueTypeNameSynonym", "recordType", + "fieldTypesSpecification", "fieldTypeList", "notNull", "fieldType", + "searchCondition", "predicate", "compOp", "existsPredicate", "nullPredicate", + "nullPredicatePart2", "valueTypePredicate", "valueTypePredicatePart2", + "normalizedPredicatePart2", "directedPredicate", "directedPredicatePart2", + "labeledPredicate", "labeledPredicatePart2", "isLabeledOrColon", "sourceDestinationPredicate", + "nodeReference", "sourcePredicatePart2", "destinationPredicatePart2", + "edgeReference", "all_differentPredicate", "samePredicate", "property_existsPredicate", + "valueExpression", "valueFunction", "booleanValueExpression", "characterOrByteStringFunction", + "subCharacterOrByteString", "trimSingleCharacterOrByteString", "foldCharacterString", + "trimMultiCharacterCharacterString", "normalizeCharacterString", "nodeReferenceValueExpression", + "edgeReferenceValueExpression", "aggregatingValueExpression", "valueExpressionPrimary", + "parenthesizedValueExpression", "nonParenthesizedValueExpressionPrimary", + "nonParenthesizedValueExpressionPrimarySpecialCase", "unsignedValueSpecification", + "nonNegativeIntegerSpecification", "generalValueSpecification", "dynamicParameterSpecification", + "letValueExpression", "valueQueryExpression", "caseExpression", "caseAbbreviation", + "caseSpecification", "simpleCase", "searchedCase", "simpleWhenClause", + "searchedWhenClause", "elseClause", "caseOperand", "whenOperandList", + "whenOperand", "result", "resultExpression", "castSpecification", "castOperand", + "castTarget", "aggregateFunction", "generalSetFunction", "binarySetFunction", + "generalSetFunctionType", "setQuantifier", "binarySetFunctionType", + "dependentValueExpression", "independentValueExpression", "element_idFunction", + "bindingVariableReference", "pathValueExpression", "pathValueConstructor", + "pathValueConstructorByEnumeration", "pathElementList", "pathElementListStart", + "pathElementListStep", "listValueExpression", "listValueFunction", "trimListFunction", + "elementsFunction", "listValueConstructor", "listValueConstructorByEnumeration", + "listElementList", "listElement", "recordConstructor", "fieldsSpecification", + "fieldList", "field", "truthValue", "numericValueExpression", "numericValueFunction", + "lengthExpression", "cardinalityExpression", "cardinalityExpressionArgument", + "charLengthExpression", "byteLengthExpression", "pathLengthExpression", + "absoluteValueExpression", "modulusExpression", "numericValueExpressionDividend", + "numericValueExpressionDivisor", "trigonometricFunction", "trigonometricFunctionName", + "generalLogarithmFunction", "generalLogarithmBase", "generalLogarithmArgument", + "commonLogarithm", "naturalLogarithm", "exponentialFunction", "powerFunction", + "numericValueExpressionBase", "numericValueExpressionExponent", "squareRoot", + "floorFunction", "ceilingFunction", "characterStringValueExpression", + "byteStringValueExpression", "trimOperands", "trimCharacterOrByteStringSource", + "trimSpecification", "trimCharacterOrByteString", "normalForm", "stringLength", + "datetimeValueExpression", "datetimeValueFunction", "dateFunction", + "timeFunction", "localtimeFunction", "datetimeFunction", "localdatetimeFunction", + "dateFunctionParameters", "timeFunctionParameters", "datetimeFunctionParameters", + "durationValueExpression", "datetimeSubtraction", "datetimeSubtractionParameters", + "datetimeValueExpression1", "datetimeValueExpression2", "durationValueFunction", + "durationFunction", "durationFunctionParameters", "objectName", "objectNameOrBindingVariable", + "directoryName", "schemaName", "graphName", "delimitedGraphName", "graphTypeName", + "nodeTypeName", "edgeTypeName", "bindingTableName", "delimitedBindingTableName", + "procedureName", "labelName", "propertyName", "fieldName", "elementVariable", + "pathVariable", "subpathVariable", "bindingVariable", "unsignedLiteral", + "generalLiteral", "temporalLiteral", "dateLiteral", "timeLiteral", "datetimeLiteral", + "listLiteral", "recordLiteral", "identifier", "regularIdentifier", "timeZoneString", + "characterStringLiteral", "unsignedNumericLiteral", "exactNumericLiteral", + "approximateNumericLiteral", "unsignedInteger", "unsignedDecimalInteger", + "nullLiteral", "dateString", "timeString", "datetimeString", "durationLiteral", + "durationString", "nodeSynonym", "edgesSynonym", "edgeSynonym", "nonReservedWords", + } + staticData.PredictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 390, 4603, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, + 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, + 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, + 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, + 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, + 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, + 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, + 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, + 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, + 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, + 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, + 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, + 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, + 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, + 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, + 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, + 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, + 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, + 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, + 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, + 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, + 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, + 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, + 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, + 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, + 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, + 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, + 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, + 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, + 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, + 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, + 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, + 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, + 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, + 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, + 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, + 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, + 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, + 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, + 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, + 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, + 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, + 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, + 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, + 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, + 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, + 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, + 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, + 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, + 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, + 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, + 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, + 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, + 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, + 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, + 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, + 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, + 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, + 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, + 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, + 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, + 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, + 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, + 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, + 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, + 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, + 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, + 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, + 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, + 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, + 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, + 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, + 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, + 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, + 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, + 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, + 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, + 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, + 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, + 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, + 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, + 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, + 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, + 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, + 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, + 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, + 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, + 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, + 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, + 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, + 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, + 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, + 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, + 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, + 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, + 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, + 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, + 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, + 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, + 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, + 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 2, 467, 7, 467, 2, 468, 7, + 468, 2, 469, 7, 469, 2, 470, 7, 470, 2, 471, 7, 471, 2, 472, 7, 472, 2, + 473, 7, 473, 2, 474, 7, 474, 2, 475, 7, 475, 2, 476, 7, 476, 2, 477, 7, + 477, 2, 478, 7, 478, 2, 479, 7, 479, 2, 480, 7, 480, 2, 481, 7, 481, 2, + 482, 7, 482, 2, 483, 7, 483, 2, 484, 7, 484, 2, 485, 7, 485, 2, 486, 7, + 486, 2, 487, 7, 487, 2, 488, 7, 488, 2, 489, 7, 489, 2, 490, 7, 490, 2, + 491, 7, 491, 2, 492, 7, 492, 2, 493, 7, 493, 2, 494, 7, 494, 2, 495, 7, + 495, 2, 496, 7, 496, 2, 497, 7, 497, 2, 498, 7, 498, 2, 499, 7, 499, 2, + 500, 7, 500, 2, 501, 7, 501, 2, 502, 7, 502, 2, 503, 7, 503, 2, 504, 7, + 504, 2, 505, 7, 505, 2, 506, 7, 506, 2, 507, 7, 507, 2, 508, 7, 508, 2, + 509, 7, 509, 2, 510, 7, 510, 2, 511, 7, 511, 2, 512, 7, 512, 2, 513, 7, + 513, 2, 514, 7, 514, 2, 515, 7, 515, 2, 516, 7, 516, 2, 517, 7, 517, 2, + 518, 7, 518, 2, 519, 7, 519, 2, 520, 7, 520, 2, 521, 7, 521, 2, 522, 7, + 522, 2, 523, 7, 523, 2, 524, 7, 524, 2, 525, 7, 525, 2, 526, 7, 526, 2, + 527, 7, 527, 2, 528, 7, 528, 2, 529, 7, 529, 2, 530, 7, 530, 2, 531, 7, + 531, 2, 532, 7, 532, 2, 533, 7, 533, 2, 534, 7, 534, 2, 535, 7, 535, 2, + 536, 7, 536, 2, 537, 7, 537, 2, 538, 7, 538, 2, 539, 7, 539, 2, 540, 7, + 540, 2, 541, 7, 541, 2, 542, 7, 542, 2, 543, 7, 543, 2, 544, 7, 544, 2, + 545, 7, 545, 2, 546, 7, 546, 2, 547, 7, 547, 2, 548, 7, 548, 2, 549, 7, + 549, 2, 550, 7, 550, 2, 551, 7, 551, 2, 552, 7, 552, 2, 553, 7, 553, 2, + 554, 7, 554, 2, 555, 7, 555, 2, 556, 7, 556, 2, 557, 7, 557, 2, 558, 7, + 558, 2, 559, 7, 559, 2, 560, 7, 560, 2, 561, 7, 561, 2, 562, 7, 562, 2, + 563, 7, 563, 2, 564, 7, 564, 2, 565, 7, 565, 2, 566, 7, 566, 2, 567, 7, + 567, 2, 568, 7, 568, 2, 569, 7, 569, 2, 570, 7, 570, 2, 571, 7, 571, 2, + 572, 7, 572, 2, 573, 7, 573, 1, 0, 1, 0, 3, 0, 1151, 8, 0, 1, 0, 1, 0, + 1, 0, 1, 0, 1, 0, 3, 0, 1158, 8, 0, 1, 1, 1, 1, 3, 1, 1162, 8, 1, 1, 2, + 4, 2, 1165, 8, 2, 11, 2, 12, 2, 1166, 1, 2, 4, 2, 1170, 8, 2, 11, 2, 12, + 2, 1171, 1, 2, 5, 2, 1175, 8, 2, 10, 2, 12, 2, 1178, 9, 2, 3, 2, 1180, + 8, 2, 1, 3, 1, 3, 1, 3, 3, 3, 1185, 8, 3, 3, 3, 1187, 8, 3, 1, 3, 1, 3, + 3, 3, 1191, 8, 3, 1, 3, 3, 3, 1194, 8, 3, 1, 4, 1, 4, 3, 4, 1198, 8, 4, + 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1206, 8, 5, 1, 6, 1, 6, 1, 6, + 1, 7, 3, 7, 1212, 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, + 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 1226, 8, 10, 1, 11, 3, 11, 1229, 8, 11, + 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 3, 12, 1236, 8, 12, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 3, 14, 1249, + 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1256, 8, 15, 1, 16, 3, + 16, 1259, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1264, 8, 16, 1, 16, 1, 16, + 1, 16, 1, 16, 3, 16, 1270, 8, 16, 1, 16, 3, 16, 1273, 8, 16, 1, 17, 1, + 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 1283, 8, 19, 1, 20, + 1, 20, 1, 20, 5, 20, 1288, 8, 20, 10, 20, 12, 20, 1291, 9, 20, 1, 21, 1, + 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1299, 8, 22, 1, 23, 1, 23, 1, 24, + 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, + 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 3, 29, 1320, 8, 29, 1, 29, 3, 29, + 1323, 8, 29, 1, 29, 1, 29, 1, 30, 4, 30, 1328, 8, 30, 11, 30, 12, 30, 1329, + 1, 31, 1, 31, 1, 31, 3, 31, 1335, 8, 31, 1, 32, 1, 32, 5, 32, 1339, 8, + 32, 10, 32, 12, 32, 1342, 9, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1347, 8, 33, + 1, 34, 1, 34, 3, 34, 1351, 8, 34, 1, 34, 1, 34, 1, 35, 3, 35, 1356, 8, + 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 3, 36, 1363, 8, 36, 1, 36, 3, 36, + 1366, 8, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 3, 38, 1374, 8, + 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 3, 39, 1381, 8, 39, 1, 39, 3, 39, + 1384, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, + 41, 1, 42, 3, 42, 1396, 8, 42, 1, 42, 3, 42, 1399, 8, 42, 1, 42, 1, 42, + 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1410, 8, 44, 1, + 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1418, 8, 46, 1, 47, 1, 47, + 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1426, 8, 48, 1, 49, 4, 49, 1429, 8, + 49, 11, 49, 12, 49, 1430, 1, 50, 1, 50, 3, 50, 1435, 8, 50, 1, 51, 1, 51, + 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 52, 1, 52, 1, 52, 1, + 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, + 3, 53, 1458, 8, 53, 1, 53, 1, 53, 1, 54, 1, 54, 3, 54, 1464, 8, 54, 1, + 54, 1, 54, 1, 54, 1, 54, 3, 54, 1470, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, + 1475, 8, 54, 1, 54, 3, 54, 1478, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1483, + 8, 54, 1, 54, 3, 54, 1486, 8, 54, 1, 55, 3, 55, 1489, 8, 55, 1, 55, 1, + 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 56, 1, 56, 3, 56, + 1500, 8, 56, 1, 56, 1, 56, 3, 56, 1504, 8, 56, 1, 56, 3, 56, 1507, 8, 56, + 1, 56, 3, 56, 1510, 8, 56, 1, 56, 3, 56, 1513, 8, 56, 1, 57, 1, 57, 1, + 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 3, 59, 1525, 8, 59, + 1, 59, 1, 59, 1, 59, 3, 59, 1530, 8, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, + 60, 1536, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1543, 8, 60, + 1, 60, 1, 60, 1, 60, 3, 60, 1548, 8, 60, 1, 60, 1, 60, 3, 60, 1552, 8, + 60, 1, 60, 1, 60, 1, 60, 1, 61, 3, 61, 1558, 8, 61, 1, 61, 1, 61, 1, 61, + 3, 61, 1563, 8, 61, 1, 61, 3, 61, 1566, 8, 61, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 63, 1, 63, 3, 63, 1574, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, + 1580, 8, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 65, 1, 65, 3, 65, 1588, 8, + 65, 1, 66, 1, 66, 3, 66, 1592, 8, 66, 1, 67, 1, 67, 1, 67, 3, 67, 1597, + 8, 67, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1604, 8, 69, 1, 70, 1, + 70, 3, 70, 1608, 8, 70, 1, 71, 4, 71, 1611, 8, 71, 11, 71, 12, 71, 1612, + 1, 72, 1, 72, 3, 72, 1617, 8, 72, 1, 73, 1, 73, 3, 73, 1621, 8, 73, 1, + 74, 1, 74, 1, 74, 1, 74, 3, 74, 1627, 8, 74, 1, 75, 1, 75, 1, 75, 1, 76, + 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 5, 77, 1638, 8, 77, 10, 77, 12, 77, + 1641, 9, 77, 1, 78, 1, 78, 1, 78, 3, 78, 1646, 8, 78, 1, 79, 1, 79, 1, + 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1658, 8, 80, + 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, + 83, 1, 83, 5, 83, 1672, 8, 83, 10, 83, 12, 83, 1675, 9, 83, 1, 84, 1, 84, + 3, 84, 1679, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, + 86, 1, 87, 3, 87, 1690, 8, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, + 5, 88, 1698, 8, 88, 10, 88, 12, 88, 1701, 9, 88, 1, 89, 1, 89, 1, 90, 1, + 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, + 1716, 8, 92, 10, 92, 12, 92, 1719, 9, 92, 1, 93, 1, 93, 3, 93, 1723, 8, + 93, 1, 94, 1, 94, 3, 94, 1727, 8, 94, 1, 94, 1, 94, 3, 94, 1731, 8, 94, + 1, 94, 1, 94, 3, 94, 1735, 8, 94, 3, 94, 1737, 8, 94, 1, 95, 1, 95, 1, + 96, 1, 96, 3, 96, 1743, 8, 96, 1, 97, 5, 97, 1746, 8, 97, 10, 97, 12, 97, + 1749, 9, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1755, 8, 97, 1, 98, 1, + 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, + 1, 101, 1, 101, 1, 102, 3, 102, 1771, 8, 102, 1, 102, 1, 102, 3, 102, 1775, + 8, 102, 1, 103, 4, 103, 1778, 8, 103, 11, 103, 12, 103, 1779, 1, 104, 1, + 104, 3, 104, 1784, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, + 1791, 8, 105, 1, 106, 1, 106, 3, 106, 1795, 8, 106, 1, 107, 1, 107, 1, + 107, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, + 109, 1, 109, 1, 109, 1, 109, 3, 109, 1812, 8, 109, 1, 110, 4, 110, 1815, + 8, 110, 11, 110, 12, 110, 1816, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, + 3, 112, 1824, 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 5, + 114, 1832, 8, 114, 10, 114, 12, 114, 1835, 9, 114, 1, 115, 1, 115, 1, 115, + 1, 115, 1, 115, 3, 115, 1842, 8, 115, 1, 116, 1, 116, 1, 116, 3, 116, 1847, + 8, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, + 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 3, 121, 1863, 8, 121, 1, + 121, 3, 121, 1866, 8, 121, 1, 121, 1, 121, 3, 121, 1870, 8, 121, 1, 121, + 3, 121, 1873, 8, 121, 1, 122, 1, 122, 3, 122, 1877, 8, 122, 1, 122, 3, + 122, 1880, 8, 122, 1, 123, 1, 123, 1, 123, 1, 124, 3, 124, 1886, 8, 124, + 1, 124, 1, 124, 3, 124, 1890, 8, 124, 1, 124, 3, 124, 1893, 8, 124, 1, + 125, 1, 125, 1, 125, 5, 125, 1898, 8, 125, 10, 125, 12, 125, 1901, 9, 125, + 1, 126, 1, 126, 3, 126, 1905, 8, 126, 1, 127, 1, 127, 1, 127, 1, 128, 1, + 128, 3, 128, 1912, 8, 128, 1, 128, 1, 128, 3, 128, 1916, 8, 128, 1, 128, + 1, 128, 3, 128, 1920, 8, 128, 1, 128, 3, 128, 1923, 8, 128, 1, 128, 3, + 128, 1926, 8, 128, 1, 128, 3, 128, 1929, 8, 128, 1, 128, 3, 128, 1932, + 8, 128, 1, 128, 3, 128, 1935, 8, 128, 3, 128, 1937, 8, 128, 1, 129, 1, + 129, 1, 129, 5, 129, 1942, 8, 129, 10, 129, 12, 129, 1945, 9, 129, 1, 130, + 1, 130, 3, 130, 1949, 8, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, + 132, 1, 133, 1, 133, 1, 133, 3, 133, 1960, 8, 133, 1, 134, 1, 134, 1, 134, + 5, 134, 1965, 8, 134, 10, 134, 12, 134, 1968, 9, 134, 1, 135, 1, 135, 1, + 135, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 1977, 8, 136, 1, 137, 3, 137, + 1980, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 1987, 8, + 138, 1, 139, 3, 139, 1990, 8, 139, 1, 139, 1, 139, 1, 140, 1, 140, 3, 140, + 1996, 8, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 5, 141, 2003, 8, + 141, 10, 141, 12, 141, 2006, 9, 141, 1, 142, 1, 142, 1, 142, 3, 142, 2011, + 8, 142, 1, 142, 1, 142, 3, 142, 2015, 8, 142, 1, 143, 1, 143, 1, 143, 5, + 143, 2020, 8, 143, 10, 143, 12, 143, 2023, 9, 143, 1, 144, 1, 144, 1, 145, + 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2035, 8, + 147, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 5, 149, 2043, 8, 149, + 10, 149, 12, 149, 2046, 9, 149, 1, 150, 1, 150, 1, 151, 3, 151, 2051, 8, + 151, 1, 151, 1, 151, 3, 151, 2055, 8, 151, 1, 151, 3, 151, 2058, 8, 151, + 1, 152, 1, 152, 3, 152, 2062, 8, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, + 154, 1, 154, 1, 155, 1, 155, 3, 155, 2072, 8, 155, 1, 155, 3, 155, 2075, + 8, 155, 1, 156, 1, 156, 3, 156, 2079, 8, 156, 1, 156, 3, 156, 2082, 8, + 156, 1, 157, 1, 157, 1, 157, 5, 157, 2087, 8, 157, 10, 157, 12, 157, 2090, + 9, 157, 1, 158, 3, 158, 2093, 8, 158, 1, 158, 3, 158, 2096, 8, 158, 1, + 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, + 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 5, 163, 2114, 8, 163, + 10, 163, 12, 163, 2117, 9, 163, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, + 2123, 8, 164, 10, 164, 12, 164, 2126, 9, 164, 1, 165, 1, 165, 3, 165, 2130, + 8, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 3, 166, 2137, 8, 166, 1, + 167, 1, 167, 3, 167, 2141, 8, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, + 2147, 8, 168, 1, 168, 1, 168, 1, 169, 1, 169, 3, 169, 2153, 8, 169, 1, + 169, 1, 169, 1, 170, 1, 170, 3, 170, 2159, 8, 170, 1, 170, 3, 170, 2162, + 8, 170, 1, 170, 3, 170, 2165, 8, 170, 1, 171, 1, 171, 1, 171, 3, 171, 2170, + 8, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2175, 8, 171, 1, 171, 3, 171, 2178, + 8, 171, 1, 172, 1, 172, 3, 172, 2182, 8, 172, 1, 173, 1, 173, 3, 173, 2186, + 8, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 3, 175, 2193, 8, 175, 1, + 176, 1, 176, 3, 176, 2197, 8, 176, 1, 176, 3, 176, 2200, 8, 176, 1, 177, + 1, 177, 1, 178, 1, 178, 3, 178, 2206, 8, 178, 1, 178, 3, 178, 2209, 8, + 178, 1, 178, 3, 178, 2212, 8, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, + 1, 180, 3, 180, 2220, 8, 180, 1, 181, 1, 181, 1, 181, 3, 181, 2225, 8, + 181, 1, 181, 3, 181, 2228, 8, 181, 1, 182, 1, 182, 1, 182, 3, 182, 2233, + 8, 182, 1, 182, 3, 182, 2236, 8, 182, 1, 183, 1, 183, 1, 183, 3, 183, 2241, + 8, 183, 1, 183, 3, 183, 2244, 8, 183, 1, 184, 1, 184, 3, 184, 2248, 8, + 184, 1, 184, 3, 184, 2251, 8, 184, 1, 184, 3, 184, 2254, 8, 184, 1, 184, + 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 4, 186, 2264, 8, + 186, 11, 186, 12, 186, 2265, 1, 186, 1, 186, 1, 186, 4, 186, 2271, 8, 186, + 11, 186, 12, 186, 2272, 3, 186, 2275, 8, 186, 1, 187, 4, 187, 2278, 8, + 187, 11, 187, 12, 187, 2279, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, + 188, 1, 188, 3, 188, 2289, 8, 188, 1, 189, 1, 189, 1, 189, 3, 189, 2294, + 8, 189, 1, 190, 1, 190, 3, 190, 2298, 8, 190, 1, 191, 1, 191, 1, 191, 1, + 191, 1, 192, 3, 192, 2305, 8, 192, 1, 192, 3, 192, 2308, 8, 192, 1, 192, + 3, 192, 2311, 8, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 195, 1, + 195, 1, 196, 1, 196, 3, 196, 2322, 8, 196, 1, 197, 1, 197, 1, 197, 1, 198, + 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 5, 199, 2334, 8, 199, 10, + 199, 12, 199, 2337, 9, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, + 201, 3, 201, 2345, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, + 1, 202, 3, 202, 2354, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, + 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, + 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, + 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 211, 1, 211, 3, + 211, 2388, 8, 211, 1, 211, 3, 211, 2391, 8, 211, 1, 211, 1, 211, 3, 211, + 2395, 8, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, + 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, + 214, 3, 214, 2414, 8, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, + 5, 214, 2422, 8, 214, 10, 214, 12, 214, 2425, 9, 214, 1, 215, 1, 215, 1, + 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2435, 8, 217, 1, 218, + 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 3, 219, 2443, 8, 219, 1, 219, 1, + 219, 3, 219, 2447, 8, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 221, 1, 221, + 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 2462, 8, + 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, + 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, + 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, + 229, 1, 229, 1, 230, 1, 230, 1, 230, 3, 230, 2495, 8, 230, 1, 231, 1, 231, + 1, 231, 1, 231, 1, 231, 5, 231, 2502, 8, 231, 10, 231, 12, 231, 2505, 9, + 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232, 2512, 8, 232, 10, + 232, 12, 232, 2515, 9, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, + 233, 2522, 8, 233, 10, 233, 12, 233, 2525, 9, 233, 1, 234, 1, 234, 1, 234, + 1, 234, 1, 234, 1, 234, 5, 234, 2533, 8, 234, 10, 234, 12, 234, 2536, 9, + 234, 1, 235, 1, 235, 1, 235, 3, 235, 2541, 8, 235, 1, 236, 1, 236, 1, 236, + 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2551, 8, 238, 1, 239, 1, + 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 2560, 8, 239, 1, 240, + 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 243, + 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, + 1, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 3, 247, 2587, 8, 247, 1, + 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 2597, + 8, 249, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, + 1, 252, 5, 252, 2608, 8, 252, 10, 252, 12, 252, 2611, 9, 252, 1, 253, 1, + 253, 3, 253, 2615, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 256, + 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 5, 257, 2629, 8, 257, 10, + 257, 12, 257, 2632, 9, 257, 1, 257, 3, 257, 2635, 8, 257, 1, 258, 1, 258, + 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, + 1, 261, 5, 261, 2649, 8, 261, 10, 261, 12, 261, 2652, 9, 261, 1, 262, 1, + 262, 3, 262, 2656, 8, 262, 1, 262, 3, 262, 2659, 8, 262, 1, 263, 1, 263, + 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 2669, 8, 265, 1, + 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 269, 1, + 269, 1, 269, 3, 269, 2682, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, + 2688, 8, 270, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 3, + 272, 2697, 8, 272, 1, 273, 1, 273, 1, 274, 1, 274, 3, 274, 2703, 8, 274, + 1, 275, 1, 275, 1, 275, 5, 275, 2708, 8, 275, 10, 275, 12, 275, 2711, 9, + 275, 1, 275, 1, 275, 3, 275, 2715, 8, 275, 1, 276, 1, 276, 1, 276, 4, 276, + 2720, 8, 276, 11, 276, 12, 276, 2721, 1, 277, 1, 277, 1, 277, 1, 277, 1, + 277, 1, 277, 3, 277, 2730, 8, 277, 1, 278, 3, 278, 2733, 8, 278, 1, 278, + 1, 278, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 2741, 8, 280, 1, 281, 3, + 281, 2744, 8, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, + 3, 282, 2753, 8, 282, 1, 283, 1, 283, 3, 283, 2757, 8, 283, 1, 284, 3, + 284, 2760, 8, 284, 1, 284, 1, 284, 1, 285, 1, 285, 3, 285, 2766, 8, 285, + 1, 285, 1, 285, 1, 285, 5, 285, 2771, 8, 285, 10, 285, 12, 285, 2774, 9, + 285, 1, 285, 1, 285, 1, 285, 4, 285, 2779, 8, 285, 11, 285, 12, 285, 2780, + 3, 285, 2783, 8, 285, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, + 288, 1, 288, 1, 289, 1, 289, 1, 289, 5, 289, 2796, 8, 289, 10, 289, 12, + 289, 2799, 9, 289, 1, 290, 1, 290, 3, 290, 2803, 8, 290, 1, 291, 1, 291, + 3, 291, 2807, 8, 291, 1, 292, 1, 292, 3, 292, 2811, 8, 292, 1, 292, 1, + 292, 3, 292, 2815, 8, 292, 1, 292, 1, 292, 3, 292, 2819, 8, 292, 1, 292, + 3, 292, 2822, 8, 292, 1, 292, 1, 292, 1, 293, 1, 293, 3, 293, 2828, 8, + 293, 1, 293, 1, 293, 1, 293, 3, 293, 2833, 8, 293, 1, 294, 1, 294, 3, 294, + 2837, 8, 294, 1, 294, 3, 294, 2840, 8, 294, 1, 295, 1, 295, 3, 295, 2844, + 8, 295, 1, 295, 3, 295, 2847, 8, 295, 1, 296, 1, 296, 1, 297, 1, 297, 1, + 297, 1, 297, 1, 297, 3, 297, 2856, 8, 297, 1, 298, 3, 298, 2859, 8, 298, + 1, 298, 1, 298, 1, 299, 1, 299, 1, 300, 1, 300, 1, 301, 1, 301, 3, 301, + 2869, 8, 301, 1, 302, 3, 302, 2872, 8, 302, 1, 302, 1, 302, 3, 302, 2876, + 8, 302, 1, 302, 1, 302, 3, 302, 2880, 8, 302, 1, 302, 1, 302, 3, 302, 2884, + 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 2889, 8, 303, 1, 303, 1, 303, 1, + 303, 1, 304, 1, 304, 3, 304, 2896, 8, 304, 1, 304, 3, 304, 2899, 8, 304, + 1, 305, 1, 305, 3, 305, 2903, 8, 305, 1, 305, 3, 305, 2906, 8, 305, 1, + 306, 1, 306, 1, 306, 1, 306, 1, 306, 3, 306, 2913, 8, 306, 1, 307, 3, 307, + 2916, 8, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 309, 1, 309, 1, 310, 1, + 310, 3, 310, 2926, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 1, 312, 1, 312, + 1, 312, 1, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, + 1, 314, 1, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, + 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 3, 317, 2958, 8, 317, 1, + 317, 3, 317, 2961, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, + 3, 318, 2969, 8, 318, 1, 318, 3, 318, 2972, 8, 318, 1, 319, 1, 319, 1, + 320, 1, 320, 1, 320, 1, 321, 1, 321, 3, 321, 2981, 8, 321, 1, 322, 1, 322, + 3, 322, 2985, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, + 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, + 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 328, 1, 328, 1, + 329, 1, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, + 330, 3020, 8, 330, 1, 331, 1, 331, 1, 331, 5, 331, 3025, 8, 331, 10, 331, + 12, 331, 3028, 9, 331, 1, 332, 1, 332, 3, 332, 3032, 8, 332, 1, 332, 1, + 332, 1, 333, 1, 333, 1, 333, 5, 333, 3039, 8, 333, 10, 333, 12, 333, 3042, + 9, 333, 1, 334, 1, 334, 3, 334, 3046, 8, 334, 1, 334, 1, 334, 1, 335, 1, + 335, 1, 336, 3, 336, 3053, 8, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, + 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, + 3, 337, 3069, 8, 337, 1, 337, 3, 337, 3072, 8, 337, 1, 337, 1, 337, 1, + 337, 1, 337, 1, 337, 3, 337, 3079, 8, 337, 1, 337, 3, 337, 3082, 8, 337, + 1, 337, 1, 337, 1, 337, 3, 337, 3087, 8, 337, 1, 337, 3, 337, 3090, 8, + 337, 1, 337, 3, 337, 3093, 8, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3098, + 8, 337, 1, 337, 1, 337, 3, 337, 3102, 8, 337, 1, 337, 1, 337, 1, 337, 1, + 337, 5, 337, 3108, 8, 337, 10, 337, 12, 337, 3111, 9, 337, 1, 337, 1, 337, + 3, 337, 3115, 8, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, + 337, 1, 337, 1, 337, 3, 337, 3126, 8, 337, 1, 337, 3, 337, 3129, 8, 337, + 5, 337, 3131, 8, 337, 10, 337, 12, 337, 3134, 9, 337, 1, 338, 1, 338, 1, + 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 3145, 8, 339, + 1, 340, 1, 340, 3, 340, 3149, 8, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, + 341, 3, 341, 3156, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 3161, 8, 341, + 1, 341, 3, 341, 3164, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, + 341, 3171, 8, 341, 1, 341, 3, 341, 3174, 8, 341, 1, 341, 1, 341, 1, 341, + 1, 341, 1, 341, 3, 341, 3181, 8, 341, 1, 341, 3, 341, 3184, 8, 341, 3, + 341, 3186, 8, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3193, + 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3198, 8, 342, 1, 342, 3, 342, 3201, + 8, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 3208, 8, 342, 1, + 342, 3, 342, 3211, 8, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, + 3218, 8, 342, 1, 342, 3, 342, 3221, 8, 342, 3, 342, 3223, 8, 342, 1, 343, + 1, 343, 1, 344, 1, 344, 1, 345, 1, 345, 1, 346, 1, 346, 3, 346, 3233, 8, + 346, 1, 347, 1, 347, 3, 347, 3237, 8, 347, 1, 348, 1, 348, 3, 348, 3241, + 8, 348, 1, 349, 1, 349, 3, 349, 3245, 8, 349, 1, 349, 1, 349, 3, 349, 3249, + 8, 349, 1, 349, 1, 349, 3, 349, 3253, 8, 349, 1, 349, 1, 349, 3, 349, 3257, + 8, 349, 1, 349, 1, 349, 3, 349, 3261, 8, 349, 1, 349, 1, 349, 3, 349, 3265, + 8, 349, 1, 349, 1, 349, 3, 349, 3269, 8, 349, 1, 349, 1, 349, 1, 349, 1, + 349, 1, 349, 3, 349, 3276, 8, 349, 1, 349, 3, 349, 3279, 8, 349, 1, 349, + 1, 349, 3, 349, 3283, 8, 349, 1, 349, 3, 349, 3286, 8, 349, 1, 349, 3, + 349, 3289, 8, 349, 1, 350, 1, 350, 3, 350, 3293, 8, 350, 1, 350, 1, 350, + 3, 350, 3297, 8, 350, 1, 350, 1, 350, 3, 350, 3301, 8, 350, 1, 350, 1, + 350, 3, 350, 3305, 8, 350, 1, 350, 1, 350, 3, 350, 3309, 8, 350, 1, 350, + 1, 350, 3, 350, 3313, 8, 350, 1, 350, 1, 350, 3, 350, 3317, 8, 350, 1, + 350, 1, 350, 1, 350, 1, 350, 1, 350, 3, 350, 3324, 8, 350, 1, 350, 3, 350, + 3327, 8, 350, 1, 350, 1, 350, 3, 350, 3331, 8, 350, 1, 350, 1, 350, 3, + 350, 3335, 8, 350, 1, 351, 1, 351, 3, 351, 3339, 8, 351, 1, 351, 1, 351, + 3, 351, 3343, 8, 351, 1, 351, 1, 351, 3, 351, 3347, 8, 351, 1, 351, 1, + 351, 3, 351, 3351, 8, 351, 1, 351, 1, 351, 3, 351, 3355, 8, 351, 1, 351, + 1, 351, 3, 351, 3359, 8, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3364, 8, + 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3371, 8, 351, 1, 351, + 3, 351, 3374, 8, 351, 1, 351, 1, 351, 1, 351, 3, 351, 3379, 8, 351, 3, + 351, 3381, 8, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 3, 352, 3388, + 8, 352, 1, 352, 1, 352, 3, 352, 3392, 8, 352, 3, 352, 3394, 8, 352, 1, + 353, 1, 353, 1, 354, 1, 354, 1, 355, 1, 355, 3, 355, 3402, 8, 355, 1, 355, + 1, 355, 3, 355, 3406, 8, 355, 1, 355, 1, 355, 3, 355, 3410, 8, 355, 1, + 355, 1, 355, 3, 355, 3414, 8, 355, 1, 355, 1, 355, 3, 355, 3418, 8, 355, + 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 3425, 8, 355, 1, 355, 1, + 355, 3, 355, 3429, 8, 355, 1, 355, 3, 355, 3432, 8, 355, 1, 355, 1, 355, + 3, 355, 3436, 8, 355, 1, 355, 1, 355, 3, 355, 3440, 8, 355, 1, 355, 3, + 355, 3443, 8, 355, 3, 355, 3445, 8, 355, 1, 356, 1, 356, 3, 356, 3449, + 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 3456, 8, 357, 1, + 358, 1, 358, 1, 358, 3, 358, 3461, 8, 358, 1, 358, 1, 358, 1, 358, 1, 358, + 1, 358, 3, 358, 3468, 8, 358, 3, 358, 3470, 8, 358, 1, 359, 1, 359, 1, + 359, 3, 359, 3475, 8, 359, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 3481, + 8, 359, 1, 359, 3, 359, 3484, 8, 359, 3, 359, 3486, 8, 359, 1, 360, 1, + 360, 3, 360, 3490, 8, 360, 1, 361, 1, 361, 1, 361, 3, 361, 3495, 8, 361, + 1, 361, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 3502, 8, 361, 3, 361, 3504, + 8, 361, 1, 362, 1, 362, 1, 362, 3, 362, 3509, 8, 362, 1, 362, 1, 362, 1, + 362, 1, 362, 1, 362, 3, 362, 3516, 8, 362, 3, 362, 3518, 8, 362, 1, 363, + 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 3525, 8, 363, 1, 364, 1, 364, 1, + 364, 1, 364, 1, 364, 1, 364, 3, 364, 3533, 8, 364, 1, 365, 1, 365, 1, 365, + 1, 365, 3, 365, 3539, 8, 365, 1, 366, 1, 366, 3, 366, 3543, 8, 366, 1, + 367, 1, 367, 1, 368, 1, 368, 1, 368, 3, 368, 3550, 8, 368, 1, 369, 1, 369, + 3, 369, 3554, 8, 369, 1, 370, 3, 370, 3557, 8, 370, 1, 370, 1, 370, 1, + 370, 3, 370, 3562, 8, 370, 1, 371, 1, 371, 3, 371, 3566, 8, 371, 1, 371, + 1, 371, 3, 371, 3570, 8, 371, 1, 372, 1, 372, 3, 372, 3574, 8, 372, 1, + 373, 1, 373, 3, 373, 3578, 8, 373, 1, 374, 1, 374, 3, 374, 3582, 8, 374, + 1, 375, 3, 375, 3585, 8, 375, 1, 375, 1, 375, 3, 375, 3589, 8, 375, 1, + 376, 1, 376, 3, 376, 3593, 8, 376, 1, 377, 1, 377, 3, 377, 3597, 8, 377, + 1, 378, 3, 378, 3600, 8, 378, 1, 378, 1, 378, 3, 378, 3604, 8, 378, 1, + 379, 1, 379, 3, 379, 3608, 8, 379, 1, 380, 1, 380, 1, 381, 1, 381, 1, 382, + 3, 382, 3615, 8, 382, 1, 382, 1, 382, 3, 382, 3619, 8, 382, 1, 382, 3, + 382, 3622, 8, 382, 1, 382, 1, 382, 3, 382, 3626, 8, 382, 3, 382, 3628, + 8, 382, 1, 383, 1, 383, 3, 383, 3632, 8, 383, 1, 383, 1, 383, 1, 384, 1, + 384, 1, 384, 5, 384, 3639, 8, 384, 10, 384, 12, 384, 3642, 9, 384, 1, 385, + 1, 385, 1, 385, 1, 386, 1, 386, 3, 386, 3649, 8, 386, 1, 386, 1, 386, 1, + 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, + 388, 1, 388, 3, 388, 3664, 8, 388, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, + 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, + 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 1, 390, 3, 390, 3686, 8, 390, 1, + 391, 1, 391, 1, 391, 1, 392, 1, 392, 3, 392, 3693, 8, 392, 1, 392, 1, 392, + 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 3, 394, 3702, 8, 394, 1, 394, 1, + 394, 1, 394, 1, 395, 1, 395, 3, 395, 3709, 8, 395, 1, 395, 3, 395, 3712, + 8, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 397, 1, 397, 3, 397, + 3721, 8, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, + 399, 1, 400, 1, 400, 3, 400, 3733, 8, 400, 1, 400, 1, 400, 3, 400, 3737, + 8, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 3745, 8, + 401, 1, 402, 1, 402, 1, 403, 1, 403, 3, 403, 3751, 8, 403, 1, 403, 1, 403, + 1, 403, 1, 403, 1, 404, 1, 404, 3, 404, 3759, 8, 404, 1, 404, 1, 404, 1, + 404, 1, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, + 406, 1, 406, 5, 406, 3774, 8, 406, 10, 406, 12, 406, 3777, 9, 406, 1, 406, + 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 5, 407, + 3788, 8, 407, 10, 407, 12, 407, 3791, 9, 407, 1, 407, 1, 407, 1, 408, 1, + 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, + 409, 1, 409, 1, 409, 1, 409, 3, 409, 3809, 8, 409, 1, 409, 1, 409, 1, 409, + 3, 409, 3814, 8, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3820, 8, + 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, + 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, + 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 3846, 8, 409, + 1, 409, 5, 409, 3849, 8, 409, 10, 409, 12, 409, 3852, 9, 409, 1, 410, 1, + 410, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 3860, 8, 410, 1, 411, 1, 411, + 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 3869, 8, 412, 1, 413, 1, + 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 414, 1, 414, 1, 414, 1, + 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 416, 1, 416, 1, + 416, 1, 416, 1, 416, 3, 416, 3893, 8, 416, 1, 416, 1, 416, 1, 417, 1, 417, + 1, 417, 1, 417, 1, 417, 3, 417, 3902, 8, 417, 1, 417, 1, 417, 1, 418, 1, + 418, 1, 419, 1, 419, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 421, 1, + 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 1, 421, 3, 421, 3923, 8, 421, + 1, 421, 1, 421, 1, 421, 5, 421, 3928, 8, 421, 10, 421, 12, 421, 3931, 9, + 421, 1, 422, 1, 422, 1, 422, 1, 422, 1, 423, 1, 423, 3, 423, 3939, 8, 423, + 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, 1, 424, + 1, 424, 1, 424, 1, 424, 3, 424, 3953, 8, 424, 1, 425, 1, 425, 3, 425, 3957, + 8, 425, 1, 426, 1, 426, 3, 426, 3961, 8, 426, 1, 427, 1, 427, 3, 427, 3965, + 8, 427, 1, 428, 1, 428, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, 1, 429, + 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 3, 431, 3980, 8, 431, 1, 432, 1, + 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, + 432, 1, 432, 4, 432, 3994, 8, 432, 11, 432, 12, 432, 3995, 1, 432, 1, 432, + 3, 432, 4000, 8, 432, 1, 433, 1, 433, 3, 433, 4004, 8, 433, 1, 434, 1, + 434, 1, 434, 4, 434, 4009, 8, 434, 11, 434, 12, 434, 4010, 1, 434, 3, 434, + 4014, 8, 434, 1, 434, 1, 434, 1, 435, 1, 435, 4, 435, 4020, 8, 435, 11, + 435, 12, 435, 4021, 1, 435, 3, 435, 4025, 8, 435, 1, 435, 1, 435, 1, 436, + 1, 436, 1, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, + 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 3, 439, 4044, 8, 439, 1, 440, 1, + 440, 1, 440, 5, 440, 4049, 8, 440, 10, 440, 12, 440, 4052, 9, 440, 1, 441, + 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, 1, 441, + 1, 441, 3, 441, 4065, 8, 441, 1, 442, 1, 442, 3, 442, 4069, 8, 442, 1, + 443, 1, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, + 445, 1, 445, 3, 445, 4082, 8, 445, 1, 446, 1, 446, 1, 447, 1, 447, 1, 447, + 1, 447, 1, 447, 1, 447, 3, 447, 4092, 8, 447, 1, 448, 1, 448, 1, 448, 3, + 448, 4097, 8, 448, 1, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 449, 1, 449, + 1, 449, 1, 449, 1, 449, 1, 450, 1, 450, 1, 451, 1, 451, 1, 452, 1, 452, + 1, 453, 3, 453, 4116, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 455, 1, + 455, 1, 455, 1, 455, 1, 455, 1, 456, 1, 456, 1, 457, 1, 457, 1, 458, 1, + 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 5, 460, 4140, + 8, 460, 10, 460, 12, 460, 4143, 9, 460, 1, 461, 1, 461, 1, 462, 1, 462, + 1, 462, 1, 462, 1, 462, 1, 463, 1, 463, 1, 464, 1, 464, 3, 464, 4156, 8, + 464, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 465, 1, 466, 1, + 466, 1, 466, 1, 466, 1, 466, 1, 467, 1, 467, 1, 468, 3, 468, 4173, 8, 468, + 1, 468, 1, 468, 3, 468, 4177, 8, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, + 469, 5, 469, 4184, 8, 469, 10, 469, 12, 469, 4187, 9, 469, 1, 470, 1, 470, + 1, 471, 3, 471, 4192, 8, 471, 1, 471, 1, 471, 1, 472, 1, 472, 3, 472, 4198, + 8, 472, 1, 472, 1, 472, 1, 473, 1, 473, 1, 473, 5, 473, 4205, 8, 473, 10, + 473, 12, 473, 4208, 9, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, + 475, 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 3, 476, 4221, 8, 476, 1, 476, + 1, 476, 1, 476, 1, 476, 1, 476, 1, 476, 5, 476, 4229, 8, 476, 10, 476, + 12, 476, 4232, 9, 476, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, + 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 1, 477, 3, 477, 4247, 8, + 477, 1, 478, 1, 478, 1, 478, 3, 478, 4252, 8, 478, 1, 479, 1, 479, 1, 479, + 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 1, 479, 3, 479, 4264, 8, + 479, 1, 480, 1, 480, 1, 481, 1, 481, 1, 481, 1, 481, 1, 481, 1, 482, 1, + 482, 1, 482, 1, 482, 1, 482, 1, 483, 1, 483, 1, 483, 1, 483, 1, 483, 1, + 484, 1, 484, 1, 484, 1, 484, 1, 484, 1, 485, 1, 485, 1, 485, 1, 485, 1, + 485, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, 488, 1, + 488, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 490, 1, 490, 1, + 490, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, 1, 492, 1, 493, 1, 493, 1, + 493, 1, 493, 1, 493, 1, 494, 1, 494, 1, 494, 1, 494, 1, 494, 1, 495, 1, + 495, 1, 495, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, + 496, 1, 496, 1, 497, 1, 497, 1, 498, 1, 498, 1, 499, 1, 499, 1, 499, 1, + 499, 1, 499, 1, 500, 1, 500, 1, 500, 1, 500, 1, 500, 1, 501, 1, 501, 1, + 501, 1, 501, 1, 501, 1, 502, 1, 502, 1, 503, 1, 503, 1, 504, 3, 504, 4363, + 8, 504, 1, 504, 3, 504, 4366, 8, 504, 1, 504, 3, 504, 4369, 8, 504, 1, + 504, 1, 504, 1, 505, 1, 505, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, 1, + 508, 1, 509, 1, 509, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, + 511, 3, 511, 4390, 8, 511, 1, 512, 1, 512, 1, 512, 1, 512, 3, 512, 4396, + 8, 512, 1, 512, 3, 512, 4399, 8, 512, 1, 513, 1, 513, 1, 513, 1, 513, 3, + 513, 4405, 8, 513, 1, 513, 3, 513, 4408, 8, 513, 1, 514, 1, 514, 1, 514, + 3, 514, 4413, 8, 514, 1, 514, 3, 514, 4416, 8, 514, 1, 515, 1, 515, 1, + 515, 1, 515, 3, 515, 4422, 8, 515, 1, 515, 3, 515, 4425, 8, 515, 1, 516, + 1, 516, 1, 516, 1, 516, 3, 516, 4431, 8, 516, 1, 516, 3, 516, 4434, 8, + 516, 1, 517, 1, 517, 3, 517, 4438, 8, 517, 1, 518, 1, 518, 3, 518, 4442, + 8, 518, 1, 519, 1, 519, 3, 519, 4446, 8, 519, 1, 520, 1, 520, 1, 521, 1, + 521, 1, 521, 1, 521, 1, 521, 3, 521, 4455, 8, 521, 1, 522, 1, 522, 1, 522, + 1, 522, 1, 523, 1, 523, 1, 524, 1, 524, 1, 525, 1, 525, 3, 525, 4467, 8, + 525, 1, 526, 1, 526, 1, 526, 1, 526, 1, 526, 1, 527, 1, 527, 3, 527, 4476, + 8, 527, 1, 528, 1, 528, 1, 529, 1, 529, 1, 530, 1, 530, 1, 531, 1, 531, + 1, 532, 1, 532, 3, 532, 4488, 8, 532, 1, 533, 1, 533, 1, 534, 1, 534, 1, + 535, 1, 535, 1, 536, 1, 536, 1, 537, 1, 537, 3, 537, 4500, 8, 537, 1, 538, + 1, 538, 1, 539, 1, 539, 1, 540, 1, 540, 1, 541, 1, 541, 1, 542, 1, 542, + 1, 543, 1, 543, 1, 544, 1, 544, 1, 545, 1, 545, 1, 546, 1, 546, 1, 547, + 1, 547, 3, 547, 4522, 8, 547, 1, 548, 1, 548, 1, 548, 1, 548, 1, 548, 1, + 548, 1, 548, 1, 548, 3, 548, 4532, 8, 548, 1, 549, 1, 549, 1, 549, 3, 549, + 4537, 8, 549, 1, 550, 1, 550, 1, 550, 1, 551, 1, 551, 1, 551, 1, 552, 1, + 552, 1, 552, 1, 553, 1, 553, 1, 554, 1, 554, 1, 555, 1, 555, 1, 555, 3, + 555, 4555, 8, 555, 1, 556, 1, 556, 3, 556, 4559, 8, 556, 1, 557, 1, 557, + 1, 558, 1, 558, 1, 559, 1, 559, 3, 559, 4567, 8, 559, 1, 560, 1, 560, 1, + 560, 1, 560, 1, 560, 3, 560, 4574, 8, 560, 1, 561, 1, 561, 1, 562, 1, 562, + 1, 563, 1, 563, 1, 564, 1, 564, 1, 565, 1, 565, 1, 566, 1, 566, 1, 567, + 1, 567, 1, 568, 1, 568, 1, 568, 1, 569, 1, 569, 1, 570, 1, 570, 1, 571, + 1, 571, 1, 572, 1, 572, 1, 573, 1, 573, 1, 573, 0, 8, 184, 428, 466, 468, + 674, 818, 842, 952, 574, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, + 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, + 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, + 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, + 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, + 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, + 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, + 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, + 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, + 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, + 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, + 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, + 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, + 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, + 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, + 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, + 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, + 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, + 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, + 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, + 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, + 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, + 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, + 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, + 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, + 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, + 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, + 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, + 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, + 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, + 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 934, 936, + 938, 940, 942, 944, 946, 948, 950, 952, 954, 956, 958, 960, 962, 964, 966, + 968, 970, 972, 974, 976, 978, 980, 982, 984, 986, 988, 990, 992, 994, 996, + 998, 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1018, 1020, + 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036, 1038, 1040, 1042, 1044, + 1046, 1048, 1050, 1052, 1054, 1056, 1058, 1060, 1062, 1064, 1066, 1068, + 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084, 1086, 1088, 1090, 1092, + 1094, 1096, 1098, 1100, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, + 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 1136, 1138, 1140, + 1142, 1144, 1146, 0, 45, 2, 0, 53, 53, 165, 165, 1, 0, 65, 66, 2, 0, 79, + 79, 150, 150, 2, 0, 159, 159, 304, 304, 4, 0, 277, 277, 311, 311, 315, + 315, 320, 320, 2, 0, 166, 166, 168, 168, 2, 0, 102, 102, 290, 290, 2, 0, + 127, 127, 359, 359, 6, 0, 335, 336, 339, 339, 346, 346, 355, 355, 372, + 372, 383, 383, 2, 0, 28, 29, 77, 78, 2, 0, 159, 159, 195, 195, 3, 0, 67, + 67, 106, 106, 374, 374, 1, 0, 104, 105, 2, 0, 283, 283, 318, 318, 2, 0, + 314, 314, 346, 346, 2, 0, 314, 314, 383, 383, 2, 0, 211, 211, 331, 331, + 1, 0, 37, 38, 1, 0, 73, 74, 2, 0, 26, 26, 133, 133, 6, 0, 334, 334, 342, + 342, 345, 345, 364, 364, 366, 366, 371, 371, 2, 0, 372, 372, 375, 375, + 2, 0, 358, 358, 382, 382, 2, 0, 161, 161, 232, 232, 2, 0, 129, 129, 181, + 181, 2, 0, 141, 141, 222, 222, 3, 0, 40, 40, 142, 142, 183, 183, 6, 0, + 33, 33, 56, 56, 62, 62, 144, 145, 200, 201, 203, 203, 2, 0, 22, 22, 80, + 80, 1, 0, 169, 170, 1, 0, 51, 52, 2, 0, 42, 42, 157, 157, 8, 0, 21, 21, + 30, 30, 32, 32, 59, 61, 75, 75, 174, 174, 192, 193, 204, 205, 1, 0, 48, + 49, 3, 0, 39, 39, 128, 128, 209, 209, 1, 0, 296, 299, 1, 0, 4, 5, 2, 0, + 71, 71, 208, 208, 1, 0, 3, 4, 3, 0, 9, 10, 13, 13, 15, 15, 1, 0, 16, 19, + 2, 0, 301, 301, 319, 319, 2, 0, 285, 285, 308, 308, 2, 0, 284, 284, 307, + 307, 1, 0, 277, 323, 4726, 0, 1157, 1, 0, 0, 0, 2, 1161, 1, 0, 0, 0, 4, + 1179, 1, 0, 0, 0, 6, 1193, 1, 0, 0, 0, 8, 1197, 1, 0, 0, 0, 10, 1199, 1, + 0, 0, 0, 12, 1207, 1, 0, 0, 0, 14, 1211, 1, 0, 0, 0, 16, 1216, 1, 0, 0, + 0, 18, 1220, 1, 0, 0, 0, 20, 1225, 1, 0, 0, 0, 22, 1228, 1, 0, 0, 0, 24, + 1235, 1, 0, 0, 0, 26, 1241, 1, 0, 0, 0, 28, 1248, 1, 0, 0, 0, 30, 1252, + 1, 0, 0, 0, 32, 1272, 1, 0, 0, 0, 34, 1274, 1, 0, 0, 0, 36, 1277, 1, 0, + 0, 0, 38, 1279, 1, 0, 0, 0, 40, 1284, 1, 0, 0, 0, 42, 1292, 1, 0, 0, 0, + 44, 1298, 1, 0, 0, 0, 46, 1300, 1, 0, 0, 0, 48, 1302, 1, 0, 0, 0, 50, 1304, + 1, 0, 0, 0, 52, 1308, 1, 0, 0, 0, 54, 1310, 1, 0, 0, 0, 56, 1314, 1, 0, + 0, 0, 58, 1319, 1, 0, 0, 0, 60, 1327, 1, 0, 0, 0, 62, 1334, 1, 0, 0, 0, + 64, 1336, 1, 0, 0, 0, 66, 1346, 1, 0, 0, 0, 68, 1348, 1, 0, 0, 0, 70, 1355, + 1, 0, 0, 0, 72, 1365, 1, 0, 0, 0, 74, 1369, 1, 0, 0, 0, 76, 1373, 1, 0, + 0, 0, 78, 1383, 1, 0, 0, 0, 80, 1387, 1, 0, 0, 0, 82, 1390, 1, 0, 0, 0, + 84, 1398, 1, 0, 0, 0, 86, 1402, 1, 0, 0, 0, 88, 1409, 1, 0, 0, 0, 90, 1411, + 1, 0, 0, 0, 92, 1417, 1, 0, 0, 0, 94, 1419, 1, 0, 0, 0, 96, 1425, 1, 0, + 0, 0, 98, 1428, 1, 0, 0, 0, 100, 1434, 1, 0, 0, 0, 102, 1442, 1, 0, 0, + 0, 104, 1444, 1, 0, 0, 0, 106, 1453, 1, 0, 0, 0, 108, 1461, 1, 0, 0, 0, + 110, 1488, 1, 0, 0, 0, 112, 1512, 1, 0, 0, 0, 114, 1514, 1, 0, 0, 0, 116, + 1517, 1, 0, 0, 0, 118, 1522, 1, 0, 0, 0, 120, 1533, 1, 0, 0, 0, 122, 1565, + 1, 0, 0, 0, 124, 1567, 1, 0, 0, 0, 126, 1571, 1, 0, 0, 0, 128, 1583, 1, + 0, 0, 0, 130, 1587, 1, 0, 0, 0, 132, 1591, 1, 0, 0, 0, 134, 1593, 1, 0, + 0, 0, 136, 1598, 1, 0, 0, 0, 138, 1603, 1, 0, 0, 0, 140, 1605, 1, 0, 0, + 0, 142, 1610, 1, 0, 0, 0, 144, 1616, 1, 0, 0, 0, 146, 1620, 1, 0, 0, 0, + 148, 1626, 1, 0, 0, 0, 150, 1628, 1, 0, 0, 0, 152, 1631, 1, 0, 0, 0, 154, + 1634, 1, 0, 0, 0, 156, 1645, 1, 0, 0, 0, 158, 1647, 1, 0, 0, 0, 160, 1653, + 1, 0, 0, 0, 162, 1661, 1, 0, 0, 0, 164, 1665, 1, 0, 0, 0, 166, 1668, 1, + 0, 0, 0, 168, 1678, 1, 0, 0, 0, 170, 1680, 1, 0, 0, 0, 172, 1684, 1, 0, + 0, 0, 174, 1689, 1, 0, 0, 0, 176, 1694, 1, 0, 0, 0, 178, 1702, 1, 0, 0, + 0, 180, 1704, 1, 0, 0, 0, 182, 1706, 1, 0, 0, 0, 184, 1708, 1, 0, 0, 0, + 186, 1722, 1, 0, 0, 0, 188, 1736, 1, 0, 0, 0, 190, 1738, 1, 0, 0, 0, 192, + 1742, 1, 0, 0, 0, 194, 1754, 1, 0, 0, 0, 196, 1756, 1, 0, 0, 0, 198, 1759, + 1, 0, 0, 0, 200, 1763, 1, 0, 0, 0, 202, 1766, 1, 0, 0, 0, 204, 1774, 1, + 0, 0, 0, 206, 1777, 1, 0, 0, 0, 208, 1783, 1, 0, 0, 0, 210, 1790, 1, 0, + 0, 0, 212, 1794, 1, 0, 0, 0, 214, 1796, 1, 0, 0, 0, 216, 1799, 1, 0, 0, + 0, 218, 1811, 1, 0, 0, 0, 220, 1814, 1, 0, 0, 0, 222, 1818, 1, 0, 0, 0, + 224, 1820, 1, 0, 0, 0, 226, 1825, 1, 0, 0, 0, 228, 1828, 1, 0, 0, 0, 230, + 1841, 1, 0, 0, 0, 232, 1843, 1, 0, 0, 0, 234, 1848, 1, 0, 0, 0, 236, 1851, + 1, 0, 0, 0, 238, 1854, 1, 0, 0, 0, 240, 1856, 1, 0, 0, 0, 242, 1872, 1, + 0, 0, 0, 244, 1879, 1, 0, 0, 0, 246, 1881, 1, 0, 0, 0, 248, 1885, 1, 0, + 0, 0, 250, 1894, 1, 0, 0, 0, 252, 1902, 1, 0, 0, 0, 254, 1906, 1, 0, 0, + 0, 256, 1909, 1, 0, 0, 0, 258, 1938, 1, 0, 0, 0, 260, 1946, 1, 0, 0, 0, + 262, 1950, 1, 0, 0, 0, 264, 1953, 1, 0, 0, 0, 266, 1956, 1, 0, 0, 0, 268, + 1961, 1, 0, 0, 0, 270, 1969, 1, 0, 0, 0, 272, 1976, 1, 0, 0, 0, 274, 1979, + 1, 0, 0, 0, 276, 1986, 1, 0, 0, 0, 278, 1989, 1, 0, 0, 0, 280, 1993, 1, + 0, 0, 0, 282, 1999, 1, 0, 0, 0, 284, 2007, 1, 0, 0, 0, 286, 2016, 1, 0, + 0, 0, 288, 2024, 1, 0, 0, 0, 290, 2026, 1, 0, 0, 0, 292, 2029, 1, 0, 0, + 0, 294, 2032, 1, 0, 0, 0, 296, 2036, 1, 0, 0, 0, 298, 2039, 1, 0, 0, 0, + 300, 2047, 1, 0, 0, 0, 302, 2050, 1, 0, 0, 0, 304, 2061, 1, 0, 0, 0, 306, + 2063, 1, 0, 0, 0, 308, 2066, 1, 0, 0, 0, 310, 2074, 1, 0, 0, 0, 312, 2081, + 1, 0, 0, 0, 314, 2083, 1, 0, 0, 0, 316, 2092, 1, 0, 0, 0, 318, 2099, 1, + 0, 0, 0, 320, 2102, 1, 0, 0, 0, 322, 2105, 1, 0, 0, 0, 324, 2108, 1, 0, + 0, 0, 326, 2110, 1, 0, 0, 0, 328, 2118, 1, 0, 0, 0, 330, 2127, 1, 0, 0, + 0, 332, 2136, 1, 0, 0, 0, 334, 2138, 1, 0, 0, 0, 336, 2144, 1, 0, 0, 0, + 338, 2150, 1, 0, 0, 0, 340, 2164, 1, 0, 0, 0, 342, 2177, 1, 0, 0, 0, 344, + 2181, 1, 0, 0, 0, 346, 2183, 1, 0, 0, 0, 348, 2187, 1, 0, 0, 0, 350, 2192, + 1, 0, 0, 0, 352, 2194, 1, 0, 0, 0, 354, 2201, 1, 0, 0, 0, 356, 2203, 1, + 0, 0, 0, 358, 2213, 1, 0, 0, 0, 360, 2219, 1, 0, 0, 0, 362, 2221, 1, 0, + 0, 0, 364, 2229, 1, 0, 0, 0, 366, 2237, 1, 0, 0, 0, 368, 2245, 1, 0, 0, + 0, 370, 2257, 1, 0, 0, 0, 372, 2274, 1, 0, 0, 0, 374, 2277, 1, 0, 0, 0, + 376, 2288, 1, 0, 0, 0, 378, 2293, 1, 0, 0, 0, 380, 2297, 1, 0, 0, 0, 382, + 2299, 1, 0, 0, 0, 384, 2304, 1, 0, 0, 0, 386, 2312, 1, 0, 0, 0, 388, 2314, + 1, 0, 0, 0, 390, 2317, 1, 0, 0, 0, 392, 2321, 1, 0, 0, 0, 394, 2323, 1, + 0, 0, 0, 396, 2326, 1, 0, 0, 0, 398, 2330, 1, 0, 0, 0, 400, 2338, 1, 0, + 0, 0, 402, 2344, 1, 0, 0, 0, 404, 2353, 1, 0, 0, 0, 406, 2355, 1, 0, 0, + 0, 408, 2359, 1, 0, 0, 0, 410, 2363, 1, 0, 0, 0, 412, 2367, 1, 0, 0, 0, + 414, 2371, 1, 0, 0, 0, 416, 2375, 1, 0, 0, 0, 418, 2379, 1, 0, 0, 0, 420, + 2383, 1, 0, 0, 0, 422, 2385, 1, 0, 0, 0, 424, 2398, 1, 0, 0, 0, 426, 2401, + 1, 0, 0, 0, 428, 2413, 1, 0, 0, 0, 430, 2426, 1, 0, 0, 0, 432, 2428, 1, + 0, 0, 0, 434, 2434, 1, 0, 0, 0, 436, 2436, 1, 0, 0, 0, 438, 2440, 1, 0, + 0, 0, 440, 2450, 1, 0, 0, 0, 442, 2452, 1, 0, 0, 0, 444, 2461, 1, 0, 0, + 0, 446, 2463, 1, 0, 0, 0, 448, 2467, 1, 0, 0, 0, 450, 2471, 1, 0, 0, 0, + 452, 2475, 1, 0, 0, 0, 454, 2479, 1, 0, 0, 0, 456, 2483, 1, 0, 0, 0, 458, + 2487, 1, 0, 0, 0, 460, 2494, 1, 0, 0, 0, 462, 2496, 1, 0, 0, 0, 464, 2506, + 1, 0, 0, 0, 466, 2516, 1, 0, 0, 0, 468, 2526, 1, 0, 0, 0, 470, 2540, 1, + 0, 0, 0, 472, 2542, 1, 0, 0, 0, 474, 2545, 1, 0, 0, 0, 476, 2550, 1, 0, + 0, 0, 478, 2559, 1, 0, 0, 0, 480, 2561, 1, 0, 0, 0, 482, 2564, 1, 0, 0, + 0, 484, 2567, 1, 0, 0, 0, 486, 2570, 1, 0, 0, 0, 488, 2573, 1, 0, 0, 0, + 490, 2577, 1, 0, 0, 0, 492, 2581, 1, 0, 0, 0, 494, 2586, 1, 0, 0, 0, 496, + 2588, 1, 0, 0, 0, 498, 2596, 1, 0, 0, 0, 500, 2598, 1, 0, 0, 0, 502, 2601, + 1, 0, 0, 0, 504, 2604, 1, 0, 0, 0, 506, 2612, 1, 0, 0, 0, 508, 2616, 1, + 0, 0, 0, 510, 2618, 1, 0, 0, 0, 512, 2621, 1, 0, 0, 0, 514, 2634, 1, 0, + 0, 0, 516, 2636, 1, 0, 0, 0, 518, 2638, 1, 0, 0, 0, 520, 2641, 1, 0, 0, + 0, 522, 2645, 1, 0, 0, 0, 524, 2653, 1, 0, 0, 0, 526, 2660, 1, 0, 0, 0, + 528, 2662, 1, 0, 0, 0, 530, 2668, 1, 0, 0, 0, 532, 2670, 1, 0, 0, 0, 534, + 2673, 1, 0, 0, 0, 536, 2676, 1, 0, 0, 0, 538, 2681, 1, 0, 0, 0, 540, 2687, + 1, 0, 0, 0, 542, 2689, 1, 0, 0, 0, 544, 2696, 1, 0, 0, 0, 546, 2698, 1, + 0, 0, 0, 548, 2700, 1, 0, 0, 0, 550, 2704, 1, 0, 0, 0, 552, 2719, 1, 0, + 0, 0, 554, 2729, 1, 0, 0, 0, 556, 2732, 1, 0, 0, 0, 558, 2736, 1, 0, 0, + 0, 560, 2740, 1, 0, 0, 0, 562, 2743, 1, 0, 0, 0, 564, 2752, 1, 0, 0, 0, + 566, 2756, 1, 0, 0, 0, 568, 2759, 1, 0, 0, 0, 570, 2782, 1, 0, 0, 0, 572, + 2784, 1, 0, 0, 0, 574, 2786, 1, 0, 0, 0, 576, 2790, 1, 0, 0, 0, 578, 2792, + 1, 0, 0, 0, 580, 2802, 1, 0, 0, 0, 582, 2806, 1, 0, 0, 0, 584, 2814, 1, + 0, 0, 0, 586, 2825, 1, 0, 0, 0, 588, 2839, 1, 0, 0, 0, 590, 2846, 1, 0, + 0, 0, 592, 2848, 1, 0, 0, 0, 594, 2855, 1, 0, 0, 0, 596, 2858, 1, 0, 0, + 0, 598, 2862, 1, 0, 0, 0, 600, 2864, 1, 0, 0, 0, 602, 2868, 1, 0, 0, 0, + 604, 2879, 1, 0, 0, 0, 606, 2885, 1, 0, 0, 0, 608, 2898, 1, 0, 0, 0, 610, + 2905, 1, 0, 0, 0, 612, 2912, 1, 0, 0, 0, 614, 2915, 1, 0, 0, 0, 616, 2919, + 1, 0, 0, 0, 618, 2921, 1, 0, 0, 0, 620, 2925, 1, 0, 0, 0, 622, 2927, 1, + 0, 0, 0, 624, 2931, 1, 0, 0, 0, 626, 2935, 1, 0, 0, 0, 628, 2939, 1, 0, + 0, 0, 630, 2943, 1, 0, 0, 0, 632, 2947, 1, 0, 0, 0, 634, 2960, 1, 0, 0, + 0, 636, 2971, 1, 0, 0, 0, 638, 2973, 1, 0, 0, 0, 640, 2975, 1, 0, 0, 0, + 642, 2980, 1, 0, 0, 0, 644, 2984, 1, 0, 0, 0, 646, 2986, 1, 0, 0, 0, 648, + 2992, 1, 0, 0, 0, 650, 2998, 1, 0, 0, 0, 652, 3004, 1, 0, 0, 0, 654, 3006, + 1, 0, 0, 0, 656, 3008, 1, 0, 0, 0, 658, 3010, 1, 0, 0, 0, 660, 3019, 1, + 0, 0, 0, 662, 3021, 1, 0, 0, 0, 664, 3029, 1, 0, 0, 0, 666, 3035, 1, 0, + 0, 0, 668, 3043, 1, 0, 0, 0, 670, 3049, 1, 0, 0, 0, 672, 3052, 1, 0, 0, + 0, 674, 3114, 1, 0, 0, 0, 676, 3135, 1, 0, 0, 0, 678, 3144, 1, 0, 0, 0, + 680, 3146, 1, 0, 0, 0, 682, 3185, 1, 0, 0, 0, 684, 3222, 1, 0, 0, 0, 686, + 3224, 1, 0, 0, 0, 688, 3226, 1, 0, 0, 0, 690, 3228, 1, 0, 0, 0, 692, 3232, + 1, 0, 0, 0, 694, 3236, 1, 0, 0, 0, 696, 3240, 1, 0, 0, 0, 698, 3288, 1, + 0, 0, 0, 700, 3334, 1, 0, 0, 0, 702, 3380, 1, 0, 0, 0, 704, 3382, 1, 0, + 0, 0, 706, 3395, 1, 0, 0, 0, 708, 3397, 1, 0, 0, 0, 710, 3444, 1, 0, 0, + 0, 712, 3448, 1, 0, 0, 0, 714, 3455, 1, 0, 0, 0, 716, 3469, 1, 0, 0, 0, + 718, 3485, 1, 0, 0, 0, 720, 3487, 1, 0, 0, 0, 722, 3503, 1, 0, 0, 0, 724, + 3517, 1, 0, 0, 0, 726, 3519, 1, 0, 0, 0, 728, 3532, 1, 0, 0, 0, 730, 3538, + 1, 0, 0, 0, 732, 3542, 1, 0, 0, 0, 734, 3544, 1, 0, 0, 0, 736, 3549, 1, + 0, 0, 0, 738, 3553, 1, 0, 0, 0, 740, 3556, 1, 0, 0, 0, 742, 3563, 1, 0, + 0, 0, 744, 3571, 1, 0, 0, 0, 746, 3577, 1, 0, 0, 0, 748, 3579, 1, 0, 0, + 0, 750, 3584, 1, 0, 0, 0, 752, 3592, 1, 0, 0, 0, 754, 3594, 1, 0, 0, 0, + 756, 3599, 1, 0, 0, 0, 758, 3605, 1, 0, 0, 0, 760, 3609, 1, 0, 0, 0, 762, + 3611, 1, 0, 0, 0, 764, 3627, 1, 0, 0, 0, 766, 3629, 1, 0, 0, 0, 768, 3635, + 1, 0, 0, 0, 770, 3643, 1, 0, 0, 0, 772, 3646, 1, 0, 0, 0, 774, 3652, 1, + 0, 0, 0, 776, 3663, 1, 0, 0, 0, 778, 3665, 1, 0, 0, 0, 780, 3667, 1, 0, + 0, 0, 782, 3687, 1, 0, 0, 0, 784, 3690, 1, 0, 0, 0, 786, 3696, 1, 0, 0, + 0, 788, 3699, 1, 0, 0, 0, 790, 3706, 1, 0, 0, 0, 792, 3715, 1, 0, 0, 0, + 794, 3718, 1, 0, 0, 0, 796, 3724, 1, 0, 0, 0, 798, 3727, 1, 0, 0, 0, 800, + 3736, 1, 0, 0, 0, 802, 3744, 1, 0, 0, 0, 804, 3746, 1, 0, 0, 0, 806, 3748, + 1, 0, 0, 0, 808, 3756, 1, 0, 0, 0, 810, 3764, 1, 0, 0, 0, 812, 3766, 1, + 0, 0, 0, 814, 3780, 1, 0, 0, 0, 816, 3794, 1, 0, 0, 0, 818, 3819, 1, 0, + 0, 0, 820, 3859, 1, 0, 0, 0, 822, 3861, 1, 0, 0, 0, 824, 3868, 1, 0, 0, + 0, 826, 3870, 1, 0, 0, 0, 828, 3877, 1, 0, 0, 0, 830, 3882, 1, 0, 0, 0, + 832, 3887, 1, 0, 0, 0, 834, 3896, 1, 0, 0, 0, 836, 3905, 1, 0, 0, 0, 838, + 3907, 1, 0, 0, 0, 840, 3909, 1, 0, 0, 0, 842, 3922, 1, 0, 0, 0, 844, 3932, + 1, 0, 0, 0, 846, 3938, 1, 0, 0, 0, 848, 3952, 1, 0, 0, 0, 850, 3956, 1, + 0, 0, 0, 852, 3960, 1, 0, 0, 0, 854, 3964, 1, 0, 0, 0, 856, 3966, 1, 0, + 0, 0, 858, 3968, 1, 0, 0, 0, 860, 3974, 1, 0, 0, 0, 862, 3979, 1, 0, 0, + 0, 864, 3999, 1, 0, 0, 0, 866, 4003, 1, 0, 0, 0, 868, 4005, 1, 0, 0, 0, + 870, 4017, 1, 0, 0, 0, 872, 4028, 1, 0, 0, 0, 874, 4033, 1, 0, 0, 0, 876, + 4038, 1, 0, 0, 0, 878, 4043, 1, 0, 0, 0, 880, 4045, 1, 0, 0, 0, 882, 4064, + 1, 0, 0, 0, 884, 4068, 1, 0, 0, 0, 886, 4070, 1, 0, 0, 0, 888, 4072, 1, + 0, 0, 0, 890, 4081, 1, 0, 0, 0, 892, 4083, 1, 0, 0, 0, 894, 4091, 1, 0, + 0, 0, 896, 4093, 1, 0, 0, 0, 898, 4101, 1, 0, 0, 0, 900, 4108, 1, 0, 0, + 0, 902, 4110, 1, 0, 0, 0, 904, 4112, 1, 0, 0, 0, 906, 4115, 1, 0, 0, 0, + 908, 4119, 1, 0, 0, 0, 910, 4121, 1, 0, 0, 0, 912, 4126, 1, 0, 0, 0, 914, + 4128, 1, 0, 0, 0, 916, 4130, 1, 0, 0, 0, 918, 4132, 1, 0, 0, 0, 920, 4137, + 1, 0, 0, 0, 922, 4144, 1, 0, 0, 0, 924, 4146, 1, 0, 0, 0, 926, 4151, 1, + 0, 0, 0, 928, 4155, 1, 0, 0, 0, 930, 4157, 1, 0, 0, 0, 932, 4164, 1, 0, + 0, 0, 934, 4169, 1, 0, 0, 0, 936, 4172, 1, 0, 0, 0, 938, 4180, 1, 0, 0, + 0, 940, 4188, 1, 0, 0, 0, 942, 4191, 1, 0, 0, 0, 944, 4195, 1, 0, 0, 0, + 946, 4201, 1, 0, 0, 0, 948, 4209, 1, 0, 0, 0, 950, 4213, 1, 0, 0, 0, 952, + 4220, 1, 0, 0, 0, 954, 4246, 1, 0, 0, 0, 956, 4251, 1, 0, 0, 0, 958, 4263, + 1, 0, 0, 0, 960, 4265, 1, 0, 0, 0, 962, 4267, 1, 0, 0, 0, 964, 4272, 1, + 0, 0, 0, 966, 4277, 1, 0, 0, 0, 968, 4282, 1, 0, 0, 0, 970, 4287, 1, 0, + 0, 0, 972, 4294, 1, 0, 0, 0, 974, 4296, 1, 0, 0, 0, 976, 4298, 1, 0, 0, + 0, 978, 4303, 1, 0, 0, 0, 980, 4305, 1, 0, 0, 0, 982, 4312, 1, 0, 0, 0, + 984, 4314, 1, 0, 0, 0, 986, 4316, 1, 0, 0, 0, 988, 4321, 1, 0, 0, 0, 990, + 4326, 1, 0, 0, 0, 992, 4331, 1, 0, 0, 0, 994, 4338, 1, 0, 0, 0, 996, 4340, + 1, 0, 0, 0, 998, 4342, 1, 0, 0, 0, 1000, 4347, 1, 0, 0, 0, 1002, 4352, + 1, 0, 0, 0, 1004, 4357, 1, 0, 0, 0, 1006, 4359, 1, 0, 0, 0, 1008, 4368, + 1, 0, 0, 0, 1010, 4372, 1, 0, 0, 0, 1012, 4374, 1, 0, 0, 0, 1014, 4376, + 1, 0, 0, 0, 1016, 4378, 1, 0, 0, 0, 1018, 4380, 1, 0, 0, 0, 1020, 4382, + 1, 0, 0, 0, 1022, 4389, 1, 0, 0, 0, 1024, 4398, 1, 0, 0, 0, 1026, 4407, + 1, 0, 0, 0, 1028, 4409, 1, 0, 0, 0, 1030, 4424, 1, 0, 0, 0, 1032, 4433, + 1, 0, 0, 0, 1034, 4437, 1, 0, 0, 0, 1036, 4441, 1, 0, 0, 0, 1038, 4445, + 1, 0, 0, 0, 1040, 4447, 1, 0, 0, 0, 1042, 4449, 1, 0, 0, 0, 1044, 4456, + 1, 0, 0, 0, 1046, 4460, 1, 0, 0, 0, 1048, 4462, 1, 0, 0, 0, 1050, 4466, + 1, 0, 0, 0, 1052, 4468, 1, 0, 0, 0, 1054, 4475, 1, 0, 0, 0, 1056, 4477, + 1, 0, 0, 0, 1058, 4479, 1, 0, 0, 0, 1060, 4481, 1, 0, 0, 0, 1062, 4483, + 1, 0, 0, 0, 1064, 4487, 1, 0, 0, 0, 1066, 4489, 1, 0, 0, 0, 1068, 4491, + 1, 0, 0, 0, 1070, 4493, 1, 0, 0, 0, 1072, 4495, 1, 0, 0, 0, 1074, 4499, + 1, 0, 0, 0, 1076, 4501, 1, 0, 0, 0, 1078, 4503, 1, 0, 0, 0, 1080, 4505, + 1, 0, 0, 0, 1082, 4507, 1, 0, 0, 0, 1084, 4509, 1, 0, 0, 0, 1086, 4511, + 1, 0, 0, 0, 1088, 4513, 1, 0, 0, 0, 1090, 4515, 1, 0, 0, 0, 1092, 4517, + 1, 0, 0, 0, 1094, 4521, 1, 0, 0, 0, 1096, 4531, 1, 0, 0, 0, 1098, 4536, + 1, 0, 0, 0, 1100, 4538, 1, 0, 0, 0, 1102, 4541, 1, 0, 0, 0, 1104, 4544, + 1, 0, 0, 0, 1106, 4547, 1, 0, 0, 0, 1108, 4549, 1, 0, 0, 0, 1110, 4554, + 1, 0, 0, 0, 1112, 4558, 1, 0, 0, 0, 1114, 4560, 1, 0, 0, 0, 1116, 4562, + 1, 0, 0, 0, 1118, 4566, 1, 0, 0, 0, 1120, 4573, 1, 0, 0, 0, 1122, 4575, + 1, 0, 0, 0, 1124, 4577, 1, 0, 0, 0, 1126, 4579, 1, 0, 0, 0, 1128, 4581, + 1, 0, 0, 0, 1130, 4583, 1, 0, 0, 0, 1132, 4585, 1, 0, 0, 0, 1134, 4587, + 1, 0, 0, 0, 1136, 4589, 1, 0, 0, 0, 1138, 4592, 1, 0, 0, 0, 1140, 4594, + 1, 0, 0, 0, 1142, 4596, 1, 0, 0, 0, 1144, 4598, 1, 0, 0, 0, 1146, 4600, + 1, 0, 0, 0, 1148, 1150, 3, 2, 1, 0, 1149, 1151, 3, 34, 17, 0, 1150, 1149, + 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, + 5, 0, 0, 1, 1153, 1158, 1, 0, 0, 0, 1154, 1155, 3, 34, 17, 0, 1155, 1156, + 5, 0, 0, 1, 1156, 1158, 1, 0, 0, 0, 1157, 1148, 1, 0, 0, 0, 1157, 1154, + 1, 0, 0, 0, 1158, 1, 1, 0, 0, 0, 1159, 1162, 3, 4, 2, 0, 1160, 1162, 3, + 6, 3, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 3, 1, 0, + 0, 0, 1163, 1165, 3, 30, 15, 0, 1164, 1163, 1, 0, 0, 0, 1165, 1166, 1, + 0, 0, 0, 1166, 1164, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 1180, 1, + 0, 0, 0, 1168, 1170, 3, 10, 5, 0, 1169, 1168, 1, 0, 0, 0, 1170, 1171, 1, + 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1176, 1, + 0, 0, 0, 1173, 1175, 3, 30, 15, 0, 1174, 1173, 1, 0, 0, 0, 1175, 1178, + 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1180, + 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1179, 1164, 1, 0, 0, 0, 1179, 1169, + 1, 0, 0, 0, 1180, 5, 1, 0, 0, 0, 1181, 1186, 3, 38, 19, 0, 1182, 1184, + 3, 52, 26, 0, 1183, 1185, 3, 8, 4, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, + 1, 0, 0, 0, 1185, 1187, 1, 0, 0, 0, 1186, 1182, 1, 0, 0, 0, 1186, 1187, + 1, 0, 0, 0, 1187, 1194, 1, 0, 0, 0, 1188, 1190, 3, 52, 26, 0, 1189, 1191, + 3, 8, 4, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1194, + 1, 0, 0, 0, 1192, 1194, 3, 8, 4, 0, 1193, 1181, 1, 0, 0, 0, 1193, 1188, + 1, 0, 0, 0, 1193, 1192, 1, 0, 0, 0, 1194, 7, 1, 0, 0, 0, 1195, 1198, 3, + 46, 23, 0, 1196, 1198, 3, 48, 24, 0, 1197, 1195, 1, 0, 0, 0, 1197, 1196, + 1, 0, 0, 0, 1198, 9, 1, 0, 0, 0, 1199, 1200, 5, 188, 0, 0, 1200, 1205, + 5, 190, 0, 0, 1201, 1206, 3, 12, 6, 0, 1202, 1206, 3, 14, 7, 0, 1203, 1206, + 3, 16, 8, 0, 1204, 1206, 3, 20, 10, 0, 1205, 1201, 1, 0, 0, 0, 1205, 1202, + 1, 0, 0, 0, 1205, 1203, 1, 0, 0, 0, 1205, 1204, 1, 0, 0, 0, 1206, 11, 1, + 0, 0, 0, 1207, 1208, 5, 185, 0, 0, 1208, 1209, 3, 538, 269, 0, 1209, 13, + 1, 0, 0, 0, 1210, 1212, 5, 305, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, + 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 5, 289, 0, 0, 1214, 1215, + 3, 88, 44, 0, 1215, 15, 1, 0, 0, 0, 1216, 1217, 5, 207, 0, 0, 1217, 1218, + 5, 323, 0, 0, 1218, 1219, 3, 18, 9, 0, 1219, 17, 1, 0, 0, 0, 1220, 1221, + 3, 1114, 557, 0, 1221, 19, 1, 0, 0, 0, 1222, 1226, 3, 22, 11, 0, 1223, + 1226, 3, 24, 12, 0, 1224, 1226, 3, 26, 13, 0, 1225, 1222, 1, 0, 0, 0, 1225, + 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 21, 1, 0, 0, 0, 1227, 1229, + 5, 305, 0, 0, 1228, 1227, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, + 1, 0, 0, 0, 1230, 1231, 5, 289, 0, 0, 1231, 1232, 3, 28, 14, 0, 1232, 1233, + 3, 72, 36, 0, 1233, 23, 1, 0, 0, 0, 1234, 1236, 5, 278, 0, 0, 1235, 1234, + 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, + 5, 313, 0, 0, 1238, 1239, 3, 28, 14, 0, 1239, 1240, 3, 78, 39, 0, 1240, + 25, 1, 0, 0, 0, 1241, 1242, 5, 225, 0, 0, 1242, 1243, 3, 28, 14, 0, 1243, + 1244, 3, 84, 42, 0, 1244, 27, 1, 0, 0, 0, 1245, 1246, 5, 108, 0, 0, 1246, + 1247, 5, 152, 0, 0, 1247, 1249, 5, 89, 0, 0, 1248, 1245, 1, 0, 0, 0, 1248, + 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1251, 3, 36, 18, 0, 1251, + 29, 1, 0, 0, 0, 1252, 1253, 5, 188, 0, 0, 1253, 1255, 5, 179, 0, 0, 1254, + 1256, 3, 32, 16, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, + 31, 1, 0, 0, 0, 1257, 1259, 5, 22, 0, 0, 1258, 1257, 1, 0, 0, 0, 1258, + 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1273, 7, 0, 0, 0, 1261, + 1273, 5, 185, 0, 0, 1262, 1264, 5, 305, 0, 0, 1263, 1262, 1, 0, 0, 0, 1263, + 1264, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1273, 5, 289, 0, 0, 1266, + 1267, 5, 207, 0, 0, 1267, 1273, 5, 323, 0, 0, 1268, 1270, 5, 164, 0, 0, + 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, + 1271, 1273, 3, 36, 18, 0, 1272, 1258, 1, 0, 0, 0, 1272, 1261, 1, 0, 0, + 0, 1272, 1263, 1, 0, 0, 0, 1272, 1266, 1, 0, 0, 0, 1272, 1269, 1, 0, 0, + 0, 1273, 33, 1, 0, 0, 0, 1274, 1275, 5, 188, 0, 0, 1275, 1276, 5, 54, 0, + 0, 1276, 35, 1, 0, 0, 0, 1277, 1278, 5, 326, 0, 0, 1278, 37, 1, 0, 0, 0, + 1279, 1280, 5, 199, 0, 0, 1280, 1282, 5, 316, 0, 0, 1281, 1283, 3, 40, + 20, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 39, 1, 0, + 0, 0, 1284, 1289, 3, 42, 21, 0, 1285, 1286, 5, 360, 0, 0, 1286, 1288, 3, + 42, 21, 0, 1287, 1285, 1, 0, 0, 0, 1288, 1291, 1, 0, 0, 0, 1289, 1287, + 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 41, 1, 0, 0, 0, 1291, 1289, 1, + 0, 0, 0, 1292, 1293, 3, 44, 22, 0, 1293, 43, 1, 0, 0, 0, 1294, 1295, 5, + 306, 0, 0, 1295, 1299, 5, 303, 0, 0, 1296, 1297, 5, 306, 0, 0, 1297, 1299, + 5, 322, 0, 0, 1298, 1294, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 45, + 1, 0, 0, 0, 1300, 1301, 5, 182, 0, 0, 1301, 47, 1, 0, 0, 0, 1302, 1303, + 5, 57, 0, 0, 1303, 49, 1, 0, 0, 0, 1304, 1305, 5, 368, 0, 0, 1305, 1306, + 3, 52, 26, 0, 1306, 1307, 5, 379, 0, 0, 1307, 51, 1, 0, 0, 0, 1308, 1309, + 3, 58, 29, 0, 1309, 53, 1, 0, 0, 0, 1310, 1311, 5, 368, 0, 0, 1311, 1312, + 3, 58, 29, 0, 1312, 1313, 5, 379, 0, 0, 1313, 55, 1, 0, 0, 0, 1314, 1315, + 5, 368, 0, 0, 1315, 1316, 3, 58, 29, 0, 1316, 1317, 5, 379, 0, 0, 1317, + 57, 1, 0, 0, 0, 1318, 1320, 3, 290, 145, 0, 1319, 1318, 1, 0, 0, 0, 1319, + 1320, 1, 0, 0, 0, 1320, 1322, 1, 0, 0, 0, 1321, 1323, 3, 60, 30, 0, 1322, + 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, + 1325, 3, 64, 32, 0, 1325, 59, 1, 0, 0, 0, 1326, 1328, 3, 62, 31, 0, 1327, + 1326, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1327, 1, 0, 0, 0, 1329, + 1330, 1, 0, 0, 0, 1330, 61, 1, 0, 0, 0, 1331, 1335, 3, 70, 35, 0, 1332, + 1335, 3, 76, 38, 0, 1333, 1335, 3, 82, 41, 0, 1334, 1331, 1, 0, 0, 0, 1334, + 1332, 1, 0, 0, 0, 1334, 1333, 1, 0, 0, 0, 1335, 63, 1, 0, 0, 0, 1336, 1340, + 3, 66, 33, 0, 1337, 1339, 3, 68, 34, 0, 1338, 1337, 1, 0, 0, 0, 1339, 1342, + 1, 0, 0, 0, 1340, 1338, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 65, 1, + 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1343, 1347, 3, 182, 91, 0, 1344, 1347, + 3, 98, 49, 0, 1345, 1347, 3, 130, 65, 0, 1346, 1343, 1, 0, 0, 0, 1346, + 1344, 1, 0, 0, 0, 1346, 1345, 1, 0, 0, 0, 1347, 67, 1, 0, 0, 0, 1348, 1350, + 5, 149, 0, 0, 1349, 1351, 3, 502, 251, 0, 1350, 1349, 1, 0, 0, 0, 1350, + 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1353, 3, 66, 33, 0, 1353, + 69, 1, 0, 0, 0, 1354, 1356, 5, 305, 0, 0, 1355, 1354, 1, 0, 0, 0, 1355, + 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1358, 5, 289, 0, 0, 1358, + 1359, 3, 1092, 546, 0, 1359, 1360, 3, 72, 36, 0, 1360, 71, 1, 0, 0, 0, + 1361, 1363, 3, 676, 338, 0, 1362, 1361, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, + 0, 1363, 1364, 1, 0, 0, 0, 1364, 1366, 3, 738, 369, 0, 1365, 1362, 1, 0, + 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 3, 74, + 37, 0, 1368, 73, 1, 0, 0, 0, 1369, 1370, 5, 364, 0, 0, 1370, 1371, 3, 88, + 44, 0, 1371, 75, 1, 0, 0, 0, 1372, 1374, 5, 278, 0, 0, 1373, 1372, 1, 0, + 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1376, 5, 313, + 0, 0, 1376, 1377, 3, 1092, 546, 0, 1377, 1378, 3, 78, 39, 0, 1378, 77, + 1, 0, 0, 0, 1379, 1381, 3, 676, 338, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, + 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 3, 744, 372, 0, 1383, 1380, + 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, + 3, 80, 40, 0, 1386, 79, 1, 0, 0, 0, 1387, 1388, 5, 364, 0, 0, 1388, 1389, + 3, 92, 46, 0, 1389, 81, 1, 0, 0, 0, 1390, 1391, 5, 225, 0, 0, 1391, 1392, + 3, 1092, 546, 0, 1392, 1393, 3, 84, 42, 0, 1393, 83, 1, 0, 0, 0, 1394, + 1396, 3, 676, 338, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, + 1397, 1, 0, 0, 0, 1397, 1399, 3, 674, 337, 0, 1398, 1395, 1, 0, 0, 0, 1398, + 1399, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 3, 86, 43, 0, 1401, + 85, 1, 0, 0, 0, 1402, 1403, 5, 364, 0, 0, 1403, 1404, 3, 818, 409, 0, 1404, + 87, 1, 0, 0, 0, 1405, 1410, 3, 554, 277, 0, 1406, 1410, 3, 96, 48, 0, 1407, + 1410, 3, 1058, 529, 0, 1408, 1410, 3, 90, 45, 0, 1409, 1405, 1, 0, 0, 0, + 1409, 1406, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1408, 1, 0, 0, 0, + 1410, 89, 1, 0, 0, 0, 1411, 1412, 7, 1, 0, 0, 1412, 91, 1, 0, 0, 0, 1413, + 1418, 3, 94, 47, 0, 1414, 1418, 3, 564, 282, 0, 1415, 1418, 3, 96, 48, + 0, 1416, 1418, 3, 1058, 529, 0, 1417, 1413, 1, 0, 0, 0, 1417, 1414, 1, + 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1416, 1, 0, 0, 0, 1418, 93, 1, 0, + 0, 0, 1419, 1420, 3, 56, 28, 0, 1420, 95, 1, 0, 0, 0, 1421, 1422, 5, 228, + 0, 0, 1422, 1426, 3, 842, 421, 0, 1423, 1426, 3, 844, 422, 0, 1424, 1426, + 3, 848, 424, 0, 1425, 1421, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1424, + 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1429, 3, 100, 50, 0, 1428, 1427, + 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1428, 1, 0, 0, 0, 1430, 1431, + 1, 0, 0, 0, 1431, 99, 1, 0, 0, 0, 1432, 1435, 3, 102, 51, 0, 1433, 1435, + 3, 128, 64, 0, 1434, 1432, 1, 0, 0, 0, 1434, 1433, 1, 0, 0, 0, 1435, 101, + 1, 0, 0, 0, 1436, 1443, 3, 104, 52, 0, 1437, 1443, 3, 106, 53, 0, 1438, + 1443, 3, 108, 54, 0, 1439, 1443, 3, 118, 59, 0, 1440, 1443, 3, 120, 60, + 0, 1441, 1443, 3, 126, 63, 0, 1442, 1436, 1, 0, 0, 0, 1442, 1437, 1, 0, + 0, 0, 1442, 1438, 1, 0, 0, 0, 1442, 1439, 1, 0, 0, 0, 1442, 1440, 1, 0, + 0, 0, 1442, 1441, 1, 0, 0, 0, 1443, 103, 1, 0, 0, 0, 1444, 1445, 5, 63, + 0, 0, 1445, 1449, 5, 185, 0, 0, 1446, 1447, 5, 108, 0, 0, 1447, 1448, 5, + 152, 0, 0, 1448, 1450, 5, 89, 0, 0, 1449, 1446, 1, 0, 0, 0, 1449, 1450, + 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 3, 542, 271, 0, 1452, 105, + 1, 0, 0, 0, 1453, 1454, 5, 82, 0, 0, 1454, 1457, 5, 185, 0, 0, 1455, 1456, + 5, 108, 0, 0, 1456, 1458, 5, 89, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, + 1, 0, 0, 0, 1458, 1459, 1, 0, 0, 0, 1459, 1460, 3, 542, 271, 0, 1460, 107, + 1, 0, 0, 0, 1461, 1477, 5, 63, 0, 0, 1462, 1464, 5, 305, 0, 0, 1463, 1462, + 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1469, + 5, 289, 0, 0, 1466, 1467, 5, 108, 0, 0, 1467, 1468, 5, 152, 0, 0, 1468, + 1470, 5, 89, 0, 0, 1469, 1466, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, + 1478, 1, 0, 0, 0, 1471, 1472, 5, 161, 0, 0, 1472, 1474, 5, 178, 0, 0, 1473, + 1475, 5, 305, 0, 0, 1474, 1473, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, + 1476, 1, 0, 0, 0, 1476, 1478, 5, 289, 0, 0, 1477, 1463, 1, 0, 0, 0, 1477, + 1471, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 1482, 3, 556, 278, 0, 1480, + 1483, 3, 110, 55, 0, 1481, 1483, 3, 112, 56, 0, 1482, 1480, 1, 0, 0, 0, + 1482, 1481, 1, 0, 0, 0, 1483, 1485, 1, 0, 0, 0, 1484, 1486, 3, 116, 58, + 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 109, 1, 0, 0, + 0, 1487, 1489, 3, 676, 338, 0, 1488, 1487, 1, 0, 0, 0, 1488, 1489, 1, 0, + 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1495, 5, 25, 0, 0, 1491, 1493, 5, 305, + 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, + 0, 0, 1494, 1496, 5, 289, 0, 0, 1495, 1492, 1, 0, 0, 0, 1495, 1496, 1, + 0, 0, 0, 1496, 111, 1, 0, 0, 0, 1497, 1513, 3, 114, 57, 0, 1498, 1500, + 3, 676, 338, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1501, + 1, 0, 0, 0, 1501, 1513, 3, 560, 280, 0, 1502, 1504, 3, 676, 338, 0, 1503, + 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1509, 1, 0, 0, 0, 1505, + 1507, 5, 305, 0, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, + 1508, 1, 0, 0, 0, 1508, 1510, 5, 289, 0, 0, 1509, 1506, 1, 0, 0, 0, 1509, + 1510, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1513, 3, 574, 287, 0, 1512, + 1497, 1, 0, 0, 0, 1512, 1499, 1, 0, 0, 0, 1512, 1503, 1, 0, 0, 0, 1513, + 113, 1, 0, 0, 0, 1514, 1515, 5, 131, 0, 0, 1515, 1516, 3, 88, 44, 0, 1516, + 115, 1, 0, 0, 0, 1517, 1518, 5, 27, 0, 0, 1518, 1519, 5, 58, 0, 0, 1519, + 1520, 5, 158, 0, 0, 1520, 1521, 3, 88, 44, 0, 1521, 117, 1, 0, 0, 0, 1522, + 1524, 5, 82, 0, 0, 1523, 1525, 5, 305, 0, 0, 1524, 1523, 1, 0, 0, 0, 1524, + 1525, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1529, 5, 289, 0, 0, 1527, + 1528, 5, 108, 0, 0, 1528, 1530, 5, 89, 0, 0, 1529, 1527, 1, 0, 0, 0, 1529, + 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 556, 278, 0, 1532, + 119, 1, 0, 0, 0, 1533, 1551, 5, 63, 0, 0, 1534, 1536, 5, 305, 0, 0, 1535, + 1534, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, + 1538, 5, 289, 0, 0, 1538, 1542, 5, 317, 0, 0, 1539, 1540, 5, 108, 0, 0, + 1540, 1541, 5, 152, 0, 0, 1541, 1543, 5, 89, 0, 0, 1542, 1539, 1, 0, 0, + 0, 1542, 1543, 1, 0, 0, 0, 1543, 1552, 1, 0, 0, 0, 1544, 1545, 5, 161, + 0, 0, 1545, 1547, 5, 178, 0, 0, 1546, 1548, 5, 305, 0, 0, 1547, 1546, 1, + 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 5, + 289, 0, 0, 1550, 1552, 5, 317, 0, 0, 1551, 1535, 1, 0, 0, 0, 1551, 1544, + 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 3, 562, 281, 0, 1554, 1555, + 3, 122, 61, 0, 1555, 121, 1, 0, 0, 0, 1556, 1558, 5, 27, 0, 0, 1557, 1556, + 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1566, + 3, 124, 62, 0, 1560, 1566, 3, 114, 57, 0, 1561, 1563, 5, 27, 0, 0, 1562, + 1561, 1, 0, 0, 0, 1562, 1563, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, + 1566, 3, 574, 287, 0, 1565, 1557, 1, 0, 0, 0, 1565, 1560, 1, 0, 0, 0, 1565, + 1562, 1, 0, 0, 0, 1566, 123, 1, 0, 0, 0, 1567, 1568, 5, 58, 0, 0, 1568, + 1569, 5, 158, 0, 0, 1569, 1570, 3, 560, 280, 0, 1570, 125, 1, 0, 0, 0, + 1571, 1573, 5, 82, 0, 0, 1572, 1574, 5, 305, 0, 0, 1573, 1572, 1, 0, 0, + 0, 1573, 1574, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1576, 5, 289, + 0, 0, 1576, 1579, 5, 317, 0, 0, 1577, 1578, 5, 108, 0, 0, 1578, 1580, 5, + 89, 0, 0, 1579, 1577, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, + 0, 0, 0, 1581, 1582, 3, 562, 281, 0, 1582, 127, 1, 0, 0, 0, 1583, 1584, + 3, 274, 137, 0, 1584, 129, 1, 0, 0, 0, 1585, 1588, 3, 132, 66, 0, 1586, + 1588, 3, 138, 69, 0, 1587, 1585, 1, 0, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, + 131, 1, 0, 0, 0, 1589, 1592, 3, 134, 67, 0, 1590, 1592, 3, 136, 68, 0, + 1591, 1589, 1, 0, 0, 0, 1591, 1590, 1, 0, 0, 0, 1592, 133, 1, 0, 0, 0, + 1593, 1594, 3, 292, 146, 0, 1594, 1596, 3, 142, 71, 0, 1595, 1597, 3, 244, + 122, 0, 1596, 1595, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 135, 1, 0, + 0, 0, 1598, 1599, 3, 292, 146, 0, 1599, 1600, 3, 54, 27, 0, 1600, 137, + 1, 0, 0, 0, 1601, 1604, 3, 140, 70, 0, 1602, 1604, 3, 54, 27, 0, 1603, + 1601, 1, 0, 0, 0, 1603, 1602, 1, 0, 0, 0, 1604, 139, 1, 0, 0, 0, 1605, + 1607, 3, 142, 71, 0, 1606, 1608, 3, 244, 122, 0, 1607, 1606, 1, 0, 0, 0, + 1607, 1608, 1, 0, 0, 0, 1608, 141, 1, 0, 0, 0, 1609, 1611, 3, 144, 72, + 0, 1610, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, + 0, 1612, 1613, 1, 0, 0, 0, 1613, 143, 1, 0, 0, 0, 1614, 1617, 3, 208, 104, + 0, 1615, 1617, 3, 146, 73, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1615, 1, 0, + 0, 0, 1617, 145, 1, 0, 0, 0, 1618, 1621, 3, 148, 74, 0, 1619, 1621, 3, + 180, 90, 0, 1620, 1618, 1, 0, 0, 0, 1620, 1619, 1, 0, 0, 0, 1621, 147, + 1, 0, 0, 0, 1622, 1627, 3, 150, 75, 0, 1623, 1627, 3, 152, 76, 0, 1624, + 1627, 3, 164, 82, 0, 1625, 1627, 3, 174, 87, 0, 1626, 1622, 1, 0, 0, 0, + 1626, 1623, 1, 0, 0, 0, 1626, 1624, 1, 0, 0, 0, 1626, 1625, 1, 0, 0, 0, + 1627, 149, 1, 0, 0, 0, 1628, 1629, 5, 110, 0, 0, 1629, 1630, 3, 324, 162, + 0, 1630, 151, 1, 0, 0, 0, 1631, 1632, 5, 190, 0, 0, 1632, 1633, 3, 154, + 77, 0, 1633, 153, 1, 0, 0, 0, 1634, 1639, 3, 156, 78, 0, 1635, 1636, 5, + 360, 0, 0, 1636, 1638, 3, 156, 78, 0, 1637, 1635, 1, 0, 0, 0, 1638, 1641, + 1, 0, 0, 0, 1639, 1637, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 155, + 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1646, 3, 158, 79, 0, 1643, 1646, + 3, 160, 80, 0, 1644, 1646, 3, 162, 81, 0, 1645, 1642, 1, 0, 0, 0, 1645, + 1643, 1, 0, 0, 0, 1645, 1644, 1, 0, 0, 0, 1646, 157, 1, 0, 0, 0, 1647, + 1648, 3, 912, 456, 0, 1648, 1649, 5, 374, 0, 0, 1649, 1650, 3, 1082, 541, + 0, 1650, 1651, 5, 364, 0, 0, 1651, 1652, 3, 818, 409, 0, 1652, 159, 1, + 0, 0, 0, 1653, 1654, 3, 912, 456, 0, 1654, 1655, 5, 364, 0, 0, 1655, 1657, + 5, 368, 0, 0, 1656, 1658, 3, 398, 199, 0, 1657, 1656, 1, 0, 0, 0, 1657, + 1658, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1660, 5, 379, 0, 0, 1660, + 161, 1, 0, 0, 0, 1661, 1662, 3, 912, 456, 0, 1662, 1663, 3, 390, 195, 0, + 1663, 1664, 3, 1080, 540, 0, 1664, 163, 1, 0, 0, 0, 1665, 1666, 5, 177, + 0, 0, 1666, 1667, 3, 166, 83, 0, 1667, 165, 1, 0, 0, 0, 1668, 1673, 3, + 168, 84, 0, 1669, 1670, 5, 360, 0, 0, 1670, 1672, 3, 168, 84, 0, 1671, + 1669, 1, 0, 0, 0, 1672, 1675, 1, 0, 0, 0, 1673, 1671, 1, 0, 0, 0, 1673, + 1674, 1, 0, 0, 0, 1674, 167, 1, 0, 0, 0, 1675, 1673, 1, 0, 0, 0, 1676, + 1679, 3, 170, 85, 0, 1677, 1679, 3, 172, 86, 0, 1678, 1676, 1, 0, 0, 0, + 1678, 1677, 1, 0, 0, 0, 1679, 169, 1, 0, 0, 0, 1680, 1681, 3, 912, 456, + 0, 1681, 1682, 5, 374, 0, 0, 1682, 1683, 3, 1082, 541, 0, 1683, 171, 1, + 0, 0, 0, 1684, 1685, 3, 912, 456, 0, 1685, 1686, 3, 390, 195, 0, 1686, + 1687, 3, 1080, 540, 0, 1687, 173, 1, 0, 0, 0, 1688, 1690, 7, 2, 0, 0, 1689, + 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, + 1692, 5, 76, 0, 0, 1692, 1693, 3, 176, 88, 0, 1693, 175, 1, 0, 0, 0, 1694, + 1699, 3, 178, 89, 0, 1695, 1696, 5, 360, 0, 0, 1696, 1698, 3, 178, 89, + 0, 1697, 1695, 1, 0, 0, 0, 1698, 1701, 1, 0, 0, 0, 1699, 1697, 1, 0, 0, + 0, 1699, 1700, 1, 0, 0, 0, 1700, 177, 1, 0, 0, 0, 1701, 1699, 1, 0, 0, + 0, 1702, 1703, 3, 818, 409, 0, 1703, 179, 1, 0, 0, 0, 1704, 1705, 3, 274, + 137, 0, 1705, 181, 1, 0, 0, 0, 1706, 1707, 3, 184, 92, 0, 1707, 183, 1, + 0, 0, 0, 1708, 1709, 6, 92, -1, 0, 1709, 1710, 3, 190, 95, 0, 1710, 1717, + 1, 0, 0, 0, 1711, 1712, 10, 2, 0, 0, 1712, 1713, 3, 186, 93, 0, 1713, 1714, + 3, 190, 95, 0, 1714, 1716, 1, 0, 0, 0, 1715, 1711, 1, 0, 0, 0, 1716, 1719, + 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 185, + 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1720, 1723, 3, 188, 94, 0, 1721, 1723, + 5, 163, 0, 0, 1722, 1720, 1, 0, 0, 0, 1722, 1721, 1, 0, 0, 0, 1723, 187, + 1, 0, 0, 0, 1724, 1726, 5, 220, 0, 0, 1725, 1727, 3, 902, 451, 0, 1726, + 1725, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1737, 1, 0, 0, 0, 1728, + 1730, 5, 88, 0, 0, 1729, 1731, 3, 902, 451, 0, 1730, 1729, 1, 0, 0, 0, + 1730, 1731, 1, 0, 0, 0, 1731, 1737, 1, 0, 0, 0, 1732, 1734, 5, 125, 0, + 0, 1733, 1735, 3, 902, 451, 0, 1734, 1733, 1, 0, 0, 0, 1734, 1735, 1, 0, + 0, 0, 1735, 1737, 1, 0, 0, 0, 1736, 1724, 1, 0, 0, 0, 1736, 1728, 1, 0, + 0, 0, 1736, 1732, 1, 0, 0, 0, 1737, 189, 1, 0, 0, 0, 1738, 1739, 3, 192, + 96, 0, 1739, 191, 1, 0, 0, 0, 1740, 1743, 3, 194, 97, 0, 1741, 1743, 3, + 204, 102, 0, 1742, 1740, 1, 0, 0, 0, 1742, 1741, 1, 0, 0, 0, 1743, 193, + 1, 0, 0, 0, 1744, 1746, 3, 196, 98, 0, 1745, 1744, 1, 0, 0, 0, 1746, 1749, + 1, 0, 0, 0, 1747, 1745, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1750, + 1, 0, 0, 0, 1749, 1747, 1, 0, 0, 0, 1750, 1755, 3, 198, 99, 0, 1751, 1755, + 3, 200, 100, 0, 1752, 1755, 3, 202, 101, 0, 1753, 1755, 3, 256, 128, 0, + 1754, 1747, 1, 0, 0, 0, 1754, 1751, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, + 1754, 1753, 1, 0, 0, 0, 1755, 195, 1, 0, 0, 0, 1756, 1757, 3, 292, 146, + 0, 1757, 1758, 3, 206, 103, 0, 1758, 197, 1, 0, 0, 0, 1759, 1760, 3, 292, + 146, 0, 1760, 1761, 3, 206, 103, 0, 1761, 1762, 3, 244, 122, 0, 1762, 199, + 1, 0, 0, 0, 1763, 1764, 3, 292, 146, 0, 1764, 1765, 3, 244, 122, 0, 1765, + 201, 1, 0, 0, 0, 1766, 1767, 3, 292, 146, 0, 1767, 1768, 3, 56, 28, 0, + 1768, 203, 1, 0, 0, 0, 1769, 1771, 3, 206, 103, 0, 1770, 1769, 1, 0, 0, + 0, 1770, 1771, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1775, 3, 244, + 122, 0, 1773, 1775, 3, 56, 28, 0, 1774, 1770, 1, 0, 0, 0, 1774, 1773, 1, + 0, 0, 0, 1775, 205, 1, 0, 0, 0, 1776, 1778, 3, 208, 104, 0, 1777, 1776, + 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1777, 1, 0, 0, 0, 1779, 1780, + 1, 0, 0, 0, 1780, 207, 1, 0, 0, 0, 1781, 1784, 3, 210, 105, 0, 1782, 1784, + 3, 222, 111, 0, 1783, 1781, 1, 0, 0, 0, 1783, 1782, 1, 0, 0, 0, 1784, 209, + 1, 0, 0, 0, 1785, 1791, 3, 212, 106, 0, 1786, 1791, 3, 226, 113, 0, 1787, + 1791, 3, 232, 116, 0, 1788, 1791, 3, 224, 112, 0, 1789, 1791, 3, 242, 121, + 0, 1790, 1785, 1, 0, 0, 0, 1790, 1786, 1, 0, 0, 0, 1790, 1787, 1, 0, 0, + 0, 1790, 1788, 1, 0, 0, 0, 1790, 1789, 1, 0, 0, 0, 1791, 211, 1, 0, 0, + 0, 1792, 1795, 3, 214, 107, 0, 1793, 1795, 3, 216, 108, 0, 1794, 1792, + 1, 0, 0, 0, 1794, 1793, 1, 0, 0, 0, 1795, 213, 1, 0, 0, 0, 1796, 1797, + 5, 143, 0, 0, 1797, 1798, 3, 294, 147, 0, 1798, 215, 1, 0, 0, 0, 1799, + 1800, 5, 160, 0, 0, 1800, 1801, 3, 218, 109, 0, 1801, 217, 1, 0, 0, 0, + 1802, 1812, 3, 214, 107, 0, 1803, 1804, 5, 368, 0, 0, 1804, 1805, 3, 220, + 110, 0, 1805, 1806, 5, 379, 0, 0, 1806, 1812, 1, 0, 0, 0, 1807, 1808, 5, + 370, 0, 0, 1808, 1809, 3, 220, 110, 0, 1809, 1810, 5, 381, 0, 0, 1810, + 1812, 1, 0, 0, 0, 1811, 1802, 1, 0, 0, 0, 1811, 1803, 1, 0, 0, 0, 1811, + 1807, 1, 0, 0, 0, 1812, 219, 1, 0, 0, 0, 1813, 1815, 3, 212, 106, 0, 1814, + 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1814, 1, 0, 0, 0, 1816, + 1817, 1, 0, 0, 0, 1817, 221, 1, 0, 0, 0, 1818, 1819, 3, 274, 137, 0, 1819, + 223, 1, 0, 0, 0, 1820, 1823, 5, 91, 0, 0, 1821, 1824, 3, 500, 250, 0, 1822, + 1824, 3, 774, 387, 0, 1823, 1821, 1, 0, 0, 0, 1823, 1822, 1, 0, 0, 0, 1824, + 225, 1, 0, 0, 0, 1825, 1826, 5, 130, 0, 0, 1826, 1827, 3, 228, 114, 0, + 1827, 227, 1, 0, 0, 0, 1828, 1833, 3, 230, 115, 0, 1829, 1830, 5, 360, + 0, 0, 1830, 1832, 3, 230, 115, 0, 1831, 1829, 1, 0, 0, 0, 1832, 1835, 1, + 0, 0, 0, 1833, 1831, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 229, 1, + 0, 0, 0, 1835, 1833, 1, 0, 0, 0, 1836, 1842, 3, 82, 41, 0, 1837, 1838, + 3, 1092, 546, 0, 1838, 1839, 5, 364, 0, 0, 1839, 1840, 3, 818, 409, 0, + 1840, 1842, 1, 0, 0, 0, 1841, 1836, 1, 0, 0, 0, 1841, 1837, 1, 0, 0, 0, + 1842, 231, 1, 0, 0, 0, 1843, 1844, 5, 100, 0, 0, 1844, 1846, 3, 234, 117, + 0, 1845, 1847, 3, 240, 120, 0, 1846, 1845, 1, 0, 0, 0, 1846, 1847, 1, 0, + 0, 0, 1847, 233, 1, 0, 0, 0, 1848, 1849, 3, 236, 118, 0, 1849, 1850, 3, + 238, 119, 0, 1850, 235, 1, 0, 0, 0, 1851, 1852, 3, 1092, 546, 0, 1852, + 1853, 5, 109, 0, 0, 1853, 237, 1, 0, 0, 0, 1854, 1855, 3, 818, 409, 0, + 1855, 239, 1, 0, 0, 0, 1856, 1857, 5, 231, 0, 0, 1857, 1858, 7, 3, 0, 0, + 1858, 1859, 3, 1092, 546, 0, 1859, 241, 1, 0, 0, 0, 1860, 1862, 3, 520, + 260, 0, 1861, 1863, 3, 534, 267, 0, 1862, 1861, 1, 0, 0, 0, 1862, 1863, + 1, 0, 0, 0, 1863, 1865, 1, 0, 0, 0, 1864, 1866, 3, 532, 266, 0, 1865, 1864, + 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1873, 1, 0, 0, 0, 1867, 1869, + 3, 534, 267, 0, 1868, 1870, 3, 532, 266, 0, 1869, 1868, 1, 0, 0, 0, 1869, + 1870, 1, 0, 0, 0, 1870, 1873, 1, 0, 0, 0, 1871, 1873, 3, 532, 266, 0, 1872, + 1860, 1, 0, 0, 0, 1872, 1867, 1, 0, 0, 0, 1872, 1871, 1, 0, 0, 0, 1873, + 243, 1, 0, 0, 0, 1874, 1876, 3, 246, 123, 0, 1875, 1877, 3, 242, 121, 0, + 1876, 1875, 1, 0, 0, 0, 1876, 1877, 1, 0, 0, 0, 1877, 1880, 1, 0, 0, 0, + 1878, 1880, 5, 92, 0, 0, 1879, 1874, 1, 0, 0, 0, 1879, 1878, 1, 0, 0, 0, + 1880, 245, 1, 0, 0, 0, 1881, 1882, 5, 180, 0, 0, 1882, 1883, 3, 248, 124, + 0, 1883, 247, 1, 0, 0, 0, 1884, 1886, 3, 902, 451, 0, 1885, 1884, 1, 0, + 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1889, 1, 0, 0, 0, 1887, 1890, 5, 358, + 0, 0, 1888, 1890, 3, 250, 125, 0, 1889, 1887, 1, 0, 0, 0, 1889, 1888, 1, + 0, 0, 0, 1890, 1892, 1, 0, 0, 0, 1891, 1893, 3, 512, 256, 0, 1892, 1891, + 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 249, 1, 0, 0, 0, 1894, 1899, + 3, 252, 126, 0, 1895, 1896, 5, 360, 0, 0, 1896, 1898, 3, 252, 126, 0, 1897, + 1895, 1, 0, 0, 0, 1898, 1901, 1, 0, 0, 0, 1899, 1897, 1, 0, 0, 0, 1899, + 1900, 1, 0, 0, 0, 1900, 251, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1902, + 1904, 3, 840, 420, 0, 1903, 1905, 3, 254, 127, 0, 1904, 1903, 1, 0, 0, + 0, 1904, 1905, 1, 0, 0, 0, 1905, 253, 1, 0, 0, 0, 1906, 1907, 5, 27, 0, + 0, 1907, 1908, 3, 1110, 555, 0, 1908, 255, 1, 0, 0, 0, 1909, 1911, 5, 187, + 0, 0, 1910, 1912, 3, 902, 451, 0, 1911, 1910, 1, 0, 0, 0, 1911, 1912, 1, + 0, 0, 0, 1912, 1915, 1, 0, 0, 0, 1913, 1916, 5, 358, 0, 0, 1914, 1916, + 3, 258, 129, 0, 1915, 1913, 1, 0, 0, 0, 1915, 1914, 1, 0, 0, 0, 1916, 1936, + 1, 0, 0, 0, 1917, 1919, 3, 266, 133, 0, 1918, 1920, 3, 500, 250, 0, 1919, + 1918, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, + 1923, 3, 512, 256, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, + 1925, 1, 0, 0, 0, 1924, 1926, 3, 264, 132, 0, 1925, 1924, 1, 0, 0, 0, 1925, + 1926, 1, 0, 0, 0, 1926, 1928, 1, 0, 0, 0, 1927, 1929, 3, 520, 260, 0, 1928, + 1927, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1931, 1, 0, 0, 0, 1930, + 1932, 3, 534, 267, 0, 1931, 1930, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, + 1934, 1, 0, 0, 0, 1933, 1935, 3, 532, 266, 0, 1934, 1933, 1, 0, 0, 0, 1934, + 1935, 1, 0, 0, 0, 1935, 1937, 1, 0, 0, 0, 1936, 1917, 1, 0, 0, 0, 1936, + 1937, 1, 0, 0, 0, 1937, 257, 1, 0, 0, 0, 1938, 1943, 3, 260, 130, 0, 1939, + 1940, 5, 360, 0, 0, 1940, 1942, 3, 260, 130, 0, 1941, 1939, 1, 0, 0, 0, + 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, + 1944, 259, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1948, 3, 840, 420, + 0, 1947, 1949, 3, 262, 131, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, + 0, 0, 1949, 261, 1, 0, 0, 0, 1950, 1951, 5, 27, 0, 0, 1951, 1952, 3, 1110, + 555, 0, 1952, 263, 1, 0, 0, 0, 1953, 1954, 5, 103, 0, 0, 1954, 1955, 3, + 774, 387, 0, 1955, 265, 1, 0, 0, 0, 1956, 1959, 5, 101, 0, 0, 1957, 1960, + 3, 268, 134, 0, 1958, 1960, 3, 272, 136, 0, 1959, 1957, 1, 0, 0, 0, 1959, + 1958, 1, 0, 0, 0, 1960, 267, 1, 0, 0, 0, 1961, 1966, 3, 270, 135, 0, 1962, + 1963, 5, 360, 0, 0, 1963, 1965, 3, 270, 135, 0, 1964, 1962, 1, 0, 0, 0, + 1965, 1968, 1, 0, 0, 0, 1966, 1964, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, + 1967, 269, 1, 0, 0, 0, 1968, 1966, 1, 0, 0, 0, 1969, 1970, 3, 88, 44, 0, + 1970, 1971, 3, 212, 106, 0, 1971, 271, 1, 0, 0, 0, 1972, 1977, 3, 56, 28, + 0, 1973, 1974, 3, 88, 44, 0, 1974, 1975, 3, 56, 28, 0, 1975, 1977, 1, 0, + 0, 0, 1976, 1972, 1, 0, 0, 0, 1976, 1973, 1, 0, 0, 0, 1977, 273, 1, 0, + 0, 0, 1978, 1980, 5, 160, 0, 0, 1979, 1978, 1, 0, 0, 0, 1979, 1980, 1, + 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 1982, 5, 44, 0, 0, 1982, 1983, 3, + 276, 138, 0, 1983, 275, 1, 0, 0, 0, 1984, 1987, 3, 278, 139, 0, 1985, 1987, + 3, 284, 142, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 277, + 1, 0, 0, 0, 1988, 1990, 3, 280, 140, 0, 1989, 1988, 1, 0, 0, 0, 1989, 1990, + 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1992, 3, 50, 25, 0, 1992, 279, + 1, 0, 0, 0, 1993, 1995, 5, 370, 0, 0, 1994, 1996, 3, 282, 141, 0, 1995, + 1994, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, + 1998, 5, 381, 0, 0, 1998, 281, 1, 0, 0, 0, 1999, 2004, 3, 912, 456, 0, + 2000, 2001, 5, 360, 0, 0, 2001, 2003, 3, 912, 456, 0, 2002, 2000, 1, 0, + 0, 0, 2003, 2006, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2004, 2005, 1, 0, + 0, 0, 2005, 283, 1, 0, 0, 0, 2006, 2004, 1, 0, 0, 0, 2007, 2008, 3, 566, + 283, 0, 2008, 2010, 5, 370, 0, 0, 2009, 2011, 3, 286, 143, 0, 2010, 2009, + 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2014, + 5, 381, 0, 0, 2013, 2015, 3, 502, 251, 0, 2014, 2013, 1, 0, 0, 0, 2014, + 2015, 1, 0, 0, 0, 2015, 285, 1, 0, 0, 0, 2016, 2021, 3, 288, 144, 0, 2017, + 2018, 5, 360, 0, 0, 2018, 2020, 3, 288, 144, 0, 2019, 2017, 1, 0, 0, 0, + 2020, 2023, 1, 0, 0, 0, 2021, 2019, 1, 0, 0, 0, 2021, 2022, 1, 0, 0, 0, + 2022, 287, 1, 0, 0, 0, 2023, 2021, 1, 0, 0, 0, 2024, 2025, 3, 818, 409, + 0, 2025, 289, 1, 0, 0, 0, 2026, 2027, 5, 31, 0, 0, 2027, 2028, 3, 538, + 269, 0, 2028, 291, 1, 0, 0, 0, 2029, 2030, 5, 223, 0, 0, 2030, 2031, 3, + 88, 44, 0, 2031, 293, 1, 0, 0, 0, 2032, 2034, 3, 302, 151, 0, 2033, 2035, + 3, 296, 148, 0, 2034, 2033, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 295, + 1, 0, 0, 0, 2036, 2037, 5, 234, 0, 0, 2037, 2038, 3, 298, 149, 0, 2038, + 297, 1, 0, 0, 0, 2039, 2044, 3, 300, 150, 0, 2040, 2041, 5, 360, 0, 0, + 2041, 2043, 3, 300, 150, 0, 2042, 2040, 1, 0, 0, 0, 2043, 2046, 1, 0, 0, + 0, 2044, 2042, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 299, 1, 0, 0, + 0, 2046, 2044, 1, 0, 0, 0, 2047, 2048, 3, 912, 456, 0, 2048, 301, 1, 0, + 0, 0, 2049, 2051, 3, 304, 152, 0, 2050, 2049, 1, 0, 0, 0, 2050, 2051, 1, + 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2054, 3, 314, 157, 0, 2053, 2055, + 3, 320, 160, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2057, + 1, 0, 0, 0, 2056, 2058, 3, 322, 161, 0, 2057, 2056, 1, 0, 0, 0, 2057, 2058, + 1, 0, 0, 0, 2058, 303, 1, 0, 0, 0, 2059, 2062, 3, 306, 153, 0, 2060, 2062, + 3, 308, 154, 0, 2061, 2059, 1, 0, 0, 0, 2061, 2060, 1, 0, 0, 0, 2062, 305, + 1, 0, 0, 0, 2063, 2064, 5, 309, 0, 0, 2064, 2065, 3, 310, 155, 0, 2065, + 307, 1, 0, 0, 0, 2066, 2067, 5, 282, 0, 0, 2067, 2068, 3, 312, 156, 0, + 2068, 309, 1, 0, 0, 0, 2069, 2071, 5, 286, 0, 0, 2070, 2072, 5, 279, 0, + 0, 2071, 2070, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, + 0, 2073, 2075, 5, 287, 0, 0, 2074, 2069, 1, 0, 0, 0, 2074, 2073, 1, 0, + 0, 0, 2075, 311, 1, 0, 0, 0, 2076, 2078, 3, 1144, 572, 0, 2077, 2079, 5, + 279, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2082, + 1, 0, 0, 0, 2080, 2082, 3, 1142, 571, 0, 2081, 2076, 1, 0, 0, 0, 2081, + 2080, 1, 0, 0, 0, 2082, 313, 1, 0, 0, 0, 2083, 2088, 3, 316, 158, 0, 2084, + 2085, 5, 360, 0, 0, 2085, 2087, 3, 316, 158, 0, 2086, 2084, 1, 0, 0, 0, + 2087, 2090, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, + 2089, 315, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2093, 3, 318, 159, + 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2095, 1, 0, 0, + 0, 2094, 2096, 3, 344, 172, 0, 2095, 2094, 1, 0, 0, 0, 2095, 2096, 1, 0, + 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 3, 372, 186, 0, 2098, 317, 1, + 0, 0, 0, 2099, 2100, 3, 1088, 544, 0, 2100, 2101, 5, 364, 0, 0, 2101, 319, + 1, 0, 0, 0, 2102, 2103, 5, 291, 0, 0, 2103, 2104, 3, 344, 172, 0, 2104, + 321, 1, 0, 0, 0, 2105, 2106, 5, 230, 0, 0, 2106, 2107, 3, 774, 387, 0, + 2107, 323, 1, 0, 0, 0, 2108, 2109, 3, 326, 163, 0, 2109, 325, 1, 0, 0, + 0, 2110, 2115, 3, 328, 164, 0, 2111, 2112, 5, 360, 0, 0, 2112, 2114, 3, + 328, 164, 0, 2113, 2111, 1, 0, 0, 0, 2114, 2117, 1, 0, 0, 0, 2115, 2113, + 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 327, 1, 0, 0, 0, 2117, 2115, + 1, 0, 0, 0, 2118, 2124, 3, 330, 165, 0, 2119, 2120, 3, 332, 166, 0, 2120, + 2121, 3, 330, 165, 0, 2121, 2123, 1, 0, 0, 0, 2122, 2119, 1, 0, 0, 0, 2123, + 2126, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, + 329, 1, 0, 0, 0, 2126, 2124, 1, 0, 0, 0, 2127, 2129, 5, 370, 0, 0, 2128, + 2130, 3, 340, 170, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, + 2131, 1, 0, 0, 0, 2131, 2132, 5, 381, 0, 0, 2132, 331, 1, 0, 0, 0, 2133, + 2137, 3, 334, 167, 0, 2134, 2137, 3, 336, 168, 0, 2135, 2137, 3, 338, 169, + 0, 2136, 2133, 1, 0, 0, 0, 2136, 2134, 1, 0, 0, 0, 2136, 2135, 1, 0, 0, + 0, 2137, 333, 1, 0, 0, 0, 2138, 2140, 5, 337, 0, 0, 2139, 2141, 3, 340, + 170, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2142, 1, + 0, 0, 0, 2142, 2143, 5, 347, 0, 0, 2143, 335, 1, 0, 0, 0, 2144, 2146, 5, + 343, 0, 0, 2145, 2147, 3, 340, 170, 0, 2146, 2145, 1, 0, 0, 0, 2146, 2147, + 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2149, 5, 328, 0, 0, 2149, 337, + 1, 0, 0, 0, 2150, 2152, 5, 354, 0, 0, 2151, 2153, 3, 340, 170, 0, 2152, + 2151, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, + 2155, 5, 348, 0, 0, 2155, 339, 1, 0, 0, 0, 2156, 2158, 3, 386, 193, 0, + 2157, 2159, 3, 342, 171, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, + 0, 2159, 2165, 1, 0, 0, 0, 2160, 2162, 3, 386, 193, 0, 2161, 2160, 1, 0, + 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 2165, 3, 342, + 171, 0, 2164, 2156, 1, 0, 0, 0, 2164, 2161, 1, 0, 0, 0, 2165, 341, 1, 0, + 0, 0, 2166, 2167, 3, 390, 195, 0, 2167, 2169, 3, 662, 331, 0, 2168, 2170, + 3, 396, 198, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2178, + 1, 0, 0, 0, 2171, 2172, 3, 390, 195, 0, 2172, 2173, 3, 662, 331, 0, 2173, + 2175, 1, 0, 0, 0, 2174, 2171, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, + 2176, 1, 0, 0, 0, 2176, 2178, 3, 396, 198, 0, 2177, 2166, 1, 0, 0, 0, 2177, + 2174, 1, 0, 0, 0, 2178, 343, 1, 0, 0, 0, 2179, 2182, 3, 346, 173, 0, 2180, + 2182, 3, 350, 175, 0, 2181, 2179, 1, 0, 0, 0, 2181, 2180, 1, 0, 0, 0, 2182, + 345, 1, 0, 0, 0, 2183, 2185, 3, 348, 174, 0, 2184, 2186, 3, 354, 177, 0, + 2185, 2184, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 347, 1, 0, 0, 0, + 2187, 2188, 7, 4, 0, 0, 2188, 349, 1, 0, 0, 0, 2189, 2193, 3, 352, 176, + 0, 2190, 2193, 3, 356, 178, 0, 2191, 2193, 3, 360, 180, 0, 2192, 2189, + 1, 0, 0, 0, 2192, 2190, 1, 0, 0, 0, 2192, 2191, 1, 0, 0, 0, 2193, 351, + 1, 0, 0, 0, 2194, 2196, 5, 22, 0, 0, 2195, 2197, 3, 348, 174, 0, 2196, + 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2199, 1, 0, 0, 0, 2198, + 2200, 3, 354, 177, 0, 2199, 2198, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, + 353, 1, 0, 0, 0, 2201, 2202, 7, 5, 0, 0, 2202, 355, 1, 0, 0, 0, 2203, 2205, + 5, 25, 0, 0, 2204, 2206, 3, 358, 179, 0, 2205, 2204, 1, 0, 0, 0, 2205, + 2206, 1, 0, 0, 0, 2206, 2208, 1, 0, 0, 0, 2207, 2209, 3, 348, 174, 0, 2208, + 2207, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2211, 1, 0, 0, 0, 2210, + 2212, 3, 354, 177, 0, 2211, 2210, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, + 357, 1, 0, 0, 0, 2213, 2214, 3, 852, 426, 0, 2214, 359, 1, 0, 0, 0, 2215, + 2220, 3, 362, 181, 0, 2216, 2220, 3, 364, 182, 0, 2217, 2220, 3, 366, 183, + 0, 2218, 2220, 3, 368, 184, 0, 2219, 2215, 1, 0, 0, 0, 2219, 2216, 1, 0, + 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2218, 1, 0, 0, 0, 2220, 361, 1, 0, + 0, 0, 2221, 2222, 5, 22, 0, 0, 2222, 2224, 5, 310, 0, 0, 2223, 2225, 3, + 348, 174, 0, 2224, 2223, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2227, + 1, 0, 0, 0, 2226, 2228, 3, 354, 177, 0, 2227, 2226, 1, 0, 0, 0, 2227, 2228, + 1, 0, 0, 0, 2228, 363, 1, 0, 0, 0, 2229, 2230, 5, 25, 0, 0, 2230, 2232, + 5, 310, 0, 0, 2231, 2233, 3, 348, 174, 0, 2232, 2231, 1, 0, 0, 0, 2232, + 2233, 1, 0, 0, 0, 2233, 2235, 1, 0, 0, 0, 2234, 2236, 3, 354, 177, 0, 2235, + 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 365, 1, 0, 0, 0, 2237, + 2238, 5, 310, 0, 0, 2238, 2240, 3, 358, 179, 0, 2239, 2241, 3, 348, 174, + 0, 2240, 2239, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2243, 1, 0, 0, + 0, 2242, 2244, 3, 354, 177, 0, 2243, 2242, 1, 0, 0, 0, 2243, 2244, 1, 0, + 0, 0, 2244, 367, 1, 0, 0, 0, 2245, 2247, 5, 310, 0, 0, 2246, 2248, 3, 370, + 185, 0, 2247, 2246, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2250, 1, + 0, 0, 0, 2249, 2251, 3, 348, 174, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, + 1, 0, 0, 0, 2251, 2253, 1, 0, 0, 0, 2252, 2254, 3, 354, 177, 0, 2253, 2252, + 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2255, 1, 0, 0, 0, 2255, 2256, + 7, 6, 0, 0, 2256, 369, 1, 0, 0, 0, 2257, 2258, 3, 852, 426, 0, 2258, 371, + 1, 0, 0, 0, 2259, 2275, 3, 374, 187, 0, 2260, 2263, 3, 374, 187, 0, 2261, + 2262, 5, 327, 0, 0, 2262, 2264, 3, 374, 187, 0, 2263, 2261, 1, 0, 0, 0, + 2264, 2265, 1, 0, 0, 0, 2265, 2263, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, + 2266, 2275, 1, 0, 0, 0, 2267, 2270, 3, 374, 187, 0, 2268, 2269, 5, 385, + 0, 0, 2269, 2271, 3, 374, 187, 0, 2270, 2268, 1, 0, 0, 0, 2271, 2272, 1, + 0, 0, 0, 2272, 2270, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 2275, 1, + 0, 0, 0, 2274, 2259, 1, 0, 0, 0, 2274, 2260, 1, 0, 0, 0, 2274, 2267, 1, + 0, 0, 0, 2275, 373, 1, 0, 0, 0, 2276, 2278, 3, 376, 188, 0, 2277, 2276, + 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2277, 1, 0, 0, 0, 2279, 2280, + 1, 0, 0, 0, 2280, 375, 1, 0, 0, 0, 2281, 2289, 3, 378, 189, 0, 2282, 2283, + 3, 378, 189, 0, 2283, 2284, 3, 434, 217, 0, 2284, 2289, 1, 0, 0, 0, 2285, + 2286, 3, 378, 189, 0, 2286, 2287, 5, 376, 0, 0, 2287, 2289, 1, 0, 0, 0, + 2288, 2281, 1, 0, 0, 0, 2288, 2282, 1, 0, 0, 0, 2288, 2285, 1, 0, 0, 0, + 2289, 377, 1, 0, 0, 0, 2290, 2294, 3, 380, 190, 0, 2291, 2294, 3, 422, + 211, 0, 2292, 2294, 3, 444, 222, 0, 2293, 2290, 1, 0, 0, 0, 2293, 2291, + 1, 0, 0, 0, 2293, 2292, 1, 0, 0, 0, 2294, 379, 1, 0, 0, 0, 2295, 2298, + 3, 382, 191, 0, 2296, 2298, 3, 402, 201, 0, 2297, 2295, 1, 0, 0, 0, 2297, + 2296, 1, 0, 0, 0, 2298, 381, 1, 0, 0, 0, 2299, 2300, 5, 370, 0, 0, 2300, + 2301, 3, 384, 192, 0, 2301, 2302, 5, 381, 0, 0, 2302, 383, 1, 0, 0, 0, + 2303, 2305, 3, 386, 193, 0, 2304, 2303, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, + 0, 2305, 2307, 1, 0, 0, 0, 2306, 2308, 3, 388, 194, 0, 2307, 2306, 1, 0, + 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2310, 1, 0, 0, 0, 2309, 2311, 3, 392, + 196, 0, 2310, 2309, 1, 0, 0, 0, 2310, 2311, 1, 0, 0, 0, 2311, 385, 1, 0, + 0, 0, 2312, 2313, 3, 1086, 543, 0, 2313, 387, 1, 0, 0, 0, 2314, 2315, 3, + 390, 195, 0, 2315, 2316, 3, 428, 214, 0, 2316, 389, 1, 0, 0, 0, 2317, 2318, + 7, 7, 0, 0, 2318, 391, 1, 0, 0, 0, 2319, 2322, 3, 394, 197, 0, 2320, 2322, + 3, 396, 198, 0, 2321, 2319, 1, 0, 0, 0, 2321, 2320, 1, 0, 0, 0, 2322, 393, + 1, 0, 0, 0, 2323, 2324, 5, 230, 0, 0, 2324, 2325, 3, 774, 387, 0, 2325, + 395, 1, 0, 0, 0, 2326, 2327, 5, 368, 0, 0, 2327, 2328, 3, 398, 199, 0, + 2328, 2329, 5, 379, 0, 0, 2329, 397, 1, 0, 0, 0, 2330, 2335, 3, 400, 200, + 0, 2331, 2332, 5, 360, 0, 0, 2332, 2334, 3, 400, 200, 0, 2333, 2331, 1, + 0, 0, 0, 2334, 2337, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2336, 1, + 0, 0, 0, 2336, 399, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2338, 2339, 3, + 1082, 541, 0, 2339, 2340, 5, 359, 0, 0, 2340, 2341, 3, 818, 409, 0, 2341, + 401, 1, 0, 0, 0, 2342, 2345, 3, 404, 202, 0, 2343, 2345, 3, 420, 210, 0, + 2344, 2342, 1, 0, 0, 0, 2344, 2343, 1, 0, 0, 0, 2345, 403, 1, 0, 0, 0, + 2346, 2354, 3, 406, 203, 0, 2347, 2354, 3, 408, 204, 0, 2348, 2354, 3, + 410, 205, 0, 2349, 2354, 3, 412, 206, 0, 2350, 2354, 3, 414, 207, 0, 2351, + 2354, 3, 416, 208, 0, 2352, 2354, 3, 418, 209, 0, 2353, 2346, 1, 0, 0, + 0, 2353, 2347, 1, 0, 0, 0, 2353, 2348, 1, 0, 0, 0, 2353, 2349, 1, 0, 0, + 0, 2353, 2350, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2352, 1, 0, 0, + 0, 2354, 405, 1, 0, 0, 0, 2355, 2356, 5, 337, 0, 0, 2356, 2357, 3, 384, + 192, 0, 2357, 2358, 5, 347, 0, 0, 2358, 407, 1, 0, 0, 0, 2359, 2360, 5, + 354, 0, 0, 2360, 2361, 3, 384, 192, 0, 2361, 2362, 5, 348, 0, 0, 2362, + 409, 1, 0, 0, 0, 2363, 2364, 5, 343, 0, 0, 2364, 2365, 3, 384, 192, 0, + 2365, 2366, 5, 328, 0, 0, 2366, 411, 1, 0, 0, 0, 2367, 2368, 5, 338, 0, + 0, 2368, 2369, 3, 384, 192, 0, 2369, 2370, 5, 348, 0, 0, 2370, 413, 1, + 0, 0, 0, 2371, 2372, 5, 354, 0, 0, 2372, 2373, 3, 384, 192, 0, 2373, 2374, + 5, 329, 0, 0, 2374, 415, 1, 0, 0, 0, 2375, 2376, 5, 337, 0, 0, 2376, 2377, + 3, 384, 192, 0, 2377, 2378, 5, 328, 0, 0, 2378, 417, 1, 0, 0, 0, 2379, + 2380, 5, 343, 0, 0, 2380, 2381, 3, 384, 192, 0, 2381, 2382, 5, 347, 0, + 0, 2382, 419, 1, 0, 0, 0, 2383, 2384, 7, 8, 0, 0, 2384, 421, 1, 0, 0, 0, + 2385, 2387, 5, 370, 0, 0, 2386, 2388, 3, 424, 212, 0, 2387, 2386, 1, 0, + 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2390, 1, 0, 0, 0, 2389, 2391, 3, 346, + 173, 0, 2390, 2389, 1, 0, 0, 0, 2390, 2391, 1, 0, 0, 0, 2391, 2392, 1, + 0, 0, 0, 2392, 2394, 3, 372, 186, 0, 2393, 2395, 3, 426, 213, 0, 2394, + 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, + 2397, 5, 381, 0, 0, 2397, 423, 1, 0, 0, 0, 2398, 2399, 3, 1090, 545, 0, + 2399, 2400, 5, 364, 0, 0, 2400, 425, 1, 0, 0, 0, 2401, 2402, 5, 230, 0, + 0, 2402, 2403, 3, 774, 387, 0, 2403, 427, 1, 0, 0, 0, 2404, 2405, 6, 214, + -1, 0, 2405, 2406, 5, 365, 0, 0, 2406, 2414, 3, 428, 214, 6, 2407, 2414, + 3, 1080, 540, 0, 2408, 2414, 5, 373, 0, 0, 2409, 2410, 5, 370, 0, 0, 2410, + 2411, 3, 428, 214, 0, 2411, 2412, 5, 381, 0, 0, 2412, 2414, 1, 0, 0, 0, + 2413, 2404, 1, 0, 0, 0, 2413, 2407, 1, 0, 0, 0, 2413, 2408, 1, 0, 0, 0, + 2413, 2409, 1, 0, 0, 0, 2414, 2423, 1, 0, 0, 0, 2415, 2416, 10, 5, 0, 0, + 2416, 2417, 5, 357, 0, 0, 2417, 2422, 3, 428, 214, 6, 2418, 2419, 10, 4, + 0, 0, 2419, 2420, 5, 385, 0, 0, 2420, 2422, 3, 428, 214, 5, 2421, 2415, + 1, 0, 0, 0, 2421, 2418, 1, 0, 0, 0, 2422, 2425, 1, 0, 0, 0, 2423, 2421, + 1, 0, 0, 0, 2423, 2424, 1, 0, 0, 0, 2424, 429, 1, 0, 0, 0, 2425, 2423, + 1, 0, 0, 0, 2426, 2427, 3, 912, 456, 0, 2427, 431, 1, 0, 0, 0, 2428, 2429, + 3, 912, 456, 0, 2429, 433, 1, 0, 0, 0, 2430, 2435, 5, 358, 0, 0, 2431, + 2435, 5, 375, 0, 0, 2432, 2435, 3, 436, 218, 0, 2433, 2435, 3, 438, 219, + 0, 2434, 2430, 1, 0, 0, 0, 2434, 2431, 1, 0, 0, 0, 2434, 2432, 1, 0, 0, + 0, 2434, 2433, 1, 0, 0, 0, 2435, 435, 1, 0, 0, 0, 2436, 2437, 5, 368, 0, + 0, 2437, 2438, 3, 1124, 562, 0, 2438, 2439, 5, 379, 0, 0, 2439, 437, 1, + 0, 0, 0, 2440, 2442, 5, 368, 0, 0, 2441, 2443, 3, 440, 220, 0, 2442, 2441, + 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2444, 1, 0, 0, 0, 2444, 2446, + 5, 360, 0, 0, 2445, 2447, 3, 442, 221, 0, 2446, 2445, 1, 0, 0, 0, 2446, + 2447, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 5, 379, 0, 0, 2449, + 439, 1, 0, 0, 0, 2450, 2451, 3, 1124, 562, 0, 2451, 441, 1, 0, 0, 0, 2452, + 2453, 3, 1124, 562, 0, 2453, 443, 1, 0, 0, 0, 2454, 2462, 3, 446, 223, + 0, 2455, 2462, 3, 448, 224, 0, 2456, 2462, 3, 450, 225, 0, 2457, 2462, + 3, 452, 226, 0, 2458, 2462, 3, 454, 227, 0, 2459, 2462, 3, 456, 228, 0, + 2460, 2462, 3, 458, 229, 0, 2461, 2454, 1, 0, 0, 0, 2461, 2455, 1, 0, 0, + 0, 2461, 2456, 1, 0, 0, 0, 2461, 2457, 1, 0, 0, 0, 2461, 2458, 1, 0, 0, + 0, 2461, 2459, 1, 0, 0, 0, 2461, 2460, 1, 0, 0, 0, 2462, 445, 1, 0, 0, + 0, 2463, 2464, 5, 340, 0, 0, 2464, 2465, 3, 460, 230, 0, 2465, 2466, 5, + 350, 0, 0, 2466, 447, 1, 0, 0, 0, 2467, 2468, 5, 356, 0, 0, 2468, 2469, + 3, 460, 230, 0, 2469, 2470, 5, 352, 0, 0, 2470, 449, 1, 0, 0, 0, 2471, + 2472, 5, 344, 0, 0, 2472, 2473, 3, 460, 230, 0, 2473, 2474, 5, 351, 0, + 0, 2474, 451, 1, 0, 0, 0, 2475, 2476, 5, 341, 0, 0, 2476, 2477, 3, 460, + 230, 0, 2477, 2478, 5, 352, 0, 0, 2478, 453, 1, 0, 0, 0, 2479, 2480, 5, + 356, 0, 0, 2480, 2481, 3, 460, 230, 0, 2481, 2482, 5, 353, 0, 0, 2482, + 455, 1, 0, 0, 0, 2483, 2484, 5, 340, 0, 0, 2484, 2485, 3, 460, 230, 0, + 2485, 2486, 5, 351, 0, 0, 2486, 457, 1, 0, 0, 0, 2487, 2488, 5, 344, 0, + 0, 2488, 2489, 3, 460, 230, 0, 2489, 2490, 5, 350, 0, 0, 2490, 459, 1, + 0, 0, 0, 2491, 2495, 3, 466, 233, 0, 2492, 2495, 3, 462, 231, 0, 2493, + 2495, 3, 464, 232, 0, 2494, 2491, 1, 0, 0, 0, 2494, 2492, 1, 0, 0, 0, 2494, + 2493, 1, 0, 0, 0, 2495, 461, 1, 0, 0, 0, 2496, 2497, 3, 466, 233, 0, 2497, + 2498, 5, 385, 0, 0, 2498, 2503, 3, 466, 233, 0, 2499, 2500, 5, 385, 0, + 0, 2500, 2502, 3, 466, 233, 0, 2501, 2499, 1, 0, 0, 0, 2502, 2505, 1, 0, + 0, 0, 2503, 2501, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 463, 1, 0, + 0, 0, 2505, 2503, 1, 0, 0, 0, 2506, 2507, 3, 466, 233, 0, 2507, 2508, 5, + 327, 0, 0, 2508, 2513, 3, 466, 233, 0, 2509, 2510, 5, 327, 0, 0, 2510, + 2512, 3, 466, 233, 0, 2511, 2509, 1, 0, 0, 0, 2512, 2515, 1, 0, 0, 0, 2513, + 2511, 1, 0, 0, 0, 2513, 2514, 1, 0, 0, 0, 2514, 465, 1, 0, 0, 0, 2515, + 2513, 1, 0, 0, 0, 2516, 2517, 6, 233, -1, 0, 2517, 2518, 3, 468, 234, 0, + 2518, 2523, 1, 0, 0, 0, 2519, 2520, 10, 1, 0, 0, 2520, 2522, 3, 468, 234, + 0, 2521, 2519, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, + 0, 2523, 2524, 1, 0, 0, 0, 2524, 467, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, + 0, 2526, 2527, 6, 234, -1, 0, 2527, 2528, 3, 470, 235, 0, 2528, 2534, 1, + 0, 0, 0, 2529, 2530, 10, 1, 0, 0, 2530, 2531, 5, 357, 0, 0, 2531, 2533, + 3, 470, 235, 0, 2532, 2529, 1, 0, 0, 0, 2533, 2536, 1, 0, 0, 0, 2534, 2532, + 1, 0, 0, 0, 2534, 2535, 1, 0, 0, 0, 2535, 469, 1, 0, 0, 0, 2536, 2534, + 1, 0, 0, 0, 2537, 2541, 3, 476, 238, 0, 2538, 2541, 3, 472, 236, 0, 2539, + 2541, 3, 474, 237, 0, 2540, 2537, 1, 0, 0, 0, 2540, 2538, 1, 0, 0, 0, 2540, + 2539, 1, 0, 0, 0, 2541, 471, 1, 0, 0, 0, 2542, 2543, 3, 476, 238, 0, 2543, + 2544, 3, 434, 217, 0, 2544, 473, 1, 0, 0, 0, 2545, 2546, 3, 476, 238, 0, + 2546, 2547, 5, 376, 0, 0, 2547, 475, 1, 0, 0, 0, 2548, 2551, 3, 478, 239, + 0, 2549, 2551, 3, 494, 247, 0, 2550, 2548, 1, 0, 0, 0, 2550, 2549, 1, 0, + 0, 0, 2551, 477, 1, 0, 0, 0, 2552, 2560, 3, 480, 240, 0, 2553, 2560, 3, + 482, 241, 0, 2554, 2560, 3, 484, 242, 0, 2555, 2560, 3, 486, 243, 0, 2556, + 2560, 3, 488, 244, 0, 2557, 2560, 3, 490, 245, 0, 2558, 2560, 3, 492, 246, + 0, 2559, 2552, 1, 0, 0, 0, 2559, 2553, 1, 0, 0, 0, 2559, 2554, 1, 0, 0, + 0, 2559, 2555, 1, 0, 0, 0, 2559, 2556, 1, 0, 0, 0, 2559, 2557, 1, 0, 0, + 0, 2559, 2558, 1, 0, 0, 0, 2560, 479, 1, 0, 0, 0, 2561, 2562, 5, 371, 0, + 0, 2562, 2563, 3, 494, 247, 0, 2563, 481, 1, 0, 0, 0, 2564, 2565, 5, 383, + 0, 0, 2565, 2566, 3, 494, 247, 0, 2566, 483, 1, 0, 0, 0, 2567, 2568, 3, + 494, 247, 0, 2568, 2569, 5, 366, 0, 0, 2569, 485, 1, 0, 0, 0, 2570, 2571, + 5, 336, 0, 0, 2571, 2572, 3, 494, 247, 0, 2572, 487, 1, 0, 0, 0, 2573, + 2574, 5, 383, 0, 0, 2574, 2575, 3, 494, 247, 0, 2575, 2576, 5, 366, 0, + 0, 2576, 489, 1, 0, 0, 0, 2577, 2578, 5, 371, 0, 0, 2578, 2579, 3, 494, + 247, 0, 2579, 2580, 5, 366, 0, 0, 2580, 491, 1, 0, 0, 0, 2581, 2582, 5, + 372, 0, 0, 2582, 2583, 3, 494, 247, 0, 2583, 493, 1, 0, 0, 0, 2584, 2587, + 3, 498, 249, 0, 2585, 2587, 3, 496, 248, 0, 2586, 2584, 1, 0, 0, 0, 2586, + 2585, 1, 0, 0, 0, 2587, 495, 1, 0, 0, 0, 2588, 2589, 5, 365, 0, 0, 2589, + 2590, 3, 498, 249, 0, 2590, 497, 1, 0, 0, 0, 2591, 2597, 3, 1080, 540, + 0, 2592, 2593, 5, 370, 0, 0, 2593, 2594, 3, 460, 230, 0, 2594, 2595, 5, + 381, 0, 0, 2595, 2597, 1, 0, 0, 0, 2596, 2591, 1, 0, 0, 0, 2596, 2592, + 1, 0, 0, 0, 2597, 499, 1, 0, 0, 0, 2598, 2599, 5, 230, 0, 0, 2599, 2600, + 3, 774, 387, 0, 2600, 501, 1, 0, 0, 0, 2601, 2602, 5, 234, 0, 0, 2602, + 2603, 3, 504, 252, 0, 2603, 503, 1, 0, 0, 0, 2604, 2609, 3, 506, 253, 0, + 2605, 2606, 5, 360, 0, 0, 2606, 2608, 3, 506, 253, 0, 2607, 2605, 1, 0, + 0, 0, 2608, 2611, 1, 0, 0, 0, 2609, 2607, 1, 0, 0, 0, 2609, 2610, 1, 0, + 0, 0, 2610, 505, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2614, 3, 508, + 254, 0, 2613, 2615, 3, 510, 255, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, + 1, 0, 0, 0, 2615, 507, 1, 0, 0, 0, 2616, 2617, 3, 1084, 542, 0, 2617, 509, + 1, 0, 0, 0, 2618, 2619, 5, 27, 0, 0, 2619, 2620, 3, 1092, 546, 0, 2620, + 511, 1, 0, 0, 0, 2621, 2622, 5, 102, 0, 0, 2622, 2623, 5, 41, 0, 0, 2623, + 2624, 3, 514, 257, 0, 2624, 513, 1, 0, 0, 0, 2625, 2630, 3, 516, 258, 0, + 2626, 2627, 5, 360, 0, 0, 2627, 2629, 3, 516, 258, 0, 2628, 2626, 1, 0, + 0, 0, 2629, 2632, 1, 0, 0, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, + 0, 0, 2631, 2635, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2633, 2635, 3, 518, + 259, 0, 2634, 2625, 1, 0, 0, 0, 2634, 2633, 1, 0, 0, 0, 2635, 515, 1, 0, + 0, 0, 2636, 2637, 3, 912, 456, 0, 2637, 517, 1, 0, 0, 0, 2638, 2639, 5, + 370, 0, 0, 2639, 2640, 5, 381, 0, 0, 2640, 519, 1, 0, 0, 0, 2641, 2642, + 5, 162, 0, 0, 2642, 2643, 5, 41, 0, 0, 2643, 2644, 3, 522, 261, 0, 2644, + 521, 1, 0, 0, 0, 2645, 2650, 3, 524, 262, 0, 2646, 2647, 5, 360, 0, 0, + 2647, 2649, 3, 524, 262, 0, 2648, 2646, 1, 0, 0, 0, 2649, 2652, 1, 0, 0, + 0, 2650, 2648, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 523, 1, 0, 0, + 0, 2652, 2650, 1, 0, 0, 0, 2653, 2655, 3, 526, 263, 0, 2654, 2656, 3, 528, + 264, 0, 2655, 2654, 1, 0, 0, 0, 2655, 2656, 1, 0, 0, 0, 2656, 2658, 1, + 0, 0, 0, 2657, 2659, 3, 530, 265, 0, 2658, 2657, 1, 0, 0, 0, 2658, 2659, + 1, 0, 0, 0, 2659, 525, 1, 0, 0, 0, 2660, 2661, 3, 840, 420, 0, 2661, 527, + 1, 0, 0, 0, 2662, 2663, 7, 9, 0, 0, 2663, 529, 1, 0, 0, 0, 2664, 2665, + 5, 155, 0, 0, 2665, 2669, 5, 288, 0, 0, 2666, 2667, 5, 155, 0, 0, 2667, + 2669, 5, 295, 0, 0, 2668, 2664, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, + 531, 1, 0, 0, 0, 2670, 2671, 5, 132, 0, 0, 2671, 2672, 3, 852, 426, 0, + 2672, 533, 1, 0, 0, 0, 2673, 2674, 3, 536, 268, 0, 2674, 2675, 3, 852, + 426, 0, 2675, 535, 1, 0, 0, 0, 2676, 2677, 7, 10, 0, 0, 2677, 537, 1, 0, + 0, 0, 2678, 2682, 3, 540, 270, 0, 2679, 2682, 3, 544, 272, 0, 2680, 2682, + 3, 572, 286, 0, 2681, 2678, 1, 0, 0, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2680, + 1, 0, 0, 0, 2682, 539, 1, 0, 0, 0, 2683, 2688, 5, 382, 0, 0, 2684, 2685, + 3, 548, 274, 0, 2685, 2686, 3, 1062, 531, 0, 2686, 2688, 1, 0, 0, 0, 2687, + 2683, 1, 0, 0, 0, 2687, 2684, 1, 0, 0, 0, 2688, 541, 1, 0, 0, 0, 2689, + 2690, 3, 548, 274, 0, 2690, 2691, 3, 1062, 531, 0, 2691, 543, 1, 0, 0, + 0, 2692, 2697, 3, 546, 273, 0, 2693, 2694, 3, 550, 275, 0, 2694, 2695, + 3, 1062, 531, 0, 2695, 2697, 1, 0, 0, 0, 2696, 2692, 1, 0, 0, 0, 2696, + 2693, 1, 0, 0, 0, 2697, 545, 1, 0, 0, 0, 2698, 2699, 7, 11, 0, 0, 2699, + 547, 1, 0, 0, 0, 2700, 2702, 5, 382, 0, 0, 2701, 2703, 3, 552, 276, 0, + 2702, 2701, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 549, 1, 0, 0, 0, + 2704, 2709, 5, 333, 0, 0, 2705, 2706, 5, 382, 0, 0, 2706, 2708, 5, 333, + 0, 0, 2707, 2705, 1, 0, 0, 0, 2708, 2711, 1, 0, 0, 0, 2709, 2707, 1, 0, + 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2712, 1, 0, 0, 0, 2711, 2709, 1, 0, + 0, 0, 2712, 2714, 5, 382, 0, 0, 2713, 2715, 3, 552, 276, 0, 2714, 2713, + 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 551, 1, 0, 0, 0, 2716, 2717, + 3, 1060, 530, 0, 2717, 2718, 5, 382, 0, 0, 2718, 2720, 1, 0, 0, 0, 2719, + 2716, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2719, 1, 0, 0, 0, 2721, + 2722, 1, 0, 0, 0, 2722, 553, 1, 0, 0, 0, 2723, 2724, 3, 570, 285, 0, 2724, + 2725, 3, 1064, 532, 0, 2725, 2730, 1, 0, 0, 0, 2726, 2730, 3, 1066, 533, + 0, 2727, 2730, 3, 558, 279, 0, 2728, 2730, 3, 572, 286, 0, 2729, 2723, + 1, 0, 0, 0, 2729, 2726, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2728, + 1, 0, 0, 0, 2730, 555, 1, 0, 0, 0, 2731, 2733, 3, 570, 285, 0, 2732, 2731, + 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2734, 1, 0, 0, 0, 2734, 2735, + 3, 1064, 532, 0, 2735, 557, 1, 0, 0, 0, 2736, 2737, 7, 12, 0, 0, 2737, + 559, 1, 0, 0, 0, 2738, 2741, 3, 562, 281, 0, 2739, 2741, 3, 572, 286, 0, + 2740, 2738, 1, 0, 0, 0, 2740, 2739, 1, 0, 0, 0, 2741, 561, 1, 0, 0, 0, + 2742, 2744, 3, 570, 285, 0, 2743, 2742, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, + 0, 2744, 2745, 1, 0, 0, 0, 2745, 2746, 3, 1068, 534, 0, 2746, 563, 1, 0, + 0, 0, 2747, 2748, 3, 570, 285, 0, 2748, 2749, 3, 1074, 537, 0, 2749, 2753, + 1, 0, 0, 0, 2750, 2753, 3, 1076, 538, 0, 2751, 2753, 3, 572, 286, 0, 2752, + 2747, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2751, 1, 0, 0, 0, 2753, + 565, 1, 0, 0, 0, 2754, 2757, 3, 568, 284, 0, 2755, 2757, 3, 572, 286, 0, + 2756, 2754, 1, 0, 0, 0, 2756, 2755, 1, 0, 0, 0, 2757, 567, 1, 0, 0, 0, + 2758, 2760, 3, 570, 285, 0, 2759, 2758, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, + 0, 2760, 2761, 1, 0, 0, 0, 2761, 2762, 3, 1078, 539, 0, 2762, 569, 1, 0, + 0, 0, 2763, 2765, 3, 538, 269, 0, 2764, 2766, 5, 382, 0, 0, 2765, 2764, + 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2772, 1, 0, 0, 0, 2767, 2768, + 3, 1056, 528, 0, 2768, 2769, 5, 374, 0, 0, 2769, 2771, 1, 0, 0, 0, 2770, + 2767, 1, 0, 0, 0, 2771, 2774, 1, 0, 0, 0, 2772, 2770, 1, 0, 0, 0, 2772, + 2773, 1, 0, 0, 0, 2773, 2783, 1, 0, 0, 0, 2774, 2772, 1, 0, 0, 0, 2775, + 2776, 3, 1056, 528, 0, 2776, 2777, 5, 374, 0, 0, 2777, 2779, 1, 0, 0, 0, + 2778, 2775, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2778, 1, 0, 0, 0, + 2780, 2781, 1, 0, 0, 0, 2781, 2783, 1, 0, 0, 0, 2782, 2763, 1, 0, 0, 0, + 2782, 2778, 1, 0, 0, 0, 2783, 571, 1, 0, 0, 0, 2784, 2785, 5, 325, 0, 0, + 2785, 573, 1, 0, 0, 0, 2786, 2787, 5, 368, 0, 0, 2787, 2788, 3, 576, 288, + 0, 2788, 2789, 5, 379, 0, 0, 2789, 575, 1, 0, 0, 0, 2790, 2791, 3, 578, + 289, 0, 2791, 577, 1, 0, 0, 0, 2792, 2797, 3, 580, 290, 0, 2793, 2794, + 5, 360, 0, 0, 2794, 2796, 3, 580, 290, 0, 2795, 2793, 1, 0, 0, 0, 2796, + 2799, 1, 0, 0, 0, 2797, 2795, 1, 0, 0, 0, 2797, 2798, 1, 0, 0, 0, 2798, + 579, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, 0, 2800, 2803, 3, 582, 291, 0, 2801, + 2803, 3, 602, 301, 0, 2802, 2800, 1, 0, 0, 0, 2802, 2801, 1, 0, 0, 0, 2803, + 581, 1, 0, 0, 0, 2804, 2807, 3, 584, 292, 0, 2805, 2807, 3, 586, 293, 0, + 2806, 2804, 1, 0, 0, 0, 2806, 2805, 1, 0, 0, 0, 2807, 583, 1, 0, 0, 0, + 2808, 2810, 3, 1140, 570, 0, 2809, 2811, 5, 317, 0, 0, 2810, 2809, 1, 0, + 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2813, 3, 1070, + 535, 0, 2813, 2815, 1, 0, 0, 0, 2814, 2808, 1, 0, 0, 0, 2814, 2815, 1, + 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2818, 5, 370, 0, 0, 2817, 2819, + 3, 592, 296, 0, 2818, 2817, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2821, + 1, 0, 0, 0, 2820, 2822, 3, 590, 295, 0, 2821, 2820, 1, 0, 0, 0, 2821, 2822, + 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2824, 5, 381, 0, 0, 2824, 585, + 1, 0, 0, 0, 2825, 2827, 3, 1140, 570, 0, 2826, 2828, 5, 317, 0, 0, 2827, + 2826, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, + 2832, 3, 588, 294, 0, 2830, 2831, 5, 27, 0, 0, 2831, 2833, 3, 592, 296, + 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 587, 1, 0, 0, + 0, 2834, 2836, 3, 1070, 535, 0, 2835, 2837, 3, 590, 295, 0, 2836, 2835, + 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2840, + 3, 590, 295, 0, 2839, 2834, 1, 0, 0, 0, 2839, 2838, 1, 0, 0, 0, 2840, 589, + 1, 0, 0, 0, 2841, 2843, 3, 596, 298, 0, 2842, 2844, 3, 594, 297, 0, 2843, + 2842, 1, 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 2847, 1, 0, 0, 0, 2845, + 2847, 3, 594, 297, 0, 2846, 2841, 1, 0, 0, 0, 2846, 2845, 1, 0, 0, 0, 2847, + 591, 1, 0, 0, 0, 2848, 2849, 3, 1112, 556, 0, 2849, 593, 1, 0, 0, 0, 2850, + 2856, 3, 598, 299, 0, 2851, 2856, 3, 600, 300, 0, 2852, 2853, 3, 598, 299, + 0, 2853, 2854, 3, 600, 300, 0, 2854, 2856, 1, 0, 0, 0, 2855, 2850, 1, 0, + 0, 0, 2855, 2851, 1, 0, 0, 0, 2855, 2852, 1, 0, 0, 0, 2856, 595, 1, 0, + 0, 0, 2857, 2859, 3, 660, 330, 0, 2858, 2857, 1, 0, 0, 0, 2858, 2859, 1, + 0, 0, 0, 2859, 2860, 1, 0, 0, 0, 2860, 2861, 5, 1, 0, 0, 2861, 597, 1, + 0, 0, 0, 2862, 2863, 3, 660, 330, 0, 2863, 599, 1, 0, 0, 0, 2864, 2865, + 3, 664, 332, 0, 2865, 601, 1, 0, 0, 0, 2866, 2869, 3, 604, 302, 0, 2867, + 2869, 3, 606, 303, 0, 2868, 2866, 1, 0, 0, 0, 2868, 2867, 1, 0, 0, 0, 2869, + 603, 1, 0, 0, 0, 2870, 2872, 3, 638, 319, 0, 2871, 2870, 1, 0, 0, 0, 2871, + 2872, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2875, 3, 1144, 572, 0, + 2874, 2876, 5, 317, 0, 0, 2875, 2874, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, + 0, 2876, 2877, 1, 0, 0, 0, 2877, 2878, 3, 1072, 536, 0, 2878, 2880, 1, + 0, 0, 0, 2879, 2871, 1, 0, 0, 0, 2879, 2880, 1, 0, 0, 0, 2880, 2883, 1, + 0, 0, 0, 2881, 2884, 3, 620, 310, 0, 2882, 2884, 3, 626, 313, 0, 2883, + 2881, 1, 0, 0, 0, 2883, 2882, 1, 0, 0, 0, 2884, 605, 1, 0, 0, 0, 2885, + 2886, 3, 638, 319, 0, 2886, 2888, 3, 1144, 572, 0, 2887, 2889, 5, 317, + 0, 0, 2888, 2887, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2890, 1, 0, + 0, 0, 2890, 2891, 3, 608, 304, 0, 2891, 2892, 3, 640, 320, 0, 2892, 607, + 1, 0, 0, 0, 2893, 2895, 3, 1072, 536, 0, 2894, 2896, 3, 610, 305, 0, 2895, + 2894, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2899, 1, 0, 0, 0, 2897, + 2899, 3, 610, 305, 0, 2898, 2893, 1, 0, 0, 0, 2898, 2897, 1, 0, 0, 0, 2899, + 609, 1, 0, 0, 0, 2900, 2902, 3, 614, 307, 0, 2901, 2903, 3, 612, 306, 0, + 2902, 2901, 1, 0, 0, 0, 2902, 2903, 1, 0, 0, 0, 2903, 2906, 1, 0, 0, 0, + 2904, 2906, 3, 612, 306, 0, 2905, 2900, 1, 0, 0, 0, 2905, 2904, 1, 0, 0, + 0, 2906, 611, 1, 0, 0, 0, 2907, 2913, 3, 616, 308, 0, 2908, 2913, 3, 618, + 309, 0, 2909, 2910, 3, 616, 308, 0, 2910, 2911, 3, 618, 309, 0, 2911, 2913, + 1, 0, 0, 0, 2912, 2907, 1, 0, 0, 0, 2912, 2908, 1, 0, 0, 0, 2912, 2909, + 1, 0, 0, 0, 2913, 613, 1, 0, 0, 0, 2914, 2916, 3, 660, 330, 0, 2915, 2914, + 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2918, + 5, 1, 0, 0, 2918, 615, 1, 0, 0, 0, 2919, 2920, 3, 660, 330, 0, 2920, 617, + 1, 0, 0, 0, 2921, 2922, 3, 664, 332, 0, 2922, 619, 1, 0, 0, 0, 2923, 2926, + 3, 622, 311, 0, 2924, 2926, 3, 624, 312, 0, 2925, 2923, 1, 0, 0, 0, 2925, + 2924, 1, 0, 0, 0, 2926, 621, 1, 0, 0, 0, 2927, 2928, 3, 634, 317, 0, 2928, + 2929, 3, 628, 314, 0, 2929, 2930, 3, 636, 318, 0, 2930, 623, 1, 0, 0, 0, + 2931, 2932, 3, 636, 318, 0, 2932, 2933, 3, 630, 315, 0, 2933, 2934, 3, + 634, 317, 0, 2934, 625, 1, 0, 0, 0, 2935, 2936, 3, 634, 317, 0, 2936, 2937, + 3, 632, 316, 0, 2937, 2938, 3, 636, 318, 0, 2938, 627, 1, 0, 0, 0, 2939, + 2940, 5, 343, 0, 0, 2940, 2941, 3, 610, 305, 0, 2941, 2942, 5, 328, 0, + 0, 2942, 629, 1, 0, 0, 0, 2943, 2944, 5, 337, 0, 0, 2944, 2945, 3, 610, + 305, 0, 2945, 2946, 5, 347, 0, 0, 2946, 631, 1, 0, 0, 0, 2947, 2948, 5, + 354, 0, 0, 2948, 2949, 3, 610, 305, 0, 2949, 2950, 5, 348, 0, 0, 2950, + 633, 1, 0, 0, 0, 2951, 2952, 5, 370, 0, 0, 2952, 2953, 3, 656, 328, 0, + 2953, 2954, 5, 381, 0, 0, 2954, 2961, 1, 0, 0, 0, 2955, 2957, 5, 370, 0, + 0, 2956, 2958, 3, 590, 295, 0, 2957, 2956, 1, 0, 0, 0, 2957, 2958, 1, 0, + 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2961, 5, 381, 0, 0, 2960, 2951, 1, + 0, 0, 0, 2960, 2955, 1, 0, 0, 0, 2961, 635, 1, 0, 0, 0, 2962, 2963, 5, + 370, 0, 0, 2963, 2964, 3, 658, 329, 0, 2964, 2965, 5, 381, 0, 0, 2965, + 2972, 1, 0, 0, 0, 2966, 2968, 5, 370, 0, 0, 2967, 2969, 3, 590, 295, 0, + 2968, 2967, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, + 2970, 2972, 5, 381, 0, 0, 2971, 2962, 1, 0, 0, 0, 2971, 2966, 1, 0, 0, + 0, 2972, 637, 1, 0, 0, 0, 2973, 2974, 7, 13, 0, 0, 2974, 639, 1, 0, 0, + 0, 2975, 2976, 5, 280, 0, 0, 2976, 2977, 3, 642, 321, 0, 2977, 641, 1, + 0, 0, 0, 2978, 2981, 3, 644, 322, 0, 2979, 2981, 3, 650, 325, 0, 2980, + 2978, 1, 0, 0, 0, 2980, 2979, 1, 0, 0, 0, 2981, 643, 1, 0, 0, 0, 2982, + 2985, 3, 646, 323, 0, 2983, 2985, 3, 648, 324, 0, 2984, 2982, 1, 0, 0, + 0, 2984, 2983, 1, 0, 0, 0, 2985, 645, 1, 0, 0, 0, 2986, 2987, 5, 370, 0, + 0, 2987, 2988, 3, 656, 328, 0, 2988, 2989, 3, 652, 326, 0, 2989, 2990, + 3, 658, 329, 0, 2990, 2991, 5, 381, 0, 0, 2991, 647, 1, 0, 0, 0, 2992, + 2993, 5, 370, 0, 0, 2993, 2994, 3, 658, 329, 0, 2994, 2995, 5, 335, 0, + 0, 2995, 2996, 3, 656, 328, 0, 2996, 2997, 5, 381, 0, 0, 2997, 649, 1, + 0, 0, 0, 2998, 2999, 5, 370, 0, 0, 2999, 3000, 3, 656, 328, 0, 3000, 3001, + 3, 654, 327, 0, 3001, 3002, 3, 658, 329, 0, 3002, 3003, 5, 381, 0, 0, 3003, + 651, 1, 0, 0, 0, 3004, 3005, 7, 14, 0, 0, 3005, 653, 1, 0, 0, 0, 3006, + 3007, 7, 15, 0, 0, 3007, 655, 1, 0, 0, 0, 3008, 3009, 3, 1112, 556, 0, + 3009, 657, 1, 0, 0, 0, 3010, 3011, 3, 1112, 556, 0, 3011, 659, 1, 0, 0, + 0, 3012, 3013, 5, 292, 0, 0, 3013, 3020, 3, 1080, 540, 0, 3014, 3015, 5, + 294, 0, 0, 3015, 3020, 3, 662, 331, 0, 3016, 3017, 3, 390, 195, 0, 3017, + 3018, 3, 662, 331, 0, 3018, 3020, 1, 0, 0, 0, 3019, 3012, 1, 0, 0, 0, 3019, + 3014, 1, 0, 0, 0, 3019, 3016, 1, 0, 0, 0, 3020, 661, 1, 0, 0, 0, 3021, + 3026, 3, 1080, 540, 0, 3022, 3023, 5, 357, 0, 0, 3023, 3025, 3, 1080, 540, + 0, 3024, 3022, 1, 0, 0, 0, 3025, 3028, 1, 0, 0, 0, 3026, 3024, 1, 0, 0, + 0, 3026, 3027, 1, 0, 0, 0, 3027, 663, 1, 0, 0, 0, 3028, 3026, 1, 0, 0, + 0, 3029, 3031, 5, 368, 0, 0, 3030, 3032, 3, 666, 333, 0, 3031, 3030, 1, + 0, 0, 0, 3031, 3032, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 5, + 379, 0, 0, 3034, 665, 1, 0, 0, 0, 3035, 3040, 3, 668, 334, 0, 3036, 3037, + 5, 360, 0, 0, 3037, 3039, 3, 668, 334, 0, 3038, 3036, 1, 0, 0, 0, 3039, + 3042, 1, 0, 0, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, + 667, 1, 0, 0, 0, 3042, 3040, 1, 0, 0, 0, 3043, 3045, 3, 1082, 541, 0, 3044, + 3046, 3, 676, 338, 0, 3045, 3044, 1, 0, 0, 0, 3045, 3046, 1, 0, 0, 0, 3046, + 3047, 1, 0, 0, 0, 3047, 3048, 3, 670, 335, 0, 3048, 669, 1, 0, 0, 0, 3049, + 3050, 3, 674, 337, 0, 3050, 671, 1, 0, 0, 0, 3051, 3053, 5, 278, 0, 0, + 3052, 3051, 1, 0, 0, 0, 3052, 3053, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, + 3054, 3055, 5, 313, 0, 0, 3055, 3056, 3, 766, 383, 0, 3056, 673, 1, 0, + 0, 0, 3057, 3058, 6, 337, -1, 0, 3058, 3115, 3, 678, 339, 0, 3059, 3115, + 3, 758, 379, 0, 3060, 3061, 3, 760, 380, 0, 3061, 3062, 5, 371, 0, 0, 3062, + 3063, 3, 674, 337, 0, 3063, 3068, 5, 366, 0, 0, 3064, 3065, 5, 369, 0, + 0, 3065, 3066, 3, 688, 344, 0, 3066, 3067, 5, 380, 0, 0, 3067, 3069, 1, + 0, 0, 0, 3068, 3064, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3071, 1, + 0, 0, 0, 3070, 3072, 3, 770, 385, 0, 3071, 3070, 1, 0, 0, 0, 3071, 3072, + 1, 0, 0, 0, 3072, 3115, 1, 0, 0, 0, 3073, 3078, 3, 760, 380, 0, 3074, 3075, + 5, 369, 0, 0, 3075, 3076, 3, 688, 344, 0, 3076, 3077, 5, 380, 0, 0, 3077, + 3079, 1, 0, 0, 0, 3078, 3074, 1, 0, 0, 0, 3078, 3079, 1, 0, 0, 0, 3079, + 3081, 1, 0, 0, 0, 3080, 3082, 3, 770, 385, 0, 3081, 3080, 1, 0, 0, 0, 3081, + 3082, 1, 0, 0, 0, 3082, 3115, 1, 0, 0, 0, 3083, 3115, 3, 764, 382, 0, 3084, + 3086, 5, 25, 0, 0, 3085, 3087, 5, 225, 0, 0, 3086, 3085, 1, 0, 0, 0, 3086, + 3087, 1, 0, 0, 0, 3087, 3089, 1, 0, 0, 0, 3088, 3090, 3, 770, 385, 0, 3089, + 3088, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 3115, 1, 0, 0, 0, 3091, + 3093, 5, 25, 0, 0, 3092, 3091, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, + 3094, 1, 0, 0, 0, 3094, 3095, 5, 305, 0, 0, 3095, 3097, 5, 225, 0, 0, 3096, + 3098, 3, 770, 385, 0, 3097, 3096, 1, 0, 0, 0, 3097, 3098, 1, 0, 0, 0, 3098, + 3115, 1, 0, 0, 0, 3099, 3101, 5, 25, 0, 0, 3100, 3102, 5, 225, 0, 0, 3101, + 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, + 3104, 5, 371, 0, 0, 3104, 3109, 3, 674, 337, 0, 3105, 3106, 5, 385, 0, + 0, 3106, 3108, 3, 674, 337, 0, 3107, 3105, 1, 0, 0, 0, 3108, 3111, 1, 0, + 0, 0, 3109, 3107, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3112, 1, 0, + 0, 0, 3111, 3109, 1, 0, 0, 0, 3112, 3113, 5, 366, 0, 0, 3113, 3115, 1, + 0, 0, 0, 3114, 3057, 1, 0, 0, 0, 3114, 3059, 1, 0, 0, 0, 3114, 3060, 1, + 0, 0, 0, 3114, 3073, 1, 0, 0, 0, 3114, 3083, 1, 0, 0, 0, 3114, 3084, 1, + 0, 0, 0, 3114, 3092, 1, 0, 0, 0, 3114, 3099, 1, 0, 0, 0, 3115, 3132, 1, + 0, 0, 0, 3116, 3117, 10, 1, 0, 0, 3117, 3118, 5, 385, 0, 0, 3118, 3131, + 3, 674, 337, 2, 3119, 3120, 10, 7, 0, 0, 3120, 3125, 3, 760, 380, 0, 3121, + 3122, 5, 369, 0, 0, 3122, 3123, 3, 688, 344, 0, 3123, 3124, 5, 380, 0, + 0, 3124, 3126, 1, 0, 0, 0, 3125, 3121, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, + 0, 3126, 3128, 1, 0, 0, 0, 3127, 3129, 3, 770, 385, 0, 3128, 3127, 1, 0, + 0, 0, 3128, 3129, 1, 0, 0, 0, 3129, 3131, 1, 0, 0, 0, 3130, 3116, 1, 0, + 0, 0, 3130, 3119, 1, 0, 0, 0, 3131, 3134, 1, 0, 0, 0, 3132, 3130, 1, 0, + 0, 0, 3132, 3133, 1, 0, 0, 0, 3133, 675, 1, 0, 0, 0, 3134, 3132, 1, 0, + 0, 0, 3135, 3136, 7, 16, 0, 0, 3136, 677, 1, 0, 0, 0, 3137, 3145, 3, 680, + 340, 0, 3138, 3145, 3, 682, 341, 0, 3139, 3145, 3, 684, 342, 0, 3140, 3145, + 3, 692, 346, 0, 3141, 3145, 3, 712, 356, 0, 3142, 3145, 3, 730, 365, 0, + 3143, 3145, 3, 732, 366, 0, 3144, 3137, 1, 0, 0, 0, 3144, 3138, 1, 0, 0, + 0, 3144, 3139, 1, 0, 0, 0, 3144, 3140, 1, 0, 0, 0, 3144, 3141, 1, 0, 0, + 0, 3144, 3142, 1, 0, 0, 0, 3144, 3143, 1, 0, 0, 0, 3145, 679, 1, 0, 0, + 0, 3146, 3148, 7, 17, 0, 0, 3147, 3149, 3, 770, 385, 0, 3148, 3147, 1, + 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 681, 1, 0, 0, 0, 3150, 3160, 5, + 202, 0, 0, 3151, 3155, 5, 370, 0, 0, 3152, 3153, 3, 686, 343, 0, 3153, + 3154, 5, 360, 0, 0, 3154, 3156, 1, 0, 0, 0, 3155, 3152, 1, 0, 0, 0, 3155, + 3156, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 3, 688, 344, 0, 3158, + 3159, 5, 381, 0, 0, 3159, 3161, 1, 0, 0, 0, 3160, 3151, 1, 0, 0, 0, 3160, + 3161, 1, 0, 0, 0, 3161, 3163, 1, 0, 0, 0, 3162, 3164, 3, 770, 385, 0, 3163, + 3162, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3186, 1, 0, 0, 0, 3165, + 3170, 5, 50, 0, 0, 3166, 3167, 5, 370, 0, 0, 3167, 3168, 3, 690, 345, 0, + 3168, 3169, 5, 381, 0, 0, 3169, 3171, 1, 0, 0, 0, 3170, 3166, 1, 0, 0, + 0, 3170, 3171, 1, 0, 0, 0, 3171, 3173, 1, 0, 0, 0, 3172, 3174, 3, 770, + 385, 0, 3173, 3172, 1, 0, 0, 0, 3173, 3174, 1, 0, 0, 0, 3174, 3186, 1, + 0, 0, 0, 3175, 3180, 5, 227, 0, 0, 3176, 3177, 5, 370, 0, 0, 3177, 3178, + 3, 688, 344, 0, 3178, 3179, 5, 381, 0, 0, 3179, 3181, 1, 0, 0, 0, 3180, + 3176, 1, 0, 0, 0, 3180, 3181, 1, 0, 0, 0, 3181, 3183, 1, 0, 0, 0, 3182, + 3184, 3, 770, 385, 0, 3183, 3182, 1, 0, 0, 0, 3183, 3184, 1, 0, 0, 0, 3184, + 3186, 1, 0, 0, 0, 3185, 3150, 1, 0, 0, 0, 3185, 3165, 1, 0, 0, 0, 3185, + 3175, 1, 0, 0, 0, 3186, 683, 1, 0, 0, 0, 3187, 3197, 5, 43, 0, 0, 3188, + 3192, 5, 370, 0, 0, 3189, 3190, 3, 686, 343, 0, 3190, 3191, 5, 360, 0, + 0, 3191, 3193, 1, 0, 0, 0, 3192, 3189, 1, 0, 0, 0, 3192, 3193, 1, 0, 0, + 0, 3193, 3194, 1, 0, 0, 0, 3194, 3195, 3, 688, 344, 0, 3195, 3196, 5, 381, + 0, 0, 3196, 3198, 1, 0, 0, 0, 3197, 3188, 1, 0, 0, 0, 3197, 3198, 1, 0, + 0, 0, 3198, 3200, 1, 0, 0, 0, 3199, 3201, 3, 770, 385, 0, 3200, 3199, 1, + 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3223, 1, 0, 0, 0, 3202, 3207, 5, + 36, 0, 0, 3203, 3204, 5, 370, 0, 0, 3204, 3205, 3, 690, 345, 0, 3205, 3206, + 5, 381, 0, 0, 3206, 3208, 1, 0, 0, 0, 3207, 3203, 1, 0, 0, 0, 3207, 3208, + 1, 0, 0, 0, 3208, 3210, 1, 0, 0, 0, 3209, 3211, 3, 770, 385, 0, 3210, 3209, + 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3223, 1, 0, 0, 0, 3212, 3217, + 5, 226, 0, 0, 3213, 3214, 5, 370, 0, 0, 3214, 3215, 3, 688, 344, 0, 3215, + 3216, 5, 381, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3213, 1, 0, 0, 0, 3217, + 3218, 1, 0, 0, 0, 3218, 3220, 1, 0, 0, 0, 3219, 3221, 3, 770, 385, 0, 3220, + 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3223, 1, 0, 0, 0, 3222, + 3187, 1, 0, 0, 0, 3222, 3202, 1, 0, 0, 0, 3222, 3212, 1, 0, 0, 0, 3223, + 685, 1, 0, 0, 0, 3224, 3225, 3, 1124, 562, 0, 3225, 687, 1, 0, 0, 0, 3226, + 3227, 3, 1124, 562, 0, 3227, 689, 1, 0, 0, 0, 3228, 3229, 3, 1124, 562, + 0, 3229, 691, 1, 0, 0, 0, 3230, 3233, 3, 694, 347, 0, 3231, 3233, 3, 710, + 355, 0, 3232, 3230, 1, 0, 0, 0, 3232, 3231, 1, 0, 0, 0, 3233, 693, 1, 0, + 0, 0, 3234, 3237, 3, 696, 348, 0, 3235, 3237, 3, 704, 352, 0, 3236, 3234, + 1, 0, 0, 0, 3236, 3235, 1, 0, 0, 0, 3237, 695, 1, 0, 0, 0, 3238, 3241, + 3, 698, 349, 0, 3239, 3241, 3, 700, 350, 0, 3240, 3238, 1, 0, 0, 0, 3240, + 3239, 1, 0, 0, 0, 3241, 697, 1, 0, 0, 0, 3242, 3244, 5, 113, 0, 0, 3243, + 3245, 3, 770, 385, 0, 3244, 3243, 1, 0, 0, 0, 3244, 3245, 1, 0, 0, 0, 3245, + 3289, 1, 0, 0, 0, 3246, 3248, 5, 115, 0, 0, 3247, 3249, 3, 770, 385, 0, + 3248, 3247, 1, 0, 0, 0, 3248, 3249, 1, 0, 0, 0, 3249, 3289, 1, 0, 0, 0, + 3250, 3252, 5, 117, 0, 0, 3251, 3253, 3, 770, 385, 0, 3252, 3251, 1, 0, + 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3289, 1, 0, 0, 0, 3254, 3256, 5, 119, + 0, 0, 3255, 3257, 3, 770, 385, 0, 3256, 3255, 1, 0, 0, 0, 3256, 3257, 1, + 0, 0, 0, 3257, 3289, 1, 0, 0, 0, 3258, 3260, 5, 121, 0, 0, 3259, 3261, + 3, 770, 385, 0, 3260, 3259, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3289, + 1, 0, 0, 0, 3262, 3264, 5, 123, 0, 0, 3263, 3265, 3, 770, 385, 0, 3264, + 3263, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 3289, 1, 0, 0, 0, 3266, + 3268, 5, 197, 0, 0, 3267, 3269, 3, 770, 385, 0, 3268, 3267, 1, 0, 0, 0, + 3268, 3269, 1, 0, 0, 0, 3269, 3289, 1, 0, 0, 0, 3270, 3275, 5, 111, 0, + 0, 3271, 3272, 5, 370, 0, 0, 3272, 3273, 3, 706, 353, 0, 3273, 3274, 5, + 381, 0, 0, 3274, 3276, 1, 0, 0, 0, 3275, 3271, 1, 0, 0, 0, 3275, 3276, + 1, 0, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3279, 3, 770, 385, 0, 3278, 3277, + 1, 0, 0, 0, 3278, 3279, 1, 0, 0, 0, 3279, 3289, 1, 0, 0, 0, 3280, 3282, + 5, 35, 0, 0, 3281, 3283, 3, 770, 385, 0, 3282, 3281, 1, 0, 0, 0, 3282, + 3283, 1, 0, 0, 0, 3283, 3289, 1, 0, 0, 0, 3284, 3286, 5, 191, 0, 0, 3285, + 3284, 1, 0, 0, 0, 3285, 3286, 1, 0, 0, 0, 3286, 3287, 1, 0, 0, 0, 3287, + 3289, 3, 702, 351, 0, 3288, 3242, 1, 0, 0, 0, 3288, 3246, 1, 0, 0, 0, 3288, + 3250, 1, 0, 0, 0, 3288, 3254, 1, 0, 0, 0, 3288, 3258, 1, 0, 0, 0, 3288, + 3262, 1, 0, 0, 0, 3288, 3266, 1, 0, 0, 0, 3288, 3270, 1, 0, 0, 0, 3288, + 3280, 1, 0, 0, 0, 3288, 3285, 1, 0, 0, 0, 3289, 699, 1, 0, 0, 0, 3290, + 3292, 5, 214, 0, 0, 3291, 3293, 3, 770, 385, 0, 3292, 3291, 1, 0, 0, 0, + 3292, 3293, 1, 0, 0, 0, 3293, 3335, 1, 0, 0, 0, 3294, 3296, 5, 215, 0, + 0, 3295, 3297, 3, 770, 385, 0, 3296, 3295, 1, 0, 0, 0, 3296, 3297, 1, 0, + 0, 0, 3297, 3335, 1, 0, 0, 0, 3298, 3300, 5, 216, 0, 0, 3299, 3301, 3, + 770, 385, 0, 3300, 3299, 1, 0, 0, 0, 3300, 3301, 1, 0, 0, 0, 3301, 3335, + 1, 0, 0, 0, 3302, 3304, 5, 217, 0, 0, 3303, 3305, 3, 770, 385, 0, 3304, + 3303, 1, 0, 0, 0, 3304, 3305, 1, 0, 0, 0, 3305, 3335, 1, 0, 0, 0, 3306, + 3308, 5, 218, 0, 0, 3307, 3309, 3, 770, 385, 0, 3308, 3307, 1, 0, 0, 0, + 3308, 3309, 1, 0, 0, 0, 3309, 3335, 1, 0, 0, 0, 3310, 3312, 5, 219, 0, + 0, 3311, 3313, 3, 770, 385, 0, 3312, 3311, 1, 0, 0, 0, 3312, 3313, 1, 0, + 0, 0, 3313, 3335, 1, 0, 0, 0, 3314, 3316, 5, 224, 0, 0, 3315, 3317, 3, + 770, 385, 0, 3316, 3315, 1, 0, 0, 0, 3316, 3317, 1, 0, 0, 0, 3317, 3335, + 1, 0, 0, 0, 3318, 3323, 5, 213, 0, 0, 3319, 3320, 5, 370, 0, 0, 3320, 3321, + 3, 706, 353, 0, 3321, 3322, 5, 381, 0, 0, 3322, 3324, 1, 0, 0, 0, 3323, + 3319, 1, 0, 0, 0, 3323, 3324, 1, 0, 0, 0, 3324, 3326, 1, 0, 0, 0, 3325, + 3327, 3, 770, 385, 0, 3326, 3325, 1, 0, 0, 0, 3326, 3327, 1, 0, 0, 0, 3327, + 3335, 1, 0, 0, 0, 3328, 3330, 5, 212, 0, 0, 3329, 3331, 3, 770, 385, 0, + 3330, 3329, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3335, 1, 0, 0, 0, + 3332, 3333, 5, 221, 0, 0, 3333, 3335, 3, 702, 351, 0, 3334, 3290, 1, 0, + 0, 0, 3334, 3294, 1, 0, 0, 0, 3334, 3298, 1, 0, 0, 0, 3334, 3302, 1, 0, + 0, 0, 3334, 3306, 1, 0, 0, 0, 3334, 3310, 1, 0, 0, 0, 3334, 3314, 1, 0, + 0, 0, 3334, 3318, 1, 0, 0, 0, 3334, 3328, 1, 0, 0, 0, 3334, 3332, 1, 0, + 0, 0, 3335, 701, 1, 0, 0, 0, 3336, 3338, 5, 114, 0, 0, 3337, 3339, 3, 770, + 385, 0, 3338, 3337, 1, 0, 0, 0, 3338, 3339, 1, 0, 0, 0, 3339, 3381, 1, + 0, 0, 0, 3340, 3342, 5, 116, 0, 0, 3341, 3343, 3, 770, 385, 0, 3342, 3341, + 1, 0, 0, 0, 3342, 3343, 1, 0, 0, 0, 3343, 3381, 1, 0, 0, 0, 3344, 3346, + 5, 118, 0, 0, 3345, 3347, 3, 770, 385, 0, 3346, 3345, 1, 0, 0, 0, 3346, + 3347, 1, 0, 0, 0, 3347, 3381, 1, 0, 0, 0, 3348, 3350, 5, 120, 0, 0, 3349, + 3351, 3, 770, 385, 0, 3350, 3349, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, + 3381, 1, 0, 0, 0, 3352, 3354, 5, 122, 0, 0, 3353, 3355, 3, 770, 385, 0, + 3354, 3353, 1, 0, 0, 0, 3354, 3355, 1, 0, 0, 0, 3355, 3381, 1, 0, 0, 0, + 3356, 3358, 5, 124, 0, 0, 3357, 3359, 3, 770, 385, 0, 3358, 3357, 1, 0, + 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 3381, 1, 0, 0, 0, 3360, 3361, 5, 196, + 0, 0, 3361, 3363, 5, 112, 0, 0, 3362, 3364, 3, 770, 385, 0, 3363, 3362, + 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3381, 1, 0, 0, 0, 3365, 3370, + 5, 112, 0, 0, 3366, 3367, 5, 370, 0, 0, 3367, 3368, 3, 706, 353, 0, 3368, + 3369, 5, 381, 0, 0, 3369, 3371, 1, 0, 0, 0, 3370, 3366, 1, 0, 0, 0, 3370, + 3371, 1, 0, 0, 0, 3371, 3373, 1, 0, 0, 0, 3372, 3374, 3, 770, 385, 0, 3373, + 3372, 1, 0, 0, 0, 3373, 3374, 1, 0, 0, 0, 3374, 3381, 1, 0, 0, 0, 3375, + 3376, 5, 34, 0, 0, 3376, 3378, 5, 112, 0, 0, 3377, 3379, 3, 770, 385, 0, + 3378, 3377, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3381, 1, 0, 0, 0, + 3380, 3336, 1, 0, 0, 0, 3380, 3340, 1, 0, 0, 0, 3380, 3344, 1, 0, 0, 0, + 3380, 3348, 1, 0, 0, 0, 3380, 3352, 1, 0, 0, 0, 3380, 3356, 1, 0, 0, 0, + 3380, 3360, 1, 0, 0, 0, 3380, 3365, 1, 0, 0, 0, 3380, 3375, 1, 0, 0, 0, + 3381, 703, 1, 0, 0, 0, 3382, 3393, 7, 18, 0, 0, 3383, 3384, 5, 370, 0, + 0, 3384, 3387, 3, 706, 353, 0, 3385, 3386, 5, 360, 0, 0, 3386, 3388, 3, + 708, 354, 0, 3387, 3385, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3389, + 1, 0, 0, 0, 3389, 3391, 5, 381, 0, 0, 3390, 3392, 3, 770, 385, 0, 3391, + 3390, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3394, 1, 0, 0, 0, 3393, + 3383, 1, 0, 0, 0, 3393, 3394, 1, 0, 0, 0, 3394, 705, 1, 0, 0, 0, 3395, + 3396, 3, 1126, 563, 0, 3396, 707, 1, 0, 0, 0, 3397, 3398, 3, 1126, 563, + 0, 3398, 709, 1, 0, 0, 0, 3399, 3401, 5, 94, 0, 0, 3400, 3402, 3, 770, + 385, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3445, 1, + 0, 0, 0, 3403, 3405, 5, 95, 0, 0, 3404, 3406, 3, 770, 385, 0, 3405, 3404, + 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 3445, 1, 0, 0, 0, 3407, 3409, + 5, 96, 0, 0, 3408, 3410, 3, 770, 385, 0, 3409, 3408, 1, 0, 0, 0, 3409, + 3410, 1, 0, 0, 0, 3410, 3445, 1, 0, 0, 0, 3411, 3413, 5, 97, 0, 0, 3412, + 3414, 3, 770, 385, 0, 3413, 3412, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, + 3445, 1, 0, 0, 0, 3415, 3417, 5, 98, 0, 0, 3416, 3418, 3, 770, 385, 0, + 3417, 3416, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3445, 1, 0, 0, 0, + 3419, 3428, 5, 93, 0, 0, 3420, 3421, 5, 370, 0, 0, 3421, 3424, 3, 706, + 353, 0, 3422, 3423, 5, 360, 0, 0, 3423, 3425, 3, 708, 354, 0, 3424, 3422, + 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3427, + 5, 381, 0, 0, 3427, 3429, 1, 0, 0, 0, 3428, 3420, 1, 0, 0, 0, 3428, 3429, + 1, 0, 0, 0, 3429, 3431, 1, 0, 0, 0, 3430, 3432, 3, 770, 385, 0, 3431, 3430, + 1, 0, 0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 3445, 1, 0, 0, 0, 3433, 3435, + 5, 175, 0, 0, 3434, 3436, 3, 770, 385, 0, 3435, 3434, 1, 0, 0, 0, 3435, + 3436, 1, 0, 0, 0, 3436, 3445, 1, 0, 0, 0, 3437, 3439, 5, 81, 0, 0, 3438, + 3440, 5, 172, 0, 0, 3439, 3438, 1, 0, 0, 0, 3439, 3440, 1, 0, 0, 0, 3440, + 3442, 1, 0, 0, 0, 3441, 3443, 3, 770, 385, 0, 3442, 3441, 1, 0, 0, 0, 3442, + 3443, 1, 0, 0, 0, 3443, 3445, 1, 0, 0, 0, 3444, 3399, 1, 0, 0, 0, 3444, + 3403, 1, 0, 0, 0, 3444, 3407, 1, 0, 0, 0, 3444, 3411, 1, 0, 0, 0, 3444, + 3415, 1, 0, 0, 0, 3444, 3419, 1, 0, 0, 0, 3444, 3433, 1, 0, 0, 0, 3444, + 3437, 1, 0, 0, 0, 3445, 711, 1, 0, 0, 0, 3446, 3449, 3, 714, 357, 0, 3447, + 3449, 3, 726, 363, 0, 3448, 3446, 1, 0, 0, 0, 3448, 3447, 1, 0, 0, 0, 3449, + 713, 1, 0, 0, 0, 3450, 3456, 3, 716, 358, 0, 3451, 3456, 3, 718, 359, 0, + 3452, 3456, 3, 720, 360, 0, 3453, 3456, 3, 722, 361, 0, 3454, 3456, 3, + 724, 362, 0, 3455, 3450, 1, 0, 0, 0, 3455, 3451, 1, 0, 0, 0, 3455, 3452, + 1, 0, 0, 0, 3455, 3453, 1, 0, 0, 0, 3455, 3454, 1, 0, 0, 0, 3456, 715, + 1, 0, 0, 0, 3457, 3458, 5, 235, 0, 0, 3458, 3460, 5, 71, 0, 0, 3459, 3461, + 3, 770, 385, 0, 3460, 3459, 1, 0, 0, 0, 3460, 3461, 1, 0, 0, 0, 3461, 3470, + 1, 0, 0, 0, 3462, 3463, 5, 208, 0, 0, 3463, 3464, 5, 231, 0, 0, 3464, 3465, + 5, 207, 0, 0, 3465, 3467, 5, 323, 0, 0, 3466, 3468, 3, 770, 385, 0, 3467, + 3466, 1, 0, 0, 0, 3467, 3468, 1, 0, 0, 0, 3468, 3470, 1, 0, 0, 0, 3469, + 3457, 1, 0, 0, 0, 3469, 3462, 1, 0, 0, 0, 3470, 717, 1, 0, 0, 0, 3471, + 3472, 5, 135, 0, 0, 3472, 3474, 5, 71, 0, 0, 3473, 3475, 3, 770, 385, 0, + 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3486, 1, 0, 0, 0, + 3476, 3480, 5, 208, 0, 0, 3477, 3478, 5, 321, 0, 0, 3478, 3479, 5, 207, + 0, 0, 3479, 3481, 5, 323, 0, 0, 3480, 3477, 1, 0, 0, 0, 3480, 3481, 1, + 0, 0, 0, 3481, 3483, 1, 0, 0, 0, 3482, 3484, 3, 770, 385, 0, 3483, 3482, + 1, 0, 0, 0, 3483, 3484, 1, 0, 0, 0, 3484, 3486, 1, 0, 0, 0, 3485, 3471, + 1, 0, 0, 0, 3485, 3476, 1, 0, 0, 0, 3486, 719, 1, 0, 0, 0, 3487, 3489, + 5, 70, 0, 0, 3488, 3490, 3, 770, 385, 0, 3489, 3488, 1, 0, 0, 0, 3489, + 3490, 1, 0, 0, 0, 3490, 721, 1, 0, 0, 0, 3491, 3492, 5, 235, 0, 0, 3492, + 3494, 5, 207, 0, 0, 3493, 3495, 3, 770, 385, 0, 3494, 3493, 1, 0, 0, 0, + 3494, 3495, 1, 0, 0, 0, 3495, 3504, 1, 0, 0, 0, 3496, 3497, 5, 207, 0, + 0, 3497, 3498, 5, 231, 0, 0, 3498, 3499, 5, 207, 0, 0, 3499, 3501, 5, 323, + 0, 0, 3500, 3502, 3, 770, 385, 0, 3501, 3500, 1, 0, 0, 0, 3501, 3502, 1, + 0, 0, 0, 3502, 3504, 1, 0, 0, 0, 3503, 3491, 1, 0, 0, 0, 3503, 3496, 1, + 0, 0, 0, 3504, 723, 1, 0, 0, 0, 3505, 3506, 5, 135, 0, 0, 3506, 3508, 5, + 207, 0, 0, 3507, 3509, 3, 770, 385, 0, 3508, 3507, 1, 0, 0, 0, 3508, 3509, + 1, 0, 0, 0, 3509, 3518, 1, 0, 0, 0, 3510, 3511, 5, 207, 0, 0, 3511, 3512, + 5, 321, 0, 0, 3512, 3513, 5, 207, 0, 0, 3513, 3515, 5, 323, 0, 0, 3514, + 3516, 3, 770, 385, 0, 3515, 3514, 1, 0, 0, 0, 3515, 3516, 1, 0, 0, 0, 3516, + 3518, 1, 0, 0, 0, 3517, 3505, 1, 0, 0, 0, 3517, 3510, 1, 0, 0, 0, 3518, + 725, 1, 0, 0, 0, 3519, 3520, 5, 83, 0, 0, 3520, 3521, 5, 370, 0, 0, 3521, + 3522, 3, 728, 364, 0, 3522, 3524, 5, 381, 0, 0, 3523, 3525, 3, 770, 385, + 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 727, 1, 0, 0, + 0, 3526, 3527, 5, 233, 0, 0, 3527, 3528, 5, 314, 0, 0, 3528, 3533, 5, 148, + 0, 0, 3529, 3530, 5, 72, 0, 0, 3530, 3531, 5, 314, 0, 0, 3531, 3533, 5, + 186, 0, 0, 3532, 3526, 1, 0, 0, 0, 3532, 3529, 1, 0, 0, 0, 3533, 729, 1, + 0, 0, 0, 3534, 3539, 3, 738, 369, 0, 3535, 3539, 3, 744, 372, 0, 3536, + 3539, 3, 746, 373, 0, 3537, 3539, 3, 752, 376, 0, 3538, 3534, 1, 0, 0, + 0, 3538, 3535, 1, 0, 0, 0, 3538, 3536, 1, 0, 0, 0, 3538, 3537, 1, 0, 0, + 0, 3539, 731, 1, 0, 0, 0, 3540, 3543, 3, 734, 367, 0, 3541, 3543, 3, 736, + 368, 0, 3542, 3540, 1, 0, 0, 0, 3542, 3541, 1, 0, 0, 0, 3543, 733, 1, 0, + 0, 0, 3544, 3545, 5, 154, 0, 0, 3545, 735, 1, 0, 0, 0, 3546, 3547, 5, 154, + 0, 0, 3547, 3550, 3, 770, 385, 0, 3548, 3550, 5, 153, 0, 0, 3549, 3546, + 1, 0, 0, 0, 3549, 3548, 1, 0, 0, 0, 3550, 737, 1, 0, 0, 0, 3551, 3554, + 3, 742, 371, 0, 3552, 3554, 3, 740, 370, 0, 3553, 3551, 1, 0, 0, 0, 3553, + 3552, 1, 0, 0, 0, 3554, 739, 1, 0, 0, 0, 3555, 3557, 5, 305, 0, 0, 3556, + 3555, 1, 0, 0, 0, 3556, 3557, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, + 3559, 5, 289, 0, 0, 3559, 3561, 3, 574, 287, 0, 3560, 3562, 3, 770, 385, + 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 741, 1, 0, 0, + 0, 3563, 3565, 5, 25, 0, 0, 3564, 3566, 5, 305, 0, 0, 3565, 3564, 1, 0, + 0, 0, 3565, 3566, 1, 0, 0, 0, 3566, 3567, 1, 0, 0, 0, 3567, 3569, 5, 289, + 0, 0, 3568, 3570, 3, 770, 385, 0, 3569, 3568, 1, 0, 0, 0, 3569, 3570, 1, + 0, 0, 0, 3570, 743, 1, 0, 0, 0, 3571, 3573, 3, 672, 336, 0, 3572, 3574, + 3, 770, 385, 0, 3573, 3572, 1, 0, 0, 0, 3573, 3574, 1, 0, 0, 0, 3574, 745, + 1, 0, 0, 0, 3575, 3578, 3, 750, 375, 0, 3576, 3578, 3, 748, 374, 0, 3577, + 3575, 1, 0, 0, 0, 3577, 3576, 1, 0, 0, 0, 3578, 747, 1, 0, 0, 0, 3579, + 3581, 3, 582, 291, 0, 3580, 3582, 3, 770, 385, 0, 3581, 3580, 1, 0, 0, + 0, 3581, 3582, 1, 0, 0, 0, 3582, 749, 1, 0, 0, 0, 3583, 3585, 5, 25, 0, + 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, + 0, 3586, 3588, 3, 1140, 570, 0, 3587, 3589, 3, 770, 385, 0, 3588, 3587, + 1, 0, 0, 0, 3588, 3589, 1, 0, 0, 0, 3589, 751, 1, 0, 0, 0, 3590, 3593, + 3, 756, 378, 0, 3591, 3593, 3, 754, 377, 0, 3592, 3590, 1, 0, 0, 0, 3592, + 3591, 1, 0, 0, 0, 3593, 753, 1, 0, 0, 0, 3594, 3596, 3, 602, 301, 0, 3595, + 3597, 3, 770, 385, 0, 3596, 3595, 1, 0, 0, 0, 3596, 3597, 1, 0, 0, 0, 3597, + 755, 1, 0, 0, 0, 3598, 3600, 5, 25, 0, 0, 3599, 3598, 1, 0, 0, 0, 3599, + 3600, 1, 0, 0, 0, 3600, 3601, 1, 0, 0, 0, 3601, 3603, 3, 1144, 572, 0, + 3602, 3604, 3, 770, 385, 0, 3603, 3602, 1, 0, 0, 0, 3603, 3604, 1, 0, 0, + 0, 3604, 757, 1, 0, 0, 0, 3605, 3607, 5, 166, 0, 0, 3606, 3608, 3, 770, + 385, 0, 3607, 3606, 1, 0, 0, 0, 3607, 3608, 1, 0, 0, 0, 3608, 759, 1, 0, + 0, 0, 3609, 3610, 3, 762, 381, 0, 3610, 761, 1, 0, 0, 0, 3611, 3612, 7, + 19, 0, 0, 3612, 763, 1, 0, 0, 0, 3613, 3615, 5, 25, 0, 0, 3614, 3613, 1, + 0, 0, 0, 3614, 3615, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3618, 5, + 176, 0, 0, 3617, 3619, 3, 770, 385, 0, 3618, 3617, 1, 0, 0, 0, 3618, 3619, + 1, 0, 0, 0, 3619, 3628, 1, 0, 0, 0, 3620, 3622, 5, 176, 0, 0, 3621, 3620, + 1, 0, 0, 0, 3621, 3622, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3625, + 3, 766, 383, 0, 3624, 3626, 3, 770, 385, 0, 3625, 3624, 1, 0, 0, 0, 3625, + 3626, 1, 0, 0, 0, 3626, 3628, 1, 0, 0, 0, 3627, 3614, 1, 0, 0, 0, 3627, + 3621, 1, 0, 0, 0, 3628, 765, 1, 0, 0, 0, 3629, 3631, 5, 368, 0, 0, 3630, + 3632, 3, 768, 384, 0, 3631, 3630, 1, 0, 0, 0, 3631, 3632, 1, 0, 0, 0, 3632, + 3633, 1, 0, 0, 0, 3633, 3634, 5, 379, 0, 0, 3634, 767, 1, 0, 0, 0, 3635, + 3640, 3, 772, 386, 0, 3636, 3637, 5, 360, 0, 0, 3637, 3639, 3, 772, 386, + 0, 3638, 3636, 1, 0, 0, 0, 3639, 3642, 1, 0, 0, 0, 3640, 3638, 1, 0, 0, + 0, 3640, 3641, 1, 0, 0, 0, 3641, 769, 1, 0, 0, 0, 3642, 3640, 1, 0, 0, + 0, 3643, 3644, 5, 152, 0, 0, 3644, 3645, 5, 154, 0, 0, 3645, 771, 1, 0, + 0, 0, 3646, 3648, 3, 1084, 542, 0, 3647, 3649, 3, 676, 338, 0, 3648, 3647, + 1, 0, 0, 0, 3648, 3649, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3651, + 3, 674, 337, 0, 3651, 773, 1, 0, 0, 0, 3652, 3653, 3, 822, 411, 0, 3653, + 775, 1, 0, 0, 0, 3654, 3664, 3, 780, 390, 0, 3655, 3664, 3, 782, 391, 0, + 3656, 3664, 3, 786, 393, 0, 3657, 3664, 3, 792, 396, 0, 3658, 3664, 3, + 796, 398, 0, 3659, 3664, 3, 802, 401, 0, 3660, 3664, 3, 812, 406, 0, 3661, + 3664, 3, 814, 407, 0, 3662, 3664, 3, 816, 408, 0, 3663, 3654, 1, 0, 0, + 0, 3663, 3655, 1, 0, 0, 0, 3663, 3656, 1, 0, 0, 0, 3663, 3657, 1, 0, 0, + 0, 3663, 3658, 1, 0, 0, 0, 3663, 3659, 1, 0, 0, 0, 3663, 3660, 1, 0, 0, + 0, 3663, 3661, 1, 0, 0, 0, 3663, 3662, 1, 0, 0, 0, 3664, 777, 1, 0, 0, + 0, 3665, 3666, 7, 20, 0, 0, 3666, 779, 1, 0, 0, 0, 3667, 3685, 5, 89, 0, + 0, 3668, 3669, 5, 368, 0, 0, 3669, 3670, 3, 302, 151, 0, 3670, 3671, 5, + 379, 0, 0, 3671, 3686, 1, 0, 0, 0, 3672, 3673, 5, 370, 0, 0, 3673, 3674, + 3, 302, 151, 0, 3674, 3675, 5, 381, 0, 0, 3675, 3686, 1, 0, 0, 0, 3676, + 3677, 5, 368, 0, 0, 3677, 3678, 3, 220, 110, 0, 3678, 3679, 5, 379, 0, + 0, 3679, 3686, 1, 0, 0, 0, 3680, 3681, 5, 370, 0, 0, 3681, 3682, 3, 220, + 110, 0, 3682, 3683, 5, 381, 0, 0, 3683, 3686, 1, 0, 0, 0, 3684, 3686, 3, + 56, 28, 0, 3685, 3668, 1, 0, 0, 0, 3685, 3672, 1, 0, 0, 0, 3685, 3676, + 1, 0, 0, 0, 3685, 3680, 1, 0, 0, 0, 3685, 3684, 1, 0, 0, 0, 3686, 781, + 1, 0, 0, 0, 3687, 3688, 3, 842, 421, 0, 3688, 3689, 3, 784, 392, 0, 3689, + 783, 1, 0, 0, 0, 3690, 3692, 5, 127, 0, 0, 3691, 3693, 5, 152, 0, 0, 3692, + 3691, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, + 3695, 5, 154, 0, 0, 3695, 785, 1, 0, 0, 0, 3696, 3697, 3, 842, 421, 0, + 3697, 3698, 3, 788, 394, 0, 3698, 787, 1, 0, 0, 0, 3699, 3701, 5, 127, + 0, 0, 3700, 3702, 5, 152, 0, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, + 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3704, 3, 676, 338, 0, 3704, 3705, + 3, 674, 337, 0, 3705, 789, 1, 0, 0, 0, 3706, 3708, 5, 127, 0, 0, 3707, + 3709, 5, 152, 0, 0, 3708, 3707, 1, 0, 0, 0, 3708, 3709, 1, 0, 0, 0, 3709, + 3711, 1, 0, 0, 0, 3710, 3712, 3, 1016, 508, 0, 3711, 3710, 1, 0, 0, 0, + 3711, 3712, 1, 0, 0, 0, 3712, 3713, 1, 0, 0, 0, 3713, 3714, 5, 302, 0, + 0, 3714, 791, 1, 0, 0, 0, 3715, 3716, 3, 432, 216, 0, 3716, 3717, 3, 794, + 397, 0, 3717, 793, 1, 0, 0, 0, 3718, 3720, 5, 127, 0, 0, 3719, 3721, 5, + 152, 0, 0, 3720, 3719, 1, 0, 0, 0, 3720, 3721, 1, 0, 0, 0, 3721, 3722, + 1, 0, 0, 0, 3722, 3723, 5, 283, 0, 0, 3723, 795, 1, 0, 0, 0, 3724, 3725, + 3, 432, 216, 0, 3725, 3726, 3, 798, 399, 0, 3726, 797, 1, 0, 0, 0, 3727, + 3728, 3, 800, 400, 0, 3728, 3729, 3, 428, 214, 0, 3729, 799, 1, 0, 0, 0, + 3730, 3732, 5, 127, 0, 0, 3731, 3733, 5, 152, 0, 0, 3732, 3731, 1, 0, 0, + 0, 3732, 3733, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 3737, 5, 293, + 0, 0, 3735, 3737, 5, 359, 0, 0, 3736, 3730, 1, 0, 0, 0, 3736, 3735, 1, + 0, 0, 0, 3737, 801, 1, 0, 0, 0, 3738, 3739, 3, 804, 402, 0, 3739, 3740, + 3, 806, 403, 0, 3740, 3745, 1, 0, 0, 0, 3741, 3742, 3, 804, 402, 0, 3742, + 3743, 3, 808, 404, 0, 3743, 3745, 1, 0, 0, 0, 3744, 3738, 1, 0, 0, 0, 3744, + 3741, 1, 0, 0, 0, 3745, 803, 1, 0, 0, 0, 3746, 3747, 3, 432, 216, 0, 3747, + 805, 1, 0, 0, 0, 3748, 3750, 5, 127, 0, 0, 3749, 3751, 5, 152, 0, 0, 3750, + 3749, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 3752, 1, 0, 0, 0, 3752, + 3753, 5, 312, 0, 0, 3753, 3754, 5, 158, 0, 0, 3754, 3755, 3, 810, 405, + 0, 3755, 807, 1, 0, 0, 0, 3756, 3758, 5, 127, 0, 0, 3757, 3759, 5, 152, + 0, 0, 3758, 3757, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3760, 1, 0, + 0, 0, 3760, 3761, 5, 281, 0, 0, 3761, 3762, 5, 158, 0, 0, 3762, 3763, 3, + 810, 405, 0, 3763, 809, 1, 0, 0, 0, 3764, 3765, 3, 432, 216, 0, 3765, 811, + 1, 0, 0, 0, 3766, 3767, 5, 23, 0, 0, 3767, 3768, 5, 370, 0, 0, 3768, 3769, + 3, 432, 216, 0, 3769, 3770, 5, 360, 0, 0, 3770, 3775, 3, 432, 216, 0, 3771, + 3772, 5, 360, 0, 0, 3772, 3774, 3, 432, 216, 0, 3773, 3771, 1, 0, 0, 0, + 3774, 3777, 1, 0, 0, 0, 3775, 3773, 1, 0, 0, 0, 3775, 3776, 1, 0, 0, 0, + 3776, 3778, 1, 0, 0, 0, 3777, 3775, 1, 0, 0, 0, 3778, 3779, 5, 381, 0, + 0, 3779, 813, 1, 0, 0, 0, 3780, 3781, 5, 184, 0, 0, 3781, 3782, 5, 370, + 0, 0, 3782, 3783, 3, 432, 216, 0, 3783, 3784, 5, 360, 0, 0, 3784, 3789, + 3, 432, 216, 0, 3785, 3786, 5, 360, 0, 0, 3786, 3788, 3, 432, 216, 0, 3787, + 3785, 1, 0, 0, 0, 3788, 3791, 1, 0, 0, 0, 3789, 3787, 1, 0, 0, 0, 3789, + 3790, 1, 0, 0, 0, 3790, 3792, 1, 0, 0, 0, 3791, 3789, 1, 0, 0, 0, 3792, + 3793, 5, 381, 0, 0, 3793, 815, 1, 0, 0, 0, 3794, 3795, 5, 173, 0, 0, 3795, + 3796, 5, 370, 0, 0, 3796, 3797, 3, 432, 216, 0, 3797, 3798, 5, 360, 0, + 0, 3798, 3799, 3, 1082, 541, 0, 3799, 3800, 5, 381, 0, 0, 3800, 817, 1, + 0, 0, 0, 3801, 3802, 6, 409, -1, 0, 3802, 3803, 7, 21, 0, 0, 3803, 3820, + 3, 818, 409, 15, 3804, 3820, 3, 776, 388, 0, 3805, 3806, 5, 152, 0, 0, + 3806, 3820, 3, 818, 409, 8, 3807, 3809, 5, 305, 0, 0, 3808, 3807, 1, 0, + 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3811, 5, 289, + 0, 0, 3811, 3820, 3, 88, 44, 0, 3812, 3814, 5, 278, 0, 0, 3813, 3812, 1, + 0, 0, 0, 3813, 3814, 1, 0, 0, 0, 3814, 3815, 1, 0, 0, 0, 3815, 3816, 5, + 313, 0, 0, 3816, 3820, 3, 92, 46, 0, 3817, 3820, 3, 820, 410, 0, 3818, + 3820, 3, 842, 421, 0, 3819, 3801, 1, 0, 0, 0, 3819, 3804, 1, 0, 0, 0, 3819, + 3805, 1, 0, 0, 0, 3819, 3808, 1, 0, 0, 0, 3819, 3813, 1, 0, 0, 0, 3819, + 3817, 1, 0, 0, 0, 3819, 3818, 1, 0, 0, 0, 3820, 3850, 1, 0, 0, 0, 3821, + 3822, 10, 14, 0, 0, 3822, 3823, 7, 22, 0, 0, 3823, 3849, 3, 818, 409, 15, + 3824, 3825, 10, 13, 0, 0, 3825, 3826, 7, 21, 0, 0, 3826, 3849, 3, 818, + 409, 14, 3827, 3828, 10, 12, 0, 0, 3828, 3829, 5, 330, 0, 0, 3829, 3849, + 3, 818, 409, 13, 3830, 3831, 10, 11, 0, 0, 3831, 3832, 3, 778, 389, 0, + 3832, 3833, 3, 818, 409, 12, 3833, 3849, 1, 0, 0, 0, 3834, 3835, 10, 6, + 0, 0, 3835, 3836, 5, 24, 0, 0, 3836, 3849, 3, 818, 409, 7, 3837, 3838, + 10, 5, 0, 0, 3838, 3839, 7, 23, 0, 0, 3839, 3849, 3, 818, 409, 6, 3840, + 3841, 10, 9, 0, 0, 3841, 3849, 3, 790, 395, 0, 3842, 3843, 10, 7, 0, 0, + 3843, 3845, 5, 127, 0, 0, 3844, 3846, 5, 152, 0, 0, 3845, 3844, 1, 0, 0, + 0, 3845, 3846, 1, 0, 0, 0, 3846, 3847, 1, 0, 0, 0, 3847, 3849, 3, 950, + 475, 0, 3848, 3821, 1, 0, 0, 0, 3848, 3824, 1, 0, 0, 0, 3848, 3827, 1, + 0, 0, 0, 3848, 3830, 1, 0, 0, 0, 3848, 3834, 1, 0, 0, 0, 3848, 3837, 1, + 0, 0, 0, 3848, 3840, 1, 0, 0, 0, 3848, 3842, 1, 0, 0, 0, 3849, 3852, 1, + 0, 0, 0, 3850, 3848, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 819, 1, + 0, 0, 0, 3852, 3850, 1, 0, 0, 0, 3853, 3860, 3, 954, 477, 0, 3854, 3860, + 3, 1042, 521, 0, 3855, 3860, 3, 1022, 511, 0, 3856, 3860, 3, 1050, 525, + 0, 3857, 3860, 3, 824, 412, 0, 3858, 3860, 3, 928, 464, 0, 3859, 3853, + 1, 0, 0, 0, 3859, 3854, 1, 0, 0, 0, 3859, 3855, 1, 0, 0, 0, 3859, 3856, + 1, 0, 0, 0, 3859, 3857, 1, 0, 0, 0, 3859, 3858, 1, 0, 0, 0, 3860, 821, + 1, 0, 0, 0, 3861, 3862, 3, 818, 409, 0, 3862, 823, 1, 0, 0, 0, 3863, 3869, + 3, 826, 413, 0, 3864, 3869, 3, 828, 414, 0, 3865, 3869, 3, 830, 415, 0, + 3866, 3869, 3, 832, 416, 0, 3867, 3869, 3, 834, 417, 0, 3868, 3863, 1, + 0, 0, 0, 3868, 3864, 1, 0, 0, 0, 3868, 3865, 1, 0, 0, 0, 3868, 3866, 1, + 0, 0, 0, 3868, 3867, 1, 0, 0, 0, 3869, 825, 1, 0, 0, 0, 3870, 3871, 7, + 24, 0, 0, 3871, 3872, 5, 370, 0, 0, 3872, 3873, 3, 818, 409, 0, 3873, 3874, + 5, 360, 0, 0, 3874, 3875, 3, 1018, 509, 0, 3875, 3876, 5, 381, 0, 0, 3876, + 827, 1, 0, 0, 0, 3877, 3878, 5, 210, 0, 0, 3878, 3879, 5, 370, 0, 0, 3879, + 3880, 3, 1008, 504, 0, 3880, 3881, 5, 381, 0, 0, 3881, 829, 1, 0, 0, 0, + 3882, 3883, 7, 25, 0, 0, 3883, 3884, 5, 370, 0, 0, 3884, 3885, 3, 818, + 409, 0, 3885, 3886, 5, 381, 0, 0, 3886, 831, 1, 0, 0, 0, 3887, 3888, 7, + 26, 0, 0, 3888, 3889, 5, 370, 0, 0, 3889, 3892, 3, 818, 409, 0, 3890, 3891, + 5, 360, 0, 0, 3891, 3893, 3, 818, 409, 0, 3892, 3890, 1, 0, 0, 0, 3892, + 3893, 1, 0, 0, 0, 3893, 3894, 1, 0, 0, 0, 3894, 3895, 5, 381, 0, 0, 3895, + 833, 1, 0, 0, 0, 3896, 3897, 5, 151, 0, 0, 3897, 3898, 5, 370, 0, 0, 3898, + 3901, 3, 818, 409, 0, 3899, 3900, 5, 360, 0, 0, 3900, 3902, 3, 1016, 508, + 0, 3901, 3899, 1, 0, 0, 0, 3901, 3902, 1, 0, 0, 0, 3902, 3903, 1, 0, 0, + 0, 3903, 3904, 5, 381, 0, 0, 3904, 835, 1, 0, 0, 0, 3905, 3906, 3, 842, + 421, 0, 3906, 837, 1, 0, 0, 0, 3907, 3908, 3, 842, 421, 0, 3908, 839, 1, + 0, 0, 0, 3909, 3910, 3, 818, 409, 0, 3910, 841, 1, 0, 0, 0, 3911, 3912, + 6, 421, -1, 0, 3912, 3923, 3, 844, 422, 0, 3913, 3923, 3, 894, 447, 0, + 3914, 3923, 3, 850, 425, 0, 3915, 3923, 3, 916, 458, 0, 3916, 3923, 3, + 860, 430, 0, 3917, 3923, 3, 862, 431, 0, 3918, 3923, 3, 888, 444, 0, 3919, + 3923, 3, 910, 455, 0, 3920, 3923, 3, 858, 429, 0, 3921, 3923, 3, 912, 456, + 0, 3922, 3911, 1, 0, 0, 0, 3922, 3913, 1, 0, 0, 0, 3922, 3914, 1, 0, 0, + 0, 3922, 3915, 1, 0, 0, 0, 3922, 3916, 1, 0, 0, 0, 3922, 3917, 1, 0, 0, + 0, 3922, 3918, 1, 0, 0, 0, 3922, 3919, 1, 0, 0, 0, 3922, 3920, 1, 0, 0, + 0, 3922, 3921, 1, 0, 0, 0, 3923, 3929, 1, 0, 0, 0, 3924, 3925, 10, 7, 0, + 0, 3925, 3926, 5, 374, 0, 0, 3926, 3928, 3, 1082, 541, 0, 3927, 3924, 1, + 0, 0, 0, 3928, 3931, 1, 0, 0, 0, 3929, 3927, 1, 0, 0, 0, 3929, 3930, 1, + 0, 0, 0, 3930, 843, 1, 0, 0, 0, 3931, 3929, 1, 0, 0, 0, 3932, 3933, 5, + 370, 0, 0, 3933, 3934, 3, 818, 409, 0, 3934, 3935, 5, 381, 0, 0, 3935, + 845, 1, 0, 0, 0, 3936, 3939, 3, 848, 424, 0, 3937, 3939, 3, 912, 456, 0, + 3938, 3936, 1, 0, 0, 0, 3938, 3937, 1, 0, 0, 0, 3939, 847, 1, 0, 0, 0, + 3940, 3953, 3, 894, 447, 0, 3941, 3953, 3, 850, 425, 0, 3942, 3953, 3, + 916, 458, 0, 3943, 3944, 3, 842, 421, 0, 3944, 3945, 5, 374, 0, 0, 3945, + 3946, 3, 1082, 541, 0, 3946, 3953, 1, 0, 0, 0, 3947, 3953, 3, 860, 430, + 0, 3948, 3953, 3, 862, 431, 0, 3949, 3953, 3, 888, 444, 0, 3950, 3953, + 3, 910, 455, 0, 3951, 3953, 3, 858, 429, 0, 3952, 3940, 1, 0, 0, 0, 3952, + 3941, 1, 0, 0, 0, 3952, 3942, 1, 0, 0, 0, 3952, 3943, 1, 0, 0, 0, 3952, + 3947, 1, 0, 0, 0, 3952, 3948, 1, 0, 0, 0, 3952, 3949, 1, 0, 0, 0, 3952, + 3950, 1, 0, 0, 0, 3952, 3951, 1, 0, 0, 0, 3953, 849, 1, 0, 0, 0, 3954, + 3957, 3, 1094, 547, 0, 3955, 3957, 3, 854, 427, 0, 3956, 3954, 1, 0, 0, + 0, 3956, 3955, 1, 0, 0, 0, 3957, 851, 1, 0, 0, 0, 3958, 3961, 3, 1124, + 562, 0, 3959, 3961, 3, 856, 428, 0, 3960, 3958, 1, 0, 0, 0, 3960, 3959, + 1, 0, 0, 0, 3961, 853, 1, 0, 0, 0, 3962, 3965, 3, 856, 428, 0, 3963, 3965, + 5, 189, 0, 0, 3964, 3962, 1, 0, 0, 0, 3964, 3963, 1, 0, 0, 0, 3965, 855, + 1, 0, 0, 0, 3966, 3967, 5, 326, 0, 0, 3967, 857, 1, 0, 0, 0, 3968, 3969, + 5, 130, 0, 0, 3969, 3970, 3, 228, 114, 0, 3970, 3971, 5, 109, 0, 0, 3971, + 3972, 3, 818, 409, 0, 3972, 3973, 5, 87, 0, 0, 3973, 859, 1, 0, 0, 0, 3974, + 3975, 5, 225, 0, 0, 3975, 3976, 3, 56, 28, 0, 3976, 861, 1, 0, 0, 0, 3977, + 3980, 3, 864, 432, 0, 3978, 3980, 3, 866, 433, 0, 3979, 3977, 1, 0, 0, + 0, 3979, 3978, 1, 0, 0, 0, 3980, 863, 1, 0, 0, 0, 3981, 3982, 5, 156, 0, + 0, 3982, 3983, 5, 370, 0, 0, 3983, 3984, 3, 818, 409, 0, 3984, 3985, 5, + 360, 0, 0, 3985, 3986, 3, 818, 409, 0, 3986, 3987, 5, 381, 0, 0, 3987, + 4000, 1, 0, 0, 0, 3988, 3989, 5, 55, 0, 0, 3989, 3990, 5, 370, 0, 0, 3990, + 3993, 3, 818, 409, 0, 3991, 3992, 5, 360, 0, 0, 3992, 3994, 3, 818, 409, + 0, 3993, 3991, 1, 0, 0, 0, 3994, 3995, 1, 0, 0, 0, 3995, 3993, 1, 0, 0, + 0, 3995, 3996, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 3998, 5, 381, + 0, 0, 3998, 4000, 1, 0, 0, 0, 3999, 3981, 1, 0, 0, 0, 3999, 3988, 1, 0, + 0, 0, 4000, 865, 1, 0, 0, 0, 4001, 4004, 3, 868, 434, 0, 4002, 4004, 3, + 870, 435, 0, 4003, 4001, 1, 0, 0, 0, 4003, 4002, 1, 0, 0, 0, 4004, 867, + 1, 0, 0, 0, 4005, 4006, 5, 46, 0, 0, 4006, 4008, 3, 878, 439, 0, 4007, + 4009, 3, 872, 436, 0, 4008, 4007, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, + 4008, 1, 0, 0, 0, 4010, 4011, 1, 0, 0, 0, 4011, 4013, 1, 0, 0, 0, 4012, + 4014, 3, 876, 438, 0, 4013, 4012, 1, 0, 0, 0, 4013, 4014, 1, 0, 0, 0, 4014, + 4015, 1, 0, 0, 0, 4015, 4016, 5, 87, 0, 0, 4016, 869, 1, 0, 0, 0, 4017, + 4019, 5, 46, 0, 0, 4018, 4020, 3, 874, 437, 0, 4019, 4018, 1, 0, 0, 0, + 4020, 4021, 1, 0, 0, 0, 4021, 4019, 1, 0, 0, 0, 4021, 4022, 1, 0, 0, 0, + 4022, 4024, 1, 0, 0, 0, 4023, 4025, 3, 876, 438, 0, 4024, 4023, 1, 0, 0, + 0, 4024, 4025, 1, 0, 0, 0, 4025, 4026, 1, 0, 0, 0, 4026, 4027, 5, 87, 0, + 0, 4027, 871, 1, 0, 0, 0, 4028, 4029, 5, 229, 0, 0, 4029, 4030, 3, 880, + 440, 0, 4030, 4031, 5, 206, 0, 0, 4031, 4032, 3, 884, 442, 0, 4032, 873, + 1, 0, 0, 0, 4033, 4034, 5, 229, 0, 0, 4034, 4035, 3, 774, 387, 0, 4035, + 4036, 5, 206, 0, 0, 4036, 4037, 3, 884, 442, 0, 4037, 875, 1, 0, 0, 0, + 4038, 4039, 5, 86, 0, 0, 4039, 4040, 3, 884, 442, 0, 4040, 877, 1, 0, 0, + 0, 4041, 4044, 3, 846, 423, 0, 4042, 4044, 3, 432, 216, 0, 4043, 4041, + 1, 0, 0, 0, 4043, 4042, 1, 0, 0, 0, 4044, 879, 1, 0, 0, 0, 4045, 4050, + 3, 882, 441, 0, 4046, 4047, 5, 360, 0, 0, 4047, 4049, 3, 882, 441, 0, 4048, + 4046, 1, 0, 0, 0, 4049, 4052, 1, 0, 0, 0, 4050, 4048, 1, 0, 0, 0, 4050, + 4051, 1, 0, 0, 0, 4051, 881, 1, 0, 0, 0, 4052, 4050, 1, 0, 0, 0, 4053, + 4065, 3, 846, 423, 0, 4054, 4055, 3, 778, 389, 0, 4055, 4056, 3, 818, 409, + 0, 4056, 4065, 1, 0, 0, 0, 4057, 4065, 3, 784, 392, 0, 4058, 4065, 3, 788, + 394, 0, 4059, 4065, 3, 790, 395, 0, 4060, 4065, 3, 794, 397, 0, 4061, 4065, + 3, 798, 399, 0, 4062, 4065, 3, 806, 403, 0, 4063, 4065, 3, 808, 404, 0, + 4064, 4053, 1, 0, 0, 0, 4064, 4054, 1, 0, 0, 0, 4064, 4057, 1, 0, 0, 0, + 4064, 4058, 1, 0, 0, 0, 4064, 4059, 1, 0, 0, 0, 4064, 4060, 1, 0, 0, 0, + 4064, 4061, 1, 0, 0, 0, 4064, 4062, 1, 0, 0, 0, 4064, 4063, 1, 0, 0, 0, + 4065, 883, 1, 0, 0, 0, 4066, 4069, 3, 886, 443, 0, 4067, 4069, 3, 1128, + 564, 0, 4068, 4066, 1, 0, 0, 0, 4068, 4067, 1, 0, 0, 0, 4069, 885, 1, 0, + 0, 0, 4070, 4071, 3, 818, 409, 0, 4071, 887, 1, 0, 0, 0, 4072, 4073, 5, + 47, 0, 0, 4073, 4074, 5, 370, 0, 0, 4074, 4075, 3, 890, 445, 0, 4075, 4076, + 5, 27, 0, 0, 4076, 4077, 3, 892, 446, 0, 4077, 4078, 5, 381, 0, 0, 4078, + 889, 1, 0, 0, 0, 4079, 4082, 3, 818, 409, 0, 4080, 4082, 3, 1128, 564, + 0, 4081, 4079, 1, 0, 0, 0, 4081, 4080, 1, 0, 0, 0, 4082, 891, 1, 0, 0, + 0, 4083, 4084, 3, 674, 337, 0, 4084, 893, 1, 0, 0, 0, 4085, 4086, 5, 62, + 0, 0, 4086, 4087, 5, 370, 0, 0, 4087, 4088, 5, 358, 0, 0, 4088, 4092, 5, + 381, 0, 0, 4089, 4092, 3, 896, 448, 0, 4090, 4092, 3, 898, 449, 0, 4091, + 4085, 1, 0, 0, 0, 4091, 4089, 1, 0, 0, 0, 4091, 4090, 1, 0, 0, 0, 4092, + 895, 1, 0, 0, 0, 4093, 4094, 3, 900, 450, 0, 4094, 4096, 5, 370, 0, 0, + 4095, 4097, 3, 902, 451, 0, 4096, 4095, 1, 0, 0, 0, 4096, 4097, 1, 0, 0, + 0, 4097, 4098, 1, 0, 0, 0, 4098, 4099, 3, 818, 409, 0, 4099, 4100, 5, 381, + 0, 0, 4100, 897, 1, 0, 0, 0, 4101, 4102, 3, 904, 452, 0, 4102, 4103, 5, + 370, 0, 0, 4103, 4104, 3, 906, 453, 0, 4104, 4105, 5, 360, 0, 0, 4105, + 4106, 3, 908, 454, 0, 4106, 4107, 5, 381, 0, 0, 4107, 899, 1, 0, 0, 0, + 4108, 4109, 7, 27, 0, 0, 4109, 901, 1, 0, 0, 0, 4110, 4111, 7, 28, 0, 0, + 4111, 903, 1, 0, 0, 0, 4112, 4113, 7, 29, 0, 0, 4113, 905, 1, 0, 0, 0, + 4114, 4116, 3, 902, 451, 0, 4115, 4114, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, + 0, 4116, 4117, 1, 0, 0, 0, 4117, 4118, 3, 952, 476, 0, 4118, 907, 1, 0, + 0, 0, 4119, 4120, 3, 952, 476, 0, 4120, 909, 1, 0, 0, 0, 4121, 4122, 5, + 85, 0, 0, 4122, 4123, 5, 370, 0, 0, 4123, 4124, 3, 432, 216, 0, 4124, 4125, + 5, 381, 0, 0, 4125, 911, 1, 0, 0, 0, 4126, 4127, 3, 1092, 546, 0, 4127, + 913, 1, 0, 0, 0, 4128, 4129, 3, 818, 409, 0, 4129, 915, 1, 0, 0, 0, 4130, + 4131, 3, 918, 459, 0, 4131, 917, 1, 0, 0, 0, 4132, 4133, 5, 166, 0, 0, + 4133, 4134, 5, 369, 0, 0, 4134, 4135, 3, 920, 460, 0, 4135, 4136, 5, 380, + 0, 0, 4136, 919, 1, 0, 0, 0, 4137, 4141, 3, 922, 461, 0, 4138, 4140, 3, + 924, 462, 0, 4139, 4138, 1, 0, 0, 0, 4140, 4143, 1, 0, 0, 0, 4141, 4139, + 1, 0, 0, 0, 4141, 4142, 1, 0, 0, 0, 4142, 921, 1, 0, 0, 0, 4143, 4141, + 1, 0, 0, 0, 4144, 4145, 3, 836, 418, 0, 4145, 923, 1, 0, 0, 0, 4146, 4147, + 5, 360, 0, 0, 4147, 4148, 3, 838, 419, 0, 4148, 4149, 5, 360, 0, 0, 4149, + 4150, 3, 836, 418, 0, 4150, 925, 1, 0, 0, 0, 4151, 4152, 3, 818, 409, 0, + 4152, 927, 1, 0, 0, 0, 4153, 4156, 3, 930, 465, 0, 4154, 4156, 3, 932, + 466, 0, 4155, 4153, 1, 0, 0, 0, 4155, 4154, 1, 0, 0, 0, 4156, 929, 1, 0, + 0, 0, 4157, 4158, 5, 210, 0, 0, 4158, 4159, 5, 370, 0, 0, 4159, 4160, 3, + 926, 463, 0, 4160, 4161, 5, 360, 0, 0, 4161, 4162, 3, 952, 476, 0, 4162, + 4163, 5, 381, 0, 0, 4163, 931, 1, 0, 0, 0, 4164, 4165, 5, 287, 0, 0, 4165, + 4166, 5, 370, 0, 0, 4166, 4167, 3, 914, 457, 0, 4167, 4168, 5, 381, 0, + 0, 4168, 933, 1, 0, 0, 0, 4169, 4170, 3, 936, 468, 0, 4170, 935, 1, 0, + 0, 0, 4171, 4173, 3, 760, 380, 0, 4172, 4171, 1, 0, 0, 0, 4172, 4173, 1, + 0, 0, 0, 4173, 4174, 1, 0, 0, 0, 4174, 4176, 5, 369, 0, 0, 4175, 4177, + 3, 938, 469, 0, 4176, 4175, 1, 0, 0, 0, 4176, 4177, 1, 0, 0, 0, 4177, 4178, + 1, 0, 0, 0, 4178, 4179, 5, 380, 0, 0, 4179, 937, 1, 0, 0, 0, 4180, 4185, + 3, 940, 470, 0, 4181, 4182, 5, 360, 0, 0, 4182, 4184, 3, 940, 470, 0, 4183, + 4181, 1, 0, 0, 0, 4184, 4187, 1, 0, 0, 0, 4185, 4183, 1, 0, 0, 0, 4185, + 4186, 1, 0, 0, 0, 4186, 939, 1, 0, 0, 0, 4187, 4185, 1, 0, 0, 0, 4188, + 4189, 3, 818, 409, 0, 4189, 941, 1, 0, 0, 0, 4190, 4192, 5, 176, 0, 0, + 4191, 4190, 1, 0, 0, 0, 4191, 4192, 1, 0, 0, 0, 4192, 4193, 1, 0, 0, 0, + 4193, 4194, 3, 944, 472, 0, 4194, 943, 1, 0, 0, 0, 4195, 4197, 5, 368, + 0, 0, 4196, 4198, 3, 946, 473, 0, 4197, 4196, 1, 0, 0, 0, 4197, 4198, 1, + 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4200, 5, 379, 0, 0, 4200, 945, 1, + 0, 0, 0, 4201, 4206, 3, 948, 474, 0, 4202, 4203, 5, 360, 0, 0, 4203, 4205, + 3, 948, 474, 0, 4204, 4202, 1, 0, 0, 0, 4205, 4208, 1, 0, 0, 0, 4206, 4204, + 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 947, 1, 0, 0, 0, 4208, 4206, + 1, 0, 0, 0, 4209, 4210, 3, 1084, 542, 0, 4210, 4211, 5, 359, 0, 0, 4211, + 4212, 3, 818, 409, 0, 4212, 949, 1, 0, 0, 0, 4213, 4214, 5, 2, 0, 0, 4214, + 951, 1, 0, 0, 0, 4215, 4216, 6, 476, -1, 0, 4216, 4217, 7, 21, 0, 0, 4217, + 4221, 3, 952, 476, 5, 4218, 4221, 3, 842, 421, 0, 4219, 4221, 3, 954, 477, + 0, 4220, 4215, 1, 0, 0, 0, 4220, 4218, 1, 0, 0, 0, 4220, 4219, 1, 0, 0, + 0, 4221, 4230, 1, 0, 0, 0, 4222, 4223, 10, 4, 0, 0, 4223, 4224, 7, 22, + 0, 0, 4224, 4229, 3, 952, 476, 5, 4225, 4226, 10, 3, 0, 0, 4226, 4227, + 7, 21, 0, 0, 4227, 4229, 3, 952, 476, 4, 4228, 4222, 1, 0, 0, 0, 4228, + 4225, 1, 0, 0, 0, 4229, 4232, 1, 0, 0, 0, 4230, 4228, 1, 0, 0, 0, 4230, + 4231, 1, 0, 0, 0, 4231, 953, 1, 0, 0, 0, 4232, 4230, 1, 0, 0, 0, 4233, + 4247, 3, 956, 478, 0, 4234, 4247, 3, 958, 479, 0, 4235, 4247, 3, 968, 484, + 0, 4236, 4247, 3, 970, 485, 0, 4237, 4247, 3, 976, 488, 0, 4238, 4247, + 3, 980, 490, 0, 4239, 4247, 3, 986, 493, 0, 4240, 4247, 3, 988, 494, 0, + 4241, 4247, 3, 990, 495, 0, 4242, 4247, 3, 992, 496, 0, 4243, 4247, 3, + 998, 499, 0, 4244, 4247, 3, 1000, 500, 0, 4245, 4247, 3, 1002, 501, 0, + 4246, 4233, 1, 0, 0, 0, 4246, 4234, 1, 0, 0, 0, 4246, 4235, 1, 0, 0, 0, + 4246, 4236, 1, 0, 0, 0, 4246, 4237, 1, 0, 0, 0, 4246, 4238, 1, 0, 0, 0, + 4246, 4239, 1, 0, 0, 0, 4246, 4240, 1, 0, 0, 0, 4246, 4241, 1, 0, 0, 0, + 4246, 4242, 1, 0, 0, 0, 4246, 4243, 1, 0, 0, 0, 4246, 4244, 1, 0, 0, 0, + 4246, 4245, 1, 0, 0, 0, 4247, 955, 1, 0, 0, 0, 4248, 4252, 3, 962, 481, + 0, 4249, 4252, 3, 964, 482, 0, 4250, 4252, 3, 966, 483, 0, 4251, 4248, + 1, 0, 0, 0, 4251, 4249, 1, 0, 0, 0, 4251, 4250, 1, 0, 0, 0, 4252, 957, + 1, 0, 0, 0, 4253, 4254, 5, 45, 0, 0, 4254, 4255, 5, 370, 0, 0, 4255, 4256, + 3, 960, 480, 0, 4256, 4257, 5, 381, 0, 0, 4257, 4264, 1, 0, 0, 0, 4258, + 4259, 5, 194, 0, 0, 4259, 4260, 5, 370, 0, 0, 4260, 4261, 3, 926, 463, + 0, 4261, 4262, 5, 381, 0, 0, 4262, 4264, 1, 0, 0, 0, 4263, 4253, 1, 0, + 0, 0, 4263, 4258, 1, 0, 0, 0, 4264, 959, 1, 0, 0, 0, 4265, 4266, 3, 818, + 409, 0, 4266, 961, 1, 0, 0, 0, 4267, 4268, 7, 30, 0, 0, 4268, 4269, 5, + 370, 0, 0, 4269, 4270, 3, 1004, 502, 0, 4270, 4271, 5, 381, 0, 0, 4271, + 963, 1, 0, 0, 0, 4272, 4273, 7, 31, 0, 0, 4273, 4274, 5, 370, 0, 0, 4274, + 4275, 3, 1006, 503, 0, 4275, 4276, 5, 381, 0, 0, 4276, 965, 1, 0, 0, 0, + 4277, 4278, 5, 167, 0, 0, 4278, 4279, 5, 370, 0, 0, 4279, 4280, 3, 914, + 457, 0, 4280, 4281, 5, 381, 0, 0, 4281, 967, 1, 0, 0, 0, 4282, 4283, 5, + 20, 0, 0, 4283, 4284, 5, 370, 0, 0, 4284, 4285, 3, 818, 409, 0, 4285, 4286, + 5, 381, 0, 0, 4286, 969, 1, 0, 0, 0, 4287, 4288, 5, 147, 0, 0, 4288, 4289, + 5, 370, 0, 0, 4289, 4290, 3, 972, 486, 0, 4290, 4291, 5, 360, 0, 0, 4291, + 4292, 3, 974, 487, 0, 4292, 4293, 5, 381, 0, 0, 4293, 971, 1, 0, 0, 0, + 4294, 4295, 3, 952, 476, 0, 4295, 973, 1, 0, 0, 0, 4296, 4297, 3, 952, + 476, 0, 4297, 975, 1, 0, 0, 0, 4298, 4299, 3, 978, 489, 0, 4299, 4300, + 5, 370, 0, 0, 4300, 4301, 3, 952, 476, 0, 4301, 4302, 5, 381, 0, 0, 4302, + 977, 1, 0, 0, 0, 4303, 4304, 7, 32, 0, 0, 4304, 979, 1, 0, 0, 0, 4305, + 4306, 5, 139, 0, 0, 4306, 4307, 5, 370, 0, 0, 4307, 4308, 3, 982, 491, + 0, 4308, 4309, 5, 360, 0, 0, 4309, 4310, 3, 984, 492, 0, 4310, 4311, 5, + 381, 0, 0, 4311, 981, 1, 0, 0, 0, 4312, 4313, 3, 952, 476, 0, 4313, 983, + 1, 0, 0, 0, 4314, 4315, 3, 952, 476, 0, 4315, 985, 1, 0, 0, 0, 4316, 4317, + 5, 140, 0, 0, 4317, 4318, 5, 370, 0, 0, 4318, 4319, 3, 952, 476, 0, 4319, + 4320, 5, 381, 0, 0, 4320, 987, 1, 0, 0, 0, 4321, 4322, 5, 134, 0, 0, 4322, + 4323, 5, 370, 0, 0, 4323, 4324, 3, 952, 476, 0, 4324, 4325, 5, 381, 0, + 0, 4325, 989, 1, 0, 0, 0, 4326, 4327, 5, 90, 0, 0, 4327, 4328, 5, 370, + 0, 0, 4328, 4329, 3, 952, 476, 0, 4329, 4330, 5, 381, 0, 0, 4330, 991, + 1, 0, 0, 0, 4331, 4332, 5, 171, 0, 0, 4332, 4333, 5, 370, 0, 0, 4333, 4334, + 3, 994, 497, 0, 4334, 4335, 5, 360, 0, 0, 4335, 4336, 3, 996, 498, 0, 4336, + 4337, 5, 381, 0, 0, 4337, 993, 1, 0, 0, 0, 4338, 4339, 3, 952, 476, 0, + 4339, 995, 1, 0, 0, 0, 4340, 4341, 3, 952, 476, 0, 4341, 997, 1, 0, 0, + 0, 4342, 4343, 5, 198, 0, 0, 4343, 4344, 5, 370, 0, 0, 4344, 4345, 3, 952, + 476, 0, 4345, 4346, 5, 381, 0, 0, 4346, 999, 1, 0, 0, 0, 4347, 4348, 5, + 99, 0, 0, 4348, 4349, 5, 370, 0, 0, 4349, 4350, 3, 952, 476, 0, 4350, 4351, + 5, 381, 0, 0, 4351, 1001, 1, 0, 0, 0, 4352, 4353, 7, 33, 0, 0, 4353, 4354, + 5, 370, 0, 0, 4354, 4355, 3, 952, 476, 0, 4355, 4356, 5, 381, 0, 0, 4356, + 1003, 1, 0, 0, 0, 4357, 4358, 3, 818, 409, 0, 4358, 1005, 1, 0, 0, 0, 4359, + 4360, 3, 818, 409, 0, 4360, 1007, 1, 0, 0, 0, 4361, 4363, 3, 1012, 506, + 0, 4362, 4361, 1, 0, 0, 0, 4362, 4363, 1, 0, 0, 0, 4363, 4365, 1, 0, 0, + 0, 4364, 4366, 3, 1014, 507, 0, 4365, 4364, 1, 0, 0, 0, 4365, 4366, 1, + 0, 0, 0, 4366, 4367, 1, 0, 0, 0, 4367, 4369, 5, 101, 0, 0, 4368, 4362, + 1, 0, 0, 0, 4368, 4369, 1, 0, 0, 0, 4369, 4370, 1, 0, 0, 0, 4370, 4371, + 3, 1010, 505, 0, 4371, 1009, 1, 0, 0, 0, 4372, 4373, 3, 818, 409, 0, 4373, + 1011, 1, 0, 0, 0, 4374, 4375, 7, 34, 0, 0, 4375, 1013, 1, 0, 0, 0, 4376, + 4377, 3, 818, 409, 0, 4377, 1015, 1, 0, 0, 0, 4378, 4379, 7, 35, 0, 0, + 4379, 1017, 1, 0, 0, 0, 4380, 4381, 3, 952, 476, 0, 4381, 1019, 1, 0, 0, + 0, 4382, 4383, 3, 818, 409, 0, 4383, 1021, 1, 0, 0, 0, 4384, 4390, 3, 1024, + 512, 0, 4385, 4390, 3, 1026, 513, 0, 4386, 4390, 3, 1030, 515, 0, 4387, + 4390, 3, 1028, 514, 0, 4388, 4390, 3, 1032, 516, 0, 4389, 4384, 1, 0, 0, + 0, 4389, 4385, 1, 0, 0, 0, 4389, 4386, 1, 0, 0, 0, 4389, 4387, 1, 0, 0, + 0, 4389, 4388, 1, 0, 0, 0, 4390, 1023, 1, 0, 0, 0, 4391, 4399, 5, 64, 0, + 0, 4392, 4393, 5, 70, 0, 0, 4393, 4395, 5, 370, 0, 0, 4394, 4396, 3, 1034, + 517, 0, 4395, 4394, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4397, 1, + 0, 0, 0, 4397, 4399, 5, 381, 0, 0, 4398, 4391, 1, 0, 0, 0, 4398, 4392, + 1, 0, 0, 0, 4399, 1025, 1, 0, 0, 0, 4400, 4408, 5, 68, 0, 0, 4401, 4402, + 5, 237, 0, 0, 4402, 4404, 5, 370, 0, 0, 4403, 4405, 3, 1036, 518, 0, 4404, + 4403, 1, 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, + 4408, 5, 381, 0, 0, 4407, 4400, 1, 0, 0, 0, 4407, 4401, 1, 0, 0, 0, 4408, + 1027, 1, 0, 0, 0, 4409, 4415, 5, 137, 0, 0, 4410, 4412, 5, 370, 0, 0, 4411, + 4413, 3, 1036, 518, 0, 4412, 4411, 1, 0, 0, 0, 4412, 4413, 1, 0, 0, 0, + 4413, 4414, 1, 0, 0, 0, 4414, 4416, 5, 381, 0, 0, 4415, 4410, 1, 0, 0, + 0, 4415, 4416, 1, 0, 0, 0, 4416, 1029, 1, 0, 0, 0, 4417, 4425, 5, 69, 0, + 0, 4418, 4419, 5, 236, 0, 0, 4419, 4421, 5, 370, 0, 0, 4420, 4422, 3, 1038, + 519, 0, 4421, 4420, 1, 0, 0, 0, 4421, 4422, 1, 0, 0, 0, 4422, 4423, 1, + 0, 0, 0, 4423, 4425, 5, 381, 0, 0, 4424, 4417, 1, 0, 0, 0, 4424, 4418, + 1, 0, 0, 0, 4425, 1031, 1, 0, 0, 0, 4426, 4434, 5, 138, 0, 0, 4427, 4428, + 5, 136, 0, 0, 4428, 4430, 5, 370, 0, 0, 4429, 4431, 3, 1038, 519, 0, 4430, + 4429, 1, 0, 0, 0, 4430, 4431, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, + 4434, 5, 381, 0, 0, 4433, 4426, 1, 0, 0, 0, 4433, 4427, 1, 0, 0, 0, 4434, + 1033, 1, 0, 0, 0, 4435, 4438, 3, 1130, 565, 0, 4436, 4438, 3, 942, 471, + 0, 4437, 4435, 1, 0, 0, 0, 4437, 4436, 1, 0, 0, 0, 4438, 1035, 1, 0, 0, + 0, 4439, 4442, 3, 1132, 566, 0, 4440, 4442, 3, 942, 471, 0, 4441, 4439, + 1, 0, 0, 0, 4441, 4440, 1, 0, 0, 0, 4442, 1037, 1, 0, 0, 0, 4443, 4446, + 3, 1134, 567, 0, 4444, 4446, 3, 942, 471, 0, 4445, 4443, 1, 0, 0, 0, 4445, + 4444, 1, 0, 0, 0, 4446, 1039, 1, 0, 0, 0, 4447, 4448, 3, 818, 409, 0, 4448, + 1041, 1, 0, 0, 0, 4449, 4450, 5, 84, 0, 0, 4450, 4451, 5, 370, 0, 0, 4451, + 4452, 3, 1044, 522, 0, 4452, 4454, 5, 381, 0, 0, 4453, 4455, 3, 728, 364, + 0, 4454, 4453, 1, 0, 0, 0, 4454, 4455, 1, 0, 0, 0, 4455, 1043, 1, 0, 0, + 0, 4456, 4457, 3, 1046, 523, 0, 4457, 4458, 5, 360, 0, 0, 4458, 4459, 3, + 1048, 524, 0, 4459, 1045, 1, 0, 0, 0, 4460, 4461, 3, 1020, 510, 0, 4461, + 1047, 1, 0, 0, 0, 4462, 4463, 3, 1020, 510, 0, 4463, 1049, 1, 0, 0, 0, + 4464, 4467, 3, 1052, 526, 0, 4465, 4467, 3, 968, 484, 0, 4466, 4464, 1, + 0, 0, 0, 4466, 4465, 1, 0, 0, 0, 4467, 1051, 1, 0, 0, 0, 4468, 4469, 5, + 83, 0, 0, 4469, 4470, 5, 370, 0, 0, 4470, 4471, 3, 1054, 527, 0, 4471, + 4472, 5, 381, 0, 0, 4472, 1053, 1, 0, 0, 0, 4473, 4476, 3, 1138, 569, 0, + 4474, 4476, 3, 942, 471, 0, 4475, 4473, 1, 0, 0, 0, 4475, 4474, 1, 0, 0, + 0, 4476, 1055, 1, 0, 0, 0, 4477, 4478, 3, 1110, 555, 0, 4478, 1057, 1, + 0, 0, 0, 4479, 4480, 3, 1112, 556, 0, 4480, 1059, 1, 0, 0, 0, 4481, 4482, + 3, 1110, 555, 0, 4482, 1061, 1, 0, 0, 0, 4483, 4484, 3, 1110, 555, 0, 4484, + 1063, 1, 0, 0, 0, 4485, 4488, 3, 1112, 556, 0, 4486, 4488, 3, 1066, 533, + 0, 4487, 4485, 1, 0, 0, 0, 4487, 4486, 1, 0, 0, 0, 4488, 1065, 1, 0, 0, + 0, 4489, 4490, 7, 36, 0, 0, 4490, 1067, 1, 0, 0, 0, 4491, 4492, 3, 1110, + 555, 0, 4492, 1069, 1, 0, 0, 0, 4493, 4494, 3, 1110, 555, 0, 4494, 1071, + 1, 0, 0, 0, 4495, 4496, 3, 1110, 555, 0, 4496, 1073, 1, 0, 0, 0, 4497, + 4500, 3, 1112, 556, 0, 4498, 4500, 3, 1076, 538, 0, 4499, 4497, 1, 0, 0, + 0, 4499, 4498, 1, 0, 0, 0, 4500, 1075, 1, 0, 0, 0, 4501, 4502, 7, 36, 0, + 0, 4502, 1077, 1, 0, 0, 0, 4503, 4504, 3, 1110, 555, 0, 4504, 1079, 1, + 0, 0, 0, 4505, 4506, 3, 1110, 555, 0, 4506, 1081, 1, 0, 0, 0, 4507, 4508, + 3, 1110, 555, 0, 4508, 1083, 1, 0, 0, 0, 4509, 4510, 3, 1110, 555, 0, 4510, + 1085, 1, 0, 0, 0, 4511, 4512, 3, 1092, 546, 0, 4512, 1087, 1, 0, 0, 0, + 4513, 4514, 3, 1092, 546, 0, 4514, 1089, 1, 0, 0, 0, 4515, 4516, 3, 1112, + 556, 0, 4516, 1091, 1, 0, 0, 0, 4517, 4518, 3, 1112, 556, 0, 4518, 1093, + 1, 0, 0, 0, 4519, 4522, 3, 1118, 559, 0, 4520, 4522, 3, 1096, 548, 0, 4521, + 4519, 1, 0, 0, 0, 4521, 4520, 1, 0, 0, 0, 4522, 1095, 1, 0, 0, 0, 4523, + 4532, 5, 2, 0, 0, 4524, 4532, 3, 1116, 558, 0, 4525, 4532, 5, 7, 0, 0, + 4526, 4532, 3, 1098, 549, 0, 4527, 4532, 3, 1136, 568, 0, 4528, 4532, 3, + 1128, 564, 0, 4529, 4532, 3, 1106, 553, 0, 4530, 4532, 3, 1108, 554, 0, + 4531, 4523, 1, 0, 0, 0, 4531, 4524, 1, 0, 0, 0, 4531, 4525, 1, 0, 0, 0, + 4531, 4526, 1, 0, 0, 0, 4531, 4527, 1, 0, 0, 0, 4531, 4528, 1, 0, 0, 0, + 4531, 4529, 1, 0, 0, 0, 4531, 4530, 1, 0, 0, 0, 4532, 1097, 1, 0, 0, 0, + 4533, 4537, 3, 1100, 550, 0, 4534, 4537, 3, 1102, 551, 0, 4535, 4537, 3, + 1104, 552, 0, 4536, 4533, 1, 0, 0, 0, 4536, 4534, 1, 0, 0, 0, 4536, 4535, + 1, 0, 0, 0, 4537, 1099, 1, 0, 0, 0, 4538, 4539, 5, 70, 0, 0, 4539, 4540, + 3, 1130, 565, 0, 4540, 1101, 1, 0, 0, 0, 4541, 4542, 5, 207, 0, 0, 4542, + 4543, 3, 1132, 566, 0, 4543, 1103, 1, 0, 0, 0, 4544, 4545, 7, 37, 0, 0, + 4545, 4546, 3, 1134, 567, 0, 4546, 1105, 1, 0, 0, 0, 4547, 4548, 3, 936, + 468, 0, 4548, 1107, 1, 0, 0, 0, 4549, 4550, 3, 942, 471, 0, 4550, 1109, + 1, 0, 0, 0, 4551, 4555, 3, 1112, 556, 0, 4552, 4555, 5, 4, 0, 0, 4553, + 4555, 5, 5, 0, 0, 4554, 4551, 1, 0, 0, 0, 4554, 4552, 1, 0, 0, 0, 4554, + 4553, 1, 0, 0, 0, 4555, 1111, 1, 0, 0, 0, 4556, 4559, 5, 324, 0, 0, 4557, + 4559, 3, 1146, 573, 0, 4558, 4556, 1, 0, 0, 0, 4558, 4557, 1, 0, 0, 0, + 4559, 1113, 1, 0, 0, 0, 4560, 4561, 3, 1116, 558, 0, 4561, 1115, 1, 0, + 0, 0, 4562, 4563, 7, 38, 0, 0, 4563, 1117, 1, 0, 0, 0, 4564, 4567, 3, 1120, + 560, 0, 4565, 4567, 3, 1122, 561, 0, 4566, 4564, 1, 0, 0, 0, 4566, 4565, + 1, 0, 0, 0, 4567, 1119, 1, 0, 0, 0, 4568, 4574, 5, 8, 0, 0, 4569, 4574, + 5, 11, 0, 0, 4570, 4574, 5, 12, 0, 0, 4571, 4574, 5, 14, 0, 0, 4572, 4574, + 3, 1124, 562, 0, 4573, 4568, 1, 0, 0, 0, 4573, 4569, 1, 0, 0, 0, 4573, + 4570, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4573, 4572, 1, 0, 0, 0, 4574, + 1121, 1, 0, 0, 0, 4575, 4576, 7, 39, 0, 0, 4576, 1123, 1, 0, 0, 0, 4577, + 4578, 7, 40, 0, 0, 4578, 1125, 1, 0, 0, 0, 4579, 4580, 5, 16, 0, 0, 4580, + 1127, 1, 0, 0, 0, 4581, 4582, 5, 154, 0, 0, 4582, 1129, 1, 0, 0, 0, 4583, + 4584, 3, 1116, 558, 0, 4584, 1131, 1, 0, 0, 0, 4585, 4586, 3, 1116, 558, + 0, 4586, 1133, 1, 0, 0, 0, 4587, 4588, 3, 1116, 558, 0, 4588, 1135, 1, + 0, 0, 0, 4589, 4590, 5, 83, 0, 0, 4590, 4591, 3, 1138, 569, 0, 4591, 1137, + 1, 0, 0, 0, 4592, 4593, 3, 1116, 558, 0, 4593, 1139, 1, 0, 0, 0, 4594, + 4595, 7, 41, 0, 0, 4595, 1141, 1, 0, 0, 0, 4596, 4597, 7, 42, 0, 0, 4597, + 1143, 1, 0, 0, 0, 4598, 4599, 7, 43, 0, 0, 4599, 1145, 1, 0, 0, 0, 4600, + 4601, 7, 44, 0, 0, 4601, 1147, 1, 0, 0, 0, 507, 1150, 1157, 1161, 1166, + 1171, 1176, 1179, 1184, 1186, 1190, 1193, 1197, 1205, 1211, 1225, 1228, + 1235, 1248, 1255, 1258, 1263, 1269, 1272, 1282, 1289, 1298, 1319, 1322, + 1329, 1334, 1340, 1346, 1350, 1355, 1362, 1365, 1373, 1380, 1383, 1395, + 1398, 1409, 1417, 1425, 1430, 1434, 1442, 1449, 1457, 1463, 1469, 1474, + 1477, 1482, 1485, 1488, 1492, 1495, 1499, 1503, 1506, 1509, 1512, 1524, + 1529, 1535, 1542, 1547, 1551, 1557, 1562, 1565, 1573, 1579, 1587, 1591, + 1596, 1603, 1607, 1612, 1616, 1620, 1626, 1639, 1645, 1657, 1673, 1678, + 1689, 1699, 1717, 1722, 1726, 1730, 1734, 1736, 1742, 1747, 1754, 1770, + 1774, 1779, 1783, 1790, 1794, 1811, 1816, 1823, 1833, 1841, 1846, 1862, + 1865, 1869, 1872, 1876, 1879, 1885, 1889, 1892, 1899, 1904, 1911, 1915, + 1919, 1922, 1925, 1928, 1931, 1934, 1936, 1943, 1948, 1959, 1966, 1976, + 1979, 1986, 1989, 1995, 2004, 2010, 2014, 2021, 2034, 2044, 2050, 2054, + 2057, 2061, 2071, 2074, 2078, 2081, 2088, 2092, 2095, 2115, 2124, 2129, + 2136, 2140, 2146, 2152, 2158, 2161, 2164, 2169, 2174, 2177, 2181, 2185, + 2192, 2196, 2199, 2205, 2208, 2211, 2219, 2224, 2227, 2232, 2235, 2240, + 2243, 2247, 2250, 2253, 2265, 2272, 2274, 2279, 2288, 2293, 2297, 2304, + 2307, 2310, 2321, 2335, 2344, 2353, 2387, 2390, 2394, 2413, 2421, 2423, + 2434, 2442, 2446, 2461, 2494, 2503, 2513, 2523, 2534, 2540, 2550, 2559, + 2586, 2596, 2609, 2614, 2630, 2634, 2650, 2655, 2658, 2668, 2681, 2687, + 2696, 2702, 2709, 2714, 2721, 2729, 2732, 2740, 2743, 2752, 2756, 2759, + 2765, 2772, 2780, 2782, 2797, 2802, 2806, 2810, 2814, 2818, 2821, 2827, + 2832, 2836, 2839, 2843, 2846, 2855, 2858, 2868, 2871, 2875, 2879, 2883, + 2888, 2895, 2898, 2902, 2905, 2912, 2915, 2925, 2957, 2960, 2968, 2971, + 2980, 2984, 3019, 3026, 3031, 3040, 3045, 3052, 3068, 3071, 3078, 3081, + 3086, 3089, 3092, 3097, 3101, 3109, 3114, 3125, 3128, 3130, 3132, 3144, + 3148, 3155, 3160, 3163, 3170, 3173, 3180, 3183, 3185, 3192, 3197, 3200, + 3207, 3210, 3217, 3220, 3222, 3232, 3236, 3240, 3244, 3248, 3252, 3256, + 3260, 3264, 3268, 3275, 3278, 3282, 3285, 3288, 3292, 3296, 3300, 3304, + 3308, 3312, 3316, 3323, 3326, 3330, 3334, 3338, 3342, 3346, 3350, 3354, + 3358, 3363, 3370, 3373, 3378, 3380, 3387, 3391, 3393, 3401, 3405, 3409, + 3413, 3417, 3424, 3428, 3431, 3435, 3439, 3442, 3444, 3448, 3455, 3460, + 3467, 3469, 3474, 3480, 3483, 3485, 3489, 3494, 3501, 3503, 3508, 3515, + 3517, 3524, 3532, 3538, 3542, 3549, 3553, 3556, 3561, 3565, 3569, 3573, + 3577, 3581, 3584, 3588, 3592, 3596, 3599, 3603, 3607, 3614, 3618, 3621, + 3625, 3627, 3631, 3640, 3648, 3663, 3685, 3692, 3701, 3708, 3711, 3720, + 3732, 3736, 3744, 3750, 3758, 3775, 3789, 3808, 3813, 3819, 3845, 3848, + 3850, 3859, 3868, 3892, 3901, 3922, 3929, 3938, 3952, 3956, 3960, 3964, + 3979, 3995, 3999, 4003, 4010, 4013, 4021, 4024, 4043, 4050, 4064, 4068, + 4081, 4091, 4096, 4115, 4141, 4155, 4172, 4176, 4185, 4191, 4197, 4206, + 4220, 4228, 4230, 4246, 4251, 4263, 4362, 4365, 4368, 4389, 4395, 4398, + 4404, 4407, 4412, 4415, 4421, 4424, 4430, 4433, 4437, 4441, 4445, 4454, + 4466, 4475, 4487, 4499, 4521, 4531, 4536, 4554, 4558, 4566, 4573, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// GQLParserInit initializes any static state used to implement GQLParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewGQLParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func GQLParserInit() { + staticData := &GQLParserStaticData + staticData.once.Do(gqlParserInit) +} + +// NewGQLParser produces a new parser instance for the optional input antlr.TokenStream. +func NewGQLParser(input antlr.TokenStream) *GQLParser { + GQLParserInit() + this := new(GQLParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &GQLParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.PredictionContextCache) + this.RuleNames = staticData.RuleNames + this.LiteralNames = staticData.LiteralNames + this.SymbolicNames = staticData.SymbolicNames + this.GrammarFileName = "GQL.g4" + + return this +} + +// GQLParser tokens. +const ( + GQLParserEOF = antlr.TokenEOF + GQLParserIMPLIES = 1 + GQLParserBOOLEAN_LITERAL = 2 + GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE = 3 + GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE = 4 + GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE = 5 + GQLParserNO_ESCAPE = 6 + GQLParserBYTE_STRING_LITERAL = 7 + GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX = 8 + GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX = 9 + GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX = 10 + GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX = 11 + GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX = 12 + GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX = 13 + GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX = 14 + GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX = 15 + GQLParserUNSIGNED_DECIMAL_INTEGER = 16 + GQLParserUNSIGNED_HEXADECIMAL_INTEGER = 17 + GQLParserUNSIGNED_OCTAL_INTEGER = 18 + GQLParserUNSIGNED_BINARY_INTEGER = 19 + GQLParserABS = 20 + GQLParserACOS = 21 + GQLParserALL = 22 + GQLParserALL_DIFFERENT = 23 + GQLParserAND = 24 + GQLParserANY = 25 + GQLParserARRAY = 26 + GQLParserAS = 27 + GQLParserASC = 28 + GQLParserASCENDING = 29 + GQLParserASIN = 30 + GQLParserAT = 31 + GQLParserATAN = 32 + GQLParserAVG = 33 + GQLParserBIG = 34 + GQLParserBIGINT = 35 + GQLParserBINARY = 36 + GQLParserBOOL = 37 + GQLParserBOOLEAN = 38 + GQLParserBOTH = 39 + GQLParserBTRIM = 40 + GQLParserBY = 41 + GQLParserBYTE_LENGTH = 42 + GQLParserBYTES = 43 + GQLParserCALL = 44 + GQLParserCARDINALITY = 45 + GQLParserCASE = 46 + GQLParserCAST = 47 + GQLParserCEIL = 48 + GQLParserCEILING = 49 + GQLParserCHAR = 50 + GQLParserCHAR_LENGTH = 51 + GQLParserCHARACTER_LENGTH = 52 + GQLParserCHARACTERISTICS = 53 + GQLParserCLOSE = 54 + GQLParserCOALESCE = 55 + GQLParserCOLLECT_LIST = 56 + GQLParserCOMMIT = 57 + GQLParserCOPY = 58 + GQLParserCOS = 59 + GQLParserCOSH = 60 + GQLParserCOT = 61 + GQLParserCOUNT = 62 + GQLParserCREATE = 63 + GQLParserCURRENT_DATE = 64 + GQLParserCURRENT_GRAPH = 65 + GQLParserCURRENT_PROPERTY_GRAPH = 66 + GQLParserCURRENT_SCHEMA = 67 + GQLParserCURRENT_TIME = 68 + GQLParserCURRENT_TIMESTAMP = 69 + GQLParserDATE = 70 + GQLParserDATETIME = 71 + GQLParserDAY = 72 + GQLParserDEC = 73 + GQLParserDECIMAL = 74 + GQLParserDEGREES = 75 + GQLParserDELETE = 76 + GQLParserDESC = 77 + GQLParserDESCENDING = 78 + GQLParserDETACH = 79 + GQLParserDISTINCT = 80 + GQLParserDOUBLE = 81 + GQLParserDROP = 82 + GQLParserDURATION = 83 + GQLParserDURATION_BETWEEN = 84 + GQLParserELEMENT_ID = 85 + GQLParserELSE = 86 + GQLParserEND = 87 + GQLParserEXCEPT = 88 + GQLParserEXISTS = 89 + GQLParserEXP = 90 + GQLParserFILTER = 91 + GQLParserFINISH = 92 + GQLParserFLOAT = 93 + GQLParserFLOAT16 = 94 + GQLParserFLOAT32 = 95 + GQLParserFLOAT64 = 96 + GQLParserFLOAT128 = 97 + GQLParserFLOAT256 = 98 + GQLParserFLOOR = 99 + GQLParserFOR = 100 + GQLParserFROM = 101 + GQLParserGROUP = 102 + GQLParserHAVING = 103 + GQLParserHOME_GRAPH = 104 + GQLParserHOME_PROPERTY_GRAPH = 105 + GQLParserHOME_SCHEMA = 106 + GQLParserHOUR = 107 + GQLParserIF = 108 + GQLParserIN = 109 + GQLParserINSERT = 110 + GQLParserINT = 111 + GQLParserINTEGER = 112 + GQLParserINT8 = 113 + GQLParserINTEGER8 = 114 + GQLParserINT16 = 115 + GQLParserINTEGER16 = 116 + GQLParserINT32 = 117 + GQLParserINTEGER32 = 118 + GQLParserINT64 = 119 + GQLParserINTEGER64 = 120 + GQLParserINT128 = 121 + GQLParserINTEGER128 = 122 + GQLParserINT256 = 123 + GQLParserINTEGER256 = 124 + GQLParserINTERSECT = 125 + GQLParserINTERVAL = 126 + GQLParserIS = 127 + GQLParserLEADING = 128 + GQLParserLEFT = 129 + GQLParserLET = 130 + GQLParserLIKE = 131 + GQLParserLIMIT = 132 + GQLParserLIST = 133 + GQLParserLN = 134 + GQLParserLOCAL = 135 + GQLParserLOCAL_DATETIME = 136 + GQLParserLOCAL_TIME = 137 + GQLParserLOCAL_TIMESTAMP = 138 + GQLParserLOG_KW = 139 + GQLParserLOG10 = 140 + GQLParserLOWER = 141 + GQLParserLTRIM = 142 + GQLParserMATCH = 143 + GQLParserMAX = 144 + GQLParserMIN = 145 + GQLParserMINUTE = 146 + GQLParserMOD = 147 + GQLParserMONTH = 148 + GQLParserNEXT = 149 + GQLParserNODETACH = 150 + GQLParserNORMALIZE = 151 + GQLParserNOT = 152 + GQLParserNOTHING = 153 + GQLParserNULL_KW = 154 + GQLParserNULLS = 155 + GQLParserNULLIF = 156 + GQLParserOCTET_LENGTH = 157 + GQLParserOF = 158 + GQLParserOFFSET = 159 + GQLParserOPTIONAL = 160 + GQLParserOR = 161 + GQLParserORDER = 162 + GQLParserOTHERWISE = 163 + GQLParserPARAMETER = 164 + GQLParserPARAMETERS = 165 + GQLParserPATH = 166 + GQLParserPATH_LENGTH = 167 + GQLParserPATHS = 168 + GQLParserPERCENTILE_CONT = 169 + GQLParserPERCENTILE_DISC = 170 + GQLParserPOWER = 171 + GQLParserPRECISION = 172 + GQLParserPROPERTY_EXISTS = 173 + GQLParserRADIANS = 174 + GQLParserREAL = 175 + GQLParserRECORD = 176 + GQLParserREMOVE = 177 + GQLParserREPLACE = 178 + GQLParserRESET = 179 + GQLParserRETURN = 180 + GQLParserRIGHT = 181 + GQLParserROLLBACK = 182 + GQLParserRTRIM = 183 + GQLParserSAME = 184 + GQLParserSCHEMA = 185 + GQLParserSECOND = 186 + GQLParserSELECT = 187 + GQLParserSESSION = 188 + GQLParserSESSION_USER = 189 + GQLParserSET = 190 + GQLParserSIGNED = 191 + GQLParserSIN = 192 + GQLParserSINH = 193 + GQLParserSIZE = 194 + GQLParserSKIP_RESERVED_WORD = 195 + GQLParserSMALL = 196 + GQLParserSMALLINT = 197 + GQLParserSQRT = 198 + GQLParserSTART = 199 + GQLParserSTDDEV_POP = 200 + GQLParserSTDDEV_SAMP = 201 + GQLParserSTRING = 202 + GQLParserSUM = 203 + GQLParserTAN = 204 + GQLParserTANH = 205 + GQLParserTHEN = 206 + GQLParserTIME = 207 + GQLParserTIMESTAMP = 208 + GQLParserTRAILING = 209 + GQLParserTRIM = 210 + GQLParserTYPED = 211 + GQLParserUBIGINT = 212 + GQLParserUINT = 213 + GQLParserUINT8 = 214 + GQLParserUINT16 = 215 + GQLParserUINT32 = 216 + GQLParserUINT64 = 217 + GQLParserUINT128 = 218 + GQLParserUINT256 = 219 + GQLParserUNION = 220 + GQLParserUNSIGNED = 221 + GQLParserUPPER = 222 + GQLParserUSE = 223 + GQLParserUSMALLINT = 224 + GQLParserVALUE = 225 + GQLParserVARBINARY = 226 + GQLParserVARCHAR = 227 + GQLParserVARIABLE = 228 + GQLParserWHEN = 229 + GQLParserWHERE = 230 + GQLParserWITH = 231 + GQLParserXOR = 232 + GQLParserYEAR = 233 + GQLParserYIELD = 234 + GQLParserZONED = 235 + GQLParserZONED_DATETIME = 236 + GQLParserZONED_TIME = 237 + GQLParserABSTRACT = 238 + GQLParserAGGREGATE = 239 + GQLParserAGGREGATES = 240 + GQLParserALTER = 241 + GQLParserCATALOG = 242 + GQLParserCLEAR = 243 + GQLParserCLONE = 244 + GQLParserCONSTRAINT = 245 + GQLParserCURRENT_ROLE = 246 + GQLParserCURRENT_USER = 247 + GQLParserDATA = 248 + GQLParserDIRECTORY = 249 + GQLParserDRYRUN = 250 + GQLParserEXACT = 251 + GQLParserEXISTING = 252 + GQLParserFUNCTION = 253 + GQLParserGQLSTATUS = 254 + GQLParserGRANT = 255 + GQLParserINSTANT = 256 + GQLParserINFINITY_KW = 257 + GQLParserNUMBER = 258 + GQLParserNUMERIC = 259 + GQLParserON = 260 + GQLParserOPEN = 261 + GQLParserPARTITION = 262 + GQLParserPROCEDURE = 263 + GQLParserPRODUCT = 264 + GQLParserPROJECT = 265 + GQLParserQUERY = 266 + GQLParserRECORDS = 267 + GQLParserREFERENCE = 268 + GQLParserRENAME = 269 + GQLParserREVOKE = 270 + GQLParserSUBSTRING = 271 + GQLParserSYSTEM_USER = 272 + GQLParserTEMPORAL = 273 + GQLParserUNIQUE = 274 + GQLParserUNIT = 275 + GQLParserVALUES = 276 + GQLParserACYCLIC = 277 + GQLParserBINDING = 278 + GQLParserBINDINGS = 279 + GQLParserCONNECTING = 280 + GQLParserDESTINATION = 281 + GQLParserDIFFERENT = 282 + GQLParserDIRECTED = 283 + GQLParserEDGE = 284 + GQLParserEDGES = 285 + GQLParserELEMENT = 286 + GQLParserELEMENTS = 287 + GQLParserFIRST = 288 + GQLParserGRAPH = 289 + GQLParserGROUPS = 290 + GQLParserKEEP = 291 + GQLParserLABEL = 292 + GQLParserLABELED = 293 + GQLParserLABELS = 294 + GQLParserLAST = 295 + GQLParserNFC = 296 + GQLParserNFD = 297 + GQLParserNFKC = 298 + GQLParserNFKD = 299 + GQLParserNO = 300 + GQLParserNODE = 301 + GQLParserNORMALIZED = 302 + GQLParserONLY = 303 + GQLParserORDINALITY = 304 + GQLParserPROPERTY = 305 + GQLParserREAD = 306 + GQLParserRELATIONSHIP = 307 + GQLParserRELATIONSHIPS = 308 + GQLParserREPEATABLE = 309 + GQLParserSHORTEST = 310 + GQLParserSIMPLE = 311 + GQLParserSOURCE = 312 + GQLParserTABLE = 313 + GQLParserTO = 314 + GQLParserTRAIL = 315 + GQLParserTRANSACTION = 316 + GQLParserTYPE = 317 + GQLParserUNDIRECTED = 318 + GQLParserVERTEX = 319 + GQLParserWALK = 320 + GQLParserWITHOUT = 321 + GQLParserWRITE = 322 + GQLParserZONE = 323 + GQLParserREGULAR_IDENTIFIER = 324 + GQLParserSUBSTITUTED_PARAMETER_REFERENCE = 325 + GQLParserGENERAL_PARAMETER_REFERENCE = 326 + GQLParserMULTISET_ALTERNATION_OPERATOR = 327 + GQLParserBRACKET_RIGHT_ARROW = 328 + GQLParserBRACKET_TILDE_RIGHT_ARROW = 329 + GQLParserCONCATENATION_OPERATOR = 330 + GQLParserDOUBLE_COLON = 331 + GQLParserDOUBLE_DOLLAR_SIGN = 332 + GQLParserDOUBLE_PERIOD = 333 + GQLParserGREATER_THAN_OR_EQUALS_OPERATOR = 334 + GQLParserLEFT_ARROW = 335 + GQLParserLEFT_ARROW_TILDE = 336 + GQLParserLEFT_ARROW_BRACKET = 337 + GQLParserLEFT_ARROW_TILDE_BRACKET = 338 + GQLParserLEFT_MINUS_RIGHT = 339 + GQLParserLEFT_MINUS_SLASH = 340 + GQLParserLEFT_TILDE_SLASH = 341 + GQLParserLESS_THAN_OR_EQUALS_OPERATOR = 342 + GQLParserMINUS_LEFT_BRACKET = 343 + GQLParserMINUS_SLASH = 344 + GQLParserNOT_EQUALS_OPERATOR = 345 + GQLParserRIGHT_ARROW = 346 + GQLParserRIGHT_BRACKET_MINUS = 347 + GQLParserRIGHT_BRACKET_TILDE = 348 + GQLParserRIGHT_DOUBLE_ARROW = 349 + GQLParserSLASH_MINUS = 350 + GQLParserSLASH_MINUS_RIGHT = 351 + GQLParserSLASH_TILDE = 352 + GQLParserSLASH_TILDE_RIGHT = 353 + GQLParserTILDE_LEFT_BRACKET = 354 + GQLParserTILDE_RIGHT_ARROW = 355 + GQLParserTILDE_SLASH = 356 + GQLParserAMPERSAND = 357 + GQLParserASTERISK = 358 + GQLParserCOLON = 359 + GQLParserCOMMA = 360 + GQLParserCOMMERCIAL_AT = 361 + GQLParserDOLLAR_SIGN = 362 + GQLParserDOUBLE_QUOTE = 363 + GQLParserEQUALS_OPERATOR = 364 + GQLParserEXCLAMATION_MARK = 365 + GQLParserRIGHT_ANGLE_BRACKET = 366 + GQLParserGRAVE_ACCENT = 367 + GQLParserLEFT_BRACE = 368 + GQLParserLEFT_BRACKET = 369 + GQLParserLEFT_PAREN = 370 + GQLParserLEFT_ANGLE_BRACKET = 371 + GQLParserMINUS_SIGN = 372 + GQLParserPERCENT = 373 + GQLParserPERIOD = 374 + GQLParserPLUS_SIGN = 375 + GQLParserQUESTION_MARK = 376 + GQLParserQUOTE = 377 + GQLParserREVERSE_SOLIDUS = 378 + GQLParserRIGHT_BRACE = 379 + GQLParserRIGHT_BRACKET = 380 + GQLParserRIGHT_PAREN = 381 + GQLParserSOLIDUS = 382 + GQLParserTILDE = 383 + GQLParserUNDERSCORE = 384 + GQLParserVERTICAL_BAR = 385 + GQLParserSP = 386 + GQLParserWHITESPACE = 387 + GQLParserBRACKETED_COMMENT = 388 + GQLParserSIMPLE_COMMENT_SOLIDUS = 389 + GQLParserSIMPLE_COMMENT_MINUS = 390 +) + +// GQLParser rules. +const ( + GQLParserRULE_gqlProgram = 0 + GQLParserRULE_programActivity = 1 + GQLParserRULE_sessionActivity = 2 + GQLParserRULE_transactionActivity = 3 + GQLParserRULE_endTransactionCommand = 4 + GQLParserRULE_sessionSetCommand = 5 + GQLParserRULE_sessionSetSchemaClause = 6 + GQLParserRULE_sessionSetGraphClause = 7 + GQLParserRULE_sessionSetTimeZoneClause = 8 + GQLParserRULE_setTimeZoneValue = 9 + GQLParserRULE_sessionSetParameterClause = 10 + GQLParserRULE_sessionSetGraphParameterClause = 11 + GQLParserRULE_sessionSetBindingTableParameterClause = 12 + GQLParserRULE_sessionSetValueParameterClause = 13 + GQLParserRULE_sessionSetParameterName = 14 + GQLParserRULE_sessionResetCommand = 15 + GQLParserRULE_sessionResetArguments = 16 + GQLParserRULE_sessionCloseCommand = 17 + GQLParserRULE_sessionParameterSpecification = 18 + GQLParserRULE_startTransactionCommand = 19 + GQLParserRULE_transactionCharacteristics = 20 + GQLParserRULE_transactionMode = 21 + GQLParserRULE_transactionAccessMode = 22 + GQLParserRULE_rollbackCommand = 23 + GQLParserRULE_commitCommand = 24 + GQLParserRULE_nestedProcedureSpecification = 25 + GQLParserRULE_procedureSpecification = 26 + GQLParserRULE_nestedDataModifyingProcedureSpecification = 27 + GQLParserRULE_nestedQuerySpecification = 28 + GQLParserRULE_procedureBody = 29 + GQLParserRULE_bindingVariableDefinitionBlock = 30 + GQLParserRULE_bindingVariableDefinition = 31 + GQLParserRULE_statementBlock = 32 + GQLParserRULE_statement = 33 + GQLParserRULE_nextStatement = 34 + GQLParserRULE_graphVariableDefinition = 35 + GQLParserRULE_optTypedGraphInitializer = 36 + GQLParserRULE_graphInitializer = 37 + GQLParserRULE_bindingTableVariableDefinition = 38 + GQLParserRULE_optTypedBindingTableInitializer = 39 + GQLParserRULE_bindingTableInitializer = 40 + GQLParserRULE_valueVariableDefinition = 41 + GQLParserRULE_optTypedValueInitializer = 42 + GQLParserRULE_valueInitializer = 43 + GQLParserRULE_graphExpression = 44 + GQLParserRULE_currentGraph = 45 + GQLParserRULE_bindingTableExpression = 46 + GQLParserRULE_nestedBindingTableQuerySpecification = 47 + GQLParserRULE_objectExpressionPrimary = 48 + GQLParserRULE_linearCatalogModifyingStatement = 49 + GQLParserRULE_simpleCatalogModifyingStatement = 50 + GQLParserRULE_primitiveCatalogModifyingStatement = 51 + GQLParserRULE_createSchemaStatement = 52 + GQLParserRULE_dropSchemaStatement = 53 + GQLParserRULE_createGraphStatement = 54 + GQLParserRULE_openGraphType = 55 + GQLParserRULE_ofGraphType = 56 + GQLParserRULE_graphTypeLikeGraph = 57 + GQLParserRULE_graphSource = 58 + GQLParserRULE_dropGraphStatement = 59 + GQLParserRULE_createGraphTypeStatement = 60 + GQLParserRULE_graphTypeSource = 61 + GQLParserRULE_copyOfGraphType = 62 + GQLParserRULE_dropGraphTypeStatement = 63 + GQLParserRULE_callCatalogModifyingProcedureStatement = 64 + GQLParserRULE_linearDataModifyingStatement = 65 + GQLParserRULE_focusedLinearDataModifyingStatement = 66 + GQLParserRULE_focusedLinearDataModifyingStatementBody = 67 + GQLParserRULE_focusedNestedDataModifyingProcedureSpecification = 68 + GQLParserRULE_ambientLinearDataModifyingStatement = 69 + GQLParserRULE_ambientLinearDataModifyingStatementBody = 70 + GQLParserRULE_simpleLinearDataAccessingStatement = 71 + GQLParserRULE_simpleDataAccessingStatement = 72 + GQLParserRULE_simpleDataModifyingStatement = 73 + GQLParserRULE_primitiveDataModifyingStatement = 74 + GQLParserRULE_insertStatement = 75 + GQLParserRULE_setStatement = 76 + GQLParserRULE_setItemList = 77 + GQLParserRULE_setItem = 78 + GQLParserRULE_setPropertyItem = 79 + GQLParserRULE_setAllPropertiesItem = 80 + GQLParserRULE_setLabelItem = 81 + GQLParserRULE_removeStatement = 82 + GQLParserRULE_removeItemList = 83 + GQLParserRULE_removeItem = 84 + GQLParserRULE_removePropertyItem = 85 + GQLParserRULE_removeLabelItem = 86 + GQLParserRULE_deleteStatement = 87 + GQLParserRULE_deleteItemList = 88 + GQLParserRULE_deleteItem = 89 + GQLParserRULE_callDataModifyingProcedureStatement = 90 + GQLParserRULE_compositeQueryStatement = 91 + GQLParserRULE_compositeQueryExpression = 92 + GQLParserRULE_queryConjunction = 93 + GQLParserRULE_setOperator = 94 + GQLParserRULE_compositeQueryPrimary = 95 + GQLParserRULE_linearQueryStatement = 96 + GQLParserRULE_focusedLinearQueryStatement = 97 + GQLParserRULE_focusedLinearQueryStatementPart = 98 + GQLParserRULE_focusedLinearQueryAndPrimitiveResultStatementPart = 99 + GQLParserRULE_focusedPrimitiveResultStatement = 100 + GQLParserRULE_focusedNestedQuerySpecification = 101 + GQLParserRULE_ambientLinearQueryStatement = 102 + GQLParserRULE_simpleLinearQueryStatement = 103 + GQLParserRULE_simpleQueryStatement = 104 + GQLParserRULE_primitiveQueryStatement = 105 + GQLParserRULE_matchStatement = 106 + GQLParserRULE_simpleMatchStatement = 107 + GQLParserRULE_optionalMatchStatement = 108 + GQLParserRULE_optionalOperand = 109 + GQLParserRULE_matchStatementBlock = 110 + GQLParserRULE_callQueryStatement = 111 + GQLParserRULE_filterStatement = 112 + GQLParserRULE_letStatement = 113 + GQLParserRULE_letVariableDefinitionList = 114 + GQLParserRULE_letVariableDefinition = 115 + GQLParserRULE_forStatement = 116 + GQLParserRULE_forItem = 117 + GQLParserRULE_forItemAlias = 118 + GQLParserRULE_forItemSource = 119 + GQLParserRULE_forOrdinalityOrOffset = 120 + GQLParserRULE_orderByAndPageStatement = 121 + GQLParserRULE_primitiveResultStatement = 122 + GQLParserRULE_returnStatement = 123 + GQLParserRULE_returnStatementBody = 124 + GQLParserRULE_returnItemList = 125 + GQLParserRULE_returnItem = 126 + GQLParserRULE_returnItemAlias = 127 + GQLParserRULE_selectStatement = 128 + GQLParserRULE_selectItemList = 129 + GQLParserRULE_selectItem = 130 + GQLParserRULE_selectItemAlias = 131 + GQLParserRULE_havingClause = 132 + GQLParserRULE_selectStatementBody = 133 + GQLParserRULE_selectGraphMatchList = 134 + GQLParserRULE_selectGraphMatch = 135 + GQLParserRULE_selectQuerySpecification = 136 + GQLParserRULE_callProcedureStatement = 137 + GQLParserRULE_procedureCall = 138 + GQLParserRULE_inlineProcedureCall = 139 + GQLParserRULE_variableScopeClause = 140 + GQLParserRULE_bindingVariableReferenceList = 141 + GQLParserRULE_namedProcedureCall = 142 + GQLParserRULE_procedureArgumentList = 143 + GQLParserRULE_procedureArgument = 144 + GQLParserRULE_atSchemaClause = 145 + GQLParserRULE_useGraphClause = 146 + GQLParserRULE_graphPatternBindingTable = 147 + GQLParserRULE_graphPatternYieldClause = 148 + GQLParserRULE_graphPatternYieldItemList = 149 + GQLParserRULE_graphPatternYieldItem = 150 + GQLParserRULE_graphPattern = 151 + GQLParserRULE_matchMode = 152 + GQLParserRULE_repeatableElementsMatchMode = 153 + GQLParserRULE_differentEdgesMatchMode = 154 + GQLParserRULE_elementBindingsOrElements = 155 + GQLParserRULE_edgeBindingsOrEdges = 156 + GQLParserRULE_pathPatternList = 157 + GQLParserRULE_pathPattern = 158 + GQLParserRULE_pathVariableDeclaration = 159 + GQLParserRULE_keepClause = 160 + GQLParserRULE_graphPatternWhereClause = 161 + GQLParserRULE_insertGraphPattern = 162 + GQLParserRULE_insertPathPatternList = 163 + GQLParserRULE_insertPathPattern = 164 + GQLParserRULE_insertNodePattern = 165 + GQLParserRULE_insertEdgePattern = 166 + GQLParserRULE_insertEdgePointingLeft = 167 + GQLParserRULE_insertEdgePointingRight = 168 + GQLParserRULE_insertEdgeUndirected = 169 + GQLParserRULE_insertElementPatternFiller = 170 + GQLParserRULE_labelAndPropertySetSpecification = 171 + GQLParserRULE_pathPatternPrefix = 172 + GQLParserRULE_pathModePrefix = 173 + GQLParserRULE_pathMode = 174 + GQLParserRULE_pathSearchPrefix = 175 + GQLParserRULE_allPathSearch = 176 + GQLParserRULE_pathOrPaths = 177 + GQLParserRULE_anyPathSearch = 178 + GQLParserRULE_numberOfPaths = 179 + GQLParserRULE_shortestPathSearch = 180 + GQLParserRULE_allShortestPathSearch = 181 + GQLParserRULE_anyShortestPathSearch = 182 + GQLParserRULE_countedShortestPathSearch = 183 + GQLParserRULE_countedShortestGroupSearch = 184 + GQLParserRULE_numberOfGroups = 185 + GQLParserRULE_pathPatternExpression = 186 + GQLParserRULE_pathTerm = 187 + GQLParserRULE_pathFactor = 188 + GQLParserRULE_pathPrimary = 189 + GQLParserRULE_elementPattern = 190 + GQLParserRULE_nodePattern = 191 + GQLParserRULE_elementPatternFiller = 192 + GQLParserRULE_elementVariableDeclaration = 193 + GQLParserRULE_isLabelExpression = 194 + GQLParserRULE_isOrColon = 195 + GQLParserRULE_elementPatternPredicate = 196 + GQLParserRULE_elementPatternWhereClause = 197 + GQLParserRULE_elementPropertySpecification = 198 + GQLParserRULE_propertyKeyValuePairList = 199 + GQLParserRULE_propertyKeyValuePair = 200 + GQLParserRULE_edgePattern = 201 + GQLParserRULE_fullEdgePattern = 202 + GQLParserRULE_fullEdgePointingLeft = 203 + GQLParserRULE_fullEdgeUndirected = 204 + GQLParserRULE_fullEdgePointingRight = 205 + GQLParserRULE_fullEdgeLeftOrUndirected = 206 + GQLParserRULE_fullEdgeUndirectedOrRight = 207 + GQLParserRULE_fullEdgeLeftOrRight = 208 + GQLParserRULE_fullEdgeAnyDirection = 209 + GQLParserRULE_abbreviatedEdgePattern = 210 + GQLParserRULE_parenthesizedPathPatternExpression = 211 + GQLParserRULE_subpathVariableDeclaration = 212 + GQLParserRULE_parenthesizedPathPatternWhereClause = 213 + GQLParserRULE_labelExpression = 214 + GQLParserRULE_pathVariableReference = 215 + GQLParserRULE_elementVariableReference = 216 + GQLParserRULE_graphPatternQuantifier = 217 + GQLParserRULE_fixedQuantifier = 218 + GQLParserRULE_generalQuantifier = 219 + GQLParserRULE_lowerBound = 220 + GQLParserRULE_upperBound = 221 + GQLParserRULE_simplifiedPathPatternExpression = 222 + GQLParserRULE_simplifiedDefaultingLeft = 223 + GQLParserRULE_simplifiedDefaultingUndirected = 224 + GQLParserRULE_simplifiedDefaultingRight = 225 + GQLParserRULE_simplifiedDefaultingLeftOrUndirected = 226 + GQLParserRULE_simplifiedDefaultingUndirectedOrRight = 227 + GQLParserRULE_simplifiedDefaultingLeftOrRight = 228 + GQLParserRULE_simplifiedDefaultingAnyDirection = 229 + GQLParserRULE_simplifiedContents = 230 + GQLParserRULE_simplifiedPathUnion = 231 + GQLParserRULE_simplifiedMultisetAlternation = 232 + GQLParserRULE_simplifiedTerm = 233 + GQLParserRULE_simplifiedFactorLow = 234 + GQLParserRULE_simplifiedFactorHigh = 235 + GQLParserRULE_simplifiedQuantified = 236 + GQLParserRULE_simplifiedQuestioned = 237 + GQLParserRULE_simplifiedTertiary = 238 + GQLParserRULE_simplifiedDirectionOverride = 239 + GQLParserRULE_simplifiedOverrideLeft = 240 + GQLParserRULE_simplifiedOverrideUndirected = 241 + GQLParserRULE_simplifiedOverrideRight = 242 + GQLParserRULE_simplifiedOverrideLeftOrUndirected = 243 + GQLParserRULE_simplifiedOverrideUndirectedOrRight = 244 + GQLParserRULE_simplifiedOverrideLeftOrRight = 245 + GQLParserRULE_simplifiedOverrideAnyDirection = 246 + GQLParserRULE_simplifiedSecondary = 247 + GQLParserRULE_simplifiedNegation = 248 + GQLParserRULE_simplifiedPrimary = 249 + GQLParserRULE_whereClause = 250 + GQLParserRULE_yieldClause = 251 + GQLParserRULE_yieldItemList = 252 + GQLParserRULE_yieldItem = 253 + GQLParserRULE_yieldItemName = 254 + GQLParserRULE_yieldItemAlias = 255 + GQLParserRULE_groupByClause = 256 + GQLParserRULE_groupingElementList = 257 + GQLParserRULE_groupingElement = 258 + GQLParserRULE_emptyGroupingSet = 259 + GQLParserRULE_orderByClause = 260 + GQLParserRULE_sortSpecificationList = 261 + GQLParserRULE_sortSpecification = 262 + GQLParserRULE_sortKey = 263 + GQLParserRULE_orderingSpecification = 264 + GQLParserRULE_nullOrdering = 265 + GQLParserRULE_limitClause = 266 + GQLParserRULE_offsetClause = 267 + GQLParserRULE_offsetSynonym = 268 + GQLParserRULE_schemaReference = 269 + GQLParserRULE_absoluteCatalogSchemaReference = 270 + GQLParserRULE_catalogSchemaParentAndName = 271 + GQLParserRULE_relativeCatalogSchemaReference = 272 + GQLParserRULE_predefinedSchemaReference = 273 + GQLParserRULE_absoluteDirectoryPath = 274 + GQLParserRULE_relativeDirectoryPath = 275 + GQLParserRULE_simpleDirectoryPath = 276 + GQLParserRULE_graphReference = 277 + GQLParserRULE_catalogGraphParentAndName = 278 + GQLParserRULE_homeGraph = 279 + GQLParserRULE_graphTypeReference = 280 + GQLParserRULE_catalogGraphTypeParentAndName = 281 + GQLParserRULE_bindingTableReference = 282 + GQLParserRULE_procedureReference = 283 + GQLParserRULE_catalogProcedureParentAndName = 284 + GQLParserRULE_catalogObjectParentReference = 285 + GQLParserRULE_referenceParameterSpecification = 286 + GQLParserRULE_nestedGraphTypeSpecification = 287 + GQLParserRULE_graphTypeSpecificationBody = 288 + GQLParserRULE_elementTypeList = 289 + GQLParserRULE_elementTypeSpecification = 290 + GQLParserRULE_nodeTypeSpecification = 291 + GQLParserRULE_nodeTypePattern = 292 + GQLParserRULE_nodeTypePhrase = 293 + GQLParserRULE_nodeTypePhraseFiller = 294 + GQLParserRULE_nodeTypeFiller = 295 + GQLParserRULE_localNodeTypeAlias = 296 + GQLParserRULE_nodeTypeImpliedContent = 297 + GQLParserRULE_nodeTypeKeyLabelSet = 298 + GQLParserRULE_nodeTypeLabelSet = 299 + GQLParserRULE_nodeTypePropertyTypes = 300 + GQLParserRULE_edgeTypeSpecification = 301 + GQLParserRULE_edgeTypePattern = 302 + GQLParserRULE_edgeTypePhrase = 303 + GQLParserRULE_edgeTypePhraseFiller = 304 + GQLParserRULE_edgeTypeFiller = 305 + GQLParserRULE_edgeTypeImpliedContent = 306 + GQLParserRULE_edgeTypeKeyLabelSet = 307 + GQLParserRULE_edgeTypeLabelSet = 308 + GQLParserRULE_edgeTypePropertyTypes = 309 + GQLParserRULE_edgeTypePatternDirected = 310 + GQLParserRULE_edgeTypePatternPointingRight = 311 + GQLParserRULE_edgeTypePatternPointingLeft = 312 + GQLParserRULE_edgeTypePatternUndirected = 313 + GQLParserRULE_arcTypePointingRight = 314 + GQLParserRULE_arcTypePointingLeft = 315 + GQLParserRULE_arcTypeUndirected = 316 + GQLParserRULE_sourceNodeTypeReference = 317 + GQLParserRULE_destinationNodeTypeReference = 318 + GQLParserRULE_edgeKind = 319 + GQLParserRULE_endpointPairPhrase = 320 + GQLParserRULE_endpointPair = 321 + GQLParserRULE_endpointPairDirected = 322 + GQLParserRULE_endpointPairPointingRight = 323 + GQLParserRULE_endpointPairPointingLeft = 324 + GQLParserRULE_endpointPairUndirected = 325 + GQLParserRULE_connectorPointingRight = 326 + GQLParserRULE_connectorUndirected = 327 + GQLParserRULE_sourceNodeTypeAlias = 328 + GQLParserRULE_destinationNodeTypeAlias = 329 + GQLParserRULE_labelSetPhrase = 330 + GQLParserRULE_labelSetSpecification = 331 + GQLParserRULE_propertyTypesSpecification = 332 + GQLParserRULE_propertyTypeList = 333 + GQLParserRULE_propertyType = 334 + GQLParserRULE_propertyValueType = 335 + GQLParserRULE_bindingTableType = 336 + GQLParserRULE_valueType = 337 + GQLParserRULE_typed = 338 + GQLParserRULE_predefinedType = 339 + GQLParserRULE_booleanType = 340 + GQLParserRULE_characterStringType = 341 + GQLParserRULE_byteStringType = 342 + GQLParserRULE_minLength = 343 + GQLParserRULE_maxLength = 344 + GQLParserRULE_fixedLength = 345 + GQLParserRULE_numericType = 346 + GQLParserRULE_exactNumericType = 347 + GQLParserRULE_binaryExactNumericType = 348 + GQLParserRULE_signedBinaryExactNumericType = 349 + GQLParserRULE_unsignedBinaryExactNumericType = 350 + GQLParserRULE_verboseBinaryExactNumericType = 351 + GQLParserRULE_decimalExactNumericType = 352 + GQLParserRULE_precision = 353 + GQLParserRULE_scale = 354 + GQLParserRULE_approximateNumericType = 355 + GQLParserRULE_temporalType = 356 + GQLParserRULE_temporalInstantType = 357 + GQLParserRULE_datetimeType = 358 + GQLParserRULE_localdatetimeType = 359 + GQLParserRULE_dateType = 360 + GQLParserRULE_timeType = 361 + GQLParserRULE_localtimeType = 362 + GQLParserRULE_temporalDurationType = 363 + GQLParserRULE_temporalDurationQualifier = 364 + GQLParserRULE_referenceValueType = 365 + GQLParserRULE_immaterialValueType = 366 + GQLParserRULE_nullType = 367 + GQLParserRULE_emptyType = 368 + GQLParserRULE_graphReferenceValueType = 369 + GQLParserRULE_closedGraphReferenceValueType = 370 + GQLParserRULE_openGraphReferenceValueType = 371 + GQLParserRULE_bindingTableReferenceValueType = 372 + GQLParserRULE_nodeReferenceValueType = 373 + GQLParserRULE_closedNodeReferenceValueType = 374 + GQLParserRULE_openNodeReferenceValueType = 375 + GQLParserRULE_edgeReferenceValueType = 376 + GQLParserRULE_closedEdgeReferenceValueType = 377 + GQLParserRULE_openEdgeReferenceValueType = 378 + GQLParserRULE_pathValueType = 379 + GQLParserRULE_listValueTypeName = 380 + GQLParserRULE_listValueTypeNameSynonym = 381 + GQLParserRULE_recordType = 382 + GQLParserRULE_fieldTypesSpecification = 383 + GQLParserRULE_fieldTypeList = 384 + GQLParserRULE_notNull = 385 + GQLParserRULE_fieldType = 386 + GQLParserRULE_searchCondition = 387 + GQLParserRULE_predicate = 388 + GQLParserRULE_compOp = 389 + GQLParserRULE_existsPredicate = 390 + GQLParserRULE_nullPredicate = 391 + GQLParserRULE_nullPredicatePart2 = 392 + GQLParserRULE_valueTypePredicate = 393 + GQLParserRULE_valueTypePredicatePart2 = 394 + GQLParserRULE_normalizedPredicatePart2 = 395 + GQLParserRULE_directedPredicate = 396 + GQLParserRULE_directedPredicatePart2 = 397 + GQLParserRULE_labeledPredicate = 398 + GQLParserRULE_labeledPredicatePart2 = 399 + GQLParserRULE_isLabeledOrColon = 400 + GQLParserRULE_sourceDestinationPredicate = 401 + GQLParserRULE_nodeReference = 402 + GQLParserRULE_sourcePredicatePart2 = 403 + GQLParserRULE_destinationPredicatePart2 = 404 + GQLParserRULE_edgeReference = 405 + GQLParserRULE_all_differentPredicate = 406 + GQLParserRULE_samePredicate = 407 + GQLParserRULE_property_existsPredicate = 408 + GQLParserRULE_valueExpression = 409 + GQLParserRULE_valueFunction = 410 + GQLParserRULE_booleanValueExpression = 411 + GQLParserRULE_characterOrByteStringFunction = 412 + GQLParserRULE_subCharacterOrByteString = 413 + GQLParserRULE_trimSingleCharacterOrByteString = 414 + GQLParserRULE_foldCharacterString = 415 + GQLParserRULE_trimMultiCharacterCharacterString = 416 + GQLParserRULE_normalizeCharacterString = 417 + GQLParserRULE_nodeReferenceValueExpression = 418 + GQLParserRULE_edgeReferenceValueExpression = 419 + GQLParserRULE_aggregatingValueExpression = 420 + GQLParserRULE_valueExpressionPrimary = 421 + GQLParserRULE_parenthesizedValueExpression = 422 + GQLParserRULE_nonParenthesizedValueExpressionPrimary = 423 + GQLParserRULE_nonParenthesizedValueExpressionPrimarySpecialCase = 424 + GQLParserRULE_unsignedValueSpecification = 425 + GQLParserRULE_nonNegativeIntegerSpecification = 426 + GQLParserRULE_generalValueSpecification = 427 + GQLParserRULE_dynamicParameterSpecification = 428 + GQLParserRULE_letValueExpression = 429 + GQLParserRULE_valueQueryExpression = 430 + GQLParserRULE_caseExpression = 431 + GQLParserRULE_caseAbbreviation = 432 + GQLParserRULE_caseSpecification = 433 + GQLParserRULE_simpleCase = 434 + GQLParserRULE_searchedCase = 435 + GQLParserRULE_simpleWhenClause = 436 + GQLParserRULE_searchedWhenClause = 437 + GQLParserRULE_elseClause = 438 + GQLParserRULE_caseOperand = 439 + GQLParserRULE_whenOperandList = 440 + GQLParserRULE_whenOperand = 441 + GQLParserRULE_result = 442 + GQLParserRULE_resultExpression = 443 + GQLParserRULE_castSpecification = 444 + GQLParserRULE_castOperand = 445 + GQLParserRULE_castTarget = 446 + GQLParserRULE_aggregateFunction = 447 + GQLParserRULE_generalSetFunction = 448 + GQLParserRULE_binarySetFunction = 449 + GQLParserRULE_generalSetFunctionType = 450 + GQLParserRULE_setQuantifier = 451 + GQLParserRULE_binarySetFunctionType = 452 + GQLParserRULE_dependentValueExpression = 453 + GQLParserRULE_independentValueExpression = 454 + GQLParserRULE_element_idFunction = 455 + GQLParserRULE_bindingVariableReference = 456 + GQLParserRULE_pathValueExpression = 457 + GQLParserRULE_pathValueConstructor = 458 + GQLParserRULE_pathValueConstructorByEnumeration = 459 + GQLParserRULE_pathElementList = 460 + GQLParserRULE_pathElementListStart = 461 + GQLParserRULE_pathElementListStep = 462 + GQLParserRULE_listValueExpression = 463 + GQLParserRULE_listValueFunction = 464 + GQLParserRULE_trimListFunction = 465 + GQLParserRULE_elementsFunction = 466 + GQLParserRULE_listValueConstructor = 467 + GQLParserRULE_listValueConstructorByEnumeration = 468 + GQLParserRULE_listElementList = 469 + GQLParserRULE_listElement = 470 + GQLParserRULE_recordConstructor = 471 + GQLParserRULE_fieldsSpecification = 472 + GQLParserRULE_fieldList = 473 + GQLParserRULE_field = 474 + GQLParserRULE_truthValue = 475 + GQLParserRULE_numericValueExpression = 476 + GQLParserRULE_numericValueFunction = 477 + GQLParserRULE_lengthExpression = 478 + GQLParserRULE_cardinalityExpression = 479 + GQLParserRULE_cardinalityExpressionArgument = 480 + GQLParserRULE_charLengthExpression = 481 + GQLParserRULE_byteLengthExpression = 482 + GQLParserRULE_pathLengthExpression = 483 + GQLParserRULE_absoluteValueExpression = 484 + GQLParserRULE_modulusExpression = 485 + GQLParserRULE_numericValueExpressionDividend = 486 + GQLParserRULE_numericValueExpressionDivisor = 487 + GQLParserRULE_trigonometricFunction = 488 + GQLParserRULE_trigonometricFunctionName = 489 + GQLParserRULE_generalLogarithmFunction = 490 + GQLParserRULE_generalLogarithmBase = 491 + GQLParserRULE_generalLogarithmArgument = 492 + GQLParserRULE_commonLogarithm = 493 + GQLParserRULE_naturalLogarithm = 494 + GQLParserRULE_exponentialFunction = 495 + GQLParserRULE_powerFunction = 496 + GQLParserRULE_numericValueExpressionBase = 497 + GQLParserRULE_numericValueExpressionExponent = 498 + GQLParserRULE_squareRoot = 499 + GQLParserRULE_floorFunction = 500 + GQLParserRULE_ceilingFunction = 501 + GQLParserRULE_characterStringValueExpression = 502 + GQLParserRULE_byteStringValueExpression = 503 + GQLParserRULE_trimOperands = 504 + GQLParserRULE_trimCharacterOrByteStringSource = 505 + GQLParserRULE_trimSpecification = 506 + GQLParserRULE_trimCharacterOrByteString = 507 + GQLParserRULE_normalForm = 508 + GQLParserRULE_stringLength = 509 + GQLParserRULE_datetimeValueExpression = 510 + GQLParserRULE_datetimeValueFunction = 511 + GQLParserRULE_dateFunction = 512 + GQLParserRULE_timeFunction = 513 + GQLParserRULE_localtimeFunction = 514 + GQLParserRULE_datetimeFunction = 515 + GQLParserRULE_localdatetimeFunction = 516 + GQLParserRULE_dateFunctionParameters = 517 + GQLParserRULE_timeFunctionParameters = 518 + GQLParserRULE_datetimeFunctionParameters = 519 + GQLParserRULE_durationValueExpression = 520 + GQLParserRULE_datetimeSubtraction = 521 + GQLParserRULE_datetimeSubtractionParameters = 522 + GQLParserRULE_datetimeValueExpression1 = 523 + GQLParserRULE_datetimeValueExpression2 = 524 + GQLParserRULE_durationValueFunction = 525 + GQLParserRULE_durationFunction = 526 + GQLParserRULE_durationFunctionParameters = 527 + GQLParserRULE_objectName = 528 + GQLParserRULE_objectNameOrBindingVariable = 529 + GQLParserRULE_directoryName = 530 + GQLParserRULE_schemaName = 531 + GQLParserRULE_graphName = 532 + GQLParserRULE_delimitedGraphName = 533 + GQLParserRULE_graphTypeName = 534 + GQLParserRULE_nodeTypeName = 535 + GQLParserRULE_edgeTypeName = 536 + GQLParserRULE_bindingTableName = 537 + GQLParserRULE_delimitedBindingTableName = 538 + GQLParserRULE_procedureName = 539 + GQLParserRULE_labelName = 540 + GQLParserRULE_propertyName = 541 + GQLParserRULE_fieldName = 542 + GQLParserRULE_elementVariable = 543 + GQLParserRULE_pathVariable = 544 + GQLParserRULE_subpathVariable = 545 + GQLParserRULE_bindingVariable = 546 + GQLParserRULE_unsignedLiteral = 547 + GQLParserRULE_generalLiteral = 548 + GQLParserRULE_temporalLiteral = 549 + GQLParserRULE_dateLiteral = 550 + GQLParserRULE_timeLiteral = 551 + GQLParserRULE_datetimeLiteral = 552 + GQLParserRULE_listLiteral = 553 + GQLParserRULE_recordLiteral = 554 + GQLParserRULE_identifier = 555 + GQLParserRULE_regularIdentifier = 556 + GQLParserRULE_timeZoneString = 557 + GQLParserRULE_characterStringLiteral = 558 + GQLParserRULE_unsignedNumericLiteral = 559 + GQLParserRULE_exactNumericLiteral = 560 + GQLParserRULE_approximateNumericLiteral = 561 + GQLParserRULE_unsignedInteger = 562 + GQLParserRULE_unsignedDecimalInteger = 563 + GQLParserRULE_nullLiteral = 564 + GQLParserRULE_dateString = 565 + GQLParserRULE_timeString = 566 + GQLParserRULE_datetimeString = 567 + GQLParserRULE_durationLiteral = 568 + GQLParserRULE_durationString = 569 + GQLParserRULE_nodeSynonym = 570 + GQLParserRULE_edgesSynonym = 571 + GQLParserRULE_edgeSynonym = 572 + GQLParserRULE_nonReservedWords = 573 +) + +// IGqlProgramContext is an interface to support dynamic dispatch. +type IGqlProgramContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ProgramActivity() IProgramActivityContext + EOF() antlr.TerminalNode + SessionCloseCommand() ISessionCloseCommandContext + + // IsGqlProgramContext differentiates from other interfaces. + IsGqlProgramContext() +} + +type GqlProgramContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGqlProgramContext() *GqlProgramContext { + var p = new(GqlProgramContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_gqlProgram + return p +} + +func InitEmptyGqlProgramContext(p *GqlProgramContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_gqlProgram +} + +func (*GqlProgramContext) IsGqlProgramContext() {} + +func NewGqlProgramContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GqlProgramContext { + var p = new(GqlProgramContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_gqlProgram + + return p +} + +func (s *GqlProgramContext) GetParser() antlr.Parser { return s.parser } + +func (s *GqlProgramContext) ProgramActivity() IProgramActivityContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProgramActivityContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProgramActivityContext) +} + +func (s *GqlProgramContext) EOF() antlr.TerminalNode { + return s.GetToken(GQLParserEOF, 0) +} + +func (s *GqlProgramContext) SessionCloseCommand() ISessionCloseCommandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionCloseCommandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionCloseCommandContext) +} + +func (s *GqlProgramContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GqlProgramContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GqlProgramContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGqlProgram(s) + } +} + +func (s *GqlProgramContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGqlProgram(s) + } +} + +func (p *GQLParser) GqlProgram() (localctx IGqlProgramContext) { + localctx = NewGqlProgramContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, GQLParserRULE_gqlProgram) + var _la int + + p.SetState(1157) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 1, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1148) + p.ProgramActivity() + } + p.SetState(1150) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSESSION { + { + p.SetState(1149) + p.SessionCloseCommand() + } + + } + { + p.SetState(1152) + p.Match(GQLParserEOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1154) + p.SessionCloseCommand() + } + { + p.SetState(1155) + p.Match(GQLParserEOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IProgramActivityContext is an interface to support dynamic dispatch. +type IProgramActivityContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SessionActivity() ISessionActivityContext + TransactionActivity() ITransactionActivityContext + + // IsProgramActivityContext differentiates from other interfaces. + IsProgramActivityContext() +} + +type ProgramActivityContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProgramActivityContext() *ProgramActivityContext { + var p = new(ProgramActivityContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_programActivity + return p +} + +func InitEmptyProgramActivityContext(p *ProgramActivityContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_programActivity +} + +func (*ProgramActivityContext) IsProgramActivityContext() {} + +func NewProgramActivityContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProgramActivityContext { + var p = new(ProgramActivityContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_programActivity + + return p +} + +func (s *ProgramActivityContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProgramActivityContext) SessionActivity() ISessionActivityContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionActivityContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionActivityContext) +} + +func (s *ProgramActivityContext) TransactionActivity() ITransactionActivityContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransactionActivityContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITransactionActivityContext) +} + +func (s *ProgramActivityContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProgramActivityContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProgramActivityContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProgramActivity(s) + } +} + +func (s *ProgramActivityContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProgramActivity(s) + } +} + +func (p *GQLParser) ProgramActivity() (localctx IProgramActivityContext) { + localctx = NewProgramActivityContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 2, GQLParserRULE_programActivity) + p.SetState(1161) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSESSION: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1159) + p.SessionActivity() + } + + case GQLParserAT, GQLParserCALL, GQLParserCOMMIT, GQLParserCREATE, GQLParserDELETE, GQLParserDETACH, GQLParserDROP, GQLParserFILTER, GQLParserFINISH, GQLParserFOR, GQLParserINSERT, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserNODETACH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserREMOVE, GQLParserRETURN, GQLParserROLLBACK, GQLParserSELECT, GQLParserSET, GQLParserSKIP_RESERVED_WORD, GQLParserSTART, GQLParserUSE, GQLParserVALUE, GQLParserBINDING, GQLParserGRAPH, GQLParserPROPERTY, GQLParserTABLE, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1160) + p.TransactionActivity() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISessionActivityContext is an interface to support dynamic dispatch. +type ISessionActivityContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSessionResetCommand() []ISessionResetCommandContext + SessionResetCommand(i int) ISessionResetCommandContext + AllSessionSetCommand() []ISessionSetCommandContext + SessionSetCommand(i int) ISessionSetCommandContext + + // IsSessionActivityContext differentiates from other interfaces. + IsSessionActivityContext() +} + +type SessionActivityContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionActivityContext() *SessionActivityContext { + var p = new(SessionActivityContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionActivity + return p +} + +func InitEmptySessionActivityContext(p *SessionActivityContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionActivity +} + +func (*SessionActivityContext) IsSessionActivityContext() {} + +func NewSessionActivityContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionActivityContext { + var p = new(SessionActivityContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionActivity + + return p +} + +func (s *SessionActivityContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionActivityContext) AllSessionResetCommand() []ISessionResetCommandContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISessionResetCommandContext); ok { + len++ + } + } + + tst := make([]ISessionResetCommandContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISessionResetCommandContext); ok { + tst[i] = t.(ISessionResetCommandContext) + i++ + } + } + + return tst +} + +func (s *SessionActivityContext) SessionResetCommand(i int) ISessionResetCommandContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionResetCommandContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISessionResetCommandContext) +} + +func (s *SessionActivityContext) AllSessionSetCommand() []ISessionSetCommandContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISessionSetCommandContext); ok { + len++ + } + } + + tst := make([]ISessionSetCommandContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISessionSetCommandContext); ok { + tst[i] = t.(ISessionSetCommandContext) + i++ + } + } + + return tst +} + +func (s *SessionActivityContext) SessionSetCommand(i int) ISessionSetCommandContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetCommandContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetCommandContext) +} + +func (s *SessionActivityContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionActivityContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionActivityContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionActivity(s) + } +} + +func (s *SessionActivityContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionActivity(s) + } +} + +func (p *GQLParser) SessionActivity() (localctx ISessionActivityContext) { + localctx = NewSessionActivityContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, GQLParserRULE_sessionActivity) + var _alt int + + p.SetState(1179) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 6, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(1164) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(1163) + p.SessionResetCommand() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(1166) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 3, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + p.SetState(1169) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(1168) + p.SessionSetCommand() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(1171) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 4, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + p.SetState(1176) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1173) + p.SessionResetCommand() + } + + } + p.SetState(1178) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 5, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ITransactionActivityContext is an interface to support dynamic dispatch. +type ITransactionActivityContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + StartTransactionCommand() IStartTransactionCommandContext + ProcedureSpecification() IProcedureSpecificationContext + EndTransactionCommand() IEndTransactionCommandContext + + // IsTransactionActivityContext differentiates from other interfaces. + IsTransactionActivityContext() +} + +type TransactionActivityContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransactionActivityContext() *TransactionActivityContext { + var p = new(TransactionActivityContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionActivity + return p +} + +func InitEmptyTransactionActivityContext(p *TransactionActivityContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionActivity +} + +func (*TransactionActivityContext) IsTransactionActivityContext() {} + +func NewTransactionActivityContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionActivityContext { + var p = new(TransactionActivityContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_transactionActivity + + return p +} + +func (s *TransactionActivityContext) GetParser() antlr.Parser { return s.parser } + +func (s *TransactionActivityContext) StartTransactionCommand() IStartTransactionCommandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStartTransactionCommandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IStartTransactionCommandContext) +} + +func (s *TransactionActivityContext) ProcedureSpecification() IProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureSpecificationContext) +} + +func (s *TransactionActivityContext) EndTransactionCommand() IEndTransactionCommandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndTransactionCommandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndTransactionCommandContext) +} + +func (s *TransactionActivityContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TransactionActivityContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TransactionActivityContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTransactionActivity(s) + } +} + +func (s *TransactionActivityContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTransactionActivity(s) + } +} + +func (p *GQLParser) TransactionActivity() (localctx ITransactionActivityContext) { + localctx = NewTransactionActivityContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 6, GQLParserRULE_transactionActivity) + var _la int + + p.SetState(1193) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSTART: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1181) + p.StartTransactionCommand() + } + p.SetState(1186) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64((_la-31)) & ^0x3f) == 0 && ((int64(1)<<(_la-31))&3461332977278001153) != 0) || ((int64((_la-100)) & ^0x3f) == 0 && ((int64(1)<<(_la-100))&6342202976706233345) != 0) || ((int64((_la-177)) & ^0x3f) == 0 && ((int64(1)<<(_la-177))&351843721159689) != 0) || ((int64((_la-278)) & ^0x3f) == 0 && ((int64(1)<<(_la-278))&34493958145) != 0) || _la == GQLParserLEFT_BRACE { + { + p.SetState(1182) + p.ProcedureSpecification() + } + p.SetState(1184) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMIT || _la == GQLParserROLLBACK { + { + p.SetState(1183) + p.EndTransactionCommand() + } + + } + + } + + case GQLParserAT, GQLParserCALL, GQLParserCREATE, GQLParserDELETE, GQLParserDETACH, GQLParserDROP, GQLParserFILTER, GQLParserFINISH, GQLParserFOR, GQLParserINSERT, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserNODETACH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserREMOVE, GQLParserRETURN, GQLParserSELECT, GQLParserSET, GQLParserSKIP_RESERVED_WORD, GQLParserUSE, GQLParserVALUE, GQLParserBINDING, GQLParserGRAPH, GQLParserPROPERTY, GQLParserTABLE, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1188) + p.ProcedureSpecification() + } + p.SetState(1190) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMIT || _la == GQLParserROLLBACK { + { + p.SetState(1189) + p.EndTransactionCommand() + } + + } + + case GQLParserCOMMIT, GQLParserROLLBACK: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1192) + p.EndTransactionCommand() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IEndTransactionCommandContext is an interface to support dynamic dispatch. +type IEndTransactionCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RollbackCommand() IRollbackCommandContext + CommitCommand() ICommitCommandContext + + // IsEndTransactionCommandContext differentiates from other interfaces. + IsEndTransactionCommandContext() +} + +type EndTransactionCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndTransactionCommandContext() *EndTransactionCommandContext { + var p = new(EndTransactionCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endTransactionCommand + return p +} + +func InitEmptyEndTransactionCommandContext(p *EndTransactionCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endTransactionCommand +} + +func (*EndTransactionCommandContext) IsEndTransactionCommandContext() {} + +func NewEndTransactionCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndTransactionCommandContext { + var p = new(EndTransactionCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endTransactionCommand + + return p +} + +func (s *EndTransactionCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndTransactionCommandContext) RollbackCommand() IRollbackCommandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRollbackCommandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRollbackCommandContext) +} + +func (s *EndTransactionCommandContext) CommitCommand() ICommitCommandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommitCommandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICommitCommandContext) +} + +func (s *EndTransactionCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndTransactionCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndTransactionCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndTransactionCommand(s) + } +} + +func (s *EndTransactionCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndTransactionCommand(s) + } +} + +func (p *GQLParser) EndTransactionCommand() (localctx IEndTransactionCommandContext) { + localctx = NewEndTransactionCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 8, GQLParserRULE_endTransactionCommand) + p.SetState(1197) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserROLLBACK: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1195) + p.RollbackCommand() + } + + case GQLParserCOMMIT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1196) + p.CommitCommand() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISessionSetCommandContext is an interface to support dynamic dispatch. +type ISessionSetCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SESSION() antlr.TerminalNode + SET() antlr.TerminalNode + SessionSetSchemaClause() ISessionSetSchemaClauseContext + SessionSetGraphClause() ISessionSetGraphClauseContext + SessionSetTimeZoneClause() ISessionSetTimeZoneClauseContext + SessionSetParameterClause() ISessionSetParameterClauseContext + + // IsSessionSetCommandContext differentiates from other interfaces. + IsSessionSetCommandContext() +} + +type SessionSetCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetCommandContext() *SessionSetCommandContext { + var p = new(SessionSetCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetCommand + return p +} + +func InitEmptySessionSetCommandContext(p *SessionSetCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetCommand +} + +func (*SessionSetCommandContext) IsSessionSetCommandContext() {} + +func NewSessionSetCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetCommandContext { + var p = new(SessionSetCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetCommand + + return p +} + +func (s *SessionSetCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetCommandContext) SESSION() antlr.TerminalNode { + return s.GetToken(GQLParserSESSION, 0) +} + +func (s *SessionSetCommandContext) SET() antlr.TerminalNode { + return s.GetToken(GQLParserSET, 0) +} + +func (s *SessionSetCommandContext) SessionSetSchemaClause() ISessionSetSchemaClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetSchemaClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetSchemaClauseContext) +} + +func (s *SessionSetCommandContext) SessionSetGraphClause() ISessionSetGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetGraphClauseContext) +} + +func (s *SessionSetCommandContext) SessionSetTimeZoneClause() ISessionSetTimeZoneClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetTimeZoneClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetTimeZoneClauseContext) +} + +func (s *SessionSetCommandContext) SessionSetParameterClause() ISessionSetParameterClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetParameterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetParameterClauseContext) +} + +func (s *SessionSetCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetCommand(s) + } +} + +func (s *SessionSetCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetCommand(s) + } +} + +func (p *GQLParser) SessionSetCommand() (localctx ISessionSetCommandContext) { + localctx = NewSessionSetCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, GQLParserRULE_sessionSetCommand) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1199) + p.Match(GQLParserSESSION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1200) + p.Match(GQLParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1205) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 12, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1201) + p.SessionSetSchemaClause() + } + + case 2: + { + p.SetState(1202) + p.SessionSetGraphClause() + } + + case 3: + { + p.SetState(1203) + p.SessionSetTimeZoneClause() + } + + case 4: + { + p.SetState(1204) + p.SessionSetParameterClause() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISessionSetSchemaClauseContext is an interface to support dynamic dispatch. +type ISessionSetSchemaClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SCHEMA() antlr.TerminalNode + SchemaReference() ISchemaReferenceContext + + // IsSessionSetSchemaClauseContext differentiates from other interfaces. + IsSessionSetSchemaClauseContext() +} + +type SessionSetSchemaClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetSchemaClauseContext() *SessionSetSchemaClauseContext { + var p = new(SessionSetSchemaClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetSchemaClause + return p +} + +func InitEmptySessionSetSchemaClauseContext(p *SessionSetSchemaClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetSchemaClause +} + +func (*SessionSetSchemaClauseContext) IsSessionSetSchemaClauseContext() {} + +func NewSessionSetSchemaClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetSchemaClauseContext { + var p = new(SessionSetSchemaClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetSchemaClause + + return p +} + +func (s *SessionSetSchemaClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetSchemaClauseContext) SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserSCHEMA, 0) +} + +func (s *SessionSetSchemaClauseContext) SchemaReference() ISchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaReferenceContext) +} + +func (s *SessionSetSchemaClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetSchemaClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetSchemaClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetSchemaClause(s) + } +} + +func (s *SessionSetSchemaClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetSchemaClause(s) + } +} + +func (p *GQLParser) SessionSetSchemaClause() (localctx ISessionSetSchemaClauseContext) { + localctx = NewSessionSetSchemaClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, GQLParserRULE_sessionSetSchemaClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1207) + p.Match(GQLParserSCHEMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1208) + p.SchemaReference() + } + +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 +} + +// ISessionSetGraphClauseContext is an interface to support dynamic dispatch. +type ISessionSetGraphClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GRAPH() antlr.TerminalNode + GraphExpression() IGraphExpressionContext + PROPERTY() antlr.TerminalNode + + // IsSessionSetGraphClauseContext differentiates from other interfaces. + IsSessionSetGraphClauseContext() +} + +type SessionSetGraphClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetGraphClauseContext() *SessionSetGraphClauseContext { + var p = new(SessionSetGraphClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetGraphClause + return p +} + +func InitEmptySessionSetGraphClauseContext(p *SessionSetGraphClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetGraphClause +} + +func (*SessionSetGraphClauseContext) IsSessionSetGraphClauseContext() {} + +func NewSessionSetGraphClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetGraphClauseContext { + var p = new(SessionSetGraphClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetGraphClause + + return p +} + +func (s *SessionSetGraphClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetGraphClauseContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *SessionSetGraphClauseContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *SessionSetGraphClauseContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *SessionSetGraphClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetGraphClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetGraphClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetGraphClause(s) + } +} + +func (s *SessionSetGraphClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetGraphClause(s) + } +} + +func (p *GQLParser) SessionSetGraphClause() (localctx ISessionSetGraphClauseContext) { + localctx = NewSessionSetGraphClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 14, GQLParserRULE_sessionSetGraphClause) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1211) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1210) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1213) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1214) + p.GraphExpression() + } + +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 +} + +// ISessionSetTimeZoneClauseContext is an interface to support dynamic dispatch. +type ISessionSetTimeZoneClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TIME() antlr.TerminalNode + ZONE() antlr.TerminalNode + SetTimeZoneValue() ISetTimeZoneValueContext + + // IsSessionSetTimeZoneClauseContext differentiates from other interfaces. + IsSessionSetTimeZoneClauseContext() +} + +type SessionSetTimeZoneClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetTimeZoneClauseContext() *SessionSetTimeZoneClauseContext { + var p = new(SessionSetTimeZoneClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetTimeZoneClause + return p +} + +func InitEmptySessionSetTimeZoneClauseContext(p *SessionSetTimeZoneClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetTimeZoneClause +} + +func (*SessionSetTimeZoneClauseContext) IsSessionSetTimeZoneClauseContext() {} + +func NewSessionSetTimeZoneClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetTimeZoneClauseContext { + var p = new(SessionSetTimeZoneClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetTimeZoneClause + + return p +} + +func (s *SessionSetTimeZoneClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetTimeZoneClauseContext) TIME() antlr.TerminalNode { + return s.GetToken(GQLParserTIME, 0) +} + +func (s *SessionSetTimeZoneClauseContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *SessionSetTimeZoneClauseContext) SetTimeZoneValue() ISetTimeZoneValueContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetTimeZoneValueContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetTimeZoneValueContext) +} + +func (s *SessionSetTimeZoneClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetTimeZoneClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetTimeZoneClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetTimeZoneClause(s) + } +} + +func (s *SessionSetTimeZoneClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetTimeZoneClause(s) + } +} + +func (p *GQLParser) SessionSetTimeZoneClause() (localctx ISessionSetTimeZoneClauseContext) { + localctx = NewSessionSetTimeZoneClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 16, GQLParserRULE_sessionSetTimeZoneClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1216) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1217) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1218) + p.SetTimeZoneValue() + } + +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 +} + +// ISetTimeZoneValueContext is an interface to support dynamic dispatch. +type ISetTimeZoneValueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TimeZoneString() ITimeZoneStringContext + + // IsSetTimeZoneValueContext differentiates from other interfaces. + IsSetTimeZoneValueContext() +} + +type SetTimeZoneValueContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetTimeZoneValueContext() *SetTimeZoneValueContext { + var p = new(SetTimeZoneValueContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setTimeZoneValue + return p +} + +func InitEmptySetTimeZoneValueContext(p *SetTimeZoneValueContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setTimeZoneValue +} + +func (*SetTimeZoneValueContext) IsSetTimeZoneValueContext() {} + +func NewSetTimeZoneValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetTimeZoneValueContext { + var p = new(SetTimeZoneValueContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setTimeZoneValue + + return p +} + +func (s *SetTimeZoneValueContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetTimeZoneValueContext) TimeZoneString() ITimeZoneStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeZoneStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeZoneStringContext) +} + +func (s *SetTimeZoneValueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetTimeZoneValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetTimeZoneValueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetTimeZoneValue(s) + } +} + +func (s *SetTimeZoneValueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetTimeZoneValue(s) + } +} + +func (p *GQLParser) SetTimeZoneValue() (localctx ISetTimeZoneValueContext) { + localctx = NewSetTimeZoneValueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 18, GQLParserRULE_setTimeZoneValue) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1220) + p.TimeZoneString() + } + +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 +} + +// ISessionSetParameterClauseContext is an interface to support dynamic dispatch. +type ISessionSetParameterClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SessionSetGraphParameterClause() ISessionSetGraphParameterClauseContext + SessionSetBindingTableParameterClause() ISessionSetBindingTableParameterClauseContext + SessionSetValueParameterClause() ISessionSetValueParameterClauseContext + + // IsSessionSetParameterClauseContext differentiates from other interfaces. + IsSessionSetParameterClauseContext() +} + +type SessionSetParameterClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetParameterClauseContext() *SessionSetParameterClauseContext { + var p = new(SessionSetParameterClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetParameterClause + return p +} + +func InitEmptySessionSetParameterClauseContext(p *SessionSetParameterClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetParameterClause +} + +func (*SessionSetParameterClauseContext) IsSessionSetParameterClauseContext() {} + +func NewSessionSetParameterClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetParameterClauseContext { + var p = new(SessionSetParameterClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetParameterClause + + return p +} + +func (s *SessionSetParameterClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetParameterClauseContext) SessionSetGraphParameterClause() ISessionSetGraphParameterClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetGraphParameterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetGraphParameterClauseContext) +} + +func (s *SessionSetParameterClauseContext) SessionSetBindingTableParameterClause() ISessionSetBindingTableParameterClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetBindingTableParameterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetBindingTableParameterClauseContext) +} + +func (s *SessionSetParameterClauseContext) SessionSetValueParameterClause() ISessionSetValueParameterClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetValueParameterClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetValueParameterClauseContext) +} + +func (s *SessionSetParameterClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetParameterClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetParameterClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetParameterClause(s) + } +} + +func (s *SessionSetParameterClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetParameterClause(s) + } +} + +func (p *GQLParser) SessionSetParameterClause() (localctx ISessionSetParameterClauseContext) { + localctx = NewSessionSetParameterClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 20, GQLParserRULE_sessionSetParameterClause) + p.SetState(1225) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserGRAPH, GQLParserPROPERTY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1222) + p.SessionSetGraphParameterClause() + } + + case GQLParserBINDING, GQLParserTABLE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1223) + p.SessionSetBindingTableParameterClause() + } + + case GQLParserVALUE: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1224) + p.SessionSetValueParameterClause() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISessionSetGraphParameterClauseContext is an interface to support dynamic dispatch. +type ISessionSetGraphParameterClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GRAPH() antlr.TerminalNode + SessionSetParameterName() ISessionSetParameterNameContext + OptTypedGraphInitializer() IOptTypedGraphInitializerContext + PROPERTY() antlr.TerminalNode + + // IsSessionSetGraphParameterClauseContext differentiates from other interfaces. + IsSessionSetGraphParameterClauseContext() +} + +type SessionSetGraphParameterClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetGraphParameterClauseContext() *SessionSetGraphParameterClauseContext { + var p = new(SessionSetGraphParameterClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetGraphParameterClause + return p +} + +func InitEmptySessionSetGraphParameterClauseContext(p *SessionSetGraphParameterClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetGraphParameterClause +} + +func (*SessionSetGraphParameterClauseContext) IsSessionSetGraphParameterClauseContext() {} + +func NewSessionSetGraphParameterClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetGraphParameterClauseContext { + var p = new(SessionSetGraphParameterClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetGraphParameterClause + + return p +} + +func (s *SessionSetGraphParameterClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetGraphParameterClauseContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *SessionSetGraphParameterClauseContext) SessionSetParameterName() ISessionSetParameterNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetParameterNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetParameterNameContext) +} + +func (s *SessionSetGraphParameterClauseContext) OptTypedGraphInitializer() IOptTypedGraphInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedGraphInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedGraphInitializerContext) +} + +func (s *SessionSetGraphParameterClauseContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *SessionSetGraphParameterClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetGraphParameterClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetGraphParameterClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetGraphParameterClause(s) + } +} + +func (s *SessionSetGraphParameterClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetGraphParameterClause(s) + } +} + +func (p *GQLParser) SessionSetGraphParameterClause() (localctx ISessionSetGraphParameterClauseContext) { + localctx = NewSessionSetGraphParameterClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 22, GQLParserRULE_sessionSetGraphParameterClause) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1228) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1227) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1230) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1231) + p.SessionSetParameterName() + } + { + p.SetState(1232) + p.OptTypedGraphInitializer() + } + +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 +} + +// ISessionSetBindingTableParameterClauseContext is an interface to support dynamic dispatch. +type ISessionSetBindingTableParameterClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TABLE() antlr.TerminalNode + SessionSetParameterName() ISessionSetParameterNameContext + OptTypedBindingTableInitializer() IOptTypedBindingTableInitializerContext + BINDING() antlr.TerminalNode + + // IsSessionSetBindingTableParameterClauseContext differentiates from other interfaces. + IsSessionSetBindingTableParameterClauseContext() +} + +type SessionSetBindingTableParameterClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetBindingTableParameterClauseContext() *SessionSetBindingTableParameterClauseContext { + var p = new(SessionSetBindingTableParameterClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetBindingTableParameterClause + return p +} + +func InitEmptySessionSetBindingTableParameterClauseContext(p *SessionSetBindingTableParameterClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetBindingTableParameterClause +} + +func (*SessionSetBindingTableParameterClauseContext) IsSessionSetBindingTableParameterClauseContext() { +} + +func NewSessionSetBindingTableParameterClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetBindingTableParameterClauseContext { + var p = new(SessionSetBindingTableParameterClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetBindingTableParameterClause + + return p +} + +func (s *SessionSetBindingTableParameterClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetBindingTableParameterClauseContext) TABLE() antlr.TerminalNode { + return s.GetToken(GQLParserTABLE, 0) +} + +func (s *SessionSetBindingTableParameterClauseContext) SessionSetParameterName() ISessionSetParameterNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetParameterNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetParameterNameContext) +} + +func (s *SessionSetBindingTableParameterClauseContext) OptTypedBindingTableInitializer() IOptTypedBindingTableInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedBindingTableInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedBindingTableInitializerContext) +} + +func (s *SessionSetBindingTableParameterClauseContext) BINDING() antlr.TerminalNode { + return s.GetToken(GQLParserBINDING, 0) +} + +func (s *SessionSetBindingTableParameterClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetBindingTableParameterClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetBindingTableParameterClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetBindingTableParameterClause(s) + } +} + +func (s *SessionSetBindingTableParameterClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetBindingTableParameterClause(s) + } +} + +func (p *GQLParser) SessionSetBindingTableParameterClause() (localctx ISessionSetBindingTableParameterClauseContext) { + localctx = NewSessionSetBindingTableParameterClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 24, GQLParserRULE_sessionSetBindingTableParameterClause) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1235) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserBINDING { + { + p.SetState(1234) + p.Match(GQLParserBINDING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1237) + p.Match(GQLParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1238) + p.SessionSetParameterName() + } + { + p.SetState(1239) + p.OptTypedBindingTableInitializer() + } + +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 +} + +// ISessionSetValueParameterClauseContext is an interface to support dynamic dispatch. +type ISessionSetValueParameterClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + VALUE() antlr.TerminalNode + SessionSetParameterName() ISessionSetParameterNameContext + OptTypedValueInitializer() IOptTypedValueInitializerContext + + // IsSessionSetValueParameterClauseContext differentiates from other interfaces. + IsSessionSetValueParameterClauseContext() +} + +type SessionSetValueParameterClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetValueParameterClauseContext() *SessionSetValueParameterClauseContext { + var p = new(SessionSetValueParameterClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetValueParameterClause + return p +} + +func InitEmptySessionSetValueParameterClauseContext(p *SessionSetValueParameterClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetValueParameterClause +} + +func (*SessionSetValueParameterClauseContext) IsSessionSetValueParameterClauseContext() {} + +func NewSessionSetValueParameterClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetValueParameterClauseContext { + var p = new(SessionSetValueParameterClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetValueParameterClause + + return p +} + +func (s *SessionSetValueParameterClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetValueParameterClauseContext) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *SessionSetValueParameterClauseContext) SessionSetParameterName() ISessionSetParameterNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionSetParameterNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionSetParameterNameContext) +} + +func (s *SessionSetValueParameterClauseContext) OptTypedValueInitializer() IOptTypedValueInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedValueInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedValueInitializerContext) +} + +func (s *SessionSetValueParameterClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetValueParameterClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetValueParameterClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetValueParameterClause(s) + } +} + +func (s *SessionSetValueParameterClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetValueParameterClause(s) + } +} + +func (p *GQLParser) SessionSetValueParameterClause() (localctx ISessionSetValueParameterClauseContext) { + localctx = NewSessionSetValueParameterClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 26, GQLParserRULE_sessionSetValueParameterClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1241) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1242) + p.SessionSetParameterName() + } + { + p.SetState(1243) + p.OptTypedValueInitializer() + } + +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 +} + +// ISessionSetParameterNameContext is an interface to support dynamic dispatch. +type ISessionSetParameterNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SessionParameterSpecification() ISessionParameterSpecificationContext + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsSessionSetParameterNameContext differentiates from other interfaces. + IsSessionSetParameterNameContext() +} + +type SessionSetParameterNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionSetParameterNameContext() *SessionSetParameterNameContext { + var p = new(SessionSetParameterNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetParameterName + return p +} + +func InitEmptySessionSetParameterNameContext(p *SessionSetParameterNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionSetParameterName +} + +func (*SessionSetParameterNameContext) IsSessionSetParameterNameContext() {} + +func NewSessionSetParameterNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionSetParameterNameContext { + var p = new(SessionSetParameterNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionSetParameterName + + return p +} + +func (s *SessionSetParameterNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionSetParameterNameContext) SessionParameterSpecification() ISessionParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionParameterSpecificationContext) +} + +func (s *SessionSetParameterNameContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *SessionSetParameterNameContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *SessionSetParameterNameContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *SessionSetParameterNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionSetParameterNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionSetParameterNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionSetParameterName(s) + } +} + +func (s *SessionSetParameterNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionSetParameterName(s) + } +} + +func (p *GQLParser) SessionSetParameterName() (localctx ISessionSetParameterNameContext) { + localctx = NewSessionSetParameterNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 28, GQLParserRULE_sessionSetParameterName) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1248) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1245) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1246) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1247) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1250) + p.SessionParameterSpecification() + } + +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 +} + +// ISessionResetCommandContext is an interface to support dynamic dispatch. +type ISessionResetCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SESSION() antlr.TerminalNode + RESET() antlr.TerminalNode + SessionResetArguments() ISessionResetArgumentsContext + + // IsSessionResetCommandContext differentiates from other interfaces. + IsSessionResetCommandContext() +} + +type SessionResetCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionResetCommandContext() *SessionResetCommandContext { + var p = new(SessionResetCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionResetCommand + return p +} + +func InitEmptySessionResetCommandContext(p *SessionResetCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionResetCommand +} + +func (*SessionResetCommandContext) IsSessionResetCommandContext() {} + +func NewSessionResetCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionResetCommandContext { + var p = new(SessionResetCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionResetCommand + + return p +} + +func (s *SessionResetCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionResetCommandContext) SESSION() antlr.TerminalNode { + return s.GetToken(GQLParserSESSION, 0) +} + +func (s *SessionResetCommandContext) RESET() antlr.TerminalNode { + return s.GetToken(GQLParserRESET, 0) +} + +func (s *SessionResetCommandContext) SessionResetArguments() ISessionResetArgumentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionResetArgumentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionResetArgumentsContext) +} + +func (s *SessionResetCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionResetCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionResetCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionResetCommand(s) + } +} + +func (s *SessionResetCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionResetCommand(s) + } +} + +func (p *GQLParser) SessionResetCommand() (localctx ISessionResetCommandContext) { + localctx = NewSessionResetCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 30, GQLParserRULE_sessionResetCommand) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1252) + p.Match(GQLParserSESSION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1253) + p.Match(GQLParserRESET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1255) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserCHARACTERISTICS || ((int64((_la-164)) & ^0x3f) == 0 && ((int64(1)<<(_la-164))&8796095119363) != 0) || ((int64((_la-289)) & ^0x3f) == 0 && ((int64(1)<<(_la-289))&137439019009) != 0) { + { + p.SetState(1254) + p.SessionResetArguments() + } + + } + +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 +} + +// ISessionResetArgumentsContext is an interface to support dynamic dispatch. +type ISessionResetArgumentsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PARAMETERS() antlr.TerminalNode + CHARACTERISTICS() antlr.TerminalNode + ALL() antlr.TerminalNode + SCHEMA() antlr.TerminalNode + GRAPH() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + TIME() antlr.TerminalNode + ZONE() antlr.TerminalNode + SessionParameterSpecification() ISessionParameterSpecificationContext + PARAMETER() antlr.TerminalNode + + // IsSessionResetArgumentsContext differentiates from other interfaces. + IsSessionResetArgumentsContext() +} + +type SessionResetArgumentsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionResetArgumentsContext() *SessionResetArgumentsContext { + var p = new(SessionResetArgumentsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionResetArguments + return p +} + +func InitEmptySessionResetArgumentsContext(p *SessionResetArgumentsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionResetArguments +} + +func (*SessionResetArgumentsContext) IsSessionResetArgumentsContext() {} + +func NewSessionResetArgumentsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionResetArgumentsContext { + var p = new(SessionResetArgumentsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionResetArguments + + return p +} + +func (s *SessionResetArgumentsContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionResetArgumentsContext) PARAMETERS() antlr.TerminalNode { + return s.GetToken(GQLParserPARAMETERS, 0) +} + +func (s *SessionResetArgumentsContext) CHARACTERISTICS() antlr.TerminalNode { + return s.GetToken(GQLParserCHARACTERISTICS, 0) +} + +func (s *SessionResetArgumentsContext) ALL() antlr.TerminalNode { + return s.GetToken(GQLParserALL, 0) +} + +func (s *SessionResetArgumentsContext) SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserSCHEMA, 0) +} + +func (s *SessionResetArgumentsContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *SessionResetArgumentsContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *SessionResetArgumentsContext) TIME() antlr.TerminalNode { + return s.GetToken(GQLParserTIME, 0) +} + +func (s *SessionResetArgumentsContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *SessionResetArgumentsContext) SessionParameterSpecification() ISessionParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISessionParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISessionParameterSpecificationContext) +} + +func (s *SessionResetArgumentsContext) PARAMETER() antlr.TerminalNode { + return s.GetToken(GQLParserPARAMETER, 0) +} + +func (s *SessionResetArgumentsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionResetArgumentsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionResetArgumentsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionResetArguments(s) + } +} + +func (s *SessionResetArgumentsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionResetArguments(s) + } +} + +func (p *GQLParser) SessionResetArguments() (localctx ISessionResetArgumentsContext) { + localctx = NewSessionResetArgumentsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 32, GQLParserRULE_sessionResetArguments) + var _la int + + p.SetState(1272) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserALL, GQLParserCHARACTERISTICS, GQLParserPARAMETERS: + p.EnterOuterAlt(localctx, 1) + p.SetState(1258) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL { + { + p.SetState(1257) + p.Match(GQLParserALL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1260) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserCHARACTERISTICS || _la == GQLParserPARAMETERS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + case GQLParserSCHEMA: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1261) + p.Match(GQLParserSCHEMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserGRAPH, GQLParserPROPERTY: + p.EnterOuterAlt(localctx, 3) + p.SetState(1263) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1262) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1265) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserTIME: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1266) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1267) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserPARAMETER, GQLParserGENERAL_PARAMETER_REFERENCE: + p.EnterOuterAlt(localctx, 5) + p.SetState(1269) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPARAMETER { + { + p.SetState(1268) + p.Match(GQLParserPARAMETER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1271) + p.SessionParameterSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISessionCloseCommandContext is an interface to support dynamic dispatch. +type ISessionCloseCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SESSION() antlr.TerminalNode + CLOSE() antlr.TerminalNode + + // IsSessionCloseCommandContext differentiates from other interfaces. + IsSessionCloseCommandContext() +} + +type SessionCloseCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionCloseCommandContext() *SessionCloseCommandContext { + var p = new(SessionCloseCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionCloseCommand + return p +} + +func InitEmptySessionCloseCommandContext(p *SessionCloseCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionCloseCommand +} + +func (*SessionCloseCommandContext) IsSessionCloseCommandContext() {} + +func NewSessionCloseCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionCloseCommandContext { + var p = new(SessionCloseCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionCloseCommand + + return p +} + +func (s *SessionCloseCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionCloseCommandContext) SESSION() antlr.TerminalNode { + return s.GetToken(GQLParserSESSION, 0) +} + +func (s *SessionCloseCommandContext) CLOSE() antlr.TerminalNode { + return s.GetToken(GQLParserCLOSE, 0) +} + +func (s *SessionCloseCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionCloseCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionCloseCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionCloseCommand(s) + } +} + +func (s *SessionCloseCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionCloseCommand(s) + } +} + +func (p *GQLParser) SessionCloseCommand() (localctx ISessionCloseCommandContext) { + localctx = NewSessionCloseCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 34, GQLParserRULE_sessionCloseCommand) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1274) + p.Match(GQLParserSESSION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1275) + p.Match(GQLParserCLOSE) + 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 +} + +// ISessionParameterSpecificationContext is an interface to support dynamic dispatch. +type ISessionParameterSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GENERAL_PARAMETER_REFERENCE() antlr.TerminalNode + + // IsSessionParameterSpecificationContext differentiates from other interfaces. + IsSessionParameterSpecificationContext() +} + +type SessionParameterSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySessionParameterSpecificationContext() *SessionParameterSpecificationContext { + var p = new(SessionParameterSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionParameterSpecification + return p +} + +func InitEmptySessionParameterSpecificationContext(p *SessionParameterSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sessionParameterSpecification +} + +func (*SessionParameterSpecificationContext) IsSessionParameterSpecificationContext() {} + +func NewSessionParameterSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SessionParameterSpecificationContext { + var p = new(SessionParameterSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sessionParameterSpecification + + return p +} + +func (s *SessionParameterSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SessionParameterSpecificationContext) GENERAL_PARAMETER_REFERENCE() antlr.TerminalNode { + return s.GetToken(GQLParserGENERAL_PARAMETER_REFERENCE, 0) +} + +func (s *SessionParameterSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SessionParameterSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SessionParameterSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSessionParameterSpecification(s) + } +} + +func (s *SessionParameterSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSessionParameterSpecification(s) + } +} + +func (p *GQLParser) SessionParameterSpecification() (localctx ISessionParameterSpecificationContext) { + localctx = NewSessionParameterSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 36, GQLParserRULE_sessionParameterSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1277) + p.Match(GQLParserGENERAL_PARAMETER_REFERENCE) + 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 +} + +// IStartTransactionCommandContext is an interface to support dynamic dispatch. +type IStartTransactionCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + START() antlr.TerminalNode + TRANSACTION() antlr.TerminalNode + TransactionCharacteristics() ITransactionCharacteristicsContext + + // IsStartTransactionCommandContext differentiates from other interfaces. + IsStartTransactionCommandContext() +} + +type StartTransactionCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyStartTransactionCommandContext() *StartTransactionCommandContext { + var p = new(StartTransactionCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_startTransactionCommand + return p +} + +func InitEmptyStartTransactionCommandContext(p *StartTransactionCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_startTransactionCommand +} + +func (*StartTransactionCommandContext) IsStartTransactionCommandContext() {} + +func NewStartTransactionCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StartTransactionCommandContext { + var p = new(StartTransactionCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_startTransactionCommand + + return p +} + +func (s *StartTransactionCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *StartTransactionCommandContext) START() antlr.TerminalNode { + return s.GetToken(GQLParserSTART, 0) +} + +func (s *StartTransactionCommandContext) TRANSACTION() antlr.TerminalNode { + return s.GetToken(GQLParserTRANSACTION, 0) +} + +func (s *StartTransactionCommandContext) TransactionCharacteristics() ITransactionCharacteristicsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransactionCharacteristicsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITransactionCharacteristicsContext) +} + +func (s *StartTransactionCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *StartTransactionCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *StartTransactionCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterStartTransactionCommand(s) + } +} + +func (s *StartTransactionCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitStartTransactionCommand(s) + } +} + +func (p *GQLParser) StartTransactionCommand() (localctx IStartTransactionCommandContext) { + localctx = NewStartTransactionCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 38, GQLParserRULE_startTransactionCommand) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1279) + p.Match(GQLParserSTART) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1280) + p.Match(GQLParserTRANSACTION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1282) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserREAD { + { + p.SetState(1281) + p.TransactionCharacteristics() + } + + } + +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 +} + +// ITransactionCharacteristicsContext is an interface to support dynamic dispatch. +type ITransactionCharacteristicsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllTransactionMode() []ITransactionModeContext + TransactionMode(i int) ITransactionModeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsTransactionCharacteristicsContext differentiates from other interfaces. + IsTransactionCharacteristicsContext() +} + +type TransactionCharacteristicsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransactionCharacteristicsContext() *TransactionCharacteristicsContext { + var p = new(TransactionCharacteristicsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionCharacteristics + return p +} + +func InitEmptyTransactionCharacteristicsContext(p *TransactionCharacteristicsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionCharacteristics +} + +func (*TransactionCharacteristicsContext) IsTransactionCharacteristicsContext() {} + +func NewTransactionCharacteristicsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionCharacteristicsContext { + var p = new(TransactionCharacteristicsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_transactionCharacteristics + + return p +} + +func (s *TransactionCharacteristicsContext) GetParser() antlr.Parser { return s.parser } + +func (s *TransactionCharacteristicsContext) AllTransactionMode() []ITransactionModeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITransactionModeContext); ok { + len++ + } + } + + tst := make([]ITransactionModeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITransactionModeContext); ok { + tst[i] = t.(ITransactionModeContext) + i++ + } + } + + return tst +} + +func (s *TransactionCharacteristicsContext) TransactionMode(i int) ITransactionModeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransactionModeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITransactionModeContext) +} + +func (s *TransactionCharacteristicsContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *TransactionCharacteristicsContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *TransactionCharacteristicsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TransactionCharacteristicsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TransactionCharacteristicsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTransactionCharacteristics(s) + } +} + +func (s *TransactionCharacteristicsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTransactionCharacteristics(s) + } +} + +func (p *GQLParser) TransactionCharacteristics() (localctx ITransactionCharacteristicsContext) { + localctx = NewTransactionCharacteristicsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 40, GQLParserRULE_transactionCharacteristics) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1284) + p.TransactionMode() + } + p.SetState(1289) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(1285) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1286) + p.TransactionMode() + } + + p.SetState(1291) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ITransactionModeContext is an interface to support dynamic dispatch. +type ITransactionModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TransactionAccessMode() ITransactionAccessModeContext + + // IsTransactionModeContext differentiates from other interfaces. + IsTransactionModeContext() +} + +type TransactionModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransactionModeContext() *TransactionModeContext { + var p = new(TransactionModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionMode + return p +} + +func InitEmptyTransactionModeContext(p *TransactionModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionMode +} + +func (*TransactionModeContext) IsTransactionModeContext() {} + +func NewTransactionModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionModeContext { + var p = new(TransactionModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_transactionMode + + return p +} + +func (s *TransactionModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TransactionModeContext) TransactionAccessMode() ITransactionAccessModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransactionAccessModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITransactionAccessModeContext) +} + +func (s *TransactionModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TransactionModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TransactionModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTransactionMode(s) + } +} + +func (s *TransactionModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTransactionMode(s) + } +} + +func (p *GQLParser) TransactionMode() (localctx ITransactionModeContext) { + localctx = NewTransactionModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 42, GQLParserRULE_transactionMode) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1292) + p.TransactionAccessMode() + } + +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 +} + +// ITransactionAccessModeContext is an interface to support dynamic dispatch. +type ITransactionAccessModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + READ() antlr.TerminalNode + ONLY() antlr.TerminalNode + WRITE() antlr.TerminalNode + + // IsTransactionAccessModeContext differentiates from other interfaces. + IsTransactionAccessModeContext() +} + +type TransactionAccessModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransactionAccessModeContext() *TransactionAccessModeContext { + var p = new(TransactionAccessModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionAccessMode + return p +} + +func InitEmptyTransactionAccessModeContext(p *TransactionAccessModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_transactionAccessMode +} + +func (*TransactionAccessModeContext) IsTransactionAccessModeContext() {} + +func NewTransactionAccessModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TransactionAccessModeContext { + var p = new(TransactionAccessModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_transactionAccessMode + + return p +} + +func (s *TransactionAccessModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TransactionAccessModeContext) READ() antlr.TerminalNode { + return s.GetToken(GQLParserREAD, 0) +} + +func (s *TransactionAccessModeContext) ONLY() antlr.TerminalNode { + return s.GetToken(GQLParserONLY, 0) +} + +func (s *TransactionAccessModeContext) WRITE() antlr.TerminalNode { + return s.GetToken(GQLParserWRITE, 0) +} + +func (s *TransactionAccessModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TransactionAccessModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TransactionAccessModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTransactionAccessMode(s) + } +} + +func (s *TransactionAccessModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTransactionAccessMode(s) + } +} + +func (p *GQLParser) TransactionAccessMode() (localctx ITransactionAccessModeContext) { + localctx = NewTransactionAccessModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 44, GQLParserRULE_transactionAccessMode) + p.SetState(1298) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 25, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1294) + p.Match(GQLParserREAD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1295) + p.Match(GQLParserONLY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1296) + p.Match(GQLParserREAD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1297) + p.Match(GQLParserWRITE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IRollbackCommandContext is an interface to support dynamic dispatch. +type IRollbackCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ROLLBACK() antlr.TerminalNode + + // IsRollbackCommandContext differentiates from other interfaces. + IsRollbackCommandContext() +} + +type RollbackCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRollbackCommandContext() *RollbackCommandContext { + var p = new(RollbackCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_rollbackCommand + return p +} + +func InitEmptyRollbackCommandContext(p *RollbackCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_rollbackCommand +} + +func (*RollbackCommandContext) IsRollbackCommandContext() {} + +func NewRollbackCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RollbackCommandContext { + var p = new(RollbackCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_rollbackCommand + + return p +} + +func (s *RollbackCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *RollbackCommandContext) ROLLBACK() antlr.TerminalNode { + return s.GetToken(GQLParserROLLBACK, 0) +} + +func (s *RollbackCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RollbackCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RollbackCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRollbackCommand(s) + } +} + +func (s *RollbackCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRollbackCommand(s) + } +} + +func (p *GQLParser) RollbackCommand() (localctx IRollbackCommandContext) { + localctx = NewRollbackCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 46, GQLParserRULE_rollbackCommand) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1300) + p.Match(GQLParserROLLBACK) + 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 +} + +// ICommitCommandContext is an interface to support dynamic dispatch. +type ICommitCommandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + COMMIT() antlr.TerminalNode + + // IsCommitCommandContext differentiates from other interfaces. + IsCommitCommandContext() +} + +type CommitCommandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommitCommandContext() *CommitCommandContext { + var p = new(CommitCommandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_commitCommand + return p +} + +func InitEmptyCommitCommandContext(p *CommitCommandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_commitCommand +} + +func (*CommitCommandContext) IsCommitCommandContext() {} + +func NewCommitCommandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CommitCommandContext { + var p = new(CommitCommandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_commitCommand + + return p +} + +func (s *CommitCommandContext) GetParser() antlr.Parser { return s.parser } + +func (s *CommitCommandContext) COMMIT() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMIT, 0) +} + +func (s *CommitCommandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CommitCommandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CommitCommandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCommitCommand(s) + } +} + +func (s *CommitCommandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCommitCommand(s) + } +} + +func (p *GQLParser) CommitCommand() (localctx ICommitCommandContext) { + localctx = NewCommitCommandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 48, GQLParserRULE_commitCommand) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1302) + p.Match(GQLParserCOMMIT) + 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 +} + +// INestedProcedureSpecificationContext is an interface to support dynamic dispatch. +type INestedProcedureSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + ProcedureSpecification() IProcedureSpecificationContext + RIGHT_BRACE() antlr.TerminalNode + + // IsNestedProcedureSpecificationContext differentiates from other interfaces. + IsNestedProcedureSpecificationContext() +} + +type NestedProcedureSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNestedProcedureSpecificationContext() *NestedProcedureSpecificationContext { + var p = new(NestedProcedureSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedProcedureSpecification + return p +} + +func InitEmptyNestedProcedureSpecificationContext(p *NestedProcedureSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedProcedureSpecification +} + +func (*NestedProcedureSpecificationContext) IsNestedProcedureSpecificationContext() {} + +func NewNestedProcedureSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NestedProcedureSpecificationContext { + var p = new(NestedProcedureSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nestedProcedureSpecification + + return p +} + +func (s *NestedProcedureSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NestedProcedureSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *NestedProcedureSpecificationContext) ProcedureSpecification() IProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureSpecificationContext) +} + +func (s *NestedProcedureSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *NestedProcedureSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NestedProcedureSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NestedProcedureSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNestedProcedureSpecification(s) + } +} + +func (s *NestedProcedureSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNestedProcedureSpecification(s) + } +} + +func (p *GQLParser) NestedProcedureSpecification() (localctx INestedProcedureSpecificationContext) { + localctx = NewNestedProcedureSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 50, GQLParserRULE_nestedProcedureSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1304) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1305) + p.ProcedureSpecification() + } + { + p.SetState(1306) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IProcedureSpecificationContext is an interface to support dynamic dispatch. +type IProcedureSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ProcedureBody() IProcedureBodyContext + + // IsProcedureSpecificationContext differentiates from other interfaces. + IsProcedureSpecificationContext() +} + +type ProcedureSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureSpecificationContext() *ProcedureSpecificationContext { + var p = new(ProcedureSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureSpecification + return p +} + +func InitEmptyProcedureSpecificationContext(p *ProcedureSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureSpecification +} + +func (*ProcedureSpecificationContext) IsProcedureSpecificationContext() {} + +func NewProcedureSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureSpecificationContext { + var p = new(ProcedureSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureSpecification + + return p +} + +func (s *ProcedureSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureSpecificationContext) ProcedureBody() IProcedureBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureBodyContext) +} + +func (s *ProcedureSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureSpecification(s) + } +} + +func (s *ProcedureSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureSpecification(s) + } +} + +func (p *GQLParser) ProcedureSpecification() (localctx IProcedureSpecificationContext) { + localctx = NewProcedureSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 52, GQLParserRULE_procedureSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1308) + p.ProcedureBody() + } + +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 +} + +// INestedDataModifyingProcedureSpecificationContext is an interface to support dynamic dispatch. +type INestedDataModifyingProcedureSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + ProcedureBody() IProcedureBodyContext + RIGHT_BRACE() antlr.TerminalNode + + // IsNestedDataModifyingProcedureSpecificationContext differentiates from other interfaces. + IsNestedDataModifyingProcedureSpecificationContext() +} + +type NestedDataModifyingProcedureSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNestedDataModifyingProcedureSpecificationContext() *NestedDataModifyingProcedureSpecificationContext { + var p = new(NestedDataModifyingProcedureSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedDataModifyingProcedureSpecification + return p +} + +func InitEmptyNestedDataModifyingProcedureSpecificationContext(p *NestedDataModifyingProcedureSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedDataModifyingProcedureSpecification +} + +func (*NestedDataModifyingProcedureSpecificationContext) IsNestedDataModifyingProcedureSpecificationContext() { +} + +func NewNestedDataModifyingProcedureSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NestedDataModifyingProcedureSpecificationContext { + var p = new(NestedDataModifyingProcedureSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nestedDataModifyingProcedureSpecification + + return p +} + +func (s *NestedDataModifyingProcedureSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NestedDataModifyingProcedureSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *NestedDataModifyingProcedureSpecificationContext) ProcedureBody() IProcedureBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureBodyContext) +} + +func (s *NestedDataModifyingProcedureSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *NestedDataModifyingProcedureSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NestedDataModifyingProcedureSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NestedDataModifyingProcedureSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNestedDataModifyingProcedureSpecification(s) + } +} + +func (s *NestedDataModifyingProcedureSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNestedDataModifyingProcedureSpecification(s) + } +} + +func (p *GQLParser) NestedDataModifyingProcedureSpecification() (localctx INestedDataModifyingProcedureSpecificationContext) { + localctx = NewNestedDataModifyingProcedureSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 54, GQLParserRULE_nestedDataModifyingProcedureSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1310) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1311) + p.ProcedureBody() + } + { + p.SetState(1312) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// INestedQuerySpecificationContext is an interface to support dynamic dispatch. +type INestedQuerySpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + ProcedureBody() IProcedureBodyContext + RIGHT_BRACE() antlr.TerminalNode + + // IsNestedQuerySpecificationContext differentiates from other interfaces. + IsNestedQuerySpecificationContext() +} + +type NestedQuerySpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNestedQuerySpecificationContext() *NestedQuerySpecificationContext { + var p = new(NestedQuerySpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedQuerySpecification + return p +} + +func InitEmptyNestedQuerySpecificationContext(p *NestedQuerySpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedQuerySpecification +} + +func (*NestedQuerySpecificationContext) IsNestedQuerySpecificationContext() {} + +func NewNestedQuerySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NestedQuerySpecificationContext { + var p = new(NestedQuerySpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nestedQuerySpecification + + return p +} + +func (s *NestedQuerySpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NestedQuerySpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *NestedQuerySpecificationContext) ProcedureBody() IProcedureBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureBodyContext) +} + +func (s *NestedQuerySpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *NestedQuerySpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NestedQuerySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NestedQuerySpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNestedQuerySpecification(s) + } +} + +func (s *NestedQuerySpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNestedQuerySpecification(s) + } +} + +func (p *GQLParser) NestedQuerySpecification() (localctx INestedQuerySpecificationContext) { + localctx = NewNestedQuerySpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 56, GQLParserRULE_nestedQuerySpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1314) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1315) + p.ProcedureBody() + } + { + p.SetState(1316) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IProcedureBodyContext is an interface to support dynamic dispatch. +type IProcedureBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + StatementBlock() IStatementBlockContext + AtSchemaClause() IAtSchemaClauseContext + BindingVariableDefinitionBlock() IBindingVariableDefinitionBlockContext + + // IsProcedureBodyContext differentiates from other interfaces. + IsProcedureBodyContext() +} + +type ProcedureBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureBodyContext() *ProcedureBodyContext { + var p = new(ProcedureBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureBody + return p +} + +func InitEmptyProcedureBodyContext(p *ProcedureBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureBody +} + +func (*ProcedureBodyContext) IsProcedureBodyContext() {} + +func NewProcedureBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureBodyContext { + var p = new(ProcedureBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureBody + + return p +} + +func (s *ProcedureBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureBodyContext) StatementBlock() IStatementBlockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStatementBlockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IStatementBlockContext) +} + +func (s *ProcedureBodyContext) AtSchemaClause() IAtSchemaClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAtSchemaClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAtSchemaClauseContext) +} + +func (s *ProcedureBodyContext) BindingVariableDefinitionBlock() IBindingVariableDefinitionBlockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableDefinitionBlockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableDefinitionBlockContext) +} + +func (s *ProcedureBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureBody(s) + } +} + +func (s *ProcedureBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureBody(s) + } +} + +func (p *GQLParser) ProcedureBody() (localctx IProcedureBodyContext) { + localctx = NewProcedureBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 58, GQLParserRULE_procedureBody) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1319) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserAT { + { + p.SetState(1318) + p.AtSchemaClause() + } + + } + p.SetState(1322) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserVALUE || _la == GQLParserBINDING || ((int64((_la-289)) & ^0x3f) == 0 && ((int64(1)<<(_la-289))&16842753) != 0) { + { + p.SetState(1321) + p.BindingVariableDefinitionBlock() + } + + } + { + p.SetState(1324) + p.StatementBlock() + } + +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 +} + +// IBindingVariableDefinitionBlockContext is an interface to support dynamic dispatch. +type IBindingVariableDefinitionBlockContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllBindingVariableDefinition() []IBindingVariableDefinitionContext + BindingVariableDefinition(i int) IBindingVariableDefinitionContext + + // IsBindingVariableDefinitionBlockContext differentiates from other interfaces. + IsBindingVariableDefinitionBlockContext() +} + +type BindingVariableDefinitionBlockContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingVariableDefinitionBlockContext() *BindingVariableDefinitionBlockContext { + var p = new(BindingVariableDefinitionBlockContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableDefinitionBlock + return p +} + +func InitEmptyBindingVariableDefinitionBlockContext(p *BindingVariableDefinitionBlockContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableDefinitionBlock +} + +func (*BindingVariableDefinitionBlockContext) IsBindingVariableDefinitionBlockContext() {} + +func NewBindingVariableDefinitionBlockContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingVariableDefinitionBlockContext { + var p = new(BindingVariableDefinitionBlockContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingVariableDefinitionBlock + + return p +} + +func (s *BindingVariableDefinitionBlockContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingVariableDefinitionBlockContext) AllBindingVariableDefinition() []IBindingVariableDefinitionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IBindingVariableDefinitionContext); ok { + len++ + } + } + + tst := make([]IBindingVariableDefinitionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IBindingVariableDefinitionContext); ok { + tst[i] = t.(IBindingVariableDefinitionContext) + i++ + } + } + + return tst +} + +func (s *BindingVariableDefinitionBlockContext) BindingVariableDefinition(i int) IBindingVariableDefinitionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableDefinitionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableDefinitionContext) +} + +func (s *BindingVariableDefinitionBlockContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingVariableDefinitionBlockContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingVariableDefinitionBlockContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingVariableDefinitionBlock(s) + } +} + +func (s *BindingVariableDefinitionBlockContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingVariableDefinitionBlock(s) + } +} + +func (p *GQLParser) BindingVariableDefinitionBlock() (localctx IBindingVariableDefinitionBlockContext) { + localctx = NewBindingVariableDefinitionBlockContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 60, GQLParserRULE_bindingVariableDefinitionBlock) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1327) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserVALUE || _la == GQLParserBINDING || ((int64((_la-289)) & ^0x3f) == 0 && ((int64(1)<<(_la-289))&16842753) != 0) { + { + p.SetState(1326) + p.BindingVariableDefinition() + } + + p.SetState(1329) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IBindingVariableDefinitionContext is an interface to support dynamic dispatch. +type IBindingVariableDefinitionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphVariableDefinition() IGraphVariableDefinitionContext + BindingTableVariableDefinition() IBindingTableVariableDefinitionContext + ValueVariableDefinition() IValueVariableDefinitionContext + + // IsBindingVariableDefinitionContext differentiates from other interfaces. + IsBindingVariableDefinitionContext() +} + +type BindingVariableDefinitionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingVariableDefinitionContext() *BindingVariableDefinitionContext { + var p = new(BindingVariableDefinitionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableDefinition + return p +} + +func InitEmptyBindingVariableDefinitionContext(p *BindingVariableDefinitionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableDefinition +} + +func (*BindingVariableDefinitionContext) IsBindingVariableDefinitionContext() {} + +func NewBindingVariableDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingVariableDefinitionContext { + var p = new(BindingVariableDefinitionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingVariableDefinition + + return p +} + +func (s *BindingVariableDefinitionContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingVariableDefinitionContext) GraphVariableDefinition() IGraphVariableDefinitionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphVariableDefinitionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphVariableDefinitionContext) +} + +func (s *BindingVariableDefinitionContext) BindingTableVariableDefinition() IBindingTableVariableDefinitionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableVariableDefinitionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableVariableDefinitionContext) +} + +func (s *BindingVariableDefinitionContext) ValueVariableDefinition() IValueVariableDefinitionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueVariableDefinitionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueVariableDefinitionContext) +} + +func (s *BindingVariableDefinitionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingVariableDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingVariableDefinitionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingVariableDefinition(s) + } +} + +func (s *BindingVariableDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingVariableDefinition(s) + } +} + +func (p *GQLParser) BindingVariableDefinition() (localctx IBindingVariableDefinitionContext) { + localctx = NewBindingVariableDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 62, GQLParserRULE_bindingVariableDefinition) + p.SetState(1334) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserGRAPH, GQLParserPROPERTY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1331) + p.GraphVariableDefinition() + } + + case GQLParserBINDING, GQLParserTABLE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1332) + p.BindingTableVariableDefinition() + } + + case GQLParserVALUE: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1333) + p.ValueVariableDefinition() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IStatementBlockContext is an interface to support dynamic dispatch. +type IStatementBlockContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Statement() IStatementContext + AllNextStatement() []INextStatementContext + NextStatement(i int) INextStatementContext + + // IsStatementBlockContext differentiates from other interfaces. + IsStatementBlockContext() +} + +type StatementBlockContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyStatementBlockContext() *StatementBlockContext { + var p = new(StatementBlockContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_statementBlock + return p +} + +func InitEmptyStatementBlockContext(p *StatementBlockContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_statementBlock +} + +func (*StatementBlockContext) IsStatementBlockContext() {} + +func NewStatementBlockContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StatementBlockContext { + var p = new(StatementBlockContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_statementBlock + + return p +} + +func (s *StatementBlockContext) GetParser() antlr.Parser { return s.parser } + +func (s *StatementBlockContext) Statement() IStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IStatementContext) +} + +func (s *StatementBlockContext) AllNextStatement() []INextStatementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(INextStatementContext); ok { + len++ + } + } + + tst := make([]INextStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(INextStatementContext); ok { + tst[i] = t.(INextStatementContext) + i++ + } + } + + return tst +} + +func (s *StatementBlockContext) NextStatement(i int) INextStatementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INextStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(INextStatementContext) +} + +func (s *StatementBlockContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *StatementBlockContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *StatementBlockContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterStatementBlock(s) + } +} + +func (s *StatementBlockContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitStatementBlock(s) + } +} + +func (p *GQLParser) StatementBlock() (localctx IStatementBlockContext) { + localctx = NewStatementBlockContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 64, GQLParserRULE_statementBlock) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1336) + p.Statement() + } + p.SetState(1340) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserNEXT { + { + p.SetState(1337) + p.NextStatement() + } + + p.SetState(1342) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IStatementContext is an interface to support dynamic dispatch. +type IStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CompositeQueryStatement() ICompositeQueryStatementContext + LinearCatalogModifyingStatement() ILinearCatalogModifyingStatementContext + LinearDataModifyingStatement() ILinearDataModifyingStatementContext + + // IsStatementContext differentiates from other interfaces. + IsStatementContext() +} + +type StatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyStatementContext() *StatementContext { + var p = new(StatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_statement + return p +} + +func InitEmptyStatementContext(p *StatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_statement +} + +func (*StatementContext) IsStatementContext() {} + +func NewStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StatementContext { + var p = new(StatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_statement + + return p +} + +func (s *StatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *StatementContext) CompositeQueryStatement() ICompositeQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompositeQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompositeQueryStatementContext) +} + +func (s *StatementContext) LinearCatalogModifyingStatement() ILinearCatalogModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILinearCatalogModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILinearCatalogModifyingStatementContext) +} + +func (s *StatementContext) LinearDataModifyingStatement() ILinearDataModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILinearDataModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILinearDataModifyingStatementContext) +} + +func (s *StatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *StatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *StatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterStatement(s) + } +} + +func (s *StatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitStatement(s) + } +} + +func (p *GQLParser) Statement() (localctx IStatementContext) { + localctx = NewStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 66, GQLParserRULE_statement) + p.SetState(1346) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 31, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1343) + p.CompositeQueryStatement() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1344) + p.LinearCatalogModifyingStatement() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1345) + p.LinearDataModifyingStatement() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INextStatementContext is an interface to support dynamic dispatch. +type INextStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NEXT() antlr.TerminalNode + Statement() IStatementContext + YieldClause() IYieldClauseContext + + // IsNextStatementContext differentiates from other interfaces. + IsNextStatementContext() +} + +type NextStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNextStatementContext() *NextStatementContext { + var p = new(NextStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nextStatement + return p +} + +func InitEmptyNextStatementContext(p *NextStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nextStatement +} + +func (*NextStatementContext) IsNextStatementContext() {} + +func NewNextStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NextStatementContext { + var p = new(NextStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nextStatement + + return p +} + +func (s *NextStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *NextStatementContext) NEXT() antlr.TerminalNode { + return s.GetToken(GQLParserNEXT, 0) +} + +func (s *NextStatementContext) Statement() IStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IStatementContext) +} + +func (s *NextStatementContext) YieldClause() IYieldClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IYieldClauseContext) +} + +func (s *NextStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NextStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NextStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNextStatement(s) + } +} + +func (s *NextStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNextStatement(s) + } +} + +func (p *GQLParser) NextStatement() (localctx INextStatementContext) { + localctx = NewNextStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 68, GQLParserRULE_nextStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1348) + p.Match(GQLParserNEXT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1350) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserYIELD { + { + p.SetState(1349) + p.YieldClause() + } + + } + { + p.SetState(1352) + p.Statement() + } + +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 +} + +// IGraphVariableDefinitionContext is an interface to support dynamic dispatch. +type IGraphVariableDefinitionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GRAPH() antlr.TerminalNode + BindingVariable() IBindingVariableContext + OptTypedGraphInitializer() IOptTypedGraphInitializerContext + PROPERTY() antlr.TerminalNode + + // IsGraphVariableDefinitionContext differentiates from other interfaces. + IsGraphVariableDefinitionContext() +} + +type GraphVariableDefinitionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphVariableDefinitionContext() *GraphVariableDefinitionContext { + var p = new(GraphVariableDefinitionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphVariableDefinition + return p +} + +func InitEmptyGraphVariableDefinitionContext(p *GraphVariableDefinitionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphVariableDefinition +} + +func (*GraphVariableDefinitionContext) IsGraphVariableDefinitionContext() {} + +func NewGraphVariableDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphVariableDefinitionContext { + var p = new(GraphVariableDefinitionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphVariableDefinition + + return p +} + +func (s *GraphVariableDefinitionContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphVariableDefinitionContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *GraphVariableDefinitionContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *GraphVariableDefinitionContext) OptTypedGraphInitializer() IOptTypedGraphInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedGraphInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedGraphInitializerContext) +} + +func (s *GraphVariableDefinitionContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *GraphVariableDefinitionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphVariableDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphVariableDefinitionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphVariableDefinition(s) + } +} + +func (s *GraphVariableDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphVariableDefinition(s) + } +} + +func (p *GQLParser) GraphVariableDefinition() (localctx IGraphVariableDefinitionContext) { + localctx = NewGraphVariableDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 70, GQLParserRULE_graphVariableDefinition) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1355) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1354) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1357) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1358) + p.BindingVariable() + } + { + p.SetState(1359) + p.OptTypedGraphInitializer() + } + +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 +} + +// IOptTypedGraphInitializerContext is an interface to support dynamic dispatch. +type IOptTypedGraphInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphInitializer() IGraphInitializerContext + GraphReferenceValueType() IGraphReferenceValueTypeContext + Typed() ITypedContext + + // IsOptTypedGraphInitializerContext differentiates from other interfaces. + IsOptTypedGraphInitializerContext() +} + +type OptTypedGraphInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOptTypedGraphInitializerContext() *OptTypedGraphInitializerContext { + var p = new(OptTypedGraphInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedGraphInitializer + return p +} + +func InitEmptyOptTypedGraphInitializerContext(p *OptTypedGraphInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedGraphInitializer +} + +func (*OptTypedGraphInitializerContext) IsOptTypedGraphInitializerContext() {} + +func NewOptTypedGraphInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptTypedGraphInitializerContext { + var p = new(OptTypedGraphInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_optTypedGraphInitializer + + return p +} + +func (s *OptTypedGraphInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *OptTypedGraphInitializerContext) GraphInitializer() IGraphInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphInitializerContext) +} + +func (s *OptTypedGraphInitializerContext) GraphReferenceValueType() IGraphReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphReferenceValueTypeContext) +} + +func (s *OptTypedGraphInitializerContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *OptTypedGraphInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OptTypedGraphInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OptTypedGraphInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOptTypedGraphInitializer(s) + } +} + +func (s *OptTypedGraphInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOptTypedGraphInitializer(s) + } +} + +func (p *GQLParser) OptTypedGraphInitializer() (localctx IOptTypedGraphInitializerContext) { + localctx = NewOptTypedGraphInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 72, GQLParserRULE_optTypedGraphInitializer) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1365) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserANY || _la == GQLParserTYPED || ((int64((_la-289)) & ^0x3f) == 0 && ((int64(1)<<(_la-289))&4398046576641) != 0) { + p.SetState(1362) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1361) + p.Typed() + } + + } + { + p.SetState(1364) + p.GraphReferenceValueType() + } + + } + { + p.SetState(1367) + p.GraphInitializer() + } + +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 +} + +// IGraphInitializerContext is an interface to support dynamic dispatch. +type IGraphInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EQUALS_OPERATOR() antlr.TerminalNode + GraphExpression() IGraphExpressionContext + + // IsGraphInitializerContext differentiates from other interfaces. + IsGraphInitializerContext() +} + +type GraphInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphInitializerContext() *GraphInitializerContext { + var p = new(GraphInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphInitializer + return p +} + +func InitEmptyGraphInitializerContext(p *GraphInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphInitializer +} + +func (*GraphInitializerContext) IsGraphInitializerContext() {} + +func NewGraphInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphInitializerContext { + var p = new(GraphInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphInitializer + + return p +} + +func (s *GraphInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphInitializerContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *GraphInitializerContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *GraphInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphInitializer(s) + } +} + +func (s *GraphInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphInitializer(s) + } +} + +func (p *GQLParser) GraphInitializer() (localctx IGraphInitializerContext) { + localctx = NewGraphInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 74, GQLParserRULE_graphInitializer) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1369) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1370) + p.GraphExpression() + } + +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 +} + +// IBindingTableVariableDefinitionContext is an interface to support dynamic dispatch. +type IBindingTableVariableDefinitionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TABLE() antlr.TerminalNode + BindingVariable() IBindingVariableContext + OptTypedBindingTableInitializer() IOptTypedBindingTableInitializerContext + BINDING() antlr.TerminalNode + + // IsBindingTableVariableDefinitionContext differentiates from other interfaces. + IsBindingTableVariableDefinitionContext() +} + +type BindingTableVariableDefinitionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableVariableDefinitionContext() *BindingTableVariableDefinitionContext { + var p = new(BindingTableVariableDefinitionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableVariableDefinition + return p +} + +func InitEmptyBindingTableVariableDefinitionContext(p *BindingTableVariableDefinitionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableVariableDefinition +} + +func (*BindingTableVariableDefinitionContext) IsBindingTableVariableDefinitionContext() {} + +func NewBindingTableVariableDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableVariableDefinitionContext { + var p = new(BindingTableVariableDefinitionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableVariableDefinition + + return p +} + +func (s *BindingTableVariableDefinitionContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableVariableDefinitionContext) TABLE() antlr.TerminalNode { + return s.GetToken(GQLParserTABLE, 0) +} + +func (s *BindingTableVariableDefinitionContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *BindingTableVariableDefinitionContext) OptTypedBindingTableInitializer() IOptTypedBindingTableInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedBindingTableInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedBindingTableInitializerContext) +} + +func (s *BindingTableVariableDefinitionContext) BINDING() antlr.TerminalNode { + return s.GetToken(GQLParserBINDING, 0) +} + +func (s *BindingTableVariableDefinitionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableVariableDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableVariableDefinitionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableVariableDefinition(s) + } +} + +func (s *BindingTableVariableDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableVariableDefinition(s) + } +} + +func (p *GQLParser) BindingTableVariableDefinition() (localctx IBindingTableVariableDefinitionContext) { + localctx = NewBindingTableVariableDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 76, GQLParserRULE_bindingTableVariableDefinition) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1373) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserBINDING { + { + p.SetState(1372) + p.Match(GQLParserBINDING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1375) + p.Match(GQLParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1376) + p.BindingVariable() + } + { + p.SetState(1377) + p.OptTypedBindingTableInitializer() + } + +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 +} + +// IOptTypedBindingTableInitializerContext is an interface to support dynamic dispatch. +type IOptTypedBindingTableInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingTableInitializer() IBindingTableInitializerContext + BindingTableReferenceValueType() IBindingTableReferenceValueTypeContext + Typed() ITypedContext + + // IsOptTypedBindingTableInitializerContext differentiates from other interfaces. + IsOptTypedBindingTableInitializerContext() +} + +type OptTypedBindingTableInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOptTypedBindingTableInitializerContext() *OptTypedBindingTableInitializerContext { + var p = new(OptTypedBindingTableInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedBindingTableInitializer + return p +} + +func InitEmptyOptTypedBindingTableInitializerContext(p *OptTypedBindingTableInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedBindingTableInitializer +} + +func (*OptTypedBindingTableInitializerContext) IsOptTypedBindingTableInitializerContext() {} + +func NewOptTypedBindingTableInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptTypedBindingTableInitializerContext { + var p = new(OptTypedBindingTableInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_optTypedBindingTableInitializer + + return p +} + +func (s *OptTypedBindingTableInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *OptTypedBindingTableInitializerContext) BindingTableInitializer() IBindingTableInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableInitializerContext) +} + +func (s *OptTypedBindingTableInitializerContext) BindingTableReferenceValueType() IBindingTableReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableReferenceValueTypeContext) +} + +func (s *OptTypedBindingTableInitializerContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *OptTypedBindingTableInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OptTypedBindingTableInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OptTypedBindingTableInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOptTypedBindingTableInitializer(s) + } +} + +func (s *OptTypedBindingTableInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOptTypedBindingTableInitializer(s) + } +} + +func (p *GQLParser) OptTypedBindingTableInitializer() (localctx IOptTypedBindingTableInitializerContext) { + localctx = NewOptTypedBindingTableInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 78, GQLParserRULE_optTypedBindingTableInitializer) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1383) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || ((int64((_la-278)) & ^0x3f) == 0 && ((int64(1)<<(_la-278))&9007233614479361) != 0) { + p.SetState(1380) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1379) + p.Typed() + } + + } + { + p.SetState(1382) + p.BindingTableReferenceValueType() + } + + } + { + p.SetState(1385) + p.BindingTableInitializer() + } + +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 +} + +// IBindingTableInitializerContext is an interface to support dynamic dispatch. +type IBindingTableInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EQUALS_OPERATOR() antlr.TerminalNode + BindingTableExpression() IBindingTableExpressionContext + + // IsBindingTableInitializerContext differentiates from other interfaces. + IsBindingTableInitializerContext() +} + +type BindingTableInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableInitializerContext() *BindingTableInitializerContext { + var p = new(BindingTableInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableInitializer + return p +} + +func InitEmptyBindingTableInitializerContext(p *BindingTableInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableInitializer +} + +func (*BindingTableInitializerContext) IsBindingTableInitializerContext() {} + +func NewBindingTableInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableInitializerContext { + var p = new(BindingTableInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableInitializer + + return p +} + +func (s *BindingTableInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableInitializerContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *BindingTableInitializerContext) BindingTableExpression() IBindingTableExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableExpressionContext) +} + +func (s *BindingTableInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableInitializer(s) + } +} + +func (s *BindingTableInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableInitializer(s) + } +} + +func (p *GQLParser) BindingTableInitializer() (localctx IBindingTableInitializerContext) { + localctx = NewBindingTableInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, GQLParserRULE_bindingTableInitializer) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1387) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1388) + p.BindingTableExpression() + } + +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 +} + +// IValueVariableDefinitionContext is an interface to support dynamic dispatch. +type IValueVariableDefinitionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + VALUE() antlr.TerminalNode + BindingVariable() IBindingVariableContext + OptTypedValueInitializer() IOptTypedValueInitializerContext + + // IsValueVariableDefinitionContext differentiates from other interfaces. + IsValueVariableDefinitionContext() +} + +type ValueVariableDefinitionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueVariableDefinitionContext() *ValueVariableDefinitionContext { + var p = new(ValueVariableDefinitionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueVariableDefinition + return p +} + +func InitEmptyValueVariableDefinitionContext(p *ValueVariableDefinitionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueVariableDefinition +} + +func (*ValueVariableDefinitionContext) IsValueVariableDefinitionContext() {} + +func NewValueVariableDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueVariableDefinitionContext { + var p = new(ValueVariableDefinitionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueVariableDefinition + + return p +} + +func (s *ValueVariableDefinitionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueVariableDefinitionContext) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *ValueVariableDefinitionContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *ValueVariableDefinitionContext) OptTypedValueInitializer() IOptTypedValueInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptTypedValueInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptTypedValueInitializerContext) +} + +func (s *ValueVariableDefinitionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueVariableDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueVariableDefinitionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueVariableDefinition(s) + } +} + +func (s *ValueVariableDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueVariableDefinition(s) + } +} + +func (p *GQLParser) ValueVariableDefinition() (localctx IValueVariableDefinitionContext) { + localctx = NewValueVariableDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 82, GQLParserRULE_valueVariableDefinition) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1390) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1391) + p.BindingVariable() + } + { + p.SetState(1392) + p.OptTypedValueInitializer() + } + +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 +} + +// IOptTypedValueInitializerContext is an interface to support dynamic dispatch. +type IOptTypedValueInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueInitializer() IValueInitializerContext + ValueType() IValueTypeContext + Typed() ITypedContext + + // IsOptTypedValueInitializerContext differentiates from other interfaces. + IsOptTypedValueInitializerContext() +} + +type OptTypedValueInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOptTypedValueInitializerContext() *OptTypedValueInitializerContext { + var p = new(OptTypedValueInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedValueInitializer + return p +} + +func InitEmptyOptTypedValueInitializerContext(p *OptTypedValueInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optTypedValueInitializer +} + +func (*OptTypedValueInitializerContext) IsOptTypedValueInitializerContext() {} + +func NewOptTypedValueInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptTypedValueInitializerContext { + var p = new(OptTypedValueInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_optTypedValueInitializer + + return p +} + +func (s *OptTypedValueInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *OptTypedValueInitializerContext) ValueInitializer() IValueInitializerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueInitializerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueInitializerContext) +} + +func (s *OptTypedValueInitializerContext) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *OptTypedValueInitializerContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *OptTypedValueInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OptTypedValueInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OptTypedValueInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOptTypedValueInitializer(s) + } +} + +func (s *OptTypedValueInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOptTypedValueInitializer(s) + } +} + +func (p *GQLParser) OptTypedValueInitializer() (localctx IOptTypedValueInitializerContext) { + localctx = NewOptTypedValueInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 84, GQLParserRULE_optTypedValueInitializer) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1398) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1135228676472832) != 0) || ((int64((_la-70)) & ^0x3f) == 0 && ((int64(1)<<(_la-70))&-9187345438330574823) != 0) || ((int64((_la-135)) & ^0x3f) == 0 && ((int64(1)<<(_la-135))&6989589922362163201) != 0) || ((int64((_la-202)) & ^0x3f) == 0 && ((int64(1)<<(_la-202))&8645246561) != 0) || ((int64((_la-278)) & ^0x3f) == 0 && ((int64(1)<<(_la-278))&9010532828842081) != 0) || _la == GQLParserLEFT_BRACE || _la == GQLParserLEFT_PAREN { + p.SetState(1395) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1394) + p.Typed() + } + + } + { + p.SetState(1397) + p.valueType(0) + } + + } + { + p.SetState(1400) + p.ValueInitializer() + } + +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 +} + +// IValueInitializerContext is an interface to support dynamic dispatch. +type IValueInitializerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EQUALS_OPERATOR() antlr.TerminalNode + ValueExpression() IValueExpressionContext + + // IsValueInitializerContext differentiates from other interfaces. + IsValueInitializerContext() +} + +type ValueInitializerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueInitializerContext() *ValueInitializerContext { + var p = new(ValueInitializerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueInitializer + return p +} + +func InitEmptyValueInitializerContext(p *ValueInitializerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueInitializer +} + +func (*ValueInitializerContext) IsValueInitializerContext() {} + +func NewValueInitializerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueInitializerContext { + var p = new(ValueInitializerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueInitializer + + return p +} + +func (s *ValueInitializerContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueInitializerContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *ValueInitializerContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ValueInitializerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueInitializerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueInitializerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueInitializer(s) + } +} + +func (s *ValueInitializerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueInitializer(s) + } +} + +func (p *GQLParser) ValueInitializer() (localctx IValueInitializerContext) { + localctx = NewValueInitializerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 86, GQLParserRULE_valueInitializer) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1402) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1403) + p.valueExpression(0) + } + +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 +} + +// IGraphExpressionContext is an interface to support dynamic dispatch. +type IGraphExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphReference() IGraphReferenceContext + ObjectExpressionPrimary() IObjectExpressionPrimaryContext + ObjectNameOrBindingVariable() IObjectNameOrBindingVariableContext + CurrentGraph() ICurrentGraphContext + + // IsGraphExpressionContext differentiates from other interfaces. + IsGraphExpressionContext() +} + +type GraphExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphExpressionContext() *GraphExpressionContext { + var p = new(GraphExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphExpression + return p +} + +func InitEmptyGraphExpressionContext(p *GraphExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphExpression +} + +func (*GraphExpressionContext) IsGraphExpressionContext() {} + +func NewGraphExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphExpressionContext { + var p = new(GraphExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphExpression + + return p +} + +func (s *GraphExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphExpressionContext) GraphReference() IGraphReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphReferenceContext) +} + +func (s *GraphExpressionContext) ObjectExpressionPrimary() IObjectExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IObjectExpressionPrimaryContext) +} + +func (s *GraphExpressionContext) ObjectNameOrBindingVariable() IObjectNameOrBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectNameOrBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IObjectNameOrBindingVariableContext) +} + +func (s *GraphExpressionContext) CurrentGraph() ICurrentGraphContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICurrentGraphContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICurrentGraphContext) +} + +func (s *GraphExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphExpression(s) + } +} + +func (s *GraphExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphExpression(s) + } +} + +func (p *GQLParser) GraphExpression() (localctx IGraphExpressionContext) { + localctx = NewGraphExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 88, GQLParserRULE_graphExpression) + p.SetState(1409) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 41, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1405) + p.GraphReference() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1406) + p.ObjectExpressionPrimary() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1407) + p.ObjectNameOrBindingVariable() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1408) + p.CurrentGraph() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICurrentGraphContext is an interface to support dynamic dispatch. +type ICurrentGraphContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CURRENT_PROPERTY_GRAPH() antlr.TerminalNode + CURRENT_GRAPH() antlr.TerminalNode + + // IsCurrentGraphContext differentiates from other interfaces. + IsCurrentGraphContext() +} + +type CurrentGraphContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCurrentGraphContext() *CurrentGraphContext { + var p = new(CurrentGraphContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_currentGraph + return p +} + +func InitEmptyCurrentGraphContext(p *CurrentGraphContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_currentGraph +} + +func (*CurrentGraphContext) IsCurrentGraphContext() {} + +func NewCurrentGraphContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CurrentGraphContext { + var p = new(CurrentGraphContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_currentGraph + + return p +} + +func (s *CurrentGraphContext) GetParser() antlr.Parser { return s.parser } + +func (s *CurrentGraphContext) CURRENT_PROPERTY_GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_PROPERTY_GRAPH, 0) +} + +func (s *CurrentGraphContext) CURRENT_GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_GRAPH, 0) +} + +func (s *CurrentGraphContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CurrentGraphContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CurrentGraphContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCurrentGraph(s) + } +} + +func (s *CurrentGraphContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCurrentGraph(s) + } +} + +func (p *GQLParser) CurrentGraph() (localctx ICurrentGraphContext) { + localctx = NewCurrentGraphContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 90, GQLParserRULE_currentGraph) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1411) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserCURRENT_GRAPH || _la == GQLParserCURRENT_PROPERTY_GRAPH) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IBindingTableExpressionContext is an interface to support dynamic dispatch. +type IBindingTableExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NestedBindingTableQuerySpecification() INestedBindingTableQuerySpecificationContext + BindingTableReference() IBindingTableReferenceContext + ObjectExpressionPrimary() IObjectExpressionPrimaryContext + ObjectNameOrBindingVariable() IObjectNameOrBindingVariableContext + + // IsBindingTableExpressionContext differentiates from other interfaces. + IsBindingTableExpressionContext() +} + +type BindingTableExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableExpressionContext() *BindingTableExpressionContext { + var p = new(BindingTableExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableExpression + return p +} + +func InitEmptyBindingTableExpressionContext(p *BindingTableExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableExpression +} + +func (*BindingTableExpressionContext) IsBindingTableExpressionContext() {} + +func NewBindingTableExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableExpressionContext { + var p = new(BindingTableExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableExpression + + return p +} + +func (s *BindingTableExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableExpressionContext) NestedBindingTableQuerySpecification() INestedBindingTableQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedBindingTableQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedBindingTableQuerySpecificationContext) +} + +func (s *BindingTableExpressionContext) BindingTableReference() IBindingTableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableReferenceContext) +} + +func (s *BindingTableExpressionContext) ObjectExpressionPrimary() IObjectExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IObjectExpressionPrimaryContext) +} + +func (s *BindingTableExpressionContext) ObjectNameOrBindingVariable() IObjectNameOrBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectNameOrBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IObjectNameOrBindingVariableContext) +} + +func (s *BindingTableExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableExpression(s) + } +} + +func (s *BindingTableExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableExpression(s) + } +} + +func (p *GQLParser) BindingTableExpression() (localctx IBindingTableExpressionContext) { + localctx = NewBindingTableExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 92, GQLParserRULE_bindingTableExpression) + p.SetState(1417) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 42, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1413) + p.NestedBindingTableQuerySpecification() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1414) + p.BindingTableReference() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1415) + p.ObjectExpressionPrimary() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1416) + p.ObjectNameOrBindingVariable() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INestedBindingTableQuerySpecificationContext is an interface to support dynamic dispatch. +type INestedBindingTableQuerySpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NestedQuerySpecification() INestedQuerySpecificationContext + + // IsNestedBindingTableQuerySpecificationContext differentiates from other interfaces. + IsNestedBindingTableQuerySpecificationContext() +} + +type NestedBindingTableQuerySpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNestedBindingTableQuerySpecificationContext() *NestedBindingTableQuerySpecificationContext { + var p = new(NestedBindingTableQuerySpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedBindingTableQuerySpecification + return p +} + +func InitEmptyNestedBindingTableQuerySpecificationContext(p *NestedBindingTableQuerySpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedBindingTableQuerySpecification +} + +func (*NestedBindingTableQuerySpecificationContext) IsNestedBindingTableQuerySpecificationContext() {} + +func NewNestedBindingTableQuerySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NestedBindingTableQuerySpecificationContext { + var p = new(NestedBindingTableQuerySpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nestedBindingTableQuerySpecification + + return p +} + +func (s *NestedBindingTableQuerySpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NestedBindingTableQuerySpecificationContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *NestedBindingTableQuerySpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NestedBindingTableQuerySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NestedBindingTableQuerySpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNestedBindingTableQuerySpecification(s) + } +} + +func (s *NestedBindingTableQuerySpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNestedBindingTableQuerySpecification(s) + } +} + +func (p *GQLParser) NestedBindingTableQuerySpecification() (localctx INestedBindingTableQuerySpecificationContext) { + localctx = NewNestedBindingTableQuerySpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 94, GQLParserRULE_nestedBindingTableQuerySpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1419) + p.NestedQuerySpecification() + } + +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 +} + +// IObjectExpressionPrimaryContext is an interface to support dynamic dispatch. +type IObjectExpressionPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + VARIABLE() antlr.TerminalNode + ValueExpressionPrimary() IValueExpressionPrimaryContext + ParenthesizedValueExpression() IParenthesizedValueExpressionContext + NonParenthesizedValueExpressionPrimarySpecialCase() INonParenthesizedValueExpressionPrimarySpecialCaseContext + + // IsObjectExpressionPrimaryContext differentiates from other interfaces. + IsObjectExpressionPrimaryContext() +} + +type ObjectExpressionPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyObjectExpressionPrimaryContext() *ObjectExpressionPrimaryContext { + var p = new(ObjectExpressionPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectExpressionPrimary + return p +} + +func InitEmptyObjectExpressionPrimaryContext(p *ObjectExpressionPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectExpressionPrimary +} + +func (*ObjectExpressionPrimaryContext) IsObjectExpressionPrimaryContext() {} + +func NewObjectExpressionPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ObjectExpressionPrimaryContext { + var p = new(ObjectExpressionPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_objectExpressionPrimary + + return p +} + +func (s *ObjectExpressionPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *ObjectExpressionPrimaryContext) VARIABLE() antlr.TerminalNode { + return s.GetToken(GQLParserVARIABLE, 0) +} + +func (s *ObjectExpressionPrimaryContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *ObjectExpressionPrimaryContext) ParenthesizedValueExpression() IParenthesizedValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParenthesizedValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IParenthesizedValueExpressionContext) +} + +func (s *ObjectExpressionPrimaryContext) NonParenthesizedValueExpressionPrimarySpecialCase() INonParenthesizedValueExpressionPrimarySpecialCaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonParenthesizedValueExpressionPrimarySpecialCaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonParenthesizedValueExpressionPrimarySpecialCaseContext) +} + +func (s *ObjectExpressionPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ObjectExpressionPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ObjectExpressionPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterObjectExpressionPrimary(s) + } +} + +func (s *ObjectExpressionPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitObjectExpressionPrimary(s) + } +} + +func (p *GQLParser) ObjectExpressionPrimary() (localctx IObjectExpressionPrimaryContext) { + localctx = NewObjectExpressionPrimaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 96, GQLParserRULE_objectExpressionPrimary) + p.SetState(1425) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 43, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1421) + p.Match(GQLParserVARIABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1422) + p.valueExpressionPrimary(0) + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1423) + p.ParenthesizedValueExpression() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1424) + p.NonParenthesizedValueExpressionPrimarySpecialCase() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ILinearCatalogModifyingStatementContext is an interface to support dynamic dispatch. +type ILinearCatalogModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSimpleCatalogModifyingStatement() []ISimpleCatalogModifyingStatementContext + SimpleCatalogModifyingStatement(i int) ISimpleCatalogModifyingStatementContext + + // IsLinearCatalogModifyingStatementContext differentiates from other interfaces. + IsLinearCatalogModifyingStatementContext() +} + +type LinearCatalogModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLinearCatalogModifyingStatementContext() *LinearCatalogModifyingStatementContext { + var p = new(LinearCatalogModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearCatalogModifyingStatement + return p +} + +func InitEmptyLinearCatalogModifyingStatementContext(p *LinearCatalogModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearCatalogModifyingStatement +} + +func (*LinearCatalogModifyingStatementContext) IsLinearCatalogModifyingStatementContext() {} + +func NewLinearCatalogModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LinearCatalogModifyingStatementContext { + var p = new(LinearCatalogModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_linearCatalogModifyingStatement + + return p +} + +func (s *LinearCatalogModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *LinearCatalogModifyingStatementContext) AllSimpleCatalogModifyingStatement() []ISimpleCatalogModifyingStatementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimpleCatalogModifyingStatementContext); ok { + len++ + } + } + + tst := make([]ISimpleCatalogModifyingStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimpleCatalogModifyingStatementContext); ok { + tst[i] = t.(ISimpleCatalogModifyingStatementContext) + i++ + } + } + + return tst +} + +func (s *LinearCatalogModifyingStatementContext) SimpleCatalogModifyingStatement(i int) ISimpleCatalogModifyingStatementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleCatalogModifyingStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimpleCatalogModifyingStatementContext) +} + +func (s *LinearCatalogModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LinearCatalogModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LinearCatalogModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLinearCatalogModifyingStatement(s) + } +} + +func (s *LinearCatalogModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLinearCatalogModifyingStatement(s) + } +} + +func (p *GQLParser) LinearCatalogModifyingStatement() (localctx ILinearCatalogModifyingStatementContext) { + localctx = NewLinearCatalogModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 98, GQLParserRULE_linearCatalogModifyingStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1428) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = ((int64((_la-44)) & ^0x3f) == 0 && ((int64(1)<<(_la-44))&274878431233) != 0) || _la == GQLParserOPTIONAL { + { + p.SetState(1427) + p.SimpleCatalogModifyingStatement() + } + + p.SetState(1430) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISimpleCatalogModifyingStatementContext is an interface to support dynamic dispatch. +type ISimpleCatalogModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PrimitiveCatalogModifyingStatement() IPrimitiveCatalogModifyingStatementContext + CallCatalogModifyingProcedureStatement() ICallCatalogModifyingProcedureStatementContext + + // IsSimpleCatalogModifyingStatementContext differentiates from other interfaces. + IsSimpleCatalogModifyingStatementContext() +} + +type SimpleCatalogModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleCatalogModifyingStatementContext() *SimpleCatalogModifyingStatementContext { + var p = new(SimpleCatalogModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleCatalogModifyingStatement + return p +} + +func InitEmptySimpleCatalogModifyingStatementContext(p *SimpleCatalogModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleCatalogModifyingStatement +} + +func (*SimpleCatalogModifyingStatementContext) IsSimpleCatalogModifyingStatementContext() {} + +func NewSimpleCatalogModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleCatalogModifyingStatementContext { + var p = new(SimpleCatalogModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleCatalogModifyingStatement + + return p +} + +func (s *SimpleCatalogModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleCatalogModifyingStatementContext) PrimitiveCatalogModifyingStatement() IPrimitiveCatalogModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveCatalogModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveCatalogModifyingStatementContext) +} + +func (s *SimpleCatalogModifyingStatementContext) CallCatalogModifyingProcedureStatement() ICallCatalogModifyingProcedureStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallCatalogModifyingProcedureStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallCatalogModifyingProcedureStatementContext) +} + +func (s *SimpleCatalogModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleCatalogModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleCatalogModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleCatalogModifyingStatement(s) + } +} + +func (s *SimpleCatalogModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleCatalogModifyingStatement(s) + } +} + +func (p *GQLParser) SimpleCatalogModifyingStatement() (localctx ISimpleCatalogModifyingStatementContext) { + localctx = NewSimpleCatalogModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 100, GQLParserRULE_simpleCatalogModifyingStatement) + p.SetState(1434) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCREATE, GQLParserDROP: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1432) + p.PrimitiveCatalogModifyingStatement() + } + + case GQLParserCALL, GQLParserOPTIONAL: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1433) + p.CallCatalogModifyingProcedureStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPrimitiveCatalogModifyingStatementContext is an interface to support dynamic dispatch. +type IPrimitiveCatalogModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CreateSchemaStatement() ICreateSchemaStatementContext + DropSchemaStatement() IDropSchemaStatementContext + CreateGraphStatement() ICreateGraphStatementContext + DropGraphStatement() IDropGraphStatementContext + CreateGraphTypeStatement() ICreateGraphTypeStatementContext + DropGraphTypeStatement() IDropGraphTypeStatementContext + + // IsPrimitiveCatalogModifyingStatementContext differentiates from other interfaces. + IsPrimitiveCatalogModifyingStatementContext() +} + +type PrimitiveCatalogModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPrimitiveCatalogModifyingStatementContext() *PrimitiveCatalogModifyingStatementContext { + var p = new(PrimitiveCatalogModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveCatalogModifyingStatement + return p +} + +func InitEmptyPrimitiveCatalogModifyingStatementContext(p *PrimitiveCatalogModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveCatalogModifyingStatement +} + +func (*PrimitiveCatalogModifyingStatementContext) IsPrimitiveCatalogModifyingStatementContext() {} + +func NewPrimitiveCatalogModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrimitiveCatalogModifyingStatementContext { + var p = new(PrimitiveCatalogModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_primitiveCatalogModifyingStatement + + return p +} + +func (s *PrimitiveCatalogModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *PrimitiveCatalogModifyingStatementContext) CreateSchemaStatement() ICreateSchemaStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreateSchemaStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICreateSchemaStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) DropSchemaStatement() IDropSchemaStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDropSchemaStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDropSchemaStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) CreateGraphStatement() ICreateGraphStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreateGraphStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICreateGraphStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) DropGraphStatement() IDropGraphStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDropGraphStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDropGraphStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) CreateGraphTypeStatement() ICreateGraphTypeStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreateGraphTypeStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICreateGraphTypeStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) DropGraphTypeStatement() IDropGraphTypeStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDropGraphTypeStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDropGraphTypeStatementContext) +} + +func (s *PrimitiveCatalogModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrimitiveCatalogModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PrimitiveCatalogModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrimitiveCatalogModifyingStatement(s) + } +} + +func (s *PrimitiveCatalogModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrimitiveCatalogModifyingStatement(s) + } +} + +func (p *GQLParser) PrimitiveCatalogModifyingStatement() (localctx IPrimitiveCatalogModifyingStatementContext) { + localctx = NewPrimitiveCatalogModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 102, GQLParserRULE_primitiveCatalogModifyingStatement) + p.SetState(1442) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 46, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1436) + p.CreateSchemaStatement() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1437) + p.DropSchemaStatement() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1438) + p.CreateGraphStatement() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1439) + p.DropGraphStatement() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(1440) + p.CreateGraphTypeStatement() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(1441) + p.DropGraphTypeStatement() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICreateSchemaStatementContext is an interface to support dynamic dispatch. +type ICreateSchemaStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CREATE() antlr.TerminalNode + SCHEMA() antlr.TerminalNode + CatalogSchemaParentAndName() ICatalogSchemaParentAndNameContext + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsCreateSchemaStatementContext differentiates from other interfaces. + IsCreateSchemaStatementContext() +} + +type CreateSchemaStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreateSchemaStatementContext() *CreateSchemaStatementContext { + var p = new(CreateSchemaStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createSchemaStatement + return p +} + +func InitEmptyCreateSchemaStatementContext(p *CreateSchemaStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createSchemaStatement +} + +func (*CreateSchemaStatementContext) IsCreateSchemaStatementContext() {} + +func NewCreateSchemaStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateSchemaStatementContext { + var p = new(CreateSchemaStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_createSchemaStatement + + return p +} + +func (s *CreateSchemaStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CreateSchemaStatementContext) CREATE() antlr.TerminalNode { + return s.GetToken(GQLParserCREATE, 0) +} + +func (s *CreateSchemaStatementContext) SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserSCHEMA, 0) +} + +func (s *CreateSchemaStatementContext) CatalogSchemaParentAndName() ICatalogSchemaParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogSchemaParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogSchemaParentAndNameContext) +} + +func (s *CreateSchemaStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *CreateSchemaStatementContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *CreateSchemaStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *CreateSchemaStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CreateSchemaStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CreateSchemaStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCreateSchemaStatement(s) + } +} + +func (s *CreateSchemaStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCreateSchemaStatement(s) + } +} + +func (p *GQLParser) CreateSchemaStatement() (localctx ICreateSchemaStatementContext) { + localctx = NewCreateSchemaStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 104, GQLParserRULE_createSchemaStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1444) + p.Match(GQLParserCREATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1445) + p.Match(GQLParserSCHEMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1449) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1446) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1447) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1448) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1451) + p.CatalogSchemaParentAndName() + } + +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 +} + +// IDropSchemaStatementContext is an interface to support dynamic dispatch. +type IDropSchemaStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DROP() antlr.TerminalNode + SCHEMA() antlr.TerminalNode + CatalogSchemaParentAndName() ICatalogSchemaParentAndNameContext + IF() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsDropSchemaStatementContext differentiates from other interfaces. + IsDropSchemaStatementContext() +} + +type DropSchemaStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDropSchemaStatementContext() *DropSchemaStatementContext { + var p = new(DropSchemaStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropSchemaStatement + return p +} + +func InitEmptyDropSchemaStatementContext(p *DropSchemaStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropSchemaStatement +} + +func (*DropSchemaStatementContext) IsDropSchemaStatementContext() {} + +func NewDropSchemaStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropSchemaStatementContext { + var p = new(DropSchemaStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dropSchemaStatement + + return p +} + +func (s *DropSchemaStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *DropSchemaStatementContext) DROP() antlr.TerminalNode { + return s.GetToken(GQLParserDROP, 0) +} + +func (s *DropSchemaStatementContext) SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserSCHEMA, 0) +} + +func (s *DropSchemaStatementContext) CatalogSchemaParentAndName() ICatalogSchemaParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogSchemaParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogSchemaParentAndNameContext) +} + +func (s *DropSchemaStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *DropSchemaStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *DropSchemaStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DropSchemaStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DropSchemaStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDropSchemaStatement(s) + } +} + +func (s *DropSchemaStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDropSchemaStatement(s) + } +} + +func (p *GQLParser) DropSchemaStatement() (localctx IDropSchemaStatementContext) { + localctx = NewDropSchemaStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 106, GQLParserRULE_dropSchemaStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1453) + p.Match(GQLParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1454) + p.Match(GQLParserSCHEMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1457) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1455) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1456) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1459) + p.CatalogSchemaParentAndName() + } + +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 +} + +// ICreateGraphStatementContext is an interface to support dynamic dispatch. +type ICreateGraphStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CREATE() antlr.TerminalNode + CatalogGraphParentAndName() ICatalogGraphParentAndNameContext + GRAPH() antlr.TerminalNode + OR() antlr.TerminalNode + REPLACE() antlr.TerminalNode + OpenGraphType() IOpenGraphTypeContext + OfGraphType() IOfGraphTypeContext + GraphSource() IGraphSourceContext + PROPERTY() antlr.TerminalNode + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsCreateGraphStatementContext differentiates from other interfaces. + IsCreateGraphStatementContext() +} + +type CreateGraphStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreateGraphStatementContext() *CreateGraphStatementContext { + var p = new(CreateGraphStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createGraphStatement + return p +} + +func InitEmptyCreateGraphStatementContext(p *CreateGraphStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createGraphStatement +} + +func (*CreateGraphStatementContext) IsCreateGraphStatementContext() {} + +func NewCreateGraphStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateGraphStatementContext { + var p = new(CreateGraphStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_createGraphStatement + + return p +} + +func (s *CreateGraphStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CreateGraphStatementContext) CREATE() antlr.TerminalNode { + return s.GetToken(GQLParserCREATE, 0) +} + +func (s *CreateGraphStatementContext) CatalogGraphParentAndName() ICatalogGraphParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogGraphParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogGraphParentAndNameContext) +} + +func (s *CreateGraphStatementContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *CreateGraphStatementContext) OR() antlr.TerminalNode { + return s.GetToken(GQLParserOR, 0) +} + +func (s *CreateGraphStatementContext) REPLACE() antlr.TerminalNode { + return s.GetToken(GQLParserREPLACE, 0) +} + +func (s *CreateGraphStatementContext) OpenGraphType() IOpenGraphTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOpenGraphTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOpenGraphTypeContext) +} + +func (s *CreateGraphStatementContext) OfGraphType() IOfGraphTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOfGraphTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOfGraphTypeContext) +} + +func (s *CreateGraphStatementContext) GraphSource() IGraphSourceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphSourceContext) +} + +func (s *CreateGraphStatementContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *CreateGraphStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *CreateGraphStatementContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *CreateGraphStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *CreateGraphStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CreateGraphStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CreateGraphStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCreateGraphStatement(s) + } +} + +func (s *CreateGraphStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCreateGraphStatement(s) + } +} + +func (p *GQLParser) CreateGraphStatement() (localctx ICreateGraphStatementContext) { + localctx = NewCreateGraphStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 108, GQLParserRULE_createGraphStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1461) + p.Match(GQLParserCREATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1477) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserGRAPH, GQLParserPROPERTY: + p.SetState(1463) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1462) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1465) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1469) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1466) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1467) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1468) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + + case GQLParserOR: + { + p.SetState(1471) + p.Match(GQLParserOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1472) + p.Match(GQLParserREPLACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1474) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1473) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1476) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + { + p.SetState(1479) + p.CatalogGraphParentAndName() + } + p.SetState(1482) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 53, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1480) + p.OpenGraphType() + } + + case 2: + { + p.SetState(1481) + p.OfGraphType() + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + p.SetState(1485) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserAS { + { + p.SetState(1484) + p.GraphSource() + } + + } + +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 +} + +// IOpenGraphTypeContext is an interface to support dynamic dispatch. +type IOpenGraphTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ANY() antlr.TerminalNode + Typed() ITypedContext + GRAPH() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + + // IsOpenGraphTypeContext differentiates from other interfaces. + IsOpenGraphTypeContext() +} + +type OpenGraphTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOpenGraphTypeContext() *OpenGraphTypeContext { + var p = new(OpenGraphTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openGraphType + return p +} + +func InitEmptyOpenGraphTypeContext(p *OpenGraphTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openGraphType +} + +func (*OpenGraphTypeContext) IsOpenGraphTypeContext() {} + +func NewOpenGraphTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OpenGraphTypeContext { + var p = new(OpenGraphTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_openGraphType + + return p +} + +func (s *OpenGraphTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *OpenGraphTypeContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *OpenGraphTypeContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *OpenGraphTypeContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *OpenGraphTypeContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *OpenGraphTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OpenGraphTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OpenGraphTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOpenGraphType(s) + } +} + +func (s *OpenGraphTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOpenGraphType(s) + } +} + +func (p *GQLParser) OpenGraphType() (localctx IOpenGraphTypeContext) { + localctx = NewOpenGraphTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 110, GQLParserRULE_openGraphType) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1488) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1487) + p.Typed() + } + + } + { + p.SetState(1490) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1495) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserGRAPH || _la == GQLParserPROPERTY { + p.SetState(1492) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1491) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1494) + p.Match(GQLParserGRAPH) + 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 +} + +// IOfGraphTypeContext is an interface to support dynamic dispatch. +type IOfGraphTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphTypeLikeGraph() IGraphTypeLikeGraphContext + GraphTypeReference() IGraphTypeReferenceContext + Typed() ITypedContext + NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext + GRAPH() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + + // IsOfGraphTypeContext differentiates from other interfaces. + IsOfGraphTypeContext() +} + +type OfGraphTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOfGraphTypeContext() *OfGraphTypeContext { + var p = new(OfGraphTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ofGraphType + return p +} + +func InitEmptyOfGraphTypeContext(p *OfGraphTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ofGraphType +} + +func (*OfGraphTypeContext) IsOfGraphTypeContext() {} + +func NewOfGraphTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OfGraphTypeContext { + var p = new(OfGraphTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_ofGraphType + + return p +} + +func (s *OfGraphTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *OfGraphTypeContext) GraphTypeLikeGraph() IGraphTypeLikeGraphContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeLikeGraphContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeLikeGraphContext) +} + +func (s *OfGraphTypeContext) GraphTypeReference() IGraphTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeReferenceContext) +} + +func (s *OfGraphTypeContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *OfGraphTypeContext) NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedGraphTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedGraphTypeSpecificationContext) +} + +func (s *OfGraphTypeContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *OfGraphTypeContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *OfGraphTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OfGraphTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OfGraphTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOfGraphType(s) + } +} + +func (s *OfGraphTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOfGraphType(s) + } +} + +func (p *GQLParser) OfGraphType() (localctx IOfGraphTypeContext) { + localctx = NewOfGraphTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 112, GQLParserRULE_ofGraphType) + var _la int + + p.SetState(1512) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 62, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1497) + p.GraphTypeLikeGraph() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + p.SetState(1499) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1498) + p.Typed() + } + + } + { + p.SetState(1501) + p.GraphTypeReference() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + p.SetState(1503) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(1502) + p.Typed() + } + + } + p.SetState(1509) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserGRAPH || _la == GQLParserPROPERTY { + p.SetState(1506) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1505) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1508) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1511) + p.NestedGraphTypeSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IGraphTypeLikeGraphContext is an interface to support dynamic dispatch. +type IGraphTypeLikeGraphContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LIKE() antlr.TerminalNode + GraphExpression() IGraphExpressionContext + + // IsGraphTypeLikeGraphContext differentiates from other interfaces. + IsGraphTypeLikeGraphContext() +} + +type GraphTypeLikeGraphContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphTypeLikeGraphContext() *GraphTypeLikeGraphContext { + var p = new(GraphTypeLikeGraphContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeLikeGraph + return p +} + +func InitEmptyGraphTypeLikeGraphContext(p *GraphTypeLikeGraphContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeLikeGraph +} + +func (*GraphTypeLikeGraphContext) IsGraphTypeLikeGraphContext() {} + +func NewGraphTypeLikeGraphContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphTypeLikeGraphContext { + var p = new(GraphTypeLikeGraphContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphTypeLikeGraph + + return p +} + +func (s *GraphTypeLikeGraphContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphTypeLikeGraphContext) LIKE() antlr.TerminalNode { + return s.GetToken(GQLParserLIKE, 0) +} + +func (s *GraphTypeLikeGraphContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *GraphTypeLikeGraphContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphTypeLikeGraphContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphTypeLikeGraphContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphTypeLikeGraph(s) + } +} + +func (s *GraphTypeLikeGraphContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphTypeLikeGraph(s) + } +} + +func (p *GQLParser) GraphTypeLikeGraph() (localctx IGraphTypeLikeGraphContext) { + localctx = NewGraphTypeLikeGraphContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 114, GQLParserRULE_graphTypeLikeGraph) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1514) + p.Match(GQLParserLIKE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1515) + p.GraphExpression() + } + +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 +} + +// IGraphSourceContext is an interface to support dynamic dispatch. +type IGraphSourceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AS() antlr.TerminalNode + COPY() antlr.TerminalNode + OF() antlr.TerminalNode + GraphExpression() IGraphExpressionContext + + // IsGraphSourceContext differentiates from other interfaces. + IsGraphSourceContext() +} + +type GraphSourceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphSourceContext() *GraphSourceContext { + var p = new(GraphSourceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphSource + return p +} + +func InitEmptyGraphSourceContext(p *GraphSourceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphSource +} + +func (*GraphSourceContext) IsGraphSourceContext() {} + +func NewGraphSourceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphSourceContext { + var p = new(GraphSourceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphSource + + return p +} + +func (s *GraphSourceContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphSourceContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *GraphSourceContext) COPY() antlr.TerminalNode { + return s.GetToken(GQLParserCOPY, 0) +} + +func (s *GraphSourceContext) OF() antlr.TerminalNode { + return s.GetToken(GQLParserOF, 0) +} + +func (s *GraphSourceContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *GraphSourceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphSourceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphSourceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphSource(s) + } +} + +func (s *GraphSourceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphSource(s) + } +} + +func (p *GQLParser) GraphSource() (localctx IGraphSourceContext) { + localctx = NewGraphSourceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 116, GQLParserRULE_graphSource) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1517) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1518) + p.Match(GQLParserCOPY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1519) + p.Match(GQLParserOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1520) + p.GraphExpression() + } + +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 +} + +// IDropGraphStatementContext is an interface to support dynamic dispatch. +type IDropGraphStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DROP() antlr.TerminalNode + GRAPH() antlr.TerminalNode + CatalogGraphParentAndName() ICatalogGraphParentAndNameContext + PROPERTY() antlr.TerminalNode + IF() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsDropGraphStatementContext differentiates from other interfaces. + IsDropGraphStatementContext() +} + +type DropGraphStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDropGraphStatementContext() *DropGraphStatementContext { + var p = new(DropGraphStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropGraphStatement + return p +} + +func InitEmptyDropGraphStatementContext(p *DropGraphStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropGraphStatement +} + +func (*DropGraphStatementContext) IsDropGraphStatementContext() {} + +func NewDropGraphStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropGraphStatementContext { + var p = new(DropGraphStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dropGraphStatement + + return p +} + +func (s *DropGraphStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *DropGraphStatementContext) DROP() antlr.TerminalNode { + return s.GetToken(GQLParserDROP, 0) +} + +func (s *DropGraphStatementContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *DropGraphStatementContext) CatalogGraphParentAndName() ICatalogGraphParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogGraphParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogGraphParentAndNameContext) +} + +func (s *DropGraphStatementContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *DropGraphStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *DropGraphStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *DropGraphStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DropGraphStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DropGraphStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDropGraphStatement(s) + } +} + +func (s *DropGraphStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDropGraphStatement(s) + } +} + +func (p *GQLParser) DropGraphStatement() (localctx IDropGraphStatementContext) { + localctx = NewDropGraphStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 118, GQLParserRULE_dropGraphStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1522) + p.Match(GQLParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1524) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1523) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1526) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1529) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1527) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1528) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1531) + p.CatalogGraphParentAndName() + } + +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 +} + +// ICreateGraphTypeStatementContext is an interface to support dynamic dispatch. +type ICreateGraphTypeStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CREATE() antlr.TerminalNode + CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext + GraphTypeSource() IGraphTypeSourceContext + GRAPH() antlr.TerminalNode + TYPE() antlr.TerminalNode + OR() antlr.TerminalNode + REPLACE() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + IF() antlr.TerminalNode + NOT() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsCreateGraphTypeStatementContext differentiates from other interfaces. + IsCreateGraphTypeStatementContext() +} + +type CreateGraphTypeStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreateGraphTypeStatementContext() *CreateGraphTypeStatementContext { + var p = new(CreateGraphTypeStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createGraphTypeStatement + return p +} + +func InitEmptyCreateGraphTypeStatementContext(p *CreateGraphTypeStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_createGraphTypeStatement +} + +func (*CreateGraphTypeStatementContext) IsCreateGraphTypeStatementContext() {} + +func NewCreateGraphTypeStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CreateGraphTypeStatementContext { + var p = new(CreateGraphTypeStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_createGraphTypeStatement + + return p +} + +func (s *CreateGraphTypeStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CreateGraphTypeStatementContext) CREATE() antlr.TerminalNode { + return s.GetToken(GQLParserCREATE, 0) +} + +func (s *CreateGraphTypeStatementContext) CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogGraphTypeParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogGraphTypeParentAndNameContext) +} + +func (s *CreateGraphTypeStatementContext) GraphTypeSource() IGraphTypeSourceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeSourceContext) +} + +func (s *CreateGraphTypeStatementContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *CreateGraphTypeStatementContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *CreateGraphTypeStatementContext) OR() antlr.TerminalNode { + return s.GetToken(GQLParserOR, 0) +} + +func (s *CreateGraphTypeStatementContext) REPLACE() antlr.TerminalNode { + return s.GetToken(GQLParserREPLACE, 0) +} + +func (s *CreateGraphTypeStatementContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *CreateGraphTypeStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *CreateGraphTypeStatementContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *CreateGraphTypeStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *CreateGraphTypeStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CreateGraphTypeStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CreateGraphTypeStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCreateGraphTypeStatement(s) + } +} + +func (s *CreateGraphTypeStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCreateGraphTypeStatement(s) + } +} + +func (p *GQLParser) CreateGraphTypeStatement() (localctx ICreateGraphTypeStatementContext) { + localctx = NewCreateGraphTypeStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 120, GQLParserRULE_createGraphTypeStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1533) + p.Match(GQLParserCREATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1551) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserGRAPH, GQLParserPROPERTY: + p.SetState(1535) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1534) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1537) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1538) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1542) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1539) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1540) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1541) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + + case GQLParserOR: + { + p.SetState(1544) + p.Match(GQLParserOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1545) + p.Match(GQLParserREPLACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1547) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1546) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1549) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1550) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + { + p.SetState(1553) + p.CatalogGraphTypeParentAndName() + } + { + p.SetState(1554) + p.GraphTypeSource() + } + +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 +} + +// IGraphTypeSourceContext is an interface to support dynamic dispatch. +type IGraphTypeSourceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CopyOfGraphType() ICopyOfGraphTypeContext + AS() antlr.TerminalNode + GraphTypeLikeGraph() IGraphTypeLikeGraphContext + NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext + + // IsGraphTypeSourceContext differentiates from other interfaces. + IsGraphTypeSourceContext() +} + +type GraphTypeSourceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphTypeSourceContext() *GraphTypeSourceContext { + var p = new(GraphTypeSourceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeSource + return p +} + +func InitEmptyGraphTypeSourceContext(p *GraphTypeSourceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeSource +} + +func (*GraphTypeSourceContext) IsGraphTypeSourceContext() {} + +func NewGraphTypeSourceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphTypeSourceContext { + var p = new(GraphTypeSourceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphTypeSource + + return p +} + +func (s *GraphTypeSourceContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphTypeSourceContext) CopyOfGraphType() ICopyOfGraphTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICopyOfGraphTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICopyOfGraphTypeContext) +} + +func (s *GraphTypeSourceContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *GraphTypeSourceContext) GraphTypeLikeGraph() IGraphTypeLikeGraphContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeLikeGraphContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeLikeGraphContext) +} + +func (s *GraphTypeSourceContext) NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedGraphTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedGraphTypeSpecificationContext) +} + +func (s *GraphTypeSourceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphTypeSourceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphTypeSourceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphTypeSource(s) + } +} + +func (s *GraphTypeSourceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphTypeSource(s) + } +} + +func (p *GQLParser) GraphTypeSource() (localctx IGraphTypeSourceContext) { + localctx = NewGraphTypeSourceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 122, GQLParserRULE_graphTypeSource) + var _la int + + p.SetState(1565) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 71, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(1557) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserAS { + { + p.SetState(1556) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1559) + p.CopyOfGraphType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1560) + p.GraphTypeLikeGraph() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + p.SetState(1562) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserAS { + { + p.SetState(1561) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1564) + p.NestedGraphTypeSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICopyOfGraphTypeContext is an interface to support dynamic dispatch. +type ICopyOfGraphTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + COPY() antlr.TerminalNode + OF() antlr.TerminalNode + GraphTypeReference() IGraphTypeReferenceContext + + // IsCopyOfGraphTypeContext differentiates from other interfaces. + IsCopyOfGraphTypeContext() +} + +type CopyOfGraphTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCopyOfGraphTypeContext() *CopyOfGraphTypeContext { + var p = new(CopyOfGraphTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_copyOfGraphType + return p +} + +func InitEmptyCopyOfGraphTypeContext(p *CopyOfGraphTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_copyOfGraphType +} + +func (*CopyOfGraphTypeContext) IsCopyOfGraphTypeContext() {} + +func NewCopyOfGraphTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CopyOfGraphTypeContext { + var p = new(CopyOfGraphTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_copyOfGraphType + + return p +} + +func (s *CopyOfGraphTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *CopyOfGraphTypeContext) COPY() antlr.TerminalNode { + return s.GetToken(GQLParserCOPY, 0) +} + +func (s *CopyOfGraphTypeContext) OF() antlr.TerminalNode { + return s.GetToken(GQLParserOF, 0) +} + +func (s *CopyOfGraphTypeContext) GraphTypeReference() IGraphTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeReferenceContext) +} + +func (s *CopyOfGraphTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CopyOfGraphTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CopyOfGraphTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCopyOfGraphType(s) + } +} + +func (s *CopyOfGraphTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCopyOfGraphType(s) + } +} + +func (p *GQLParser) CopyOfGraphType() (localctx ICopyOfGraphTypeContext) { + localctx = NewCopyOfGraphTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 124, GQLParserRULE_copyOfGraphType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1567) + p.Match(GQLParserCOPY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1568) + p.Match(GQLParserOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1569) + p.GraphTypeReference() + } + +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 +} + +// IDropGraphTypeStatementContext is an interface to support dynamic dispatch. +type IDropGraphTypeStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DROP() antlr.TerminalNode + GRAPH() antlr.TerminalNode + TYPE() antlr.TerminalNode + CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext + PROPERTY() antlr.TerminalNode + IF() antlr.TerminalNode + EXISTS() antlr.TerminalNode + + // IsDropGraphTypeStatementContext differentiates from other interfaces. + IsDropGraphTypeStatementContext() +} + +type DropGraphTypeStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDropGraphTypeStatementContext() *DropGraphTypeStatementContext { + var p = new(DropGraphTypeStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropGraphTypeStatement + return p +} + +func InitEmptyDropGraphTypeStatementContext(p *DropGraphTypeStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dropGraphTypeStatement +} + +func (*DropGraphTypeStatementContext) IsDropGraphTypeStatementContext() {} + +func NewDropGraphTypeStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DropGraphTypeStatementContext { + var p = new(DropGraphTypeStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dropGraphTypeStatement + + return p +} + +func (s *DropGraphTypeStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *DropGraphTypeStatementContext) DROP() antlr.TerminalNode { + return s.GetToken(GQLParserDROP, 0) +} + +func (s *DropGraphTypeStatementContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *DropGraphTypeStatementContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *DropGraphTypeStatementContext) CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogGraphTypeParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogGraphTypeParentAndNameContext) +} + +func (s *DropGraphTypeStatementContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *DropGraphTypeStatementContext) IF() antlr.TerminalNode { + return s.GetToken(GQLParserIF, 0) +} + +func (s *DropGraphTypeStatementContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *DropGraphTypeStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DropGraphTypeStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DropGraphTypeStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDropGraphTypeStatement(s) + } +} + +func (s *DropGraphTypeStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDropGraphTypeStatement(s) + } +} + +func (p *GQLParser) DropGraphTypeStatement() (localctx IDropGraphTypeStatementContext) { + localctx = NewDropGraphTypeStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 126, GQLParserRULE_dropGraphTypeStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1571) + p.Match(GQLParserDROP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1573) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(1572) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1575) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1576) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1579) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIF { + { + p.SetState(1577) + p.Match(GQLParserIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1578) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1581) + p.CatalogGraphTypeParentAndName() + } + +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 +} + +// ICallCatalogModifyingProcedureStatementContext is an interface to support dynamic dispatch. +type ICallCatalogModifyingProcedureStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CallProcedureStatement() ICallProcedureStatementContext + + // IsCallCatalogModifyingProcedureStatementContext differentiates from other interfaces. + IsCallCatalogModifyingProcedureStatementContext() +} + +type CallCatalogModifyingProcedureStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCallCatalogModifyingProcedureStatementContext() *CallCatalogModifyingProcedureStatementContext { + var p = new(CallCatalogModifyingProcedureStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callCatalogModifyingProcedureStatement + return p +} + +func InitEmptyCallCatalogModifyingProcedureStatementContext(p *CallCatalogModifyingProcedureStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callCatalogModifyingProcedureStatement +} + +func (*CallCatalogModifyingProcedureStatementContext) IsCallCatalogModifyingProcedureStatementContext() { +} + +func NewCallCatalogModifyingProcedureStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CallCatalogModifyingProcedureStatementContext { + var p = new(CallCatalogModifyingProcedureStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_callCatalogModifyingProcedureStatement + + return p +} + +func (s *CallCatalogModifyingProcedureStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CallCatalogModifyingProcedureStatementContext) CallProcedureStatement() ICallProcedureStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallProcedureStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallProcedureStatementContext) +} + +func (s *CallCatalogModifyingProcedureStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CallCatalogModifyingProcedureStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CallCatalogModifyingProcedureStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCallCatalogModifyingProcedureStatement(s) + } +} + +func (s *CallCatalogModifyingProcedureStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCallCatalogModifyingProcedureStatement(s) + } +} + +func (p *GQLParser) CallCatalogModifyingProcedureStatement() (localctx ICallCatalogModifyingProcedureStatementContext) { + localctx = NewCallCatalogModifyingProcedureStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 128, GQLParserRULE_callCatalogModifyingProcedureStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1583) + p.CallProcedureStatement() + } + +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 +} + +// ILinearDataModifyingStatementContext is an interface to support dynamic dispatch. +type ILinearDataModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FocusedLinearDataModifyingStatement() IFocusedLinearDataModifyingStatementContext + AmbientLinearDataModifyingStatement() IAmbientLinearDataModifyingStatementContext + + // IsLinearDataModifyingStatementContext differentiates from other interfaces. + IsLinearDataModifyingStatementContext() +} + +type LinearDataModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLinearDataModifyingStatementContext() *LinearDataModifyingStatementContext { + var p = new(LinearDataModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearDataModifyingStatement + return p +} + +func InitEmptyLinearDataModifyingStatementContext(p *LinearDataModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearDataModifyingStatement +} + +func (*LinearDataModifyingStatementContext) IsLinearDataModifyingStatementContext() {} + +func NewLinearDataModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LinearDataModifyingStatementContext { + var p = new(LinearDataModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_linearDataModifyingStatement + + return p +} + +func (s *LinearDataModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *LinearDataModifyingStatementContext) FocusedLinearDataModifyingStatement() IFocusedLinearDataModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedLinearDataModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedLinearDataModifyingStatementContext) +} + +func (s *LinearDataModifyingStatementContext) AmbientLinearDataModifyingStatement() IAmbientLinearDataModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAmbientLinearDataModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAmbientLinearDataModifyingStatementContext) +} + +func (s *LinearDataModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LinearDataModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LinearDataModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLinearDataModifyingStatement(s) + } +} + +func (s *LinearDataModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLinearDataModifyingStatement(s) + } +} + +func (p *GQLParser) LinearDataModifyingStatement() (localctx ILinearDataModifyingStatementContext) { + localctx = NewLinearDataModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 130, GQLParserRULE_linearDataModifyingStatement) + p.SetState(1587) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUSE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1585) + p.FocusedLinearDataModifyingStatement() + } + + case GQLParserCALL, GQLParserDELETE, GQLParserDETACH, GQLParserFILTER, GQLParserFOR, GQLParserINSERT, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserNODETACH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserREMOVE, GQLParserSET, GQLParserSKIP_RESERVED_WORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1586) + p.AmbientLinearDataModifyingStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IFocusedLinearDataModifyingStatementContext is an interface to support dynamic dispatch. +type IFocusedLinearDataModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FocusedLinearDataModifyingStatementBody() IFocusedLinearDataModifyingStatementBodyContext + FocusedNestedDataModifyingProcedureSpecification() IFocusedNestedDataModifyingProcedureSpecificationContext + + // IsFocusedLinearDataModifyingStatementContext differentiates from other interfaces. + IsFocusedLinearDataModifyingStatementContext() +} + +type FocusedLinearDataModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedLinearDataModifyingStatementContext() *FocusedLinearDataModifyingStatementContext { + var p = new(FocusedLinearDataModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatement + return p +} + +func InitEmptyFocusedLinearDataModifyingStatementContext(p *FocusedLinearDataModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatement +} + +func (*FocusedLinearDataModifyingStatementContext) IsFocusedLinearDataModifyingStatementContext() {} + +func NewFocusedLinearDataModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedLinearDataModifyingStatementContext { + var p = new(FocusedLinearDataModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatement + + return p +} + +func (s *FocusedLinearDataModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedLinearDataModifyingStatementContext) FocusedLinearDataModifyingStatementBody() IFocusedLinearDataModifyingStatementBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedLinearDataModifyingStatementBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedLinearDataModifyingStatementBodyContext) +} + +func (s *FocusedLinearDataModifyingStatementContext) FocusedNestedDataModifyingProcedureSpecification() IFocusedNestedDataModifyingProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedNestedDataModifyingProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedNestedDataModifyingProcedureSpecificationContext) +} + +func (s *FocusedLinearDataModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedLinearDataModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedLinearDataModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedLinearDataModifyingStatement(s) + } +} + +func (s *FocusedLinearDataModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedLinearDataModifyingStatement(s) + } +} + +func (p *GQLParser) FocusedLinearDataModifyingStatement() (localctx IFocusedLinearDataModifyingStatementContext) { + localctx = NewFocusedLinearDataModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 132, GQLParserRULE_focusedLinearDataModifyingStatement) + p.SetState(1591) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 75, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1589) + p.FocusedLinearDataModifyingStatementBody() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1590) + p.FocusedNestedDataModifyingProcedureSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IFocusedLinearDataModifyingStatementBodyContext is an interface to support dynamic dispatch. +type IFocusedLinearDataModifyingStatementBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + SimpleLinearDataAccessingStatement() ISimpleLinearDataAccessingStatementContext + PrimitiveResultStatement() IPrimitiveResultStatementContext + + // IsFocusedLinearDataModifyingStatementBodyContext differentiates from other interfaces. + IsFocusedLinearDataModifyingStatementBodyContext() +} + +type FocusedLinearDataModifyingStatementBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedLinearDataModifyingStatementBodyContext() *FocusedLinearDataModifyingStatementBodyContext { + var p = new(FocusedLinearDataModifyingStatementBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatementBody + return p +} + +func InitEmptyFocusedLinearDataModifyingStatementBodyContext(p *FocusedLinearDataModifyingStatementBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatementBody +} + +func (*FocusedLinearDataModifyingStatementBodyContext) IsFocusedLinearDataModifyingStatementBodyContext() { +} + +func NewFocusedLinearDataModifyingStatementBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedLinearDataModifyingStatementBodyContext { + var p = new(FocusedLinearDataModifyingStatementBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedLinearDataModifyingStatementBody + + return p +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedLinearDataModifyingStatementBodyContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) SimpleLinearDataAccessingStatement() ISimpleLinearDataAccessingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleLinearDataAccessingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleLinearDataAccessingStatementContext) +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) PrimitiveResultStatement() IPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveResultStatementContext) +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedLinearDataModifyingStatementBody(s) + } +} + +func (s *FocusedLinearDataModifyingStatementBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedLinearDataModifyingStatementBody(s) + } +} + +func (p *GQLParser) FocusedLinearDataModifyingStatementBody() (localctx IFocusedLinearDataModifyingStatementBodyContext) { + localctx = NewFocusedLinearDataModifyingStatementBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 134, GQLParserRULE_focusedLinearDataModifyingStatementBody) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1593) + p.UseGraphClause() + } + { + p.SetState(1594) + p.SimpleLinearDataAccessingStatement() + } + p.SetState(1596) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserFINISH || _la == GQLParserRETURN { + { + p.SetState(1595) + p.PrimitiveResultStatement() + } + + } + +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 +} + +// IFocusedNestedDataModifyingProcedureSpecificationContext is an interface to support dynamic dispatch. +type IFocusedNestedDataModifyingProcedureSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + NestedDataModifyingProcedureSpecification() INestedDataModifyingProcedureSpecificationContext + + // IsFocusedNestedDataModifyingProcedureSpecificationContext differentiates from other interfaces. + IsFocusedNestedDataModifyingProcedureSpecificationContext() +} + +type FocusedNestedDataModifyingProcedureSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedNestedDataModifyingProcedureSpecificationContext() *FocusedNestedDataModifyingProcedureSpecificationContext { + var p = new(FocusedNestedDataModifyingProcedureSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedNestedDataModifyingProcedureSpecification + return p +} + +func InitEmptyFocusedNestedDataModifyingProcedureSpecificationContext(p *FocusedNestedDataModifyingProcedureSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedNestedDataModifyingProcedureSpecification +} + +func (*FocusedNestedDataModifyingProcedureSpecificationContext) IsFocusedNestedDataModifyingProcedureSpecificationContext() { +} + +func NewFocusedNestedDataModifyingProcedureSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedNestedDataModifyingProcedureSpecificationContext { + var p = new(FocusedNestedDataModifyingProcedureSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedNestedDataModifyingProcedureSpecification + + return p +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) GetParser() antlr.Parser { + return s.parser +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) NestedDataModifyingProcedureSpecification() INestedDataModifyingProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedDataModifyingProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedDataModifyingProcedureSpecificationContext) +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedNestedDataModifyingProcedureSpecification(s) + } +} + +func (s *FocusedNestedDataModifyingProcedureSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedNestedDataModifyingProcedureSpecification(s) + } +} + +func (p *GQLParser) FocusedNestedDataModifyingProcedureSpecification() (localctx IFocusedNestedDataModifyingProcedureSpecificationContext) { + localctx = NewFocusedNestedDataModifyingProcedureSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 136, GQLParserRULE_focusedNestedDataModifyingProcedureSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1598) + p.UseGraphClause() + } + { + p.SetState(1599) + p.NestedDataModifyingProcedureSpecification() + } + +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 +} + +// IAmbientLinearDataModifyingStatementContext is an interface to support dynamic dispatch. +type IAmbientLinearDataModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AmbientLinearDataModifyingStatementBody() IAmbientLinearDataModifyingStatementBodyContext + NestedDataModifyingProcedureSpecification() INestedDataModifyingProcedureSpecificationContext + + // IsAmbientLinearDataModifyingStatementContext differentiates from other interfaces. + IsAmbientLinearDataModifyingStatementContext() +} + +type AmbientLinearDataModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAmbientLinearDataModifyingStatementContext() *AmbientLinearDataModifyingStatementContext { + var p = new(AmbientLinearDataModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatement + return p +} + +func InitEmptyAmbientLinearDataModifyingStatementContext(p *AmbientLinearDataModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatement +} + +func (*AmbientLinearDataModifyingStatementContext) IsAmbientLinearDataModifyingStatementContext() {} + +func NewAmbientLinearDataModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AmbientLinearDataModifyingStatementContext { + var p = new(AmbientLinearDataModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatement + + return p +} + +func (s *AmbientLinearDataModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *AmbientLinearDataModifyingStatementContext) AmbientLinearDataModifyingStatementBody() IAmbientLinearDataModifyingStatementBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAmbientLinearDataModifyingStatementBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAmbientLinearDataModifyingStatementBodyContext) +} + +func (s *AmbientLinearDataModifyingStatementContext) NestedDataModifyingProcedureSpecification() INestedDataModifyingProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedDataModifyingProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedDataModifyingProcedureSpecificationContext) +} + +func (s *AmbientLinearDataModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AmbientLinearDataModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AmbientLinearDataModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAmbientLinearDataModifyingStatement(s) + } +} + +func (s *AmbientLinearDataModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAmbientLinearDataModifyingStatement(s) + } +} + +func (p *GQLParser) AmbientLinearDataModifyingStatement() (localctx IAmbientLinearDataModifyingStatementContext) { + localctx = NewAmbientLinearDataModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 138, GQLParserRULE_ambientLinearDataModifyingStatement) + p.SetState(1603) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCALL, GQLParserDELETE, GQLParserDETACH, GQLParserFILTER, GQLParserFOR, GQLParserINSERT, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserNODETACH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserREMOVE, GQLParserSET, GQLParserSKIP_RESERVED_WORD: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1601) + p.AmbientLinearDataModifyingStatementBody() + } + + case GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1602) + p.NestedDataModifyingProcedureSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IAmbientLinearDataModifyingStatementBodyContext is an interface to support dynamic dispatch. +type IAmbientLinearDataModifyingStatementBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimpleLinearDataAccessingStatement() ISimpleLinearDataAccessingStatementContext + PrimitiveResultStatement() IPrimitiveResultStatementContext + + // IsAmbientLinearDataModifyingStatementBodyContext differentiates from other interfaces. + IsAmbientLinearDataModifyingStatementBodyContext() +} + +type AmbientLinearDataModifyingStatementBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAmbientLinearDataModifyingStatementBodyContext() *AmbientLinearDataModifyingStatementBodyContext { + var p = new(AmbientLinearDataModifyingStatementBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatementBody + return p +} + +func InitEmptyAmbientLinearDataModifyingStatementBodyContext(p *AmbientLinearDataModifyingStatementBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatementBody +} + +func (*AmbientLinearDataModifyingStatementBodyContext) IsAmbientLinearDataModifyingStatementBodyContext() { +} + +func NewAmbientLinearDataModifyingStatementBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AmbientLinearDataModifyingStatementBodyContext { + var p = new(AmbientLinearDataModifyingStatementBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_ambientLinearDataModifyingStatementBody + + return p +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *AmbientLinearDataModifyingStatementBodyContext) SimpleLinearDataAccessingStatement() ISimpleLinearDataAccessingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleLinearDataAccessingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleLinearDataAccessingStatementContext) +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) PrimitiveResultStatement() IPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveResultStatementContext) +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAmbientLinearDataModifyingStatementBody(s) + } +} + +func (s *AmbientLinearDataModifyingStatementBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAmbientLinearDataModifyingStatementBody(s) + } +} + +func (p *GQLParser) AmbientLinearDataModifyingStatementBody() (localctx IAmbientLinearDataModifyingStatementBodyContext) { + localctx = NewAmbientLinearDataModifyingStatementBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 140, GQLParserRULE_ambientLinearDataModifyingStatementBody) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1605) + p.SimpleLinearDataAccessingStatement() + } + p.SetState(1607) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserFINISH || _la == GQLParserRETURN { + { + p.SetState(1606) + p.PrimitiveResultStatement() + } + + } + +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 +} + +// ISimpleLinearDataAccessingStatementContext is an interface to support dynamic dispatch. +type ISimpleLinearDataAccessingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSimpleDataAccessingStatement() []ISimpleDataAccessingStatementContext + SimpleDataAccessingStatement(i int) ISimpleDataAccessingStatementContext + + // IsSimpleLinearDataAccessingStatementContext differentiates from other interfaces. + IsSimpleLinearDataAccessingStatementContext() +} + +type SimpleLinearDataAccessingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleLinearDataAccessingStatementContext() *SimpleLinearDataAccessingStatementContext { + var p = new(SimpleLinearDataAccessingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleLinearDataAccessingStatement + return p +} + +func InitEmptySimpleLinearDataAccessingStatementContext(p *SimpleLinearDataAccessingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleLinearDataAccessingStatement +} + +func (*SimpleLinearDataAccessingStatementContext) IsSimpleLinearDataAccessingStatementContext() {} + +func NewSimpleLinearDataAccessingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleLinearDataAccessingStatementContext { + var p = new(SimpleLinearDataAccessingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleLinearDataAccessingStatement + + return p +} + +func (s *SimpleLinearDataAccessingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleLinearDataAccessingStatementContext) AllSimpleDataAccessingStatement() []ISimpleDataAccessingStatementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimpleDataAccessingStatementContext); ok { + len++ + } + } + + tst := make([]ISimpleDataAccessingStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimpleDataAccessingStatementContext); ok { + tst[i] = t.(ISimpleDataAccessingStatementContext) + i++ + } + } + + return tst +} + +func (s *SimpleLinearDataAccessingStatementContext) SimpleDataAccessingStatement(i int) ISimpleDataAccessingStatementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleDataAccessingStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimpleDataAccessingStatementContext) +} + +func (s *SimpleLinearDataAccessingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleLinearDataAccessingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleLinearDataAccessingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleLinearDataAccessingStatement(s) + } +} + +func (s *SimpleLinearDataAccessingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleLinearDataAccessingStatement(s) + } +} + +func (p *GQLParser) SimpleLinearDataAccessingStatement() (localctx ISimpleLinearDataAccessingStatementContext) { + localctx = NewSimpleLinearDataAccessingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 142, GQLParserRULE_simpleLinearDataAccessingStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1610) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserCALL || ((int64((_la-76)) & ^0x3f) == 0 && ((int64(1)<<(_la-76))&90072009744089097) != 0) || ((int64((_la-143)) & ^0x3f) == 0 && ((int64(1)<<(_la-143))&4644354296316033) != 0) { + { + p.SetState(1609) + p.SimpleDataAccessingStatement() + } + + p.SetState(1612) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISimpleDataAccessingStatementContext is an interface to support dynamic dispatch. +type ISimpleDataAccessingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimpleQueryStatement() ISimpleQueryStatementContext + SimpleDataModifyingStatement() ISimpleDataModifyingStatementContext + + // IsSimpleDataAccessingStatementContext differentiates from other interfaces. + IsSimpleDataAccessingStatementContext() +} + +type SimpleDataAccessingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleDataAccessingStatementContext() *SimpleDataAccessingStatementContext { + var p = new(SimpleDataAccessingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDataAccessingStatement + return p +} + +func InitEmptySimpleDataAccessingStatementContext(p *SimpleDataAccessingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDataAccessingStatement +} + +func (*SimpleDataAccessingStatementContext) IsSimpleDataAccessingStatementContext() {} + +func NewSimpleDataAccessingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleDataAccessingStatementContext { + var p = new(SimpleDataAccessingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleDataAccessingStatement + + return p +} + +func (s *SimpleDataAccessingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleDataAccessingStatementContext) SimpleQueryStatement() ISimpleQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleQueryStatementContext) +} + +func (s *SimpleDataAccessingStatementContext) SimpleDataModifyingStatement() ISimpleDataModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleDataModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleDataModifyingStatementContext) +} + +func (s *SimpleDataAccessingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleDataAccessingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleDataAccessingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleDataAccessingStatement(s) + } +} + +func (s *SimpleDataAccessingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleDataAccessingStatement(s) + } +} + +func (p *GQLParser) SimpleDataAccessingStatement() (localctx ISimpleDataAccessingStatementContext) { + localctx = NewSimpleDataAccessingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 144, GQLParserRULE_simpleDataAccessingStatement) + p.SetState(1616) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 80, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1614) + p.SimpleQueryStatement() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1615) + p.SimpleDataModifyingStatement() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimpleDataModifyingStatementContext is an interface to support dynamic dispatch. +type ISimpleDataModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PrimitiveDataModifyingStatement() IPrimitiveDataModifyingStatementContext + CallDataModifyingProcedureStatement() ICallDataModifyingProcedureStatementContext + + // IsSimpleDataModifyingStatementContext differentiates from other interfaces. + IsSimpleDataModifyingStatementContext() +} + +type SimpleDataModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleDataModifyingStatementContext() *SimpleDataModifyingStatementContext { + var p = new(SimpleDataModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDataModifyingStatement + return p +} + +func InitEmptySimpleDataModifyingStatementContext(p *SimpleDataModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDataModifyingStatement +} + +func (*SimpleDataModifyingStatementContext) IsSimpleDataModifyingStatementContext() {} + +func NewSimpleDataModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleDataModifyingStatementContext { + var p = new(SimpleDataModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleDataModifyingStatement + + return p +} + +func (s *SimpleDataModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleDataModifyingStatementContext) PrimitiveDataModifyingStatement() IPrimitiveDataModifyingStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveDataModifyingStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveDataModifyingStatementContext) +} + +func (s *SimpleDataModifyingStatementContext) CallDataModifyingProcedureStatement() ICallDataModifyingProcedureStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallDataModifyingProcedureStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallDataModifyingProcedureStatementContext) +} + +func (s *SimpleDataModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleDataModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleDataModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleDataModifyingStatement(s) + } +} + +func (s *SimpleDataModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleDataModifyingStatement(s) + } +} + +func (p *GQLParser) SimpleDataModifyingStatement() (localctx ISimpleDataModifyingStatementContext) { + localctx = NewSimpleDataModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 146, GQLParserRULE_simpleDataModifyingStatement) + p.SetState(1620) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDELETE, GQLParserDETACH, GQLParserINSERT, GQLParserNODETACH, GQLParserREMOVE, GQLParserSET: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1618) + p.PrimitiveDataModifyingStatement() + } + + case GQLParserCALL, GQLParserOPTIONAL: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1619) + p.CallDataModifyingProcedureStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPrimitiveDataModifyingStatementContext is an interface to support dynamic dispatch. +type IPrimitiveDataModifyingStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + InsertStatement() IInsertStatementContext + SetStatement() ISetStatementContext + RemoveStatement() IRemoveStatementContext + DeleteStatement() IDeleteStatementContext + + // IsPrimitiveDataModifyingStatementContext differentiates from other interfaces. + IsPrimitiveDataModifyingStatementContext() +} + +type PrimitiveDataModifyingStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPrimitiveDataModifyingStatementContext() *PrimitiveDataModifyingStatementContext { + var p = new(PrimitiveDataModifyingStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveDataModifyingStatement + return p +} + +func InitEmptyPrimitiveDataModifyingStatementContext(p *PrimitiveDataModifyingStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveDataModifyingStatement +} + +func (*PrimitiveDataModifyingStatementContext) IsPrimitiveDataModifyingStatementContext() {} + +func NewPrimitiveDataModifyingStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrimitiveDataModifyingStatementContext { + var p = new(PrimitiveDataModifyingStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_primitiveDataModifyingStatement + + return p +} + +func (s *PrimitiveDataModifyingStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *PrimitiveDataModifyingStatementContext) InsertStatement() IInsertStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertStatementContext) +} + +func (s *PrimitiveDataModifyingStatementContext) SetStatement() ISetStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetStatementContext) +} + +func (s *PrimitiveDataModifyingStatementContext) RemoveStatement() IRemoveStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRemoveStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRemoveStatementContext) +} + +func (s *PrimitiveDataModifyingStatementContext) DeleteStatement() IDeleteStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDeleteStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDeleteStatementContext) +} + +func (s *PrimitiveDataModifyingStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrimitiveDataModifyingStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PrimitiveDataModifyingStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrimitiveDataModifyingStatement(s) + } +} + +func (s *PrimitiveDataModifyingStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrimitiveDataModifyingStatement(s) + } +} + +func (p *GQLParser) PrimitiveDataModifyingStatement() (localctx IPrimitiveDataModifyingStatementContext) { + localctx = NewPrimitiveDataModifyingStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 148, GQLParserRULE_primitiveDataModifyingStatement) + p.SetState(1626) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserINSERT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1622) + p.InsertStatement() + } + + case GQLParserSET: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1623) + p.SetStatement() + } + + case GQLParserREMOVE: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1624) + p.RemoveStatement() + } + + case GQLParserDELETE, GQLParserDETACH, GQLParserNODETACH: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1625) + p.DeleteStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IInsertStatementContext is an interface to support dynamic dispatch. +type IInsertStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + INSERT() antlr.TerminalNode + InsertGraphPattern() IInsertGraphPatternContext + + // IsInsertStatementContext differentiates from other interfaces. + IsInsertStatementContext() +} + +type InsertStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertStatementContext() *InsertStatementContext { + var p = new(InsertStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertStatement + return p +} + +func InitEmptyInsertStatementContext(p *InsertStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertStatement +} + +func (*InsertStatementContext) IsInsertStatementContext() {} + +func NewInsertStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertStatementContext { + var p = new(InsertStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertStatement + + return p +} + +func (s *InsertStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertStatementContext) INSERT() antlr.TerminalNode { + return s.GetToken(GQLParserINSERT, 0) +} + +func (s *InsertStatementContext) InsertGraphPattern() IInsertGraphPatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertGraphPatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertGraphPatternContext) +} + +func (s *InsertStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertStatement(s) + } +} + +func (s *InsertStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertStatement(s) + } +} + +func (p *GQLParser) InsertStatement() (localctx IInsertStatementContext) { + localctx = NewInsertStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 150, GQLParserRULE_insertStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1628) + p.Match(GQLParserINSERT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1629) + p.InsertGraphPattern() + } + +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 +} + +// ISetStatementContext is an interface to support dynamic dispatch. +type ISetStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SET() antlr.TerminalNode + SetItemList() ISetItemListContext + + // IsSetStatementContext differentiates from other interfaces. + IsSetStatementContext() +} + +type SetStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetStatementContext() *SetStatementContext { + var p = new(SetStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setStatement + return p +} + +func InitEmptySetStatementContext(p *SetStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setStatement +} + +func (*SetStatementContext) IsSetStatementContext() {} + +func NewSetStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetStatementContext { + var p = new(SetStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setStatement + + return p +} + +func (s *SetStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetStatementContext) SET() antlr.TerminalNode { + return s.GetToken(GQLParserSET, 0) +} + +func (s *SetStatementContext) SetItemList() ISetItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetItemListContext) +} + +func (s *SetStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetStatement(s) + } +} + +func (s *SetStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetStatement(s) + } +} + +func (p *GQLParser) SetStatement() (localctx ISetStatementContext) { + localctx = NewSetStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 152, GQLParserRULE_setStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1631) + p.Match(GQLParserSET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1632) + p.SetItemList() + } + +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 +} + +// ISetItemListContext is an interface to support dynamic dispatch. +type ISetItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSetItem() []ISetItemContext + SetItem(i int) ISetItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSetItemListContext differentiates from other interfaces. + IsSetItemListContext() +} + +type SetItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetItemListContext() *SetItemListContext { + var p = new(SetItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setItemList + return p +} + +func InitEmptySetItemListContext(p *SetItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setItemList +} + +func (*SetItemListContext) IsSetItemListContext() {} + +func NewSetItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetItemListContext { + var p = new(SetItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setItemList + + return p +} + +func (s *SetItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetItemListContext) AllSetItem() []ISetItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISetItemContext); ok { + len++ + } + } + + tst := make([]ISetItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISetItemContext); ok { + tst[i] = t.(ISetItemContext) + i++ + } + } + + return tst +} + +func (s *SetItemListContext) SetItem(i int) ISetItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISetItemContext) +} + +func (s *SetItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *SetItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *SetItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetItemList(s) + } +} + +func (s *SetItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetItemList(s) + } +} + +func (p *GQLParser) SetItemList() (localctx ISetItemListContext) { + localctx = NewSetItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 154, GQLParserRULE_setItemList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1634) + p.SetItem() + } + p.SetState(1639) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(1635) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1636) + p.SetItem() + } + + p.SetState(1641) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISetItemContext is an interface to support dynamic dispatch. +type ISetItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SetPropertyItem() ISetPropertyItemContext + SetAllPropertiesItem() ISetAllPropertiesItemContext + SetLabelItem() ISetLabelItemContext + + // IsSetItemContext differentiates from other interfaces. + IsSetItemContext() +} + +type SetItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetItemContext() *SetItemContext { + var p = new(SetItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setItem + return p +} + +func InitEmptySetItemContext(p *SetItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setItem +} + +func (*SetItemContext) IsSetItemContext() {} + +func NewSetItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetItemContext { + var p = new(SetItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setItem + + return p +} + +func (s *SetItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetItemContext) SetPropertyItem() ISetPropertyItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetPropertyItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetPropertyItemContext) +} + +func (s *SetItemContext) SetAllPropertiesItem() ISetAllPropertiesItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetAllPropertiesItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetAllPropertiesItemContext) +} + +func (s *SetItemContext) SetLabelItem() ISetLabelItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetLabelItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetLabelItemContext) +} + +func (s *SetItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetItem(s) + } +} + +func (s *SetItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetItem(s) + } +} + +func (p *GQLParser) SetItem() (localctx ISetItemContext) { + localctx = NewSetItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 156, GQLParserRULE_setItem) + p.SetState(1645) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 84, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1642) + p.SetPropertyItem() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1643) + p.SetAllPropertiesItem() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1644) + p.SetLabelItem() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISetPropertyItemContext is an interface to support dynamic dispatch. +type ISetPropertyItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + PERIOD() antlr.TerminalNode + PropertyName() IPropertyNameContext + EQUALS_OPERATOR() antlr.TerminalNode + ValueExpression() IValueExpressionContext + + // IsSetPropertyItemContext differentiates from other interfaces. + IsSetPropertyItemContext() +} + +type SetPropertyItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetPropertyItemContext() *SetPropertyItemContext { + var p = new(SetPropertyItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setPropertyItem + return p +} + +func InitEmptySetPropertyItemContext(p *SetPropertyItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setPropertyItem +} + +func (*SetPropertyItemContext) IsSetPropertyItemContext() {} + +func NewSetPropertyItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetPropertyItemContext { + var p = new(SetPropertyItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setPropertyItem + + return p +} + +func (s *SetPropertyItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetPropertyItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *SetPropertyItemContext) PERIOD() antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, 0) +} + +func (s *SetPropertyItemContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *SetPropertyItemContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *SetPropertyItemContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *SetPropertyItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetPropertyItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetPropertyItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetPropertyItem(s) + } +} + +func (s *SetPropertyItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetPropertyItem(s) + } +} + +func (p *GQLParser) SetPropertyItem() (localctx ISetPropertyItemContext) { + localctx = NewSetPropertyItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 158, GQLParserRULE_setPropertyItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1647) + p.BindingVariableReference() + } + { + p.SetState(1648) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1649) + p.PropertyName() + } + { + p.SetState(1650) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1651) + p.valueExpression(0) + } + +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 +} + +// ISetAllPropertiesItemContext is an interface to support dynamic dispatch. +type ISetAllPropertiesItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + EQUALS_OPERATOR() antlr.TerminalNode + LEFT_BRACE() antlr.TerminalNode + RIGHT_BRACE() antlr.TerminalNode + PropertyKeyValuePairList() IPropertyKeyValuePairListContext + + // IsSetAllPropertiesItemContext differentiates from other interfaces. + IsSetAllPropertiesItemContext() +} + +type SetAllPropertiesItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetAllPropertiesItemContext() *SetAllPropertiesItemContext { + var p = new(SetAllPropertiesItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setAllPropertiesItem + return p +} + +func InitEmptySetAllPropertiesItemContext(p *SetAllPropertiesItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setAllPropertiesItem +} + +func (*SetAllPropertiesItemContext) IsSetAllPropertiesItemContext() {} + +func NewSetAllPropertiesItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetAllPropertiesItemContext { + var p = new(SetAllPropertiesItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setAllPropertiesItem + + return p +} + +func (s *SetAllPropertiesItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetAllPropertiesItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *SetAllPropertiesItemContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *SetAllPropertiesItemContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *SetAllPropertiesItemContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *SetAllPropertiesItemContext) PropertyKeyValuePairList() IPropertyKeyValuePairListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyKeyValuePairListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyKeyValuePairListContext) +} + +func (s *SetAllPropertiesItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetAllPropertiesItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetAllPropertiesItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetAllPropertiesItem(s) + } +} + +func (s *SetAllPropertiesItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetAllPropertiesItem(s) + } +} + +func (p *GQLParser) SetAllPropertiesItem() (localctx ISetAllPropertiesItemContext) { + localctx = NewSetAllPropertiesItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 160, GQLParserRULE_setAllPropertiesItem) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1653) + p.BindingVariableReference() + } + { + p.SetState(1654) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1655) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1657) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) { + { + p.SetState(1656) + p.PropertyKeyValuePairList() + } + + } + { + p.SetState(1659) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// ISetLabelItemContext is an interface to support dynamic dispatch. +type ISetLabelItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + IsOrColon() IIsOrColonContext + LabelName() ILabelNameContext + + // IsSetLabelItemContext differentiates from other interfaces. + IsSetLabelItemContext() +} + +type SetLabelItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetLabelItemContext() *SetLabelItemContext { + var p = new(SetLabelItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setLabelItem + return p +} + +func InitEmptySetLabelItemContext(p *SetLabelItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setLabelItem +} + +func (*SetLabelItemContext) IsSetLabelItemContext() {} + +func NewSetLabelItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetLabelItemContext { + var p = new(SetLabelItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setLabelItem + + return p +} + +func (s *SetLabelItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetLabelItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *SetLabelItemContext) IsOrColon() IIsOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsOrColonContext) +} + +func (s *SetLabelItemContext) LabelName() ILabelNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *SetLabelItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetLabelItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetLabelItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetLabelItem(s) + } +} + +func (s *SetLabelItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetLabelItem(s) + } +} + +func (p *GQLParser) SetLabelItem() (localctx ISetLabelItemContext) { + localctx = NewSetLabelItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 162, GQLParserRULE_setLabelItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1661) + p.BindingVariableReference() + } + { + p.SetState(1662) + p.IsOrColon() + } + { + p.SetState(1663) + p.LabelName() + } + +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 +} + +// IRemoveStatementContext is an interface to support dynamic dispatch. +type IRemoveStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + REMOVE() antlr.TerminalNode + RemoveItemList() IRemoveItemListContext + + // IsRemoveStatementContext differentiates from other interfaces. + IsRemoveStatementContext() +} + +type RemoveStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRemoveStatementContext() *RemoveStatementContext { + var p = new(RemoveStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeStatement + return p +} + +func InitEmptyRemoveStatementContext(p *RemoveStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeStatement +} + +func (*RemoveStatementContext) IsRemoveStatementContext() {} + +func NewRemoveStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RemoveStatementContext { + var p = new(RemoveStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_removeStatement + + return p +} + +func (s *RemoveStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *RemoveStatementContext) REMOVE() antlr.TerminalNode { + return s.GetToken(GQLParserREMOVE, 0) +} + +func (s *RemoveStatementContext) RemoveItemList() IRemoveItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRemoveItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRemoveItemListContext) +} + +func (s *RemoveStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RemoveStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RemoveStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRemoveStatement(s) + } +} + +func (s *RemoveStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRemoveStatement(s) + } +} + +func (p *GQLParser) RemoveStatement() (localctx IRemoveStatementContext) { + localctx = NewRemoveStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 164, GQLParserRULE_removeStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1665) + p.Match(GQLParserREMOVE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1666) + p.RemoveItemList() + } + +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 +} + +// IRemoveItemListContext is an interface to support dynamic dispatch. +type IRemoveItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllRemoveItem() []IRemoveItemContext + RemoveItem(i int) IRemoveItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsRemoveItemListContext differentiates from other interfaces. + IsRemoveItemListContext() +} + +type RemoveItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRemoveItemListContext() *RemoveItemListContext { + var p = new(RemoveItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeItemList + return p +} + +func InitEmptyRemoveItemListContext(p *RemoveItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeItemList +} + +func (*RemoveItemListContext) IsRemoveItemListContext() {} + +func NewRemoveItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RemoveItemListContext { + var p = new(RemoveItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_removeItemList + + return p +} + +func (s *RemoveItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *RemoveItemListContext) AllRemoveItem() []IRemoveItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IRemoveItemContext); ok { + len++ + } + } + + tst := make([]IRemoveItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IRemoveItemContext); ok { + tst[i] = t.(IRemoveItemContext) + i++ + } + } + + return tst +} + +func (s *RemoveItemListContext) RemoveItem(i int) IRemoveItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRemoveItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IRemoveItemContext) +} + +func (s *RemoveItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *RemoveItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *RemoveItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RemoveItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RemoveItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRemoveItemList(s) + } +} + +func (s *RemoveItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRemoveItemList(s) + } +} + +func (p *GQLParser) RemoveItemList() (localctx IRemoveItemListContext) { + localctx = NewRemoveItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 166, GQLParserRULE_removeItemList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1668) + p.RemoveItem() + } + p.SetState(1673) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(1669) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1670) + p.RemoveItem() + } + + p.SetState(1675) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IRemoveItemContext is an interface to support dynamic dispatch. +type IRemoveItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RemovePropertyItem() IRemovePropertyItemContext + RemoveLabelItem() IRemoveLabelItemContext + + // IsRemoveItemContext differentiates from other interfaces. + IsRemoveItemContext() +} + +type RemoveItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRemoveItemContext() *RemoveItemContext { + var p = new(RemoveItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeItem + return p +} + +func InitEmptyRemoveItemContext(p *RemoveItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeItem +} + +func (*RemoveItemContext) IsRemoveItemContext() {} + +func NewRemoveItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RemoveItemContext { + var p = new(RemoveItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_removeItem + + return p +} + +func (s *RemoveItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *RemoveItemContext) RemovePropertyItem() IRemovePropertyItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRemovePropertyItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRemovePropertyItemContext) +} + +func (s *RemoveItemContext) RemoveLabelItem() IRemoveLabelItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRemoveLabelItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRemoveLabelItemContext) +} + +func (s *RemoveItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RemoveItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RemoveItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRemoveItem(s) + } +} + +func (s *RemoveItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRemoveItem(s) + } +} + +func (p *GQLParser) RemoveItem() (localctx IRemoveItemContext) { + localctx = NewRemoveItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 168, GQLParserRULE_removeItem) + p.SetState(1678) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 87, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1676) + p.RemovePropertyItem() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1677) + p.RemoveLabelItem() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IRemovePropertyItemContext is an interface to support dynamic dispatch. +type IRemovePropertyItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + PERIOD() antlr.TerminalNode + PropertyName() IPropertyNameContext + + // IsRemovePropertyItemContext differentiates from other interfaces. + IsRemovePropertyItemContext() +} + +type RemovePropertyItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRemovePropertyItemContext() *RemovePropertyItemContext { + var p = new(RemovePropertyItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removePropertyItem + return p +} + +func InitEmptyRemovePropertyItemContext(p *RemovePropertyItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removePropertyItem +} + +func (*RemovePropertyItemContext) IsRemovePropertyItemContext() {} + +func NewRemovePropertyItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RemovePropertyItemContext { + var p = new(RemovePropertyItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_removePropertyItem + + return p +} + +func (s *RemovePropertyItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *RemovePropertyItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *RemovePropertyItemContext) PERIOD() antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, 0) +} + +func (s *RemovePropertyItemContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *RemovePropertyItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RemovePropertyItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RemovePropertyItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRemovePropertyItem(s) + } +} + +func (s *RemovePropertyItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRemovePropertyItem(s) + } +} + +func (p *GQLParser) RemovePropertyItem() (localctx IRemovePropertyItemContext) { + localctx = NewRemovePropertyItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 170, GQLParserRULE_removePropertyItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1680) + p.BindingVariableReference() + } + { + p.SetState(1681) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1682) + p.PropertyName() + } + +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 +} + +// IRemoveLabelItemContext is an interface to support dynamic dispatch. +type IRemoveLabelItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + IsOrColon() IIsOrColonContext + LabelName() ILabelNameContext + + // IsRemoveLabelItemContext differentiates from other interfaces. + IsRemoveLabelItemContext() +} + +type RemoveLabelItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRemoveLabelItemContext() *RemoveLabelItemContext { + var p = new(RemoveLabelItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeLabelItem + return p +} + +func InitEmptyRemoveLabelItemContext(p *RemoveLabelItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_removeLabelItem +} + +func (*RemoveLabelItemContext) IsRemoveLabelItemContext() {} + +func NewRemoveLabelItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RemoveLabelItemContext { + var p = new(RemoveLabelItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_removeLabelItem + + return p +} + +func (s *RemoveLabelItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *RemoveLabelItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *RemoveLabelItemContext) IsOrColon() IIsOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsOrColonContext) +} + +func (s *RemoveLabelItemContext) LabelName() ILabelNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *RemoveLabelItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RemoveLabelItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RemoveLabelItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRemoveLabelItem(s) + } +} + +func (s *RemoveLabelItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRemoveLabelItem(s) + } +} + +func (p *GQLParser) RemoveLabelItem() (localctx IRemoveLabelItemContext) { + localctx = NewRemoveLabelItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 172, GQLParserRULE_removeLabelItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1684) + p.BindingVariableReference() + } + { + p.SetState(1685) + p.IsOrColon() + } + { + p.SetState(1686) + p.LabelName() + } + +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 +} + +// IDeleteStatementContext is an interface to support dynamic dispatch. +type IDeleteStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DELETE() antlr.TerminalNode + DeleteItemList() IDeleteItemListContext + DETACH() antlr.TerminalNode + NODETACH() antlr.TerminalNode + + // IsDeleteStatementContext differentiates from other interfaces. + IsDeleteStatementContext() +} + +type DeleteStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDeleteStatementContext() *DeleteStatementContext { + var p = new(DeleteStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteStatement + return p +} + +func InitEmptyDeleteStatementContext(p *DeleteStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteStatement +} + +func (*DeleteStatementContext) IsDeleteStatementContext() {} + +func NewDeleteStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeleteStatementContext { + var p = new(DeleteStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_deleteStatement + + return p +} + +func (s *DeleteStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *DeleteStatementContext) DELETE() antlr.TerminalNode { + return s.GetToken(GQLParserDELETE, 0) +} + +func (s *DeleteStatementContext) DeleteItemList() IDeleteItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDeleteItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDeleteItemListContext) +} + +func (s *DeleteStatementContext) DETACH() antlr.TerminalNode { + return s.GetToken(GQLParserDETACH, 0) +} + +func (s *DeleteStatementContext) NODETACH() antlr.TerminalNode { + return s.GetToken(GQLParserNODETACH, 0) +} + +func (s *DeleteStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DeleteStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DeleteStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDeleteStatement(s) + } +} + +func (s *DeleteStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDeleteStatement(s) + } +} + +func (p *GQLParser) DeleteStatement() (localctx IDeleteStatementContext) { + localctx = NewDeleteStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 174, GQLParserRULE_deleteStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1689) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDETACH || _la == GQLParserNODETACH { + { + p.SetState(1688) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDETACH || _la == GQLParserNODETACH) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(1691) + p.Match(GQLParserDELETE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1692) + p.DeleteItemList() + } + +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 +} + +// IDeleteItemListContext is an interface to support dynamic dispatch. +type IDeleteItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllDeleteItem() []IDeleteItemContext + DeleteItem(i int) IDeleteItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsDeleteItemListContext differentiates from other interfaces. + IsDeleteItemListContext() +} + +type DeleteItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDeleteItemListContext() *DeleteItemListContext { + var p = new(DeleteItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteItemList + return p +} + +func InitEmptyDeleteItemListContext(p *DeleteItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteItemList +} + +func (*DeleteItemListContext) IsDeleteItemListContext() {} + +func NewDeleteItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeleteItemListContext { + var p = new(DeleteItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_deleteItemList + + return p +} + +func (s *DeleteItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *DeleteItemListContext) AllDeleteItem() []IDeleteItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDeleteItemContext); ok { + len++ + } + } + + tst := make([]IDeleteItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDeleteItemContext); ok { + tst[i] = t.(IDeleteItemContext) + i++ + } + } + + return tst +} + +func (s *DeleteItemListContext) DeleteItem(i int) IDeleteItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDeleteItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDeleteItemContext) +} + +func (s *DeleteItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *DeleteItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *DeleteItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DeleteItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DeleteItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDeleteItemList(s) + } +} + +func (s *DeleteItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDeleteItemList(s) + } +} + +func (p *GQLParser) DeleteItemList() (localctx IDeleteItemListContext) { + localctx = NewDeleteItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 176, GQLParserRULE_deleteItemList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1694) + p.DeleteItem() + } + p.SetState(1699) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(1695) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1696) + p.DeleteItem() + } + + p.SetState(1701) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IDeleteItemContext is an interface to support dynamic dispatch. +type IDeleteItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsDeleteItemContext differentiates from other interfaces. + IsDeleteItemContext() +} + +type DeleteItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDeleteItemContext() *DeleteItemContext { + var p = new(DeleteItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteItem + return p +} + +func InitEmptyDeleteItemContext(p *DeleteItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_deleteItem +} + +func (*DeleteItemContext) IsDeleteItemContext() {} + +func NewDeleteItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DeleteItemContext { + var p = new(DeleteItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_deleteItem + + return p +} + +func (s *DeleteItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *DeleteItemContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *DeleteItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DeleteItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DeleteItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDeleteItem(s) + } +} + +func (s *DeleteItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDeleteItem(s) + } +} + +func (p *GQLParser) DeleteItem() (localctx IDeleteItemContext) { + localctx = NewDeleteItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 178, GQLParserRULE_deleteItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1702) + p.valueExpression(0) + } + +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 +} + +// ICallDataModifyingProcedureStatementContext is an interface to support dynamic dispatch. +type ICallDataModifyingProcedureStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CallProcedureStatement() ICallProcedureStatementContext + + // IsCallDataModifyingProcedureStatementContext differentiates from other interfaces. + IsCallDataModifyingProcedureStatementContext() +} + +type CallDataModifyingProcedureStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCallDataModifyingProcedureStatementContext() *CallDataModifyingProcedureStatementContext { + var p = new(CallDataModifyingProcedureStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callDataModifyingProcedureStatement + return p +} + +func InitEmptyCallDataModifyingProcedureStatementContext(p *CallDataModifyingProcedureStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callDataModifyingProcedureStatement +} + +func (*CallDataModifyingProcedureStatementContext) IsCallDataModifyingProcedureStatementContext() {} + +func NewCallDataModifyingProcedureStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CallDataModifyingProcedureStatementContext { + var p = new(CallDataModifyingProcedureStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_callDataModifyingProcedureStatement + + return p +} + +func (s *CallDataModifyingProcedureStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CallDataModifyingProcedureStatementContext) CallProcedureStatement() ICallProcedureStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallProcedureStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallProcedureStatementContext) +} + +func (s *CallDataModifyingProcedureStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CallDataModifyingProcedureStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CallDataModifyingProcedureStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCallDataModifyingProcedureStatement(s) + } +} + +func (s *CallDataModifyingProcedureStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCallDataModifyingProcedureStatement(s) + } +} + +func (p *GQLParser) CallDataModifyingProcedureStatement() (localctx ICallDataModifyingProcedureStatementContext) { + localctx = NewCallDataModifyingProcedureStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 180, GQLParserRULE_callDataModifyingProcedureStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1704) + p.CallProcedureStatement() + } + +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 +} + +// ICompositeQueryStatementContext is an interface to support dynamic dispatch. +type ICompositeQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CompositeQueryExpression() ICompositeQueryExpressionContext + + // IsCompositeQueryStatementContext differentiates from other interfaces. + IsCompositeQueryStatementContext() +} + +type CompositeQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompositeQueryStatementContext() *CompositeQueryStatementContext { + var p = new(CompositeQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryStatement + return p +} + +func InitEmptyCompositeQueryStatementContext(p *CompositeQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryStatement +} + +func (*CompositeQueryStatementContext) IsCompositeQueryStatementContext() {} + +func NewCompositeQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CompositeQueryStatementContext { + var p = new(CompositeQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_compositeQueryStatement + + return p +} + +func (s *CompositeQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CompositeQueryStatementContext) CompositeQueryExpression() ICompositeQueryExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompositeQueryExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompositeQueryExpressionContext) +} + +func (s *CompositeQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CompositeQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CompositeQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCompositeQueryStatement(s) + } +} + +func (s *CompositeQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCompositeQueryStatement(s) + } +} + +func (p *GQLParser) CompositeQueryStatement() (localctx ICompositeQueryStatementContext) { + localctx = NewCompositeQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 182, GQLParserRULE_compositeQueryStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1706) + p.compositeQueryExpression(0) + } + +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 +} + +// ICompositeQueryExpressionContext is an interface to support dynamic dispatch. +type ICompositeQueryExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CompositeQueryPrimary() ICompositeQueryPrimaryContext + CompositeQueryExpression() ICompositeQueryExpressionContext + QueryConjunction() IQueryConjunctionContext + + // IsCompositeQueryExpressionContext differentiates from other interfaces. + IsCompositeQueryExpressionContext() +} + +type CompositeQueryExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompositeQueryExpressionContext() *CompositeQueryExpressionContext { + var p = new(CompositeQueryExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryExpression + return p +} + +func InitEmptyCompositeQueryExpressionContext(p *CompositeQueryExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryExpression +} + +func (*CompositeQueryExpressionContext) IsCompositeQueryExpressionContext() {} + +func NewCompositeQueryExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CompositeQueryExpressionContext { + var p = new(CompositeQueryExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_compositeQueryExpression + + return p +} + +func (s *CompositeQueryExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CompositeQueryExpressionContext) CompositeQueryPrimary() ICompositeQueryPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompositeQueryPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompositeQueryPrimaryContext) +} + +func (s *CompositeQueryExpressionContext) CompositeQueryExpression() ICompositeQueryExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompositeQueryExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompositeQueryExpressionContext) +} + +func (s *CompositeQueryExpressionContext) QueryConjunction() IQueryConjunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQueryConjunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IQueryConjunctionContext) +} + +func (s *CompositeQueryExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CompositeQueryExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CompositeQueryExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCompositeQueryExpression(s) + } +} + +func (s *CompositeQueryExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCompositeQueryExpression(s) + } +} + +func (p *GQLParser) CompositeQueryExpression() (localctx ICompositeQueryExpressionContext) { + return p.compositeQueryExpression(0) +} + +func (p *GQLParser) compositeQueryExpression(_p int) (localctx ICompositeQueryExpressionContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewCompositeQueryExpressionContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx ICompositeQueryExpressionContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 184 + p.EnterRecursionRule(localctx, 184, GQLParserRULE_compositeQueryExpression, _p) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1709) + p.CompositeQueryPrimary() + } + + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(1717) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 90, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + localctx = NewCompositeQueryExpressionContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_compositeQueryExpression) + p.SetState(1711) + + if !(p.Precpred(p.GetParserRuleContext(), 2)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 2)", "")) + goto errorExit + } + { + p.SetState(1712) + p.QueryConjunction() + } + { + p.SetState(1713) + p.CompositeQueryPrimary() + } + + } + p.SetState(1719) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 90, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IQueryConjunctionContext is an interface to support dynamic dispatch. +type IQueryConjunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SetOperator() ISetOperatorContext + OTHERWISE() antlr.TerminalNode + + // IsQueryConjunctionContext differentiates from other interfaces. + IsQueryConjunctionContext() +} + +type QueryConjunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyQueryConjunctionContext() *QueryConjunctionContext { + var p = new(QueryConjunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_queryConjunction + return p +} + +func InitEmptyQueryConjunctionContext(p *QueryConjunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_queryConjunction +} + +func (*QueryConjunctionContext) IsQueryConjunctionContext() {} + +func NewQueryConjunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *QueryConjunctionContext { + var p = new(QueryConjunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_queryConjunction + + return p +} + +func (s *QueryConjunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *QueryConjunctionContext) SetOperator() ISetOperatorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetOperatorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetOperatorContext) +} + +func (s *QueryConjunctionContext) OTHERWISE() antlr.TerminalNode { + return s.GetToken(GQLParserOTHERWISE, 0) +} + +func (s *QueryConjunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *QueryConjunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *QueryConjunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterQueryConjunction(s) + } +} + +func (s *QueryConjunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitQueryConjunction(s) + } +} + +func (p *GQLParser) QueryConjunction() (localctx IQueryConjunctionContext) { + localctx = NewQueryConjunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 186, GQLParserRULE_queryConjunction) + p.SetState(1722) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserEXCEPT, GQLParserINTERSECT, GQLParserUNION: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1720) + p.SetOperator() + } + + case GQLParserOTHERWISE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1721) + p.Match(GQLParserOTHERWISE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISetOperatorContext is an interface to support dynamic dispatch. +type ISetOperatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UNION() antlr.TerminalNode + SetQuantifier() ISetQuantifierContext + EXCEPT() antlr.TerminalNode + INTERSECT() antlr.TerminalNode + + // IsSetOperatorContext differentiates from other interfaces. + IsSetOperatorContext() +} + +type SetOperatorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetOperatorContext() *SetOperatorContext { + var p = new(SetOperatorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setOperator + return p +} + +func InitEmptySetOperatorContext(p *SetOperatorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setOperator +} + +func (*SetOperatorContext) IsSetOperatorContext() {} + +func NewSetOperatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetOperatorContext { + var p = new(SetOperatorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setOperator + + return p +} + +func (s *SetOperatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetOperatorContext) UNION() antlr.TerminalNode { + return s.GetToken(GQLParserUNION, 0) +} + +func (s *SetOperatorContext) SetQuantifier() ISetQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetQuantifierContext) +} + +func (s *SetOperatorContext) EXCEPT() antlr.TerminalNode { + return s.GetToken(GQLParserEXCEPT, 0) +} + +func (s *SetOperatorContext) INTERSECT() antlr.TerminalNode { + return s.GetToken(GQLParserINTERSECT, 0) +} + +func (s *SetOperatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetOperatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetOperatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetOperator(s) + } +} + +func (s *SetOperatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetOperator(s) + } +} + +func (p *GQLParser) SetOperator() (localctx ISetOperatorContext) { + localctx = NewSetOperatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 188, GQLParserRULE_setOperator) + var _la int + + p.SetState(1736) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUNION: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1724) + p.Match(GQLParserUNION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1726) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(1725) + p.SetQuantifier() + } + + } + + case GQLParserEXCEPT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1728) + p.Match(GQLParserEXCEPT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1730) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(1729) + p.SetQuantifier() + } + + } + + case GQLParserINTERSECT: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1732) + p.Match(GQLParserINTERSECT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1734) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(1733) + p.SetQuantifier() + } + + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ICompositeQueryPrimaryContext is an interface to support dynamic dispatch. +type ICompositeQueryPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LinearQueryStatement() ILinearQueryStatementContext + + // IsCompositeQueryPrimaryContext differentiates from other interfaces. + IsCompositeQueryPrimaryContext() +} + +type CompositeQueryPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompositeQueryPrimaryContext() *CompositeQueryPrimaryContext { + var p = new(CompositeQueryPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryPrimary + return p +} + +func InitEmptyCompositeQueryPrimaryContext(p *CompositeQueryPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compositeQueryPrimary +} + +func (*CompositeQueryPrimaryContext) IsCompositeQueryPrimaryContext() {} + +func NewCompositeQueryPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CompositeQueryPrimaryContext { + var p = new(CompositeQueryPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_compositeQueryPrimary + + return p +} + +func (s *CompositeQueryPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *CompositeQueryPrimaryContext) LinearQueryStatement() ILinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILinearQueryStatementContext) +} + +func (s *CompositeQueryPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CompositeQueryPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CompositeQueryPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCompositeQueryPrimary(s) + } +} + +func (s *CompositeQueryPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCompositeQueryPrimary(s) + } +} + +func (p *GQLParser) CompositeQueryPrimary() (localctx ICompositeQueryPrimaryContext) { + localctx = NewCompositeQueryPrimaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 190, GQLParserRULE_compositeQueryPrimary) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1738) + p.LinearQueryStatement() + } + +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 +} + +// ILinearQueryStatementContext is an interface to support dynamic dispatch. +type ILinearQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FocusedLinearQueryStatement() IFocusedLinearQueryStatementContext + AmbientLinearQueryStatement() IAmbientLinearQueryStatementContext + + // IsLinearQueryStatementContext differentiates from other interfaces. + IsLinearQueryStatementContext() +} + +type LinearQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLinearQueryStatementContext() *LinearQueryStatementContext { + var p = new(LinearQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearQueryStatement + return p +} + +func InitEmptyLinearQueryStatementContext(p *LinearQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_linearQueryStatement +} + +func (*LinearQueryStatementContext) IsLinearQueryStatementContext() {} + +func NewLinearQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LinearQueryStatementContext { + var p = new(LinearQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_linearQueryStatement + + return p +} + +func (s *LinearQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *LinearQueryStatementContext) FocusedLinearQueryStatement() IFocusedLinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedLinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedLinearQueryStatementContext) +} + +func (s *LinearQueryStatementContext) AmbientLinearQueryStatement() IAmbientLinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAmbientLinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAmbientLinearQueryStatementContext) +} + +func (s *LinearQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LinearQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LinearQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLinearQueryStatement(s) + } +} + +func (s *LinearQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLinearQueryStatement(s) + } +} + +func (p *GQLParser) LinearQueryStatement() (localctx ILinearQueryStatementContext) { + localctx = NewLinearQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 192, GQLParserRULE_linearQueryStatement) + p.SetState(1742) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSELECT, GQLParserUSE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1740) + p.FocusedLinearQueryStatement() + } + + case GQLParserCALL, GQLParserFILTER, GQLParserFINISH, GQLParserFOR, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserRETURN, GQLParserSKIP_RESERVED_WORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1741) + p.AmbientLinearQueryStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IFocusedLinearQueryStatementContext is an interface to support dynamic dispatch. +type IFocusedLinearQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FocusedLinearQueryAndPrimitiveResultStatementPart() IFocusedLinearQueryAndPrimitiveResultStatementPartContext + AllFocusedLinearQueryStatementPart() []IFocusedLinearQueryStatementPartContext + FocusedLinearQueryStatementPart(i int) IFocusedLinearQueryStatementPartContext + FocusedPrimitiveResultStatement() IFocusedPrimitiveResultStatementContext + FocusedNestedQuerySpecification() IFocusedNestedQuerySpecificationContext + SelectStatement() ISelectStatementContext + + // IsFocusedLinearQueryStatementContext differentiates from other interfaces. + IsFocusedLinearQueryStatementContext() +} + +type FocusedLinearQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedLinearQueryStatementContext() *FocusedLinearQueryStatementContext { + var p = new(FocusedLinearQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatement + return p +} + +func InitEmptyFocusedLinearQueryStatementContext(p *FocusedLinearQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatement +} + +func (*FocusedLinearQueryStatementContext) IsFocusedLinearQueryStatementContext() {} + +func NewFocusedLinearQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedLinearQueryStatementContext { + var p = new(FocusedLinearQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatement + + return p +} + +func (s *FocusedLinearQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedLinearQueryStatementContext) FocusedLinearQueryAndPrimitiveResultStatementPart() IFocusedLinearQueryAndPrimitiveResultStatementPartContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedLinearQueryAndPrimitiveResultStatementPartContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedLinearQueryAndPrimitiveResultStatementPartContext) +} + +func (s *FocusedLinearQueryStatementContext) AllFocusedLinearQueryStatementPart() []IFocusedLinearQueryStatementPartContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFocusedLinearQueryStatementPartContext); ok { + len++ + } + } + + tst := make([]IFocusedLinearQueryStatementPartContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFocusedLinearQueryStatementPartContext); ok { + tst[i] = t.(IFocusedLinearQueryStatementPartContext) + i++ + } + } + + return tst +} + +func (s *FocusedLinearQueryStatementContext) FocusedLinearQueryStatementPart(i int) IFocusedLinearQueryStatementPartContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedLinearQueryStatementPartContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFocusedLinearQueryStatementPartContext) +} + +func (s *FocusedLinearQueryStatementContext) FocusedPrimitiveResultStatement() IFocusedPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedPrimitiveResultStatementContext) +} + +func (s *FocusedLinearQueryStatementContext) FocusedNestedQuerySpecification() IFocusedNestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFocusedNestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFocusedNestedQuerySpecificationContext) +} + +func (s *FocusedLinearQueryStatementContext) SelectStatement() ISelectStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectStatementContext) +} + +func (s *FocusedLinearQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedLinearQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedLinearQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedLinearQueryStatement(s) + } +} + +func (s *FocusedLinearQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedLinearQueryStatement(s) + } +} + +func (p *GQLParser) FocusedLinearQueryStatement() (localctx IFocusedLinearQueryStatementContext) { + localctx = NewFocusedLinearQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 194, GQLParserRULE_focusedLinearQueryStatement) + var _alt int + + p.SetState(1754) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 98, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(1747) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 97, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1744) + p.FocusedLinearQueryStatementPart() + } + + } + p.SetState(1749) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 97, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + { + p.SetState(1750) + p.FocusedLinearQueryAndPrimitiveResultStatementPart() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1751) + p.FocusedPrimitiveResultStatement() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1752) + p.FocusedNestedQuerySpecification() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1753) + p.SelectStatement() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IFocusedLinearQueryStatementPartContext is an interface to support dynamic dispatch. +type IFocusedLinearQueryStatementPartContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext + + // IsFocusedLinearQueryStatementPartContext differentiates from other interfaces. + IsFocusedLinearQueryStatementPartContext() +} + +type FocusedLinearQueryStatementPartContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedLinearQueryStatementPartContext() *FocusedLinearQueryStatementPartContext { + var p = new(FocusedLinearQueryStatementPartContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatementPart + return p +} + +func InitEmptyFocusedLinearQueryStatementPartContext(p *FocusedLinearQueryStatementPartContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatementPart +} + +func (*FocusedLinearQueryStatementPartContext) IsFocusedLinearQueryStatementPartContext() {} + +func NewFocusedLinearQueryStatementPartContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedLinearQueryStatementPartContext { + var p = new(FocusedLinearQueryStatementPartContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedLinearQueryStatementPart + + return p +} + +func (s *FocusedLinearQueryStatementPartContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedLinearQueryStatementPartContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedLinearQueryStatementPartContext) SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleLinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleLinearQueryStatementContext) +} + +func (s *FocusedLinearQueryStatementPartContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedLinearQueryStatementPartContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedLinearQueryStatementPartContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedLinearQueryStatementPart(s) + } +} + +func (s *FocusedLinearQueryStatementPartContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedLinearQueryStatementPart(s) + } +} + +func (p *GQLParser) FocusedLinearQueryStatementPart() (localctx IFocusedLinearQueryStatementPartContext) { + localctx = NewFocusedLinearQueryStatementPartContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 196, GQLParserRULE_focusedLinearQueryStatementPart) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1756) + p.UseGraphClause() + } + { + p.SetState(1757) + p.SimpleLinearQueryStatement() + } + +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 +} + +// IFocusedLinearQueryAndPrimitiveResultStatementPartContext is an interface to support dynamic dispatch. +type IFocusedLinearQueryAndPrimitiveResultStatementPartContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext + PrimitiveResultStatement() IPrimitiveResultStatementContext + + // IsFocusedLinearQueryAndPrimitiveResultStatementPartContext differentiates from other interfaces. + IsFocusedLinearQueryAndPrimitiveResultStatementPartContext() +} + +type FocusedLinearQueryAndPrimitiveResultStatementPartContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedLinearQueryAndPrimitiveResultStatementPartContext() *FocusedLinearQueryAndPrimitiveResultStatementPartContext { + var p = new(FocusedLinearQueryAndPrimitiveResultStatementPartContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryAndPrimitiveResultStatementPart + return p +} + +func InitEmptyFocusedLinearQueryAndPrimitiveResultStatementPartContext(p *FocusedLinearQueryAndPrimitiveResultStatementPartContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedLinearQueryAndPrimitiveResultStatementPart +} + +func (*FocusedLinearQueryAndPrimitiveResultStatementPartContext) IsFocusedLinearQueryAndPrimitiveResultStatementPartContext() { +} + +func NewFocusedLinearQueryAndPrimitiveResultStatementPartContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedLinearQueryAndPrimitiveResultStatementPartContext { + var p = new(FocusedLinearQueryAndPrimitiveResultStatementPartContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedLinearQueryAndPrimitiveResultStatementPart + + return p +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) GetParser() antlr.Parser { + return s.parser +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleLinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleLinearQueryStatementContext) +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) PrimitiveResultStatement() IPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveResultStatementContext) +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedLinearQueryAndPrimitiveResultStatementPart(s) + } +} + +func (s *FocusedLinearQueryAndPrimitiveResultStatementPartContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedLinearQueryAndPrimitiveResultStatementPart(s) + } +} + +func (p *GQLParser) FocusedLinearQueryAndPrimitiveResultStatementPart() (localctx IFocusedLinearQueryAndPrimitiveResultStatementPartContext) { + localctx = NewFocusedLinearQueryAndPrimitiveResultStatementPartContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 198, GQLParserRULE_focusedLinearQueryAndPrimitiveResultStatementPart) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1759) + p.UseGraphClause() + } + { + p.SetState(1760) + p.SimpleLinearQueryStatement() + } + { + p.SetState(1761) + p.PrimitiveResultStatement() + } + +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 +} + +// IFocusedPrimitiveResultStatementContext is an interface to support dynamic dispatch. +type IFocusedPrimitiveResultStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + PrimitiveResultStatement() IPrimitiveResultStatementContext + + // IsFocusedPrimitiveResultStatementContext differentiates from other interfaces. + IsFocusedPrimitiveResultStatementContext() +} + +type FocusedPrimitiveResultStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedPrimitiveResultStatementContext() *FocusedPrimitiveResultStatementContext { + var p = new(FocusedPrimitiveResultStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedPrimitiveResultStatement + return p +} + +func InitEmptyFocusedPrimitiveResultStatementContext(p *FocusedPrimitiveResultStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedPrimitiveResultStatement +} + +func (*FocusedPrimitiveResultStatementContext) IsFocusedPrimitiveResultStatementContext() {} + +func NewFocusedPrimitiveResultStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedPrimitiveResultStatementContext { + var p = new(FocusedPrimitiveResultStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedPrimitiveResultStatement + + return p +} + +func (s *FocusedPrimitiveResultStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedPrimitiveResultStatementContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedPrimitiveResultStatementContext) PrimitiveResultStatement() IPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveResultStatementContext) +} + +func (s *FocusedPrimitiveResultStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedPrimitiveResultStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedPrimitiveResultStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedPrimitiveResultStatement(s) + } +} + +func (s *FocusedPrimitiveResultStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedPrimitiveResultStatement(s) + } +} + +func (p *GQLParser) FocusedPrimitiveResultStatement() (localctx IFocusedPrimitiveResultStatementContext) { + localctx = NewFocusedPrimitiveResultStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 200, GQLParserRULE_focusedPrimitiveResultStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1763) + p.UseGraphClause() + } + { + p.SetState(1764) + p.PrimitiveResultStatement() + } + +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 +} + +// IFocusedNestedQuerySpecificationContext is an interface to support dynamic dispatch. +type IFocusedNestedQuerySpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UseGraphClause() IUseGraphClauseContext + NestedQuerySpecification() INestedQuerySpecificationContext + + // IsFocusedNestedQuerySpecificationContext differentiates from other interfaces. + IsFocusedNestedQuerySpecificationContext() +} + +type FocusedNestedQuerySpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFocusedNestedQuerySpecificationContext() *FocusedNestedQuerySpecificationContext { + var p = new(FocusedNestedQuerySpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedNestedQuerySpecification + return p +} + +func InitEmptyFocusedNestedQuerySpecificationContext(p *FocusedNestedQuerySpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_focusedNestedQuerySpecification +} + +func (*FocusedNestedQuerySpecificationContext) IsFocusedNestedQuerySpecificationContext() {} + +func NewFocusedNestedQuerySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FocusedNestedQuerySpecificationContext { + var p = new(FocusedNestedQuerySpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_focusedNestedQuerySpecification + + return p +} + +func (s *FocusedNestedQuerySpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *FocusedNestedQuerySpecificationContext) UseGraphClause() IUseGraphClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUseGraphClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUseGraphClauseContext) +} + +func (s *FocusedNestedQuerySpecificationContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *FocusedNestedQuerySpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FocusedNestedQuerySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FocusedNestedQuerySpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFocusedNestedQuerySpecification(s) + } +} + +func (s *FocusedNestedQuerySpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFocusedNestedQuerySpecification(s) + } +} + +func (p *GQLParser) FocusedNestedQuerySpecification() (localctx IFocusedNestedQuerySpecificationContext) { + localctx = NewFocusedNestedQuerySpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 202, GQLParserRULE_focusedNestedQuerySpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1766) + p.UseGraphClause() + } + { + p.SetState(1767) + p.NestedQuerySpecification() + } + +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 +} + +// IAmbientLinearQueryStatementContext is an interface to support dynamic dispatch. +type IAmbientLinearQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PrimitiveResultStatement() IPrimitiveResultStatementContext + SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext + NestedQuerySpecification() INestedQuerySpecificationContext + + // IsAmbientLinearQueryStatementContext differentiates from other interfaces. + IsAmbientLinearQueryStatementContext() +} + +type AmbientLinearQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAmbientLinearQueryStatementContext() *AmbientLinearQueryStatementContext { + var p = new(AmbientLinearQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearQueryStatement + return p +} + +func InitEmptyAmbientLinearQueryStatementContext(p *AmbientLinearQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ambientLinearQueryStatement +} + +func (*AmbientLinearQueryStatementContext) IsAmbientLinearQueryStatementContext() {} + +func NewAmbientLinearQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AmbientLinearQueryStatementContext { + var p = new(AmbientLinearQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_ambientLinearQueryStatement + + return p +} + +func (s *AmbientLinearQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *AmbientLinearQueryStatementContext) PrimitiveResultStatement() IPrimitiveResultStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveResultStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveResultStatementContext) +} + +func (s *AmbientLinearQueryStatementContext) SimpleLinearQueryStatement() ISimpleLinearQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleLinearQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleLinearQueryStatementContext) +} + +func (s *AmbientLinearQueryStatementContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *AmbientLinearQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AmbientLinearQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AmbientLinearQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAmbientLinearQueryStatement(s) + } +} + +func (s *AmbientLinearQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAmbientLinearQueryStatement(s) + } +} + +func (p *GQLParser) AmbientLinearQueryStatement() (localctx IAmbientLinearQueryStatementContext) { + localctx = NewAmbientLinearQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 204, GQLParserRULE_ambientLinearQueryStatement) + var _la int + + p.SetState(1774) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCALL, GQLParserFILTER, GQLParserFINISH, GQLParserFOR, GQLParserLET, GQLParserLIMIT, GQLParserMATCH, GQLParserOFFSET, GQLParserOPTIONAL, GQLParserORDER, GQLParserRETURN, GQLParserSKIP_RESERVED_WORD: + p.EnterOuterAlt(localctx, 1) + p.SetState(1770) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCALL || ((int64((_la-91)) & ^0x3f) == 0 && ((int64(1)<<(_la-91))&4506348406440449) != 0) || ((int64((_la-159)) & ^0x3f) == 0 && ((int64(1)<<(_la-159))&68719476747) != 0) { + { + p.SetState(1769) + p.SimpleLinearQueryStatement() + } + + } + { + p.SetState(1772) + p.PrimitiveResultStatement() + } + + case GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1773) + p.NestedQuerySpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISimpleLinearQueryStatementContext is an interface to support dynamic dispatch. +type ISimpleLinearQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSimpleQueryStatement() []ISimpleQueryStatementContext + SimpleQueryStatement(i int) ISimpleQueryStatementContext + + // IsSimpleLinearQueryStatementContext differentiates from other interfaces. + IsSimpleLinearQueryStatementContext() +} + +type SimpleLinearQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleLinearQueryStatementContext() *SimpleLinearQueryStatementContext { + var p = new(SimpleLinearQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleLinearQueryStatement + return p +} + +func InitEmptySimpleLinearQueryStatementContext(p *SimpleLinearQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleLinearQueryStatement +} + +func (*SimpleLinearQueryStatementContext) IsSimpleLinearQueryStatementContext() {} + +func NewSimpleLinearQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleLinearQueryStatementContext { + var p = new(SimpleLinearQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleLinearQueryStatement + + return p +} + +func (s *SimpleLinearQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleLinearQueryStatementContext) AllSimpleQueryStatement() []ISimpleQueryStatementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimpleQueryStatementContext); ok { + len++ + } + } + + tst := make([]ISimpleQueryStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimpleQueryStatementContext); ok { + tst[i] = t.(ISimpleQueryStatementContext) + i++ + } + } + + return tst +} + +func (s *SimpleLinearQueryStatementContext) SimpleQueryStatement(i int) ISimpleQueryStatementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleQueryStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimpleQueryStatementContext) +} + +func (s *SimpleLinearQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleLinearQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleLinearQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleLinearQueryStatement(s) + } +} + +func (s *SimpleLinearQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleLinearQueryStatement(s) + } +} + +func (p *GQLParser) SimpleLinearQueryStatement() (localctx ISimpleLinearQueryStatementContext) { + localctx = NewSimpleLinearQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 206, GQLParserRULE_simpleLinearQueryStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1777) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserCALL || ((int64((_la-91)) & ^0x3f) == 0 && ((int64(1)<<(_la-91))&4506348406440449) != 0) || ((int64((_la-159)) & ^0x3f) == 0 && ((int64(1)<<(_la-159))&68719476747) != 0) { + { + p.SetState(1776) + p.SimpleQueryStatement() + } + + p.SetState(1779) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISimpleQueryStatementContext is an interface to support dynamic dispatch. +type ISimpleQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PrimitiveQueryStatement() IPrimitiveQueryStatementContext + CallQueryStatement() ICallQueryStatementContext + + // IsSimpleQueryStatementContext differentiates from other interfaces. + IsSimpleQueryStatementContext() +} + +type SimpleQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleQueryStatementContext() *SimpleQueryStatementContext { + var p = new(SimpleQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleQueryStatement + return p +} + +func InitEmptySimpleQueryStatementContext(p *SimpleQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleQueryStatement +} + +func (*SimpleQueryStatementContext) IsSimpleQueryStatementContext() {} + +func NewSimpleQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleQueryStatementContext { + var p = new(SimpleQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleQueryStatement + + return p +} + +func (s *SimpleQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleQueryStatementContext) PrimitiveQueryStatement() IPrimitiveQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrimitiveQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrimitiveQueryStatementContext) +} + +func (s *SimpleQueryStatementContext) CallQueryStatement() ICallQueryStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallQueryStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallQueryStatementContext) +} + +func (s *SimpleQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleQueryStatement(s) + } +} + +func (s *SimpleQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleQueryStatement(s) + } +} + +func (p *GQLParser) SimpleQueryStatement() (localctx ISimpleQueryStatementContext) { + localctx = NewSimpleQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 208, GQLParserRULE_simpleQueryStatement) + p.SetState(1783) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 102, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1781) + p.PrimitiveQueryStatement() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1782) + p.CallQueryStatement() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IPrimitiveQueryStatementContext is an interface to support dynamic dispatch. +type IPrimitiveQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MatchStatement() IMatchStatementContext + LetStatement() ILetStatementContext + ForStatement() IForStatementContext + FilterStatement() IFilterStatementContext + OrderByAndPageStatement() IOrderByAndPageStatementContext + + // IsPrimitiveQueryStatementContext differentiates from other interfaces. + IsPrimitiveQueryStatementContext() +} + +type PrimitiveQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPrimitiveQueryStatementContext() *PrimitiveQueryStatementContext { + var p = new(PrimitiveQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveQueryStatement + return p +} + +func InitEmptyPrimitiveQueryStatementContext(p *PrimitiveQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveQueryStatement +} + +func (*PrimitiveQueryStatementContext) IsPrimitiveQueryStatementContext() {} + +func NewPrimitiveQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrimitiveQueryStatementContext { + var p = new(PrimitiveQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_primitiveQueryStatement + + return p +} + +func (s *PrimitiveQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *PrimitiveQueryStatementContext) MatchStatement() IMatchStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMatchStatementContext) +} + +func (s *PrimitiveQueryStatementContext) LetStatement() ILetStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILetStatementContext) +} + +func (s *PrimitiveQueryStatementContext) ForStatement() IForStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IForStatementContext) +} + +func (s *PrimitiveQueryStatementContext) FilterStatement() IFilterStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFilterStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFilterStatementContext) +} + +func (s *PrimitiveQueryStatementContext) OrderByAndPageStatement() IOrderByAndPageStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrderByAndPageStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOrderByAndPageStatementContext) +} + +func (s *PrimitiveQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrimitiveQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PrimitiveQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrimitiveQueryStatement(s) + } +} + +func (s *PrimitiveQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrimitiveQueryStatement(s) + } +} + +func (p *GQLParser) PrimitiveQueryStatement() (localctx IPrimitiveQueryStatementContext) { + localctx = NewPrimitiveQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 210, GQLParserRULE_primitiveQueryStatement) + p.SetState(1790) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserMATCH, GQLParserOPTIONAL: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1785) + p.MatchStatement() + } + + case GQLParserLET: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1786) + p.LetStatement() + } + + case GQLParserFOR: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1787) + p.ForStatement() + } + + case GQLParserFILTER: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1788) + p.FilterStatement() + } + + case GQLParserLIMIT, GQLParserOFFSET, GQLParserORDER, GQLParserSKIP_RESERVED_WORD: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(1789) + p.OrderByAndPageStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IMatchStatementContext is an interface to support dynamic dispatch. +type IMatchStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimpleMatchStatement() ISimpleMatchStatementContext + OptionalMatchStatement() IOptionalMatchStatementContext + + // IsMatchStatementContext differentiates from other interfaces. + IsMatchStatementContext() +} + +type MatchStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyMatchStatementContext() *MatchStatementContext { + var p = new(MatchStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchStatement + return p +} + +func InitEmptyMatchStatementContext(p *MatchStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchStatement +} + +func (*MatchStatementContext) IsMatchStatementContext() {} + +func NewMatchStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MatchStatementContext { + var p = new(MatchStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_matchStatement + + return p +} + +func (s *MatchStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *MatchStatementContext) SimpleMatchStatement() ISimpleMatchStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleMatchStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleMatchStatementContext) +} + +func (s *MatchStatementContext) OptionalMatchStatement() IOptionalMatchStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptionalMatchStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptionalMatchStatementContext) +} + +func (s *MatchStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MatchStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *MatchStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMatchStatement(s) + } +} + +func (s *MatchStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMatchStatement(s) + } +} + +func (p *GQLParser) MatchStatement() (localctx IMatchStatementContext) { + localctx = NewMatchStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 212, GQLParserRULE_matchStatement) + p.SetState(1794) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserMATCH: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1792) + p.SimpleMatchStatement() + } + + case GQLParserOPTIONAL: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1793) + p.OptionalMatchStatement() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISimpleMatchStatementContext is an interface to support dynamic dispatch. +type ISimpleMatchStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MATCH() antlr.TerminalNode + GraphPatternBindingTable() IGraphPatternBindingTableContext + + // IsSimpleMatchStatementContext differentiates from other interfaces. + IsSimpleMatchStatementContext() +} + +type SimpleMatchStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleMatchStatementContext() *SimpleMatchStatementContext { + var p = new(SimpleMatchStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleMatchStatement + return p +} + +func InitEmptySimpleMatchStatementContext(p *SimpleMatchStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleMatchStatement +} + +func (*SimpleMatchStatementContext) IsSimpleMatchStatementContext() {} + +func NewSimpleMatchStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleMatchStatementContext { + var p = new(SimpleMatchStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleMatchStatement + + return p +} + +func (s *SimpleMatchStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleMatchStatementContext) MATCH() antlr.TerminalNode { + return s.GetToken(GQLParserMATCH, 0) +} + +func (s *SimpleMatchStatementContext) GraphPatternBindingTable() IGraphPatternBindingTableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternBindingTableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternBindingTableContext) +} + +func (s *SimpleMatchStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleMatchStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleMatchStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleMatchStatement(s) + } +} + +func (s *SimpleMatchStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleMatchStatement(s) + } +} + +func (p *GQLParser) SimpleMatchStatement() (localctx ISimpleMatchStatementContext) { + localctx = NewSimpleMatchStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 214, GQLParserRULE_simpleMatchStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1796) + p.Match(GQLParserMATCH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1797) + p.GraphPatternBindingTable() + } + +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 +} + +// IOptionalMatchStatementContext is an interface to support dynamic dispatch. +type IOptionalMatchStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OPTIONAL() antlr.TerminalNode + OptionalOperand() IOptionalOperandContext + + // IsOptionalMatchStatementContext differentiates from other interfaces. + IsOptionalMatchStatementContext() +} + +type OptionalMatchStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOptionalMatchStatementContext() *OptionalMatchStatementContext { + var p = new(OptionalMatchStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optionalMatchStatement + return p +} + +func InitEmptyOptionalMatchStatementContext(p *OptionalMatchStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optionalMatchStatement +} + +func (*OptionalMatchStatementContext) IsOptionalMatchStatementContext() {} + +func NewOptionalMatchStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptionalMatchStatementContext { + var p = new(OptionalMatchStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_optionalMatchStatement + + return p +} + +func (s *OptionalMatchStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *OptionalMatchStatementContext) OPTIONAL() antlr.TerminalNode { + return s.GetToken(GQLParserOPTIONAL, 0) +} + +func (s *OptionalMatchStatementContext) OptionalOperand() IOptionalOperandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOptionalOperandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOptionalOperandContext) +} + +func (s *OptionalMatchStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OptionalMatchStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OptionalMatchStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOptionalMatchStatement(s) + } +} + +func (s *OptionalMatchStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOptionalMatchStatement(s) + } +} + +func (p *GQLParser) OptionalMatchStatement() (localctx IOptionalMatchStatementContext) { + localctx = NewOptionalMatchStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 216, GQLParserRULE_optionalMatchStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1799) + p.Match(GQLParserOPTIONAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1800) + p.OptionalOperand() + } + +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 +} + +// IOptionalOperandContext is an interface to support dynamic dispatch. +type IOptionalOperandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimpleMatchStatement() ISimpleMatchStatementContext + LEFT_BRACE() antlr.TerminalNode + MatchStatementBlock() IMatchStatementBlockContext + RIGHT_BRACE() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + + // IsOptionalOperandContext differentiates from other interfaces. + IsOptionalOperandContext() +} + +type OptionalOperandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOptionalOperandContext() *OptionalOperandContext { + var p = new(OptionalOperandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optionalOperand + return p +} + +func InitEmptyOptionalOperandContext(p *OptionalOperandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_optionalOperand +} + +func (*OptionalOperandContext) IsOptionalOperandContext() {} + +func NewOptionalOperandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OptionalOperandContext { + var p = new(OptionalOperandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_optionalOperand + + return p +} + +func (s *OptionalOperandContext) GetParser() antlr.Parser { return s.parser } + +func (s *OptionalOperandContext) SimpleMatchStatement() ISimpleMatchStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleMatchStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleMatchStatementContext) +} + +func (s *OptionalOperandContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *OptionalOperandContext) MatchStatementBlock() IMatchStatementBlockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchStatementBlockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMatchStatementBlockContext) +} + +func (s *OptionalOperandContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *OptionalOperandContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *OptionalOperandContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *OptionalOperandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OptionalOperandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OptionalOperandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOptionalOperand(s) + } +} + +func (s *OptionalOperandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOptionalOperand(s) + } +} + +func (p *GQLParser) OptionalOperand() (localctx IOptionalOperandContext) { + localctx = NewOptionalOperandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 218, GQLParserRULE_optionalOperand) + p.SetState(1811) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserMATCH: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1802) + p.SimpleMatchStatement() + } + + case GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1803) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1804) + p.MatchStatementBlock() + } + { + p.SetState(1805) + p.Match(GQLParserRIGHT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1807) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1808) + p.MatchStatementBlock() + } + { + p.SetState(1809) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IMatchStatementBlockContext is an interface to support dynamic dispatch. +type IMatchStatementBlockContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllMatchStatement() []IMatchStatementContext + MatchStatement(i int) IMatchStatementContext + + // IsMatchStatementBlockContext differentiates from other interfaces. + IsMatchStatementBlockContext() +} + +type MatchStatementBlockContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyMatchStatementBlockContext() *MatchStatementBlockContext { + var p = new(MatchStatementBlockContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchStatementBlock + return p +} + +func InitEmptyMatchStatementBlockContext(p *MatchStatementBlockContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchStatementBlock +} + +func (*MatchStatementBlockContext) IsMatchStatementBlockContext() {} + +func NewMatchStatementBlockContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MatchStatementBlockContext { + var p = new(MatchStatementBlockContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_matchStatementBlock + + return p +} + +func (s *MatchStatementBlockContext) GetParser() antlr.Parser { return s.parser } + +func (s *MatchStatementBlockContext) AllMatchStatement() []IMatchStatementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IMatchStatementContext); ok { + len++ + } + } + + tst := make([]IMatchStatementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IMatchStatementContext); ok { + tst[i] = t.(IMatchStatementContext) + i++ + } + } + + return tst +} + +func (s *MatchStatementBlockContext) MatchStatement(i int) IMatchStatementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchStatementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IMatchStatementContext) +} + +func (s *MatchStatementBlockContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MatchStatementBlockContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *MatchStatementBlockContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMatchStatementBlock(s) + } +} + +func (s *MatchStatementBlockContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMatchStatementBlock(s) + } +} + +func (p *GQLParser) MatchStatementBlock() (localctx IMatchStatementBlockContext) { + localctx = NewMatchStatementBlockContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 220, GQLParserRULE_matchStatementBlock) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1814) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserMATCH || _la == GQLParserOPTIONAL { + { + p.SetState(1813) + p.MatchStatement() + } + + p.SetState(1816) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ICallQueryStatementContext is an interface to support dynamic dispatch. +type ICallQueryStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CallProcedureStatement() ICallProcedureStatementContext + + // IsCallQueryStatementContext differentiates from other interfaces. + IsCallQueryStatementContext() +} + +type CallQueryStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCallQueryStatementContext() *CallQueryStatementContext { + var p = new(CallQueryStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callQueryStatement + return p +} + +func InitEmptyCallQueryStatementContext(p *CallQueryStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callQueryStatement +} + +func (*CallQueryStatementContext) IsCallQueryStatementContext() {} + +func NewCallQueryStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CallQueryStatementContext { + var p = new(CallQueryStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_callQueryStatement + + return p +} + +func (s *CallQueryStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CallQueryStatementContext) CallProcedureStatement() ICallProcedureStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICallProcedureStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICallProcedureStatementContext) +} + +func (s *CallQueryStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CallQueryStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CallQueryStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCallQueryStatement(s) + } +} + +func (s *CallQueryStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCallQueryStatement(s) + } +} + +func (p *GQLParser) CallQueryStatement() (localctx ICallQueryStatementContext) { + localctx = NewCallQueryStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 222, GQLParserRULE_callQueryStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1818) + p.CallProcedureStatement() + } + +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 +} + +// IFilterStatementContext is an interface to support dynamic dispatch. +type IFilterStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FILTER() antlr.TerminalNode + WhereClause() IWhereClauseContext + SearchCondition() ISearchConditionContext + + // IsFilterStatementContext differentiates from other interfaces. + IsFilterStatementContext() +} + +type FilterStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFilterStatementContext() *FilterStatementContext { + var p = new(FilterStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_filterStatement + return p +} + +func InitEmptyFilterStatementContext(p *FilterStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_filterStatement +} + +func (*FilterStatementContext) IsFilterStatementContext() {} + +func NewFilterStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilterStatementContext { + var p = new(FilterStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_filterStatement + + return p +} + +func (s *FilterStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *FilterStatementContext) FILTER() antlr.TerminalNode { + return s.GetToken(GQLParserFILTER, 0) +} + +func (s *FilterStatementContext) WhereClause() IWhereClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereClauseContext) +} + +func (s *FilterStatementContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *FilterStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FilterStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FilterStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFilterStatement(s) + } +} + +func (s *FilterStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFilterStatement(s) + } +} + +func (p *GQLParser) FilterStatement() (localctx IFilterStatementContext) { + localctx = NewFilterStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 224, GQLParserRULE_filterStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1820) + p.Match(GQLParserFILTER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1823) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserWHERE: + { + p.SetState(1821) + p.WhereClause() + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserABS, GQLParserACOS, GQLParserALL_DIFFERENT, GQLParserARRAY, GQLParserASIN, GQLParserATAN, GQLParserAVG, GQLParserBTRIM, GQLParserBYTE_LENGTH, GQLParserCARDINALITY, GQLParserCASE, GQLParserCAST, GQLParserCEIL, GQLParserCEILING, GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH, GQLParserCOALESCE, GQLParserCOLLECT_LIST, GQLParserCOS, GQLParserCOSH, GQLParserCOT, GQLParserCOUNT, GQLParserCURRENT_DATE, GQLParserCURRENT_TIME, GQLParserCURRENT_TIMESTAMP, GQLParserDATE, GQLParserDATETIME, GQLParserDEGREES, GQLParserDURATION, GQLParserDURATION_BETWEEN, GQLParserELEMENT_ID, GQLParserEXISTS, GQLParserEXP, GQLParserFLOOR, GQLParserLEFT, GQLParserLET, GQLParserLIST, GQLParserLN, GQLParserLOCAL_DATETIME, GQLParserLOCAL_TIME, GQLParserLOCAL_TIMESTAMP, GQLParserLOG_KW, GQLParserLOG10, GQLParserLOWER, GQLParserLTRIM, GQLParserMAX, GQLParserMIN, GQLParserMOD, GQLParserNORMALIZE, GQLParserNOT, GQLParserNULL_KW, GQLParserNULLIF, GQLParserOCTET_LENGTH, GQLParserPATH, GQLParserPATH_LENGTH, GQLParserPERCENTILE_CONT, GQLParserPERCENTILE_DISC, GQLParserPOWER, GQLParserPROPERTY_EXISTS, GQLParserRADIANS, GQLParserRECORD, GQLParserRIGHT, GQLParserRTRIM, GQLParserSAME, GQLParserSESSION_USER, GQLParserSIN, GQLParserSINH, GQLParserSIZE, GQLParserSQRT, GQLParserSTDDEV_POP, GQLParserSTDDEV_SAMP, GQLParserSUM, GQLParserTAN, GQLParserTANH, GQLParserTIME, GQLParserTIMESTAMP, GQLParserTRIM, GQLParserUPPER, GQLParserVALUE, GQLParserZONED_DATETIME, GQLParserZONED_TIME, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserGENERAL_PARAMETER_REFERENCE, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET, GQLParserLEFT_PAREN, GQLParserMINUS_SIGN, GQLParserPLUS_SIGN: + { + p.SetState(1822) + p.SearchCondition() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILetStatementContext is an interface to support dynamic dispatch. +type ILetStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LET() antlr.TerminalNode + LetVariableDefinitionList() ILetVariableDefinitionListContext + + // IsLetStatementContext differentiates from other interfaces. + IsLetStatementContext() +} + +type LetStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLetStatementContext() *LetStatementContext { + var p = new(LetStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letStatement + return p +} + +func InitEmptyLetStatementContext(p *LetStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letStatement +} + +func (*LetStatementContext) IsLetStatementContext() {} + +func NewLetStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LetStatementContext { + var p = new(LetStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_letStatement + + return p +} + +func (s *LetStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *LetStatementContext) LET() antlr.TerminalNode { + return s.GetToken(GQLParserLET, 0) +} + +func (s *LetStatementContext) LetVariableDefinitionList() ILetVariableDefinitionListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetVariableDefinitionListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILetVariableDefinitionListContext) +} + +func (s *LetStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LetStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LetStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLetStatement(s) + } +} + +func (s *LetStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLetStatement(s) + } +} + +func (p *GQLParser) LetStatement() (localctx ILetStatementContext) { + localctx = NewLetStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 226, GQLParserRULE_letStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1825) + p.Match(GQLParserLET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1826) + p.LetVariableDefinitionList() + } + +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 +} + +// ILetVariableDefinitionListContext is an interface to support dynamic dispatch. +type ILetVariableDefinitionListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllLetVariableDefinition() []ILetVariableDefinitionContext + LetVariableDefinition(i int) ILetVariableDefinitionContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsLetVariableDefinitionListContext differentiates from other interfaces. + IsLetVariableDefinitionListContext() +} + +type LetVariableDefinitionListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLetVariableDefinitionListContext() *LetVariableDefinitionListContext { + var p = new(LetVariableDefinitionListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letVariableDefinitionList + return p +} + +func InitEmptyLetVariableDefinitionListContext(p *LetVariableDefinitionListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letVariableDefinitionList +} + +func (*LetVariableDefinitionListContext) IsLetVariableDefinitionListContext() {} + +func NewLetVariableDefinitionListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LetVariableDefinitionListContext { + var p = new(LetVariableDefinitionListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_letVariableDefinitionList + + return p +} + +func (s *LetVariableDefinitionListContext) GetParser() antlr.Parser { return s.parser } + +func (s *LetVariableDefinitionListContext) AllLetVariableDefinition() []ILetVariableDefinitionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILetVariableDefinitionContext); ok { + len++ + } + } + + tst := make([]ILetVariableDefinitionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILetVariableDefinitionContext); ok { + tst[i] = t.(ILetVariableDefinitionContext) + i++ + } + } + + return tst +} + +func (s *LetVariableDefinitionListContext) LetVariableDefinition(i int) ILetVariableDefinitionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetVariableDefinitionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ILetVariableDefinitionContext) +} + +func (s *LetVariableDefinitionListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *LetVariableDefinitionListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *LetVariableDefinitionListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LetVariableDefinitionListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LetVariableDefinitionListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLetVariableDefinitionList(s) + } +} + +func (s *LetVariableDefinitionListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLetVariableDefinitionList(s) + } +} + +func (p *GQLParser) LetVariableDefinitionList() (localctx ILetVariableDefinitionListContext) { + localctx = NewLetVariableDefinitionListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 228, GQLParserRULE_letVariableDefinitionList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1828) + p.LetVariableDefinition() + } + p.SetState(1833) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(1829) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1830) + p.LetVariableDefinition() + } + + p.SetState(1835) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ILetVariableDefinitionContext is an interface to support dynamic dispatch. +type ILetVariableDefinitionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueVariableDefinition() IValueVariableDefinitionContext + BindingVariable() IBindingVariableContext + EQUALS_OPERATOR() antlr.TerminalNode + ValueExpression() IValueExpressionContext + + // IsLetVariableDefinitionContext differentiates from other interfaces. + IsLetVariableDefinitionContext() +} + +type LetVariableDefinitionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLetVariableDefinitionContext() *LetVariableDefinitionContext { + var p = new(LetVariableDefinitionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letVariableDefinition + return p +} + +func InitEmptyLetVariableDefinitionContext(p *LetVariableDefinitionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letVariableDefinition +} + +func (*LetVariableDefinitionContext) IsLetVariableDefinitionContext() {} + +func NewLetVariableDefinitionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LetVariableDefinitionContext { + var p = new(LetVariableDefinitionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_letVariableDefinition + + return p +} + +func (s *LetVariableDefinitionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LetVariableDefinitionContext) ValueVariableDefinition() IValueVariableDefinitionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueVariableDefinitionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueVariableDefinitionContext) +} + +func (s *LetVariableDefinitionContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *LetVariableDefinitionContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *LetVariableDefinitionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *LetVariableDefinitionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LetVariableDefinitionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LetVariableDefinitionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLetVariableDefinition(s) + } +} + +func (s *LetVariableDefinitionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLetVariableDefinition(s) + } +} + +func (p *GQLParser) LetVariableDefinition() (localctx ILetVariableDefinitionContext) { + localctx = NewLetVariableDefinitionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 230, GQLParserRULE_letVariableDefinition) + p.SetState(1841) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserVALUE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1836) + p.ValueVariableDefinition() + } + + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1837) + p.BindingVariable() + } + { + p.SetState(1838) + p.Match(GQLParserEQUALS_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1839) + p.valueExpression(0) + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IForStatementContext is an interface to support dynamic dispatch. +type IForStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FOR() antlr.TerminalNode + ForItem() IForItemContext + ForOrdinalityOrOffset() IForOrdinalityOrOffsetContext + + // IsForStatementContext differentiates from other interfaces. + IsForStatementContext() +} + +type ForStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForStatementContext() *ForStatementContext { + var p = new(ForStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forStatement + return p +} + +func InitEmptyForStatementContext(p *ForStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forStatement +} + +func (*ForStatementContext) IsForStatementContext() {} + +func NewForStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForStatementContext { + var p = new(ForStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_forStatement + + return p +} + +func (s *ForStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *ForStatementContext) FOR() antlr.TerminalNode { + return s.GetToken(GQLParserFOR, 0) +} + +func (s *ForStatementContext) ForItem() IForItemContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForItemContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IForItemContext) +} + +func (s *ForStatementContext) ForOrdinalityOrOffset() IForOrdinalityOrOffsetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForOrdinalityOrOffsetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IForOrdinalityOrOffsetContext) +} + +func (s *ForStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ForStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ForStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterForStatement(s) + } +} + +func (s *ForStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitForStatement(s) + } +} + +func (p *GQLParser) ForStatement() (localctx IForStatementContext) { + localctx = NewForStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 232, GQLParserRULE_forStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1843) + p.Match(GQLParserFOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1844) + p.ForItem() + } + p.SetState(1846) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserWITH { + { + p.SetState(1845) + p.ForOrdinalityOrOffset() + } + + } + +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 +} + +// IForItemContext is an interface to support dynamic dispatch. +type IForItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ForItemAlias() IForItemAliasContext + ForItemSource() IForItemSourceContext + + // IsForItemContext differentiates from other interfaces. + IsForItemContext() +} + +type ForItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForItemContext() *ForItemContext { + var p = new(ForItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItem + return p +} + +func InitEmptyForItemContext(p *ForItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItem +} + +func (*ForItemContext) IsForItemContext() {} + +func NewForItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForItemContext { + var p = new(ForItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_forItem + + return p +} + +func (s *ForItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *ForItemContext) ForItemAlias() IForItemAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForItemAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IForItemAliasContext) +} + +func (s *ForItemContext) ForItemSource() IForItemSourceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForItemSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IForItemSourceContext) +} + +func (s *ForItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ForItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ForItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterForItem(s) + } +} + +func (s *ForItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitForItem(s) + } +} + +func (p *GQLParser) ForItem() (localctx IForItemContext) { + localctx = NewForItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 234, GQLParserRULE_forItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1848) + p.ForItemAlias() + } + { + p.SetState(1849) + p.ForItemSource() + } + +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 +} + +// IForItemAliasContext is an interface to support dynamic dispatch. +type IForItemAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariable() IBindingVariableContext + IN() antlr.TerminalNode + + // IsForItemAliasContext differentiates from other interfaces. + IsForItemAliasContext() +} + +type ForItemAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForItemAliasContext() *ForItemAliasContext { + var p = new(ForItemAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItemAlias + return p +} + +func InitEmptyForItemAliasContext(p *ForItemAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItemAlias +} + +func (*ForItemAliasContext) IsForItemAliasContext() {} + +func NewForItemAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForItemAliasContext { + var p = new(ForItemAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_forItemAlias + + return p +} + +func (s *ForItemAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *ForItemAliasContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *ForItemAliasContext) IN() antlr.TerminalNode { + return s.GetToken(GQLParserIN, 0) +} + +func (s *ForItemAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ForItemAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ForItemAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterForItemAlias(s) + } +} + +func (s *ForItemAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitForItemAlias(s) + } +} + +func (p *GQLParser) ForItemAlias() (localctx IForItemAliasContext) { + localctx = NewForItemAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 236, GQLParserRULE_forItemAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1851) + p.BindingVariable() + } + { + p.SetState(1852) + p.Match(GQLParserIN) + 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 +} + +// IForItemSourceContext is an interface to support dynamic dispatch. +type IForItemSourceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsForItemSourceContext differentiates from other interfaces. + IsForItemSourceContext() +} + +type ForItemSourceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForItemSourceContext() *ForItemSourceContext { + var p = new(ForItemSourceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItemSource + return p +} + +func InitEmptyForItemSourceContext(p *ForItemSourceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forItemSource +} + +func (*ForItemSourceContext) IsForItemSourceContext() {} + +func NewForItemSourceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForItemSourceContext { + var p = new(ForItemSourceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_forItemSource + + return p +} + +func (s *ForItemSourceContext) GetParser() antlr.Parser { return s.parser } + +func (s *ForItemSourceContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ForItemSourceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ForItemSourceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ForItemSourceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterForItemSource(s) + } +} + +func (s *ForItemSourceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitForItemSource(s) + } +} + +func (p *GQLParser) ForItemSource() (localctx IForItemSourceContext) { + localctx = NewForItemSourceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 238, GQLParserRULE_forItemSource) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1854) + p.valueExpression(0) + } + +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 +} + +// IForOrdinalityOrOffsetContext is an interface to support dynamic dispatch. +type IForOrdinalityOrOffsetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WITH() antlr.TerminalNode + BindingVariable() IBindingVariableContext + ORDINALITY() antlr.TerminalNode + OFFSET() antlr.TerminalNode + + // IsForOrdinalityOrOffsetContext differentiates from other interfaces. + IsForOrdinalityOrOffsetContext() +} + +type ForOrdinalityOrOffsetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForOrdinalityOrOffsetContext() *ForOrdinalityOrOffsetContext { + var p = new(ForOrdinalityOrOffsetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forOrdinalityOrOffset + return p +} + +func InitEmptyForOrdinalityOrOffsetContext(p *ForOrdinalityOrOffsetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_forOrdinalityOrOffset +} + +func (*ForOrdinalityOrOffsetContext) IsForOrdinalityOrOffsetContext() {} + +func NewForOrdinalityOrOffsetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ForOrdinalityOrOffsetContext { + var p = new(ForOrdinalityOrOffsetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_forOrdinalityOrOffset + + return p +} + +func (s *ForOrdinalityOrOffsetContext) GetParser() antlr.Parser { return s.parser } + +func (s *ForOrdinalityOrOffsetContext) WITH() antlr.TerminalNode { + return s.GetToken(GQLParserWITH, 0) +} + +func (s *ForOrdinalityOrOffsetContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *ForOrdinalityOrOffsetContext) ORDINALITY() antlr.TerminalNode { + return s.GetToken(GQLParserORDINALITY, 0) +} + +func (s *ForOrdinalityOrOffsetContext) OFFSET() antlr.TerminalNode { + return s.GetToken(GQLParserOFFSET, 0) +} + +func (s *ForOrdinalityOrOffsetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ForOrdinalityOrOffsetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ForOrdinalityOrOffsetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterForOrdinalityOrOffset(s) + } +} + +func (s *ForOrdinalityOrOffsetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitForOrdinalityOrOffset(s) + } +} + +func (p *GQLParser) ForOrdinalityOrOffset() (localctx IForOrdinalityOrOffsetContext) { + localctx = NewForOrdinalityOrOffsetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 240, GQLParserRULE_forOrdinalityOrOffset) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1856) + p.Match(GQLParserWITH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1857) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserOFFSET || _la == GQLParserORDINALITY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1858) + p.BindingVariable() + } + +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 +} + +// IOrderByAndPageStatementContext is an interface to support dynamic dispatch. +type IOrderByAndPageStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OrderByClause() IOrderByClauseContext + OffsetClause() IOffsetClauseContext + LimitClause() ILimitClauseContext + + // IsOrderByAndPageStatementContext differentiates from other interfaces. + IsOrderByAndPageStatementContext() +} + +type OrderByAndPageStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOrderByAndPageStatementContext() *OrderByAndPageStatementContext { + var p = new(OrderByAndPageStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderByAndPageStatement + return p +} + +func InitEmptyOrderByAndPageStatementContext(p *OrderByAndPageStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderByAndPageStatement +} + +func (*OrderByAndPageStatementContext) IsOrderByAndPageStatementContext() {} + +func NewOrderByAndPageStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByAndPageStatementContext { + var p = new(OrderByAndPageStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_orderByAndPageStatement + + return p +} + +func (s *OrderByAndPageStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *OrderByAndPageStatementContext) OrderByClause() IOrderByClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrderByClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOrderByClauseContext) +} + +func (s *OrderByAndPageStatementContext) OffsetClause() IOffsetClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOffsetClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOffsetClauseContext) +} + +func (s *OrderByAndPageStatementContext) LimitClause() ILimitClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILimitClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILimitClauseContext) +} + +func (s *OrderByAndPageStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OrderByAndPageStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OrderByAndPageStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOrderByAndPageStatement(s) + } +} + +func (s *OrderByAndPageStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOrderByAndPageStatement(s) + } +} + +func (p *GQLParser) OrderByAndPageStatement() (localctx IOrderByAndPageStatementContext) { + localctx = NewOrderByAndPageStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 242, GQLParserRULE_orderByAndPageStatement) + p.SetState(1872) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserORDER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1860) + p.OrderByClause() + } + p.SetState(1862) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 111, p.GetParserRuleContext()) == 1 { + { + p.SetState(1861) + p.OffsetClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1865) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 112, p.GetParserRuleContext()) == 1 { + { + p.SetState(1864) + p.LimitClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserOFFSET, GQLParserSKIP_RESERVED_WORD: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1867) + p.OffsetClause() + } + p.SetState(1869) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 113, p.GetParserRuleContext()) == 1 { + { + p.SetState(1868) + p.LimitClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserLIMIT: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1871) + p.LimitClause() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPrimitiveResultStatementContext is an interface to support dynamic dispatch. +type IPrimitiveResultStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ReturnStatement() IReturnStatementContext + OrderByAndPageStatement() IOrderByAndPageStatementContext + FINISH() antlr.TerminalNode + + // IsPrimitiveResultStatementContext differentiates from other interfaces. + IsPrimitiveResultStatementContext() +} + +type PrimitiveResultStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPrimitiveResultStatementContext() *PrimitiveResultStatementContext { + var p = new(PrimitiveResultStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveResultStatement + return p +} + +func InitEmptyPrimitiveResultStatementContext(p *PrimitiveResultStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_primitiveResultStatement +} + +func (*PrimitiveResultStatementContext) IsPrimitiveResultStatementContext() {} + +func NewPrimitiveResultStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrimitiveResultStatementContext { + var p = new(PrimitiveResultStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_primitiveResultStatement + + return p +} + +func (s *PrimitiveResultStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *PrimitiveResultStatementContext) ReturnStatement() IReturnStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReturnStatementContext) +} + +func (s *PrimitiveResultStatementContext) OrderByAndPageStatement() IOrderByAndPageStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrderByAndPageStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOrderByAndPageStatementContext) +} + +func (s *PrimitiveResultStatementContext) FINISH() antlr.TerminalNode { + return s.GetToken(GQLParserFINISH, 0) +} + +func (s *PrimitiveResultStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrimitiveResultStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PrimitiveResultStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrimitiveResultStatement(s) + } +} + +func (s *PrimitiveResultStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrimitiveResultStatement(s) + } +} + +func (p *GQLParser) PrimitiveResultStatement() (localctx IPrimitiveResultStatementContext) { + localctx = NewPrimitiveResultStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 244, GQLParserRULE_primitiveResultStatement) + p.SetState(1879) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserRETURN: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1874) + p.ReturnStatement() + } + p.SetState(1876) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + { + p.SetState(1875) + p.OrderByAndPageStatement() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFINISH: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1878) + p.Match(GQLParserFINISH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IReturnStatementContext is an interface to support dynamic dispatch. +type IReturnStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RETURN() antlr.TerminalNode + ReturnStatementBody() IReturnStatementBodyContext + + // IsReturnStatementContext differentiates from other interfaces. + IsReturnStatementContext() +} + +type ReturnStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReturnStatementContext() *ReturnStatementContext { + var p = new(ReturnStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnStatement + return p +} + +func InitEmptyReturnStatementContext(p *ReturnStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnStatement +} + +func (*ReturnStatementContext) IsReturnStatementContext() {} + +func NewReturnStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnStatementContext { + var p = new(ReturnStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_returnStatement + + return p +} + +func (s *ReturnStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReturnStatementContext) RETURN() antlr.TerminalNode { + return s.GetToken(GQLParserRETURN, 0) +} + +func (s *ReturnStatementContext) ReturnStatementBody() IReturnStatementBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnStatementBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReturnStatementBodyContext) +} + +func (s *ReturnStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReturnStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReturnStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReturnStatement(s) + } +} + +func (s *ReturnStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReturnStatement(s) + } +} + +func (p *GQLParser) ReturnStatement() (localctx IReturnStatementContext) { + localctx = NewReturnStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 246, GQLParserRULE_returnStatement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1881) + p.Match(GQLParserRETURN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1882) + p.ReturnStatementBody() + } + +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 +} + +// IReturnStatementBodyContext is an interface to support dynamic dispatch. +type IReturnStatementBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ASTERISK() antlr.TerminalNode + ReturnItemList() IReturnItemListContext + SetQuantifier() ISetQuantifierContext + GroupByClause() IGroupByClauseContext + + // IsReturnStatementBodyContext differentiates from other interfaces. + IsReturnStatementBodyContext() +} + +type ReturnStatementBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReturnStatementBodyContext() *ReturnStatementBodyContext { + var p = new(ReturnStatementBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnStatementBody + return p +} + +func InitEmptyReturnStatementBodyContext(p *ReturnStatementBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnStatementBody +} + +func (*ReturnStatementBodyContext) IsReturnStatementBodyContext() {} + +func NewReturnStatementBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnStatementBodyContext { + var p = new(ReturnStatementBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_returnStatementBody + + return p +} + +func (s *ReturnStatementBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReturnStatementBodyContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *ReturnStatementBodyContext) ReturnItemList() IReturnItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReturnItemListContext) +} + +func (s *ReturnStatementBodyContext) SetQuantifier() ISetQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetQuantifierContext) +} + +func (s *ReturnStatementBodyContext) GroupByClause() IGroupByClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByClauseContext) +} + +func (s *ReturnStatementBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReturnStatementBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReturnStatementBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReturnStatementBody(s) + } +} + +func (s *ReturnStatementBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReturnStatementBody(s) + } +} + +func (p *GQLParser) ReturnStatementBody() (localctx IReturnStatementBodyContext) { + localctx = NewReturnStatementBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 248, GQLParserRULE_returnStatementBody) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1885) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(1884) + p.SetQuantifier() + } + + } + p.SetState(1889) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserASTERISK: + { + p.SetState(1887) + p.Match(GQLParserASTERISK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserABS, GQLParserACOS, GQLParserALL_DIFFERENT, GQLParserARRAY, GQLParserASIN, GQLParserATAN, GQLParserAVG, GQLParserBTRIM, GQLParserBYTE_LENGTH, GQLParserCARDINALITY, GQLParserCASE, GQLParserCAST, GQLParserCEIL, GQLParserCEILING, GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH, GQLParserCOALESCE, GQLParserCOLLECT_LIST, GQLParserCOS, GQLParserCOSH, GQLParserCOT, GQLParserCOUNT, GQLParserCURRENT_DATE, GQLParserCURRENT_TIME, GQLParserCURRENT_TIMESTAMP, GQLParserDATE, GQLParserDATETIME, GQLParserDEGREES, GQLParserDURATION, GQLParserDURATION_BETWEEN, GQLParserELEMENT_ID, GQLParserEXISTS, GQLParserEXP, GQLParserFLOOR, GQLParserLEFT, GQLParserLET, GQLParserLIST, GQLParserLN, GQLParserLOCAL_DATETIME, GQLParserLOCAL_TIME, GQLParserLOCAL_TIMESTAMP, GQLParserLOG_KW, GQLParserLOG10, GQLParserLOWER, GQLParserLTRIM, GQLParserMAX, GQLParserMIN, GQLParserMOD, GQLParserNORMALIZE, GQLParserNOT, GQLParserNULL_KW, GQLParserNULLIF, GQLParserOCTET_LENGTH, GQLParserPATH, GQLParserPATH_LENGTH, GQLParserPERCENTILE_CONT, GQLParserPERCENTILE_DISC, GQLParserPOWER, GQLParserPROPERTY_EXISTS, GQLParserRADIANS, GQLParserRECORD, GQLParserRIGHT, GQLParserRTRIM, GQLParserSAME, GQLParserSESSION_USER, GQLParserSIN, GQLParserSINH, GQLParserSIZE, GQLParserSQRT, GQLParserSTDDEV_POP, GQLParserSTDDEV_SAMP, GQLParserSUM, GQLParserTAN, GQLParserTANH, GQLParserTIME, GQLParserTIMESTAMP, GQLParserTRIM, GQLParserUPPER, GQLParserVALUE, GQLParserZONED_DATETIME, GQLParserZONED_TIME, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserGENERAL_PARAMETER_REFERENCE, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET, GQLParserLEFT_PAREN, GQLParserMINUS_SIGN, GQLParserPLUS_SIGN: + { + p.SetState(1888) + p.ReturnItemList() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.SetState(1892) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 119, p.GetParserRuleContext()) == 1 { + { + p.SetState(1891) + p.GroupByClause() + } + + } else if p.HasError() { // JIM + 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 +} + +// IReturnItemListContext is an interface to support dynamic dispatch. +type IReturnItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllReturnItem() []IReturnItemContext + ReturnItem(i int) IReturnItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsReturnItemListContext differentiates from other interfaces. + IsReturnItemListContext() +} + +type ReturnItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReturnItemListContext() *ReturnItemListContext { + var p = new(ReturnItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItemList + return p +} + +func InitEmptyReturnItemListContext(p *ReturnItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItemList +} + +func (*ReturnItemListContext) IsReturnItemListContext() {} + +func NewReturnItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnItemListContext { + var p = new(ReturnItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_returnItemList + + return p +} + +func (s *ReturnItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReturnItemListContext) AllReturnItem() []IReturnItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IReturnItemContext); ok { + len++ + } + } + + tst := make([]IReturnItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IReturnItemContext); ok { + tst[i] = t.(IReturnItemContext) + i++ + } + } + + return tst +} + +func (s *ReturnItemListContext) ReturnItem(i int) IReturnItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IReturnItemContext) +} + +func (s *ReturnItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *ReturnItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *ReturnItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReturnItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReturnItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReturnItemList(s) + } +} + +func (s *ReturnItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReturnItemList(s) + } +} + +func (p *GQLParser) ReturnItemList() (localctx IReturnItemListContext) { + localctx = NewReturnItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 250, GQLParserRULE_returnItemList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1894) + p.ReturnItem() + } + p.SetState(1899) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1895) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1896) + p.ReturnItem() + } + + } + p.SetState(1901) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 120, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IReturnItemContext is an interface to support dynamic dispatch. +type IReturnItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AggregatingValueExpression() IAggregatingValueExpressionContext + ReturnItemAlias() IReturnItemAliasContext + + // IsReturnItemContext differentiates from other interfaces. + IsReturnItemContext() +} + +type ReturnItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReturnItemContext() *ReturnItemContext { + var p = new(ReturnItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItem + return p +} + +func InitEmptyReturnItemContext(p *ReturnItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItem +} + +func (*ReturnItemContext) IsReturnItemContext() {} + +func NewReturnItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnItemContext { + var p = new(ReturnItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_returnItem + + return p +} + +func (s *ReturnItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReturnItemContext) AggregatingValueExpression() IAggregatingValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregatingValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregatingValueExpressionContext) +} + +func (s *ReturnItemContext) ReturnItemAlias() IReturnItemAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReturnItemAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReturnItemAliasContext) +} + +func (s *ReturnItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReturnItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReturnItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReturnItem(s) + } +} + +func (s *ReturnItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReturnItem(s) + } +} + +func (p *GQLParser) ReturnItem() (localctx IReturnItemContext) { + localctx = NewReturnItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 252, GQLParserRULE_returnItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1902) + p.AggregatingValueExpression() + } + p.SetState(1904) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + { + p.SetState(1903) + p.ReturnItemAlias() + } + + } else if p.HasError() { // JIM + 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 +} + +// IReturnItemAliasContext is an interface to support dynamic dispatch. +type IReturnItemAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AS() antlr.TerminalNode + Identifier() IIdentifierContext + + // IsReturnItemAliasContext differentiates from other interfaces. + IsReturnItemAliasContext() +} + +type ReturnItemAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReturnItemAliasContext() *ReturnItemAliasContext { + var p = new(ReturnItemAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItemAlias + return p +} + +func InitEmptyReturnItemAliasContext(p *ReturnItemAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_returnItemAlias +} + +func (*ReturnItemAliasContext) IsReturnItemAliasContext() {} + +func NewReturnItemAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReturnItemAliasContext { + var p = new(ReturnItemAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_returnItemAlias + + return p +} + +func (s *ReturnItemAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReturnItemAliasContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *ReturnItemAliasContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *ReturnItemAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReturnItemAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReturnItemAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReturnItemAlias(s) + } +} + +func (s *ReturnItemAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReturnItemAlias(s) + } +} + +func (p *GQLParser) ReturnItemAlias() (localctx IReturnItemAliasContext) { + localctx = NewReturnItemAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 254, GQLParserRULE_returnItemAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1906) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1907) + p.Identifier() + } + +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 +} + +// ISelectStatementContext is an interface to support dynamic dispatch. +type ISelectStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SELECT() antlr.TerminalNode + ASTERISK() antlr.TerminalNode + SelectItemList() ISelectItemListContext + SetQuantifier() ISetQuantifierContext + SelectStatementBody() ISelectStatementBodyContext + WhereClause() IWhereClauseContext + GroupByClause() IGroupByClauseContext + HavingClause() IHavingClauseContext + OrderByClause() IOrderByClauseContext + OffsetClause() IOffsetClauseContext + LimitClause() ILimitClauseContext + + // IsSelectStatementContext differentiates from other interfaces. + IsSelectStatementContext() +} + +type SelectStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectStatementContext() *SelectStatementContext { + var p = new(SelectStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectStatement + return p +} + +func InitEmptySelectStatementContext(p *SelectStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectStatement +} + +func (*SelectStatementContext) IsSelectStatementContext() {} + +func NewSelectStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectStatementContext { + var p = new(SelectStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectStatement + + return p +} + +func (s *SelectStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectStatementContext) SELECT() antlr.TerminalNode { + return s.GetToken(GQLParserSELECT, 0) +} + +func (s *SelectStatementContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *SelectStatementContext) SelectItemList() ISelectItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectItemListContext) +} + +func (s *SelectStatementContext) SetQuantifier() ISetQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetQuantifierContext) +} + +func (s *SelectStatementContext) SelectStatementBody() ISelectStatementBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectStatementBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectStatementBodyContext) +} + +func (s *SelectStatementContext) WhereClause() IWhereClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereClauseContext) +} + +func (s *SelectStatementContext) GroupByClause() IGroupByClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByClauseContext) +} + +func (s *SelectStatementContext) HavingClause() IHavingClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IHavingClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IHavingClauseContext) +} + +func (s *SelectStatementContext) OrderByClause() IOrderByClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrderByClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOrderByClauseContext) +} + +func (s *SelectStatementContext) OffsetClause() IOffsetClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOffsetClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOffsetClauseContext) +} + +func (s *SelectStatementContext) LimitClause() ILimitClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILimitClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILimitClauseContext) +} + +func (s *SelectStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectStatement(s) + } +} + +func (s *SelectStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectStatement(s) + } +} + +func (p *GQLParser) SelectStatement() (localctx ISelectStatementContext) { + localctx = NewSelectStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 256, GQLParserRULE_selectStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1909) + p.Match(GQLParserSELECT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1911) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(1910) + p.SetQuantifier() + } + + } + p.SetState(1915) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserASTERISK: + { + p.SetState(1913) + p.Match(GQLParserASTERISK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserABS, GQLParserACOS, GQLParserALL_DIFFERENT, GQLParserARRAY, GQLParserASIN, GQLParserATAN, GQLParserAVG, GQLParserBTRIM, GQLParserBYTE_LENGTH, GQLParserCARDINALITY, GQLParserCASE, GQLParserCAST, GQLParserCEIL, GQLParserCEILING, GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH, GQLParserCOALESCE, GQLParserCOLLECT_LIST, GQLParserCOS, GQLParserCOSH, GQLParserCOT, GQLParserCOUNT, GQLParserCURRENT_DATE, GQLParserCURRENT_TIME, GQLParserCURRENT_TIMESTAMP, GQLParserDATE, GQLParserDATETIME, GQLParserDEGREES, GQLParserDURATION, GQLParserDURATION_BETWEEN, GQLParserELEMENT_ID, GQLParserEXISTS, GQLParserEXP, GQLParserFLOOR, GQLParserLEFT, GQLParserLET, GQLParserLIST, GQLParserLN, GQLParserLOCAL_DATETIME, GQLParserLOCAL_TIME, GQLParserLOCAL_TIMESTAMP, GQLParserLOG_KW, GQLParserLOG10, GQLParserLOWER, GQLParserLTRIM, GQLParserMAX, GQLParserMIN, GQLParserMOD, GQLParserNORMALIZE, GQLParserNOT, GQLParserNULL_KW, GQLParserNULLIF, GQLParserOCTET_LENGTH, GQLParserPATH, GQLParserPATH_LENGTH, GQLParserPERCENTILE_CONT, GQLParserPERCENTILE_DISC, GQLParserPOWER, GQLParserPROPERTY_EXISTS, GQLParserRADIANS, GQLParserRECORD, GQLParserRIGHT, GQLParserRTRIM, GQLParserSAME, GQLParserSESSION_USER, GQLParserSIN, GQLParserSINH, GQLParserSIZE, GQLParserSQRT, GQLParserSTDDEV_POP, GQLParserSTDDEV_SAMP, GQLParserSUM, GQLParserTAN, GQLParserTANH, GQLParserTIME, GQLParserTIMESTAMP, GQLParserTRIM, GQLParserUPPER, GQLParserVALUE, GQLParserZONED_DATETIME, GQLParserZONED_TIME, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserGENERAL_PARAMETER_REFERENCE, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET, GQLParserLEFT_PAREN, GQLParserMINUS_SIGN, GQLParserPLUS_SIGN: + { + p.SetState(1914) + p.SelectItemList() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.SetState(1936) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { + { + p.SetState(1917) + p.SelectStatementBody() + } + p.SetState(1919) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 124, p.GetParserRuleContext()) == 1 { + { + p.SetState(1918) + p.WhereClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1922) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 125, p.GetParserRuleContext()) == 1 { + { + p.SetState(1921) + p.GroupByClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1925) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 126, p.GetParserRuleContext()) == 1 { + { + p.SetState(1924) + p.HavingClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1928) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { + { + p.SetState(1927) + p.OrderByClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1931) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { + { + p.SetState(1930) + p.OffsetClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(1934) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 129, p.GetParserRuleContext()) == 1 { + { + p.SetState(1933) + p.LimitClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + } else if p.HasError() { // JIM + 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 +} + +// ISelectItemListContext is an interface to support dynamic dispatch. +type ISelectItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSelectItem() []ISelectItemContext + SelectItem(i int) ISelectItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSelectItemListContext differentiates from other interfaces. + IsSelectItemListContext() +} + +type SelectItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectItemListContext() *SelectItemListContext { + var p = new(SelectItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItemList + return p +} + +func InitEmptySelectItemListContext(p *SelectItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItemList +} + +func (*SelectItemListContext) IsSelectItemListContext() {} + +func NewSelectItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectItemListContext { + var p = new(SelectItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectItemList + + return p +} + +func (s *SelectItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectItemListContext) AllSelectItem() []ISelectItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelectItemContext); ok { + len++ + } + } + + tst := make([]ISelectItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelectItemContext); ok { + tst[i] = t.(ISelectItemContext) + i++ + } + } + + return tst +} + +func (s *SelectItemListContext) SelectItem(i int) ISelectItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelectItemContext) +} + +func (s *SelectItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *SelectItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *SelectItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectItemList(s) + } +} + +func (s *SelectItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectItemList(s) + } +} + +func (p *GQLParser) SelectItemList() (localctx ISelectItemListContext) { + localctx = NewSelectItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 258, GQLParserRULE_selectItemList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1938) + p.SelectItem() + } + p.SetState(1943) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1939) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1940) + p.SelectItem() + } + + } + p.SetState(1945) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// ISelectItemContext is an interface to support dynamic dispatch. +type ISelectItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AggregatingValueExpression() IAggregatingValueExpressionContext + SelectItemAlias() ISelectItemAliasContext + + // IsSelectItemContext differentiates from other interfaces. + IsSelectItemContext() +} + +type SelectItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectItemContext() *SelectItemContext { + var p = new(SelectItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItem + return p +} + +func InitEmptySelectItemContext(p *SelectItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItem +} + +func (*SelectItemContext) IsSelectItemContext() {} + +func NewSelectItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectItemContext { + var p = new(SelectItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectItem + + return p +} + +func (s *SelectItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectItemContext) AggregatingValueExpression() IAggregatingValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregatingValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregatingValueExpressionContext) +} + +func (s *SelectItemContext) SelectItemAlias() ISelectItemAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectItemAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectItemAliasContext) +} + +func (s *SelectItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectItem(s) + } +} + +func (s *SelectItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectItem(s) + } +} + +func (p *GQLParser) SelectItem() (localctx ISelectItemContext) { + localctx = NewSelectItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 260, GQLParserRULE_selectItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1946) + p.AggregatingValueExpression() + } + p.SetState(1948) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) == 1 { + { + p.SetState(1947) + p.SelectItemAlias() + } + + } else if p.HasError() { // JIM + 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 +} + +// ISelectItemAliasContext is an interface to support dynamic dispatch. +type ISelectItemAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AS() antlr.TerminalNode + Identifier() IIdentifierContext + + // IsSelectItemAliasContext differentiates from other interfaces. + IsSelectItemAliasContext() +} + +type SelectItemAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectItemAliasContext() *SelectItemAliasContext { + var p = new(SelectItemAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItemAlias + return p +} + +func InitEmptySelectItemAliasContext(p *SelectItemAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectItemAlias +} + +func (*SelectItemAliasContext) IsSelectItemAliasContext() {} + +func NewSelectItemAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectItemAliasContext { + var p = new(SelectItemAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectItemAlias + + return p +} + +func (s *SelectItemAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectItemAliasContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *SelectItemAliasContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *SelectItemAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectItemAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectItemAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectItemAlias(s) + } +} + +func (s *SelectItemAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectItemAlias(s) + } +} + +func (p *GQLParser) SelectItemAlias() (localctx ISelectItemAliasContext) { + localctx = NewSelectItemAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 262, GQLParserRULE_selectItemAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1950) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1951) + p.Identifier() + } + +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 +} + +// IHavingClauseContext is an interface to support dynamic dispatch. +type IHavingClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + HAVING() antlr.TerminalNode + SearchCondition() ISearchConditionContext + + // IsHavingClauseContext differentiates from other interfaces. + IsHavingClauseContext() +} + +type HavingClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyHavingClauseContext() *HavingClauseContext { + var p = new(HavingClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_havingClause + return p +} + +func InitEmptyHavingClauseContext(p *HavingClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_havingClause +} + +func (*HavingClauseContext) IsHavingClauseContext() {} + +func NewHavingClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HavingClauseContext { + var p = new(HavingClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_havingClause + + return p +} + +func (s *HavingClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *HavingClauseContext) HAVING() antlr.TerminalNode { + return s.GetToken(GQLParserHAVING, 0) +} + +func (s *HavingClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *HavingClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *HavingClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *HavingClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterHavingClause(s) + } +} + +func (s *HavingClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitHavingClause(s) + } +} + +func (p *GQLParser) HavingClause() (localctx IHavingClauseContext) { + localctx = NewHavingClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 264, GQLParserRULE_havingClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1953) + p.Match(GQLParserHAVING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1954) + p.SearchCondition() + } + +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 +} + +// ISelectStatementBodyContext is an interface to support dynamic dispatch. +type ISelectStatementBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FROM() antlr.TerminalNode + SelectGraphMatchList() ISelectGraphMatchListContext + SelectQuerySpecification() ISelectQuerySpecificationContext + + // IsSelectStatementBodyContext differentiates from other interfaces. + IsSelectStatementBodyContext() +} + +type SelectStatementBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectStatementBodyContext() *SelectStatementBodyContext { + var p = new(SelectStatementBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectStatementBody + return p +} + +func InitEmptySelectStatementBodyContext(p *SelectStatementBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectStatementBody +} + +func (*SelectStatementBodyContext) IsSelectStatementBodyContext() {} + +func NewSelectStatementBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectStatementBodyContext { + var p = new(SelectStatementBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectStatementBody + + return p +} + +func (s *SelectStatementBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectStatementBodyContext) FROM() antlr.TerminalNode { + return s.GetToken(GQLParserFROM, 0) +} + +func (s *SelectStatementBodyContext) SelectGraphMatchList() ISelectGraphMatchListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectGraphMatchListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectGraphMatchListContext) +} + +func (s *SelectStatementBodyContext) SelectQuerySpecification() ISelectQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectQuerySpecificationContext) +} + +func (s *SelectStatementBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectStatementBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectStatementBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectStatementBody(s) + } +} + +func (s *SelectStatementBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectStatementBody(s) + } +} + +func (p *GQLParser) SelectStatementBody() (localctx ISelectStatementBodyContext) { + localctx = NewSelectStatementBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 266, GQLParserRULE_selectStatementBody) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1956) + p.Match(GQLParserFROM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1959) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 133, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1957) + p.SelectGraphMatchList() + } + + case 2: + { + p.SetState(1958) + p.SelectQuerySpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISelectGraphMatchListContext is an interface to support dynamic dispatch. +type ISelectGraphMatchListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSelectGraphMatch() []ISelectGraphMatchContext + SelectGraphMatch(i int) ISelectGraphMatchContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSelectGraphMatchListContext differentiates from other interfaces. + IsSelectGraphMatchListContext() +} + +type SelectGraphMatchListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectGraphMatchListContext() *SelectGraphMatchListContext { + var p = new(SelectGraphMatchListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectGraphMatchList + return p +} + +func InitEmptySelectGraphMatchListContext(p *SelectGraphMatchListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectGraphMatchList +} + +func (*SelectGraphMatchListContext) IsSelectGraphMatchListContext() {} + +func NewSelectGraphMatchListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectGraphMatchListContext { + var p = new(SelectGraphMatchListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectGraphMatchList + + return p +} + +func (s *SelectGraphMatchListContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectGraphMatchListContext) AllSelectGraphMatch() []ISelectGraphMatchContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelectGraphMatchContext); ok { + len++ + } + } + + tst := make([]ISelectGraphMatchContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelectGraphMatchContext); ok { + tst[i] = t.(ISelectGraphMatchContext) + i++ + } + } + + return tst +} + +func (s *SelectGraphMatchListContext) SelectGraphMatch(i int) ISelectGraphMatchContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectGraphMatchContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelectGraphMatchContext) +} + +func (s *SelectGraphMatchListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *SelectGraphMatchListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *SelectGraphMatchListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectGraphMatchListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectGraphMatchListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectGraphMatchList(s) + } +} + +func (s *SelectGraphMatchListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectGraphMatchList(s) + } +} + +func (p *GQLParser) SelectGraphMatchList() (localctx ISelectGraphMatchListContext) { + localctx = NewSelectGraphMatchListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 268, GQLParserRULE_selectGraphMatchList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1961) + p.SelectGraphMatch() + } + p.SetState(1966) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1962) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1963) + p.SelectGraphMatch() + } + + } + p.SetState(1968) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 134, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// ISelectGraphMatchContext is an interface to support dynamic dispatch. +type ISelectGraphMatchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphExpression() IGraphExpressionContext + MatchStatement() IMatchStatementContext + + // IsSelectGraphMatchContext differentiates from other interfaces. + IsSelectGraphMatchContext() +} + +type SelectGraphMatchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectGraphMatchContext() *SelectGraphMatchContext { + var p = new(SelectGraphMatchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectGraphMatch + return p +} + +func InitEmptySelectGraphMatchContext(p *SelectGraphMatchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectGraphMatch +} + +func (*SelectGraphMatchContext) IsSelectGraphMatchContext() {} + +func NewSelectGraphMatchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectGraphMatchContext { + var p = new(SelectGraphMatchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectGraphMatch + + return p +} + +func (s *SelectGraphMatchContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectGraphMatchContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *SelectGraphMatchContext) MatchStatement() IMatchStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMatchStatementContext) +} + +func (s *SelectGraphMatchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectGraphMatchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectGraphMatchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectGraphMatch(s) + } +} + +func (s *SelectGraphMatchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectGraphMatch(s) + } +} + +func (p *GQLParser) SelectGraphMatch() (localctx ISelectGraphMatchContext) { + localctx = NewSelectGraphMatchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 270, GQLParserRULE_selectGraphMatch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1969) + p.GraphExpression() + } + { + p.SetState(1970) + p.MatchStatement() + } + +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 +} + +// ISelectQuerySpecificationContext is an interface to support dynamic dispatch. +type ISelectQuerySpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NestedQuerySpecification() INestedQuerySpecificationContext + GraphExpression() IGraphExpressionContext + + // IsSelectQuerySpecificationContext differentiates from other interfaces. + IsSelectQuerySpecificationContext() +} + +type SelectQuerySpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectQuerySpecificationContext() *SelectQuerySpecificationContext { + var p = new(SelectQuerySpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectQuerySpecification + return p +} + +func InitEmptySelectQuerySpecificationContext(p *SelectQuerySpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_selectQuerySpecification +} + +func (*SelectQuerySpecificationContext) IsSelectQuerySpecificationContext() {} + +func NewSelectQuerySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectQuerySpecificationContext { + var p = new(SelectQuerySpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_selectQuerySpecification + + return p +} + +func (s *SelectQuerySpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectQuerySpecificationContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *SelectQuerySpecificationContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *SelectQuerySpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectQuerySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectQuerySpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSelectQuerySpecification(s) + } +} + +func (s *SelectQuerySpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSelectQuerySpecification(s) + } +} + +func (p *GQLParser) SelectQuerySpecification() (localctx ISelectQuerySpecificationContext) { + localctx = NewSelectQuerySpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 272, GQLParserRULE_selectQuerySpecification) + p.SetState(1976) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1972) + p.NestedQuerySpecification() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1973) + p.GraphExpression() + } + { + p.SetState(1974) + p.NestedQuerySpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICallProcedureStatementContext is an interface to support dynamic dispatch. +type ICallProcedureStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CALL() antlr.TerminalNode + ProcedureCall() IProcedureCallContext + OPTIONAL() antlr.TerminalNode + + // IsCallProcedureStatementContext differentiates from other interfaces. + IsCallProcedureStatementContext() +} + +type CallProcedureStatementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCallProcedureStatementContext() *CallProcedureStatementContext { + var p = new(CallProcedureStatementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callProcedureStatement + return p +} + +func InitEmptyCallProcedureStatementContext(p *CallProcedureStatementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_callProcedureStatement +} + +func (*CallProcedureStatementContext) IsCallProcedureStatementContext() {} + +func NewCallProcedureStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CallProcedureStatementContext { + var p = new(CallProcedureStatementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_callProcedureStatement + + return p +} + +func (s *CallProcedureStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *CallProcedureStatementContext) CALL() antlr.TerminalNode { + return s.GetToken(GQLParserCALL, 0) +} + +func (s *CallProcedureStatementContext) ProcedureCall() IProcedureCallContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureCallContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureCallContext) +} + +func (s *CallProcedureStatementContext) OPTIONAL() antlr.TerminalNode { + return s.GetToken(GQLParserOPTIONAL, 0) +} + +func (s *CallProcedureStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CallProcedureStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CallProcedureStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCallProcedureStatement(s) + } +} + +func (s *CallProcedureStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCallProcedureStatement(s) + } +} + +func (p *GQLParser) CallProcedureStatement() (localctx ICallProcedureStatementContext) { + localctx = NewCallProcedureStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 274, GQLParserRULE_callProcedureStatement) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1979) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserOPTIONAL { + { + p.SetState(1978) + p.Match(GQLParserOPTIONAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(1981) + p.Match(GQLParserCALL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(1982) + p.ProcedureCall() + } + +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 +} + +// IProcedureCallContext is an interface to support dynamic dispatch. +type IProcedureCallContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + InlineProcedureCall() IInlineProcedureCallContext + NamedProcedureCall() INamedProcedureCallContext + + // IsProcedureCallContext differentiates from other interfaces. + IsProcedureCallContext() +} + +type ProcedureCallContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureCallContext() *ProcedureCallContext { + var p = new(ProcedureCallContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureCall + return p +} + +func InitEmptyProcedureCallContext(p *ProcedureCallContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureCall +} + +func (*ProcedureCallContext) IsProcedureCallContext() {} + +func NewProcedureCallContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureCallContext { + var p = new(ProcedureCallContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureCall + + return p +} + +func (s *ProcedureCallContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureCallContext) InlineProcedureCall() IInlineProcedureCallContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInlineProcedureCallContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInlineProcedureCallContext) +} + +func (s *ProcedureCallContext) NamedProcedureCall() INamedProcedureCallContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INamedProcedureCallContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INamedProcedureCallContext) +} + +func (s *ProcedureCallContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureCallContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureCallContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureCall(s) + } +} + +func (s *ProcedureCallContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureCall(s) + } +} + +func (p *GQLParser) ProcedureCall() (localctx IProcedureCallContext) { + localctx = NewProcedureCallContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 276, GQLParserRULE_procedureCall) + p.SetState(1986) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT_BRACE, GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1984) + p.InlineProcedureCall() + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, GQLParserCURRENT_SCHEMA, GQLParserHOME_SCHEMA, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserSUBSTITUTED_PARAMETER_REFERENCE, GQLParserDOUBLE_PERIOD, GQLParserPERIOD, GQLParserSOLIDUS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1985) + p.NamedProcedureCall() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IInlineProcedureCallContext is an interface to support dynamic dispatch. +type IInlineProcedureCallContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NestedProcedureSpecification() INestedProcedureSpecificationContext + VariableScopeClause() IVariableScopeClauseContext + + // IsInlineProcedureCallContext differentiates from other interfaces. + IsInlineProcedureCallContext() +} + +type InlineProcedureCallContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInlineProcedureCallContext() *InlineProcedureCallContext { + var p = new(InlineProcedureCallContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_inlineProcedureCall + return p +} + +func InitEmptyInlineProcedureCallContext(p *InlineProcedureCallContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_inlineProcedureCall +} + +func (*InlineProcedureCallContext) IsInlineProcedureCallContext() {} + +func NewInlineProcedureCallContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InlineProcedureCallContext { + var p = new(InlineProcedureCallContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_inlineProcedureCall + + return p +} + +func (s *InlineProcedureCallContext) GetParser() antlr.Parser { return s.parser } + +func (s *InlineProcedureCallContext) NestedProcedureSpecification() INestedProcedureSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedProcedureSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedProcedureSpecificationContext) +} + +func (s *InlineProcedureCallContext) VariableScopeClause() IVariableScopeClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVariableScopeClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IVariableScopeClauseContext) +} + +func (s *InlineProcedureCallContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InlineProcedureCallContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InlineProcedureCallContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInlineProcedureCall(s) + } +} + +func (s *InlineProcedureCallContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInlineProcedureCall(s) + } +} + +func (p *GQLParser) InlineProcedureCall() (localctx IInlineProcedureCallContext) { + localctx = NewInlineProcedureCallContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 278, GQLParserRULE_inlineProcedureCall) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1989) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserLEFT_PAREN { + { + p.SetState(1988) + p.VariableScopeClause() + } + + } + { + p.SetState(1991) + p.NestedProcedureSpecification() + } + +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 +} + +// IVariableScopeClauseContext is an interface to support dynamic dispatch. +type IVariableScopeClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + BindingVariableReferenceList() IBindingVariableReferenceListContext + + // IsVariableScopeClauseContext differentiates from other interfaces. + IsVariableScopeClauseContext() +} + +type VariableScopeClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyVariableScopeClauseContext() *VariableScopeClauseContext { + var p = new(VariableScopeClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_variableScopeClause + return p +} + +func InitEmptyVariableScopeClauseContext(p *VariableScopeClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_variableScopeClause +} + +func (*VariableScopeClauseContext) IsVariableScopeClauseContext() {} + +func NewVariableScopeClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *VariableScopeClauseContext { + var p = new(VariableScopeClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_variableScopeClause + + return p +} + +func (s *VariableScopeClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *VariableScopeClauseContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *VariableScopeClauseContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *VariableScopeClauseContext) BindingVariableReferenceList() IBindingVariableReferenceListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceListContext) +} + +func (s *VariableScopeClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *VariableScopeClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *VariableScopeClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterVariableScopeClause(s) + } +} + +func (s *VariableScopeClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitVariableScopeClause(s) + } +} + +func (p *GQLParser) VariableScopeClause() (localctx IVariableScopeClauseContext) { + localctx = NewVariableScopeClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 280, GQLParserRULE_variableScopeClause) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1993) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(1995) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0 { + { + p.SetState(1994) + p.BindingVariableReferenceList() + } + + } + { + p.SetState(1997) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IBindingVariableReferenceListContext is an interface to support dynamic dispatch. +type IBindingVariableReferenceListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllBindingVariableReference() []IBindingVariableReferenceContext + BindingVariableReference(i int) IBindingVariableReferenceContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsBindingVariableReferenceListContext differentiates from other interfaces. + IsBindingVariableReferenceListContext() +} + +type BindingVariableReferenceListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingVariableReferenceListContext() *BindingVariableReferenceListContext { + var p = new(BindingVariableReferenceListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableReferenceList + return p +} + +func InitEmptyBindingVariableReferenceListContext(p *BindingVariableReferenceListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableReferenceList +} + +func (*BindingVariableReferenceListContext) IsBindingVariableReferenceListContext() {} + +func NewBindingVariableReferenceListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingVariableReferenceListContext { + var p = new(BindingVariableReferenceListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingVariableReferenceList + + return p +} + +func (s *BindingVariableReferenceListContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingVariableReferenceListContext) AllBindingVariableReference() []IBindingVariableReferenceContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + len++ + } + } + + tst := make([]IBindingVariableReferenceContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IBindingVariableReferenceContext); ok { + tst[i] = t.(IBindingVariableReferenceContext) + i++ + } + } + + return tst +} + +func (s *BindingVariableReferenceListContext) BindingVariableReference(i int) IBindingVariableReferenceContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *BindingVariableReferenceListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *BindingVariableReferenceListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *BindingVariableReferenceListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingVariableReferenceListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingVariableReferenceListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingVariableReferenceList(s) + } +} + +func (s *BindingVariableReferenceListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingVariableReferenceList(s) + } +} + +func (p *GQLParser) BindingVariableReferenceList() (localctx IBindingVariableReferenceListContext) { + localctx = NewBindingVariableReferenceListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 282, GQLParserRULE_bindingVariableReferenceList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1999) + p.BindingVariableReference() + } + p.SetState(2004) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2000) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2001) + p.BindingVariableReference() + } + + p.SetState(2006) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// INamedProcedureCallContext is an interface to support dynamic dispatch. +type INamedProcedureCallContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ProcedureReference() IProcedureReferenceContext + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + ProcedureArgumentList() IProcedureArgumentListContext + YieldClause() IYieldClauseContext + + // IsNamedProcedureCallContext differentiates from other interfaces. + IsNamedProcedureCallContext() +} + +type NamedProcedureCallContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNamedProcedureCallContext() *NamedProcedureCallContext { + var p = new(NamedProcedureCallContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_namedProcedureCall + return p +} + +func InitEmptyNamedProcedureCallContext(p *NamedProcedureCallContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_namedProcedureCall +} + +func (*NamedProcedureCallContext) IsNamedProcedureCallContext() {} + +func NewNamedProcedureCallContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NamedProcedureCallContext { + var p = new(NamedProcedureCallContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_namedProcedureCall + + return p +} + +func (s *NamedProcedureCallContext) GetParser() antlr.Parser { return s.parser } + +func (s *NamedProcedureCallContext) ProcedureReference() IProcedureReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureReferenceContext) +} + +func (s *NamedProcedureCallContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *NamedProcedureCallContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *NamedProcedureCallContext) ProcedureArgumentList() IProcedureArgumentListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureArgumentListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureArgumentListContext) +} + +func (s *NamedProcedureCallContext) YieldClause() IYieldClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IYieldClauseContext) +} + +func (s *NamedProcedureCallContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NamedProcedureCallContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NamedProcedureCallContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNamedProcedureCall(s) + } +} + +func (s *NamedProcedureCallContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNamedProcedureCall(s) + } +} + +func (p *GQLParser) NamedProcedureCall() (localctx INamedProcedureCallContext) { + localctx = NewNamedProcedureCallContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 284, GQLParserRULE_namedProcedureCall) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2007) + p.ProcedureReference() + } + { + p.SetState(2008) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2010) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8762849302180528028) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&34464073969) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-8011702113698201677) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&26393111092643) != 0) || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&844424930131967) != 0) || ((int64((_la-368)) & ^0x3f) == 0 && ((int64(1)<<(_la-368))&151) != 0) { + { + p.SetState(2009) + p.ProcedureArgumentList() + } + + } + { + p.SetState(2012) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2014) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserYIELD { + { + p.SetState(2013) + p.YieldClause() + } + + } + +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 +} + +// IProcedureArgumentListContext is an interface to support dynamic dispatch. +type IProcedureArgumentListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllProcedureArgument() []IProcedureArgumentContext + ProcedureArgument(i int) IProcedureArgumentContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsProcedureArgumentListContext differentiates from other interfaces. + IsProcedureArgumentListContext() +} + +type ProcedureArgumentListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureArgumentListContext() *ProcedureArgumentListContext { + var p = new(ProcedureArgumentListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureArgumentList + return p +} + +func InitEmptyProcedureArgumentListContext(p *ProcedureArgumentListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureArgumentList +} + +func (*ProcedureArgumentListContext) IsProcedureArgumentListContext() {} + +func NewProcedureArgumentListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureArgumentListContext { + var p = new(ProcedureArgumentListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureArgumentList + + return p +} + +func (s *ProcedureArgumentListContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureArgumentListContext) AllProcedureArgument() []IProcedureArgumentContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IProcedureArgumentContext); ok { + len++ + } + } + + tst := make([]IProcedureArgumentContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IProcedureArgumentContext); ok { + tst[i] = t.(IProcedureArgumentContext) + i++ + } + } + + return tst +} + +func (s *ProcedureArgumentListContext) ProcedureArgument(i int) IProcedureArgumentContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureArgumentContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IProcedureArgumentContext) +} + +func (s *ProcedureArgumentListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *ProcedureArgumentListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *ProcedureArgumentListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureArgumentListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureArgumentListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureArgumentList(s) + } +} + +func (s *ProcedureArgumentListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureArgumentList(s) + } +} + +func (p *GQLParser) ProcedureArgumentList() (localctx IProcedureArgumentListContext) { + localctx = NewProcedureArgumentListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 286, GQLParserRULE_procedureArgumentList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2016) + p.ProcedureArgument() + } + p.SetState(2021) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2017) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2018) + p.ProcedureArgument() + } + + p.SetState(2023) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IProcedureArgumentContext is an interface to support dynamic dispatch. +type IProcedureArgumentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsProcedureArgumentContext differentiates from other interfaces. + IsProcedureArgumentContext() +} + +type ProcedureArgumentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureArgumentContext() *ProcedureArgumentContext { + var p = new(ProcedureArgumentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureArgument + return p +} + +func InitEmptyProcedureArgumentContext(p *ProcedureArgumentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureArgument +} + +func (*ProcedureArgumentContext) IsProcedureArgumentContext() {} + +func NewProcedureArgumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureArgumentContext { + var p = new(ProcedureArgumentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureArgument + + return p +} + +func (s *ProcedureArgumentContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureArgumentContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ProcedureArgumentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureArgumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureArgumentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureArgument(s) + } +} + +func (s *ProcedureArgumentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureArgument(s) + } +} + +func (p *GQLParser) ProcedureArgument() (localctx IProcedureArgumentContext) { + localctx = NewProcedureArgumentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 288, GQLParserRULE_procedureArgument) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2024) + p.valueExpression(0) + } + +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 +} + +// IAtSchemaClauseContext is an interface to support dynamic dispatch. +type IAtSchemaClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AT() antlr.TerminalNode + SchemaReference() ISchemaReferenceContext + + // IsAtSchemaClauseContext differentiates from other interfaces. + IsAtSchemaClauseContext() +} + +type AtSchemaClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAtSchemaClauseContext() *AtSchemaClauseContext { + var p = new(AtSchemaClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_atSchemaClause + return p +} + +func InitEmptyAtSchemaClauseContext(p *AtSchemaClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_atSchemaClause +} + +func (*AtSchemaClauseContext) IsAtSchemaClauseContext() {} + +func NewAtSchemaClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AtSchemaClauseContext { + var p = new(AtSchemaClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_atSchemaClause + + return p +} + +func (s *AtSchemaClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *AtSchemaClauseContext) AT() antlr.TerminalNode { + return s.GetToken(GQLParserAT, 0) +} + +func (s *AtSchemaClauseContext) SchemaReference() ISchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaReferenceContext) +} + +func (s *AtSchemaClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AtSchemaClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AtSchemaClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAtSchemaClause(s) + } +} + +func (s *AtSchemaClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAtSchemaClause(s) + } +} + +func (p *GQLParser) AtSchemaClause() (localctx IAtSchemaClauseContext) { + localctx = NewAtSchemaClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 290, GQLParserRULE_atSchemaClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2026) + p.Match(GQLParserAT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2027) + p.SchemaReference() + } + +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 +} + +// IUseGraphClauseContext is an interface to support dynamic dispatch. +type IUseGraphClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + USE() antlr.TerminalNode + GraphExpression() IGraphExpressionContext + + // IsUseGraphClauseContext differentiates from other interfaces. + IsUseGraphClauseContext() +} + +type UseGraphClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUseGraphClauseContext() *UseGraphClauseContext { + var p = new(UseGraphClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_useGraphClause + return p +} + +func InitEmptyUseGraphClauseContext(p *UseGraphClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_useGraphClause +} + +func (*UseGraphClauseContext) IsUseGraphClauseContext() {} + +func NewUseGraphClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UseGraphClauseContext { + var p = new(UseGraphClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_useGraphClause + + return p +} + +func (s *UseGraphClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *UseGraphClauseContext) USE() antlr.TerminalNode { + return s.GetToken(GQLParserUSE, 0) +} + +func (s *UseGraphClauseContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *UseGraphClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UseGraphClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UseGraphClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUseGraphClause(s) + } +} + +func (s *UseGraphClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUseGraphClause(s) + } +} + +func (p *GQLParser) UseGraphClause() (localctx IUseGraphClauseContext) { + localctx = NewUseGraphClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 292, GQLParserRULE_useGraphClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2029) + p.Match(GQLParserUSE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2030) + p.GraphExpression() + } + +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 +} + +// IGraphPatternBindingTableContext is an interface to support dynamic dispatch. +type IGraphPatternBindingTableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphPattern() IGraphPatternContext + GraphPatternYieldClause() IGraphPatternYieldClauseContext + + // IsGraphPatternBindingTableContext differentiates from other interfaces. + IsGraphPatternBindingTableContext() +} + +type GraphPatternBindingTableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternBindingTableContext() *GraphPatternBindingTableContext { + var p = new(GraphPatternBindingTableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternBindingTable + return p +} + +func InitEmptyGraphPatternBindingTableContext(p *GraphPatternBindingTableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternBindingTable +} + +func (*GraphPatternBindingTableContext) IsGraphPatternBindingTableContext() {} + +func NewGraphPatternBindingTableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternBindingTableContext { + var p = new(GraphPatternBindingTableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternBindingTable + + return p +} + +func (s *GraphPatternBindingTableContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternBindingTableContext) GraphPattern() IGraphPatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternContext) +} + +func (s *GraphPatternBindingTableContext) GraphPatternYieldClause() IGraphPatternYieldClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternYieldClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternYieldClauseContext) +} + +func (s *GraphPatternBindingTableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternBindingTableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternBindingTableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternBindingTable(s) + } +} + +func (s *GraphPatternBindingTableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternBindingTable(s) + } +} + +func (p *GQLParser) GraphPatternBindingTable() (localctx IGraphPatternBindingTableContext) { + localctx = NewGraphPatternBindingTableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 294, GQLParserRULE_graphPatternBindingTable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2032) + p.GraphPattern() + } + p.SetState(2034) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 144, p.GetParserRuleContext()) == 1 { + { + p.SetState(2033) + p.GraphPatternYieldClause() + } + + } else if p.HasError() { // JIM + 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 +} + +// IGraphPatternYieldClauseContext is an interface to support dynamic dispatch. +type IGraphPatternYieldClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + YIELD() antlr.TerminalNode + GraphPatternYieldItemList() IGraphPatternYieldItemListContext + + // IsGraphPatternYieldClauseContext differentiates from other interfaces. + IsGraphPatternYieldClauseContext() +} + +type GraphPatternYieldClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternYieldClauseContext() *GraphPatternYieldClauseContext { + var p = new(GraphPatternYieldClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldClause + return p +} + +func InitEmptyGraphPatternYieldClauseContext(p *GraphPatternYieldClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldClause +} + +func (*GraphPatternYieldClauseContext) IsGraphPatternYieldClauseContext() {} + +func NewGraphPatternYieldClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternYieldClauseContext { + var p = new(GraphPatternYieldClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternYieldClause + + return p +} + +func (s *GraphPatternYieldClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternYieldClauseContext) YIELD() antlr.TerminalNode { + return s.GetToken(GQLParserYIELD, 0) +} + +func (s *GraphPatternYieldClauseContext) GraphPatternYieldItemList() IGraphPatternYieldItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternYieldItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternYieldItemListContext) +} + +func (s *GraphPatternYieldClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternYieldClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternYieldClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternYieldClause(s) + } +} + +func (s *GraphPatternYieldClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternYieldClause(s) + } +} + +func (p *GQLParser) GraphPatternYieldClause() (localctx IGraphPatternYieldClauseContext) { + localctx = NewGraphPatternYieldClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 296, GQLParserRULE_graphPatternYieldClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2036) + p.Match(GQLParserYIELD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2037) + p.GraphPatternYieldItemList() + } + +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 +} + +// IGraphPatternYieldItemListContext is an interface to support dynamic dispatch. +type IGraphPatternYieldItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllGraphPatternYieldItem() []IGraphPatternYieldItemContext + GraphPatternYieldItem(i int) IGraphPatternYieldItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsGraphPatternYieldItemListContext differentiates from other interfaces. + IsGraphPatternYieldItemListContext() +} + +type GraphPatternYieldItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternYieldItemListContext() *GraphPatternYieldItemListContext { + var p = new(GraphPatternYieldItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldItemList + return p +} + +func InitEmptyGraphPatternYieldItemListContext(p *GraphPatternYieldItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldItemList +} + +func (*GraphPatternYieldItemListContext) IsGraphPatternYieldItemListContext() {} + +func NewGraphPatternYieldItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternYieldItemListContext { + var p = new(GraphPatternYieldItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternYieldItemList + + return p +} + +func (s *GraphPatternYieldItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternYieldItemListContext) AllGraphPatternYieldItem() []IGraphPatternYieldItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IGraphPatternYieldItemContext); ok { + len++ + } + } + + tst := make([]IGraphPatternYieldItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IGraphPatternYieldItemContext); ok { + tst[i] = t.(IGraphPatternYieldItemContext) + i++ + } + } + + return tst +} + +func (s *GraphPatternYieldItemListContext) GraphPatternYieldItem(i int) IGraphPatternYieldItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternYieldItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternYieldItemContext) +} + +func (s *GraphPatternYieldItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *GraphPatternYieldItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *GraphPatternYieldItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternYieldItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternYieldItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternYieldItemList(s) + } +} + +func (s *GraphPatternYieldItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternYieldItemList(s) + } +} + +func (p *GQLParser) GraphPatternYieldItemList() (localctx IGraphPatternYieldItemListContext) { + localctx = NewGraphPatternYieldItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 298, GQLParserRULE_graphPatternYieldItemList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2039) + p.GraphPatternYieldItem() + } + p.SetState(2044) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2040) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2041) + p.GraphPatternYieldItem() + } + + } + p.SetState(2046) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 145, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IGraphPatternYieldItemContext is an interface to support dynamic dispatch. +type IGraphPatternYieldItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + + // IsGraphPatternYieldItemContext differentiates from other interfaces. + IsGraphPatternYieldItemContext() +} + +type GraphPatternYieldItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternYieldItemContext() *GraphPatternYieldItemContext { + var p = new(GraphPatternYieldItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldItem + return p +} + +func InitEmptyGraphPatternYieldItemContext(p *GraphPatternYieldItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternYieldItem +} + +func (*GraphPatternYieldItemContext) IsGraphPatternYieldItemContext() {} + +func NewGraphPatternYieldItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternYieldItemContext { + var p = new(GraphPatternYieldItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternYieldItem + + return p +} + +func (s *GraphPatternYieldItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternYieldItemContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *GraphPatternYieldItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternYieldItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternYieldItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternYieldItem(s) + } +} + +func (s *GraphPatternYieldItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternYieldItem(s) + } +} + +func (p *GQLParser) GraphPatternYieldItem() (localctx IGraphPatternYieldItemContext) { + localctx = NewGraphPatternYieldItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 300, GQLParserRULE_graphPatternYieldItem) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2047) + p.BindingVariableReference() + } + +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 +} + +// IGraphPatternContext is an interface to support dynamic dispatch. +type IGraphPatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathPatternList() IPathPatternListContext + MatchMode() IMatchModeContext + KeepClause() IKeepClauseContext + GraphPatternWhereClause() IGraphPatternWhereClauseContext + + // IsGraphPatternContext differentiates from other interfaces. + IsGraphPatternContext() +} + +type GraphPatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternContext() *GraphPatternContext { + var p = new(GraphPatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPattern + return p +} + +func InitEmptyGraphPatternContext(p *GraphPatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPattern +} + +func (*GraphPatternContext) IsGraphPatternContext() {} + +func NewGraphPatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternContext { + var p = new(GraphPatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPattern + + return p +} + +func (s *GraphPatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternContext) PathPatternList() IPathPatternListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternListContext) +} + +func (s *GraphPatternContext) MatchMode() IMatchModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMatchModeContext) +} + +func (s *GraphPatternContext) KeepClause() IKeepClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IKeepClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IKeepClauseContext) +} + +func (s *GraphPatternContext) GraphPatternWhereClause() IGraphPatternWhereClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternWhereClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternWhereClauseContext) +} + +func (s *GraphPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPattern(s) + } +} + +func (s *GraphPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPattern(s) + } +} + +func (p *GQLParser) GraphPattern() (localctx IGraphPatternContext) { + localctx = NewGraphPatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 302, GQLParserRULE_graphPattern) + p.EnterOuterAlt(localctx, 1) + p.SetState(2050) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 146, p.GetParserRuleContext()) == 1 { + { + p.SetState(2049) + p.MatchMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2052) + p.PathPatternList() + } + p.SetState(2054) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 147, p.GetParserRuleContext()) == 1 { + { + p.SetState(2053) + p.KeepClause() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2057) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 148, p.GetParserRuleContext()) == 1 { + { + p.SetState(2056) + p.GraphPatternWhereClause() + } + + } else if p.HasError() { // JIM + 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 +} + +// IMatchModeContext is an interface to support dynamic dispatch. +type IMatchModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RepeatableElementsMatchMode() IRepeatableElementsMatchModeContext + DifferentEdgesMatchMode() IDifferentEdgesMatchModeContext + + // IsMatchModeContext differentiates from other interfaces. + IsMatchModeContext() +} + +type MatchModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyMatchModeContext() *MatchModeContext { + var p = new(MatchModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchMode + return p +} + +func InitEmptyMatchModeContext(p *MatchModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_matchMode +} + +func (*MatchModeContext) IsMatchModeContext() {} + +func NewMatchModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MatchModeContext { + var p = new(MatchModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_matchMode + + return p +} + +func (s *MatchModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *MatchModeContext) RepeatableElementsMatchMode() IRepeatableElementsMatchModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRepeatableElementsMatchModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRepeatableElementsMatchModeContext) +} + +func (s *MatchModeContext) DifferentEdgesMatchMode() IDifferentEdgesMatchModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDifferentEdgesMatchModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDifferentEdgesMatchModeContext) +} + +func (s *MatchModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MatchModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *MatchModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMatchMode(s) + } +} + +func (s *MatchModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMatchMode(s) + } +} + +func (p *GQLParser) MatchMode() (localctx IMatchModeContext) { + localctx = NewMatchModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 304, GQLParserRULE_matchMode) + p.SetState(2061) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserREPEATABLE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2059) + p.RepeatableElementsMatchMode() + } + + case GQLParserDIFFERENT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2060) + p.DifferentEdgesMatchMode() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IRepeatableElementsMatchModeContext is an interface to support dynamic dispatch. +type IRepeatableElementsMatchModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + REPEATABLE() antlr.TerminalNode + ElementBindingsOrElements() IElementBindingsOrElementsContext + + // IsRepeatableElementsMatchModeContext differentiates from other interfaces. + IsRepeatableElementsMatchModeContext() +} + +type RepeatableElementsMatchModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRepeatableElementsMatchModeContext() *RepeatableElementsMatchModeContext { + var p = new(RepeatableElementsMatchModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_repeatableElementsMatchMode + return p +} + +func InitEmptyRepeatableElementsMatchModeContext(p *RepeatableElementsMatchModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_repeatableElementsMatchMode +} + +func (*RepeatableElementsMatchModeContext) IsRepeatableElementsMatchModeContext() {} + +func NewRepeatableElementsMatchModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RepeatableElementsMatchModeContext { + var p = new(RepeatableElementsMatchModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_repeatableElementsMatchMode + + return p +} + +func (s *RepeatableElementsMatchModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *RepeatableElementsMatchModeContext) REPEATABLE() antlr.TerminalNode { + return s.GetToken(GQLParserREPEATABLE, 0) +} + +func (s *RepeatableElementsMatchModeContext) ElementBindingsOrElements() IElementBindingsOrElementsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementBindingsOrElementsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementBindingsOrElementsContext) +} + +func (s *RepeatableElementsMatchModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RepeatableElementsMatchModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RepeatableElementsMatchModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRepeatableElementsMatchMode(s) + } +} + +func (s *RepeatableElementsMatchModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRepeatableElementsMatchMode(s) + } +} + +func (p *GQLParser) RepeatableElementsMatchMode() (localctx IRepeatableElementsMatchModeContext) { + localctx = NewRepeatableElementsMatchModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 306, GQLParserRULE_repeatableElementsMatchMode) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2063) + p.Match(GQLParserREPEATABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2064) + p.ElementBindingsOrElements() + } + +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 +} + +// IDifferentEdgesMatchModeContext is an interface to support dynamic dispatch. +type IDifferentEdgesMatchModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DIFFERENT() antlr.TerminalNode + EdgeBindingsOrEdges() IEdgeBindingsOrEdgesContext + + // IsDifferentEdgesMatchModeContext differentiates from other interfaces. + IsDifferentEdgesMatchModeContext() +} + +type DifferentEdgesMatchModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDifferentEdgesMatchModeContext() *DifferentEdgesMatchModeContext { + var p = new(DifferentEdgesMatchModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_differentEdgesMatchMode + return p +} + +func InitEmptyDifferentEdgesMatchModeContext(p *DifferentEdgesMatchModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_differentEdgesMatchMode +} + +func (*DifferentEdgesMatchModeContext) IsDifferentEdgesMatchModeContext() {} + +func NewDifferentEdgesMatchModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DifferentEdgesMatchModeContext { + var p = new(DifferentEdgesMatchModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_differentEdgesMatchMode + + return p +} + +func (s *DifferentEdgesMatchModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *DifferentEdgesMatchModeContext) DIFFERENT() antlr.TerminalNode { + return s.GetToken(GQLParserDIFFERENT, 0) +} + +func (s *DifferentEdgesMatchModeContext) EdgeBindingsOrEdges() IEdgeBindingsOrEdgesContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeBindingsOrEdgesContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeBindingsOrEdgesContext) +} + +func (s *DifferentEdgesMatchModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DifferentEdgesMatchModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DifferentEdgesMatchModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDifferentEdgesMatchMode(s) + } +} + +func (s *DifferentEdgesMatchModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDifferentEdgesMatchMode(s) + } +} + +func (p *GQLParser) DifferentEdgesMatchMode() (localctx IDifferentEdgesMatchModeContext) { + localctx = NewDifferentEdgesMatchModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 308, GQLParserRULE_differentEdgesMatchMode) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2066) + p.Match(GQLParserDIFFERENT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2067) + p.EdgeBindingsOrEdges() + } + +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 +} + +// IElementBindingsOrElementsContext is an interface to support dynamic dispatch. +type IElementBindingsOrElementsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ELEMENT() antlr.TerminalNode + BINDINGS() antlr.TerminalNode + ELEMENTS() antlr.TerminalNode + + // IsElementBindingsOrElementsContext differentiates from other interfaces. + IsElementBindingsOrElementsContext() +} + +type ElementBindingsOrElementsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementBindingsOrElementsContext() *ElementBindingsOrElementsContext { + var p = new(ElementBindingsOrElementsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementBindingsOrElements + return p +} + +func InitEmptyElementBindingsOrElementsContext(p *ElementBindingsOrElementsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementBindingsOrElements +} + +func (*ElementBindingsOrElementsContext) IsElementBindingsOrElementsContext() {} + +func NewElementBindingsOrElementsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementBindingsOrElementsContext { + var p = new(ElementBindingsOrElementsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementBindingsOrElements + + return p +} + +func (s *ElementBindingsOrElementsContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementBindingsOrElementsContext) ELEMENT() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENT, 0) +} + +func (s *ElementBindingsOrElementsContext) BINDINGS() antlr.TerminalNode { + return s.GetToken(GQLParserBINDINGS, 0) +} + +func (s *ElementBindingsOrElementsContext) ELEMENTS() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENTS, 0) +} + +func (s *ElementBindingsOrElementsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementBindingsOrElementsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementBindingsOrElementsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementBindingsOrElements(s) + } +} + +func (s *ElementBindingsOrElementsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementBindingsOrElements(s) + } +} + +func (p *GQLParser) ElementBindingsOrElements() (localctx IElementBindingsOrElementsContext) { + localctx = NewElementBindingsOrElementsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 310, GQLParserRULE_elementBindingsOrElements) + p.SetState(2074) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserELEMENT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2069) + p.Match(GQLParserELEMENT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2071) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 150, p.GetParserRuleContext()) == 1 { + { + p.SetState(2070) + p.Match(GQLParserBINDINGS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserELEMENTS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2073) + p.Match(GQLParserELEMENTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IEdgeBindingsOrEdgesContext is an interface to support dynamic dispatch. +type IEdgeBindingsOrEdgesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeSynonym() IEdgeSynonymContext + BINDINGS() antlr.TerminalNode + EdgesSynonym() IEdgesSynonymContext + + // IsEdgeBindingsOrEdgesContext differentiates from other interfaces. + IsEdgeBindingsOrEdgesContext() +} + +type EdgeBindingsOrEdgesContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeBindingsOrEdgesContext() *EdgeBindingsOrEdgesContext { + var p = new(EdgeBindingsOrEdgesContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeBindingsOrEdges + return p +} + +func InitEmptyEdgeBindingsOrEdgesContext(p *EdgeBindingsOrEdgesContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeBindingsOrEdges +} + +func (*EdgeBindingsOrEdgesContext) IsEdgeBindingsOrEdgesContext() {} + +func NewEdgeBindingsOrEdgesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeBindingsOrEdgesContext { + var p = new(EdgeBindingsOrEdgesContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeBindingsOrEdges + + return p +} + +func (s *EdgeBindingsOrEdgesContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeBindingsOrEdgesContext) EdgeSynonym() IEdgeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeSynonymContext) +} + +func (s *EdgeBindingsOrEdgesContext) BINDINGS() antlr.TerminalNode { + return s.GetToken(GQLParserBINDINGS, 0) +} + +func (s *EdgeBindingsOrEdgesContext) EdgesSynonym() IEdgesSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgesSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgesSynonymContext) +} + +func (s *EdgeBindingsOrEdgesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeBindingsOrEdgesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeBindingsOrEdgesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeBindingsOrEdges(s) + } +} + +func (s *EdgeBindingsOrEdgesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeBindingsOrEdges(s) + } +} + +func (p *GQLParser) EdgeBindingsOrEdges() (localctx IEdgeBindingsOrEdgesContext) { + localctx = NewEdgeBindingsOrEdgesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 312, GQLParserRULE_edgeBindingsOrEdges) + p.SetState(2081) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserEDGE, GQLParserRELATIONSHIP: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2076) + p.EdgeSynonym() + } + p.SetState(2078) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 152, p.GetParserRuleContext()) == 1 { + { + p.SetState(2077) + p.Match(GQLParserBINDINGS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserEDGES, GQLParserRELATIONSHIPS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2080) + p.EdgesSynonym() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPathPatternListContext is an interface to support dynamic dispatch. +type IPathPatternListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllPathPattern() []IPathPatternContext + PathPattern(i int) IPathPatternContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsPathPatternListContext differentiates from other interfaces. + IsPathPatternListContext() +} + +type PathPatternListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathPatternListContext() *PathPatternListContext { + var p = new(PathPatternListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternList + return p +} + +func InitEmptyPathPatternListContext(p *PathPatternListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternList +} + +func (*PathPatternListContext) IsPathPatternListContext() {} + +func NewPathPatternListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathPatternListContext { + var p = new(PathPatternListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathPatternList + + return p +} + +func (s *PathPatternListContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathPatternListContext) AllPathPattern() []IPathPatternContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPathPatternContext); ok { + len++ + } + } + + tst := make([]IPathPatternContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPathPatternContext); ok { + tst[i] = t.(IPathPatternContext) + i++ + } + } + + return tst +} + +func (s *PathPatternListContext) PathPattern(i int) IPathPatternContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternContext) +} + +func (s *PathPatternListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *PathPatternListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *PathPatternListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathPatternListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathPatternListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathPatternList(s) + } +} + +func (s *PathPatternListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathPatternList(s) + } +} + +func (p *GQLParser) PathPatternList() (localctx IPathPatternListContext) { + localctx = NewPathPatternListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 314, GQLParserRULE_pathPatternList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2083) + p.PathPattern() + } + p.SetState(2088) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2084) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2085) + p.PathPattern() + } + + } + p.SetState(2090) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 154, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IPathPatternContext is an interface to support dynamic dispatch. +type IPathPatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathPatternExpression() IPathPatternExpressionContext + PathVariableDeclaration() IPathVariableDeclarationContext + PathPatternPrefix() IPathPatternPrefixContext + + // IsPathPatternContext differentiates from other interfaces. + IsPathPatternContext() +} + +type PathPatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathPatternContext() *PathPatternContext { + var p = new(PathPatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPattern + return p +} + +func InitEmptyPathPatternContext(p *PathPatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPattern +} + +func (*PathPatternContext) IsPathPatternContext() {} + +func NewPathPatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathPatternContext { + var p = new(PathPatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathPattern + + return p +} + +func (s *PathPatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathPatternContext) PathPatternExpression() IPathPatternExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternExpressionContext) +} + +func (s *PathPatternContext) PathVariableDeclaration() IPathVariableDeclarationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathVariableDeclarationContext) +} + +func (s *PathPatternContext) PathPatternPrefix() IPathPatternPrefixContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternPrefixContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternPrefixContext) +} + +func (s *PathPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathPatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathPattern(s) + } +} + +func (s *PathPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathPattern(s) + } +} + +func (p *GQLParser) PathPattern() (localctx IPathPatternContext) { + localctx = NewPathPatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 316, GQLParserRULE_pathPattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2092) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) == 1 { + { + p.SetState(2091) + p.PathVariableDeclaration() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2095) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserANY || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&9096740732929) != 0) { + { + p.SetState(2094) + p.PathPatternPrefix() + } + + } + { + p.SetState(2097) + p.PathPatternExpression() + } + +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 +} + +// IPathVariableDeclarationContext is an interface to support dynamic dispatch. +type IPathVariableDeclarationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathVariable() IPathVariableContext + EQUALS_OPERATOR() antlr.TerminalNode + + // IsPathVariableDeclarationContext differentiates from other interfaces. + IsPathVariableDeclarationContext() +} + +type PathVariableDeclarationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathVariableDeclarationContext() *PathVariableDeclarationContext { + var p = new(PathVariableDeclarationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariableDeclaration + return p +} + +func InitEmptyPathVariableDeclarationContext(p *PathVariableDeclarationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariableDeclaration +} + +func (*PathVariableDeclarationContext) IsPathVariableDeclarationContext() {} + +func NewPathVariableDeclarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathVariableDeclarationContext { + var p = new(PathVariableDeclarationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathVariableDeclaration + + return p +} + +func (s *PathVariableDeclarationContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathVariableDeclarationContext) PathVariable() IPathVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathVariableContext) +} + +func (s *PathVariableDeclarationContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *PathVariableDeclarationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathVariableDeclarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathVariableDeclarationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathVariableDeclaration(s) + } +} + +func (s *PathVariableDeclarationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathVariableDeclaration(s) + } +} + +func (p *GQLParser) PathVariableDeclaration() (localctx IPathVariableDeclarationContext) { + localctx = NewPathVariableDeclarationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 318, GQLParserRULE_pathVariableDeclaration) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2099) + p.PathVariable() + } + { + p.SetState(2100) + p.Match(GQLParserEQUALS_OPERATOR) + 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 +} + +// IKeepClauseContext is an interface to support dynamic dispatch. +type IKeepClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + KEEP() antlr.TerminalNode + PathPatternPrefix() IPathPatternPrefixContext + + // IsKeepClauseContext differentiates from other interfaces. + IsKeepClauseContext() +} + +type KeepClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyKeepClauseContext() *KeepClauseContext { + var p = new(KeepClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_keepClause + return p +} + +func InitEmptyKeepClauseContext(p *KeepClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_keepClause +} + +func (*KeepClauseContext) IsKeepClauseContext() {} + +func NewKeepClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeepClauseContext { + var p = new(KeepClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_keepClause + + return p +} + +func (s *KeepClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *KeepClauseContext) KEEP() antlr.TerminalNode { + return s.GetToken(GQLParserKEEP, 0) +} + +func (s *KeepClauseContext) PathPatternPrefix() IPathPatternPrefixContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternPrefixContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternPrefixContext) +} + +func (s *KeepClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *KeepClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *KeepClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterKeepClause(s) + } +} + +func (s *KeepClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitKeepClause(s) + } +} + +func (p *GQLParser) KeepClause() (localctx IKeepClauseContext) { + localctx = NewKeepClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 320, GQLParserRULE_keepClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2102) + p.Match(GQLParserKEEP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2103) + p.PathPatternPrefix() + } + +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 +} + +// IGraphPatternWhereClauseContext is an interface to support dynamic dispatch. +type IGraphPatternWhereClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHERE() antlr.TerminalNode + SearchCondition() ISearchConditionContext + + // IsGraphPatternWhereClauseContext differentiates from other interfaces. + IsGraphPatternWhereClauseContext() +} + +type GraphPatternWhereClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternWhereClauseContext() *GraphPatternWhereClauseContext { + var p = new(GraphPatternWhereClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternWhereClause + return p +} + +func InitEmptyGraphPatternWhereClauseContext(p *GraphPatternWhereClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternWhereClause +} + +func (*GraphPatternWhereClauseContext) IsGraphPatternWhereClauseContext() {} + +func NewGraphPatternWhereClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternWhereClauseContext { + var p = new(GraphPatternWhereClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternWhereClause + + return p +} + +func (s *GraphPatternWhereClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternWhereClauseContext) WHERE() antlr.TerminalNode { + return s.GetToken(GQLParserWHERE, 0) +} + +func (s *GraphPatternWhereClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *GraphPatternWhereClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternWhereClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternWhereClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternWhereClause(s) + } +} + +func (s *GraphPatternWhereClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternWhereClause(s) + } +} + +func (p *GQLParser) GraphPatternWhereClause() (localctx IGraphPatternWhereClauseContext) { + localctx = NewGraphPatternWhereClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 322, GQLParserRULE_graphPatternWhereClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2105) + p.Match(GQLParserWHERE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2106) + p.SearchCondition() + } + +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 +} + +// IInsertGraphPatternContext is an interface to support dynamic dispatch. +type IInsertGraphPatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + InsertPathPatternList() IInsertPathPatternListContext + + // IsInsertGraphPatternContext differentiates from other interfaces. + IsInsertGraphPatternContext() +} + +type InsertGraphPatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertGraphPatternContext() *InsertGraphPatternContext { + var p = new(InsertGraphPatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertGraphPattern + return p +} + +func InitEmptyInsertGraphPatternContext(p *InsertGraphPatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertGraphPattern +} + +func (*InsertGraphPatternContext) IsInsertGraphPatternContext() {} + +func NewInsertGraphPatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertGraphPatternContext { + var p = new(InsertGraphPatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertGraphPattern + + return p +} + +func (s *InsertGraphPatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertGraphPatternContext) InsertPathPatternList() IInsertPathPatternListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertPathPatternListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertPathPatternListContext) +} + +func (s *InsertGraphPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertGraphPatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertGraphPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertGraphPattern(s) + } +} + +func (s *InsertGraphPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertGraphPattern(s) + } +} + +func (p *GQLParser) InsertGraphPattern() (localctx IInsertGraphPatternContext) { + localctx = NewInsertGraphPatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 324, GQLParserRULE_insertGraphPattern) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2108) + p.InsertPathPatternList() + } + +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 +} + +// IInsertPathPatternListContext is an interface to support dynamic dispatch. +type IInsertPathPatternListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllInsertPathPattern() []IInsertPathPatternContext + InsertPathPattern(i int) IInsertPathPatternContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsInsertPathPatternListContext differentiates from other interfaces. + IsInsertPathPatternListContext() +} + +type InsertPathPatternListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertPathPatternListContext() *InsertPathPatternListContext { + var p = new(InsertPathPatternListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertPathPatternList + return p +} + +func InitEmptyInsertPathPatternListContext(p *InsertPathPatternListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertPathPatternList +} + +func (*InsertPathPatternListContext) IsInsertPathPatternListContext() {} + +func NewInsertPathPatternListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertPathPatternListContext { + var p = new(InsertPathPatternListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertPathPatternList + + return p +} + +func (s *InsertPathPatternListContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertPathPatternListContext) AllInsertPathPattern() []IInsertPathPatternContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInsertPathPatternContext); ok { + len++ + } + } + + tst := make([]IInsertPathPatternContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInsertPathPatternContext); ok { + tst[i] = t.(IInsertPathPatternContext) + i++ + } + } + + return tst +} + +func (s *InsertPathPatternListContext) InsertPathPattern(i int) IInsertPathPatternContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertPathPatternContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInsertPathPatternContext) +} + +func (s *InsertPathPatternListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *InsertPathPatternListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *InsertPathPatternListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertPathPatternListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertPathPatternListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertPathPatternList(s) + } +} + +func (s *InsertPathPatternListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertPathPatternList(s) + } +} + +func (p *GQLParser) InsertPathPatternList() (localctx IInsertPathPatternListContext) { + localctx = NewInsertPathPatternListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 326, GQLParserRULE_insertPathPatternList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2110) + p.InsertPathPattern() + } + p.SetState(2115) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2111) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2112) + p.InsertPathPattern() + } + + p.SetState(2117) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IInsertPathPatternContext is an interface to support dynamic dispatch. +type IInsertPathPatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllInsertNodePattern() []IInsertNodePatternContext + InsertNodePattern(i int) IInsertNodePatternContext + AllInsertEdgePattern() []IInsertEdgePatternContext + InsertEdgePattern(i int) IInsertEdgePatternContext + + // IsInsertPathPatternContext differentiates from other interfaces. + IsInsertPathPatternContext() +} + +type InsertPathPatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertPathPatternContext() *InsertPathPatternContext { + var p = new(InsertPathPatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertPathPattern + return p +} + +func InitEmptyInsertPathPatternContext(p *InsertPathPatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertPathPattern +} + +func (*InsertPathPatternContext) IsInsertPathPatternContext() {} + +func NewInsertPathPatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertPathPatternContext { + var p = new(InsertPathPatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertPathPattern + + return p +} + +func (s *InsertPathPatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertPathPatternContext) AllInsertNodePattern() []IInsertNodePatternContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInsertNodePatternContext); ok { + len++ + } + } + + tst := make([]IInsertNodePatternContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInsertNodePatternContext); ok { + tst[i] = t.(IInsertNodePatternContext) + i++ + } + } + + return tst +} + +func (s *InsertPathPatternContext) InsertNodePattern(i int) IInsertNodePatternContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertNodePatternContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInsertNodePatternContext) +} + +func (s *InsertPathPatternContext) AllInsertEdgePattern() []IInsertEdgePatternContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInsertEdgePatternContext); ok { + len++ + } + } + + tst := make([]IInsertEdgePatternContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInsertEdgePatternContext); ok { + tst[i] = t.(IInsertEdgePatternContext) + i++ + } + } + + return tst +} + +func (s *InsertPathPatternContext) InsertEdgePattern(i int) IInsertEdgePatternContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertEdgePatternContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInsertEdgePatternContext) +} + +func (s *InsertPathPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertPathPatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertPathPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertPathPattern(s) + } +} + +func (s *InsertPathPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertPathPattern(s) + } +} + +func (p *GQLParser) InsertPathPattern() (localctx IInsertPathPatternContext) { + localctx = NewInsertPathPatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 328, GQLParserRULE_insertPathPattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2118) + p.InsertNodePattern() + } + p.SetState(2124) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for (int64((_la-337)) & ^0x3f) == 0 && ((int64(1)<<(_la-337))&131137) != 0 { + { + p.SetState(2119) + p.InsertEdgePattern() + } + { + p.SetState(2120) + p.InsertNodePattern() + } + + p.SetState(2126) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IInsertNodePatternContext is an interface to support dynamic dispatch. +type IInsertNodePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + InsertElementPatternFiller() IInsertElementPatternFillerContext + + // IsInsertNodePatternContext differentiates from other interfaces. + IsInsertNodePatternContext() +} + +type InsertNodePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertNodePatternContext() *InsertNodePatternContext { + var p = new(InsertNodePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertNodePattern + return p +} + +func InitEmptyInsertNodePatternContext(p *InsertNodePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertNodePattern +} + +func (*InsertNodePatternContext) IsInsertNodePatternContext() {} + +func NewInsertNodePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertNodePatternContext { + var p = new(InsertNodePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertNodePattern + + return p +} + +func (s *InsertNodePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertNodePatternContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *InsertNodePatternContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *InsertNodePatternContext) InsertElementPatternFiller() IInsertElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertElementPatternFillerContext) +} + +func (s *InsertNodePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertNodePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertNodePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertNodePattern(s) + } +} + +func (s *InsertNodePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertNodePattern(s) + } +} + +func (p *GQLParser) InsertNodePattern() (localctx IInsertNodePatternContext) { + localctx = NewInsertNodePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 330, GQLParserRULE_insertNodePattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2127) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2129) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2128) + p.InsertElementPatternFiller() + } + + } + { + p.SetState(2131) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IInsertEdgePatternContext is an interface to support dynamic dispatch. +type IInsertEdgePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + InsertEdgePointingLeft() IInsertEdgePointingLeftContext + InsertEdgePointingRight() IInsertEdgePointingRightContext + InsertEdgeUndirected() IInsertEdgeUndirectedContext + + // IsInsertEdgePatternContext differentiates from other interfaces. + IsInsertEdgePatternContext() +} + +type InsertEdgePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertEdgePatternContext() *InsertEdgePatternContext { + var p = new(InsertEdgePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePattern + return p +} + +func InitEmptyInsertEdgePatternContext(p *InsertEdgePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePattern +} + +func (*InsertEdgePatternContext) IsInsertEdgePatternContext() {} + +func NewInsertEdgePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertEdgePatternContext { + var p = new(InsertEdgePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertEdgePattern + + return p +} + +func (s *InsertEdgePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertEdgePatternContext) InsertEdgePointingLeft() IInsertEdgePointingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertEdgePointingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertEdgePointingLeftContext) +} + +func (s *InsertEdgePatternContext) InsertEdgePointingRight() IInsertEdgePointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertEdgePointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertEdgePointingRightContext) +} + +func (s *InsertEdgePatternContext) InsertEdgeUndirected() IInsertEdgeUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertEdgeUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertEdgeUndirectedContext) +} + +func (s *InsertEdgePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertEdgePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertEdgePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertEdgePattern(s) + } +} + +func (s *InsertEdgePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertEdgePattern(s) + } +} + +func (p *GQLParser) InsertEdgePattern() (localctx IInsertEdgePatternContext) { + localctx = NewInsertEdgePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 332, GQLParserRULE_insertEdgePattern) + p.SetState(2136) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT_ARROW_BRACKET: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2133) + p.InsertEdgePointingLeft() + } + + case GQLParserMINUS_LEFT_BRACKET: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2134) + p.InsertEdgePointingRight() + } + + case GQLParserTILDE_LEFT_BRACKET: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2135) + p.InsertEdgeUndirected() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IInsertEdgePointingLeftContext is an interface to support dynamic dispatch. +type IInsertEdgePointingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_BRACKET() antlr.TerminalNode + RIGHT_BRACKET_MINUS() antlr.TerminalNode + InsertElementPatternFiller() IInsertElementPatternFillerContext + + // IsInsertEdgePointingLeftContext differentiates from other interfaces. + IsInsertEdgePointingLeftContext() +} + +type InsertEdgePointingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertEdgePointingLeftContext() *InsertEdgePointingLeftContext { + var p = new(InsertEdgePointingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePointingLeft + return p +} + +func InitEmptyInsertEdgePointingLeftContext(p *InsertEdgePointingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePointingLeft +} + +func (*InsertEdgePointingLeftContext) IsInsertEdgePointingLeftContext() {} + +func NewInsertEdgePointingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertEdgePointingLeftContext { + var p = new(InsertEdgePointingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertEdgePointingLeft + + return p +} + +func (s *InsertEdgePointingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertEdgePointingLeftContext) LEFT_ARROW_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_BRACKET, 0) +} + +func (s *InsertEdgePointingLeftContext) RIGHT_BRACKET_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_MINUS, 0) +} + +func (s *InsertEdgePointingLeftContext) InsertElementPatternFiller() IInsertElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertElementPatternFillerContext) +} + +func (s *InsertEdgePointingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertEdgePointingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertEdgePointingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertEdgePointingLeft(s) + } +} + +func (s *InsertEdgePointingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertEdgePointingLeft(s) + } +} + +func (p *GQLParser) InsertEdgePointingLeft() (localctx IInsertEdgePointingLeftContext) { + localctx = NewInsertEdgePointingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 334, GQLParserRULE_insertEdgePointingLeft) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2138) + p.Match(GQLParserLEFT_ARROW_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2140) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2139) + p.InsertElementPatternFiller() + } + + } + { + p.SetState(2142) + p.Match(GQLParserRIGHT_BRACKET_MINUS) + 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 +} + +// IInsertEdgePointingRightContext is an interface to support dynamic dispatch. +type IInsertEdgePointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_LEFT_BRACKET() antlr.TerminalNode + BRACKET_RIGHT_ARROW() antlr.TerminalNode + InsertElementPatternFiller() IInsertElementPatternFillerContext + + // IsInsertEdgePointingRightContext differentiates from other interfaces. + IsInsertEdgePointingRightContext() +} + +type InsertEdgePointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertEdgePointingRightContext() *InsertEdgePointingRightContext { + var p = new(InsertEdgePointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePointingRight + return p +} + +func InitEmptyInsertEdgePointingRightContext(p *InsertEdgePointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgePointingRight +} + +func (*InsertEdgePointingRightContext) IsInsertEdgePointingRightContext() {} + +func NewInsertEdgePointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertEdgePointingRightContext { + var p = new(InsertEdgePointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertEdgePointingRight + + return p +} + +func (s *InsertEdgePointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertEdgePointingRightContext) MINUS_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_LEFT_BRACKET, 0) +} + +func (s *InsertEdgePointingRightContext) BRACKET_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserBRACKET_RIGHT_ARROW, 0) +} + +func (s *InsertEdgePointingRightContext) InsertElementPatternFiller() IInsertElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertElementPatternFillerContext) +} + +func (s *InsertEdgePointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertEdgePointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertEdgePointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertEdgePointingRight(s) + } +} + +func (s *InsertEdgePointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertEdgePointingRight(s) + } +} + +func (p *GQLParser) InsertEdgePointingRight() (localctx IInsertEdgePointingRightContext) { + localctx = NewInsertEdgePointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 336, GQLParserRULE_insertEdgePointingRight) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2144) + p.Match(GQLParserMINUS_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2146) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2145) + p.InsertElementPatternFiller() + } + + } + { + p.SetState(2148) + p.Match(GQLParserBRACKET_RIGHT_ARROW) + 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 +} + +// IInsertEdgeUndirectedContext is an interface to support dynamic dispatch. +type IInsertEdgeUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_LEFT_BRACKET() antlr.TerminalNode + RIGHT_BRACKET_TILDE() antlr.TerminalNode + InsertElementPatternFiller() IInsertElementPatternFillerContext + + // IsInsertEdgeUndirectedContext differentiates from other interfaces. + IsInsertEdgeUndirectedContext() +} + +type InsertEdgeUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertEdgeUndirectedContext() *InsertEdgeUndirectedContext { + var p = new(InsertEdgeUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgeUndirected + return p +} + +func InitEmptyInsertEdgeUndirectedContext(p *InsertEdgeUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertEdgeUndirected +} + +func (*InsertEdgeUndirectedContext) IsInsertEdgeUndirectedContext() {} + +func NewInsertEdgeUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertEdgeUndirectedContext { + var p = new(InsertEdgeUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertEdgeUndirected + + return p +} + +func (s *InsertEdgeUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertEdgeUndirectedContext) TILDE_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_LEFT_BRACKET, 0) +} + +func (s *InsertEdgeUndirectedContext) RIGHT_BRACKET_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_TILDE, 0) +} + +func (s *InsertEdgeUndirectedContext) InsertElementPatternFiller() IInsertElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsertElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IInsertElementPatternFillerContext) +} + +func (s *InsertEdgeUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertEdgeUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertEdgeUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertEdgeUndirected(s) + } +} + +func (s *InsertEdgeUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertEdgeUndirected(s) + } +} + +func (p *GQLParser) InsertEdgeUndirected() (localctx IInsertEdgeUndirectedContext) { + localctx = NewInsertEdgeUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 338, GQLParserRULE_insertEdgeUndirected) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2150) + p.Match(GQLParserTILDE_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2152) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2151) + p.InsertElementPatternFiller() + } + + } + { + p.SetState(2154) + p.Match(GQLParserRIGHT_BRACKET_TILDE) + 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 +} + +// IInsertElementPatternFillerContext is an interface to support dynamic dispatch. +type IInsertElementPatternFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableDeclaration() IElementVariableDeclarationContext + LabelAndPropertySetSpecification() ILabelAndPropertySetSpecificationContext + + // IsInsertElementPatternFillerContext differentiates from other interfaces. + IsInsertElementPatternFillerContext() +} + +type InsertElementPatternFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsertElementPatternFillerContext() *InsertElementPatternFillerContext { + var p = new(InsertElementPatternFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertElementPatternFiller + return p +} + +func InitEmptyInsertElementPatternFillerContext(p *InsertElementPatternFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_insertElementPatternFiller +} + +func (*InsertElementPatternFillerContext) IsInsertElementPatternFillerContext() {} + +func NewInsertElementPatternFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *InsertElementPatternFillerContext { + var p = new(InsertElementPatternFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_insertElementPatternFiller + + return p +} + +func (s *InsertElementPatternFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *InsertElementPatternFillerContext) ElementVariableDeclaration() IElementVariableDeclarationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableDeclarationContext) +} + +func (s *InsertElementPatternFillerContext) LabelAndPropertySetSpecification() ILabelAndPropertySetSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelAndPropertySetSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelAndPropertySetSpecificationContext) +} + +func (s *InsertElementPatternFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *InsertElementPatternFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *InsertElementPatternFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterInsertElementPatternFiller(s) + } +} + +func (s *InsertElementPatternFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitInsertElementPatternFiller(s) + } +} + +func (p *GQLParser) InsertElementPatternFiller() (localctx IInsertElementPatternFillerContext) { + localctx = NewInsertElementPatternFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 340, GQLParserRULE_insertElementPatternFiller) + var _la int + + p.SetState(2164) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 166, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2156) + p.ElementVariableDeclaration() + } + p.SetState(2158) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2157) + p.LabelAndPropertySetSpecification() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) + p.SetState(2161) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0 { + { + p.SetState(2160) + p.ElementVariableDeclaration() + } + + } + { + p.SetState(2163) + p.LabelAndPropertySetSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ILabelAndPropertySetSpecificationContext is an interface to support dynamic dispatch. +type ILabelAndPropertySetSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IsOrColon() IIsOrColonContext + LabelSetSpecification() ILabelSetSpecificationContext + ElementPropertySpecification() IElementPropertySpecificationContext + + // IsLabelAndPropertySetSpecificationContext differentiates from other interfaces. + IsLabelAndPropertySetSpecificationContext() +} + +type LabelAndPropertySetSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabelAndPropertySetSpecificationContext() *LabelAndPropertySetSpecificationContext { + var p = new(LabelAndPropertySetSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelAndPropertySetSpecification + return p +} + +func InitEmptyLabelAndPropertySetSpecificationContext(p *LabelAndPropertySetSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelAndPropertySetSpecification +} + +func (*LabelAndPropertySetSpecificationContext) IsLabelAndPropertySetSpecificationContext() {} + +func NewLabelAndPropertySetSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabelAndPropertySetSpecificationContext { + var p = new(LabelAndPropertySetSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labelAndPropertySetSpecification + + return p +} + +func (s *LabelAndPropertySetSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabelAndPropertySetSpecificationContext) IsOrColon() IIsOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsOrColonContext) +} + +func (s *LabelAndPropertySetSpecificationContext) LabelSetSpecification() ILabelSetSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetSpecificationContext) +} + +func (s *LabelAndPropertySetSpecificationContext) ElementPropertySpecification() IElementPropertySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPropertySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPropertySpecificationContext) +} + +func (s *LabelAndPropertySetSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelAndPropertySetSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabelAndPropertySetSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelAndPropertySetSpecification(s) + } +} + +func (s *LabelAndPropertySetSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelAndPropertySetSpecification(s) + } +} + +func (p *GQLParser) LabelAndPropertySetSpecification() (localctx ILabelAndPropertySetSpecificationContext) { + localctx = NewLabelAndPropertySetSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 342, GQLParserRULE_labelAndPropertySetSpecification) + var _la int + + p.SetState(2177) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 169, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2166) + p.IsOrColon() + } + { + p.SetState(2167) + p.LabelSetSpecification() + } + p.SetState(2169) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserLEFT_BRACE { + { + p.SetState(2168) + p.ElementPropertySpecification() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) + p.SetState(2174) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserCOLON { + { + p.SetState(2171) + p.IsOrColon() + } + { + p.SetState(2172) + p.LabelSetSpecification() + } + + } + { + p.SetState(2176) + p.ElementPropertySpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IPathPatternPrefixContext is an interface to support dynamic dispatch. +type IPathPatternPrefixContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathModePrefix() IPathModePrefixContext + PathSearchPrefix() IPathSearchPrefixContext + + // IsPathPatternPrefixContext differentiates from other interfaces. + IsPathPatternPrefixContext() +} + +type PathPatternPrefixContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathPatternPrefixContext() *PathPatternPrefixContext { + var p = new(PathPatternPrefixContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternPrefix + return p +} + +func InitEmptyPathPatternPrefixContext(p *PathPatternPrefixContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternPrefix +} + +func (*PathPatternPrefixContext) IsPathPatternPrefixContext() {} + +func NewPathPatternPrefixContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathPatternPrefixContext { + var p = new(PathPatternPrefixContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathPatternPrefix + + return p +} + +func (s *PathPatternPrefixContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathPatternPrefixContext) PathModePrefix() IPathModePrefixContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModePrefixContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModePrefixContext) +} + +func (s *PathPatternPrefixContext) PathSearchPrefix() IPathSearchPrefixContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathSearchPrefixContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathSearchPrefixContext) +} + +func (s *PathPatternPrefixContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathPatternPrefixContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathPatternPrefixContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathPatternPrefix(s) + } +} + +func (s *PathPatternPrefixContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathPatternPrefix(s) + } +} + +func (p *GQLParser) PathPatternPrefix() (localctx IPathPatternPrefixContext) { + localctx = NewPathPatternPrefixContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 344, GQLParserRULE_pathPatternPrefix) + p.SetState(2181) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserACYCLIC, GQLParserSIMPLE, GQLParserTRAIL, GQLParserWALK: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2179) + p.PathModePrefix() + } + + case GQLParserALL, GQLParserANY, GQLParserSHORTEST: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2180) + p.PathSearchPrefix() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPathModePrefixContext is an interface to support dynamic dispatch. +type IPathModePrefixContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsPathModePrefixContext differentiates from other interfaces. + IsPathModePrefixContext() +} + +type PathModePrefixContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathModePrefixContext() *PathModePrefixContext { + var p = new(PathModePrefixContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathModePrefix + return p +} + +func InitEmptyPathModePrefixContext(p *PathModePrefixContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathModePrefix +} + +func (*PathModePrefixContext) IsPathModePrefixContext() {} + +func NewPathModePrefixContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathModePrefixContext { + var p = new(PathModePrefixContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathModePrefix + + return p +} + +func (s *PathModePrefixContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathModePrefixContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *PathModePrefixContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *PathModePrefixContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathModePrefixContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathModePrefixContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathModePrefix(s) + } +} + +func (s *PathModePrefixContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathModePrefix(s) + } +} + +func (p *GQLParser) PathModePrefix() (localctx IPathModePrefixContext) { + localctx = NewPathModePrefixContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 346, GQLParserRULE_pathModePrefix) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2183) + p.PathMode() + } + p.SetState(2185) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 171, p.GetParserRuleContext()) == 1 { + { + p.SetState(2184) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// IPathModeContext is an interface to support dynamic dispatch. +type IPathModeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WALK() antlr.TerminalNode + TRAIL() antlr.TerminalNode + SIMPLE() antlr.TerminalNode + ACYCLIC() antlr.TerminalNode + + // IsPathModeContext differentiates from other interfaces. + IsPathModeContext() +} + +type PathModeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathModeContext() *PathModeContext { + var p = new(PathModeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathMode + return p +} + +func InitEmptyPathModeContext(p *PathModeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathMode +} + +func (*PathModeContext) IsPathModeContext() {} + +func NewPathModeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathModeContext { + var p = new(PathModeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathMode + + return p +} + +func (s *PathModeContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathModeContext) WALK() antlr.TerminalNode { + return s.GetToken(GQLParserWALK, 0) +} + +func (s *PathModeContext) TRAIL() antlr.TerminalNode { + return s.GetToken(GQLParserTRAIL, 0) +} + +func (s *PathModeContext) SIMPLE() antlr.TerminalNode { + return s.GetToken(GQLParserSIMPLE, 0) +} + +func (s *PathModeContext) ACYCLIC() antlr.TerminalNode { + return s.GetToken(GQLParserACYCLIC, 0) +} + +func (s *PathModeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathModeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathModeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathMode(s) + } +} + +func (s *PathModeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathMode(s) + } +} + +func (p *GQLParser) PathMode() (localctx IPathModeContext) { + localctx = NewPathModeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 348, GQLParserRULE_pathMode) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2187) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&9088150798337) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IPathSearchPrefixContext is an interface to support dynamic dispatch. +type IPathSearchPrefixContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllPathSearch() IAllPathSearchContext + AnyPathSearch() IAnyPathSearchContext + ShortestPathSearch() IShortestPathSearchContext + + // IsPathSearchPrefixContext differentiates from other interfaces. + IsPathSearchPrefixContext() +} + +type PathSearchPrefixContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathSearchPrefixContext() *PathSearchPrefixContext { + var p = new(PathSearchPrefixContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathSearchPrefix + return p +} + +func InitEmptyPathSearchPrefixContext(p *PathSearchPrefixContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathSearchPrefix +} + +func (*PathSearchPrefixContext) IsPathSearchPrefixContext() {} + +func NewPathSearchPrefixContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathSearchPrefixContext { + var p = new(PathSearchPrefixContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathSearchPrefix + + return p +} + +func (s *PathSearchPrefixContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathSearchPrefixContext) AllPathSearch() IAllPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAllPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAllPathSearchContext) +} + +func (s *PathSearchPrefixContext) AnyPathSearch() IAnyPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnyPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAnyPathSearchContext) +} + +func (s *PathSearchPrefixContext) ShortestPathSearch() IShortestPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IShortestPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IShortestPathSearchContext) +} + +func (s *PathSearchPrefixContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathSearchPrefixContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathSearchPrefixContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathSearchPrefix(s) + } +} + +func (s *PathSearchPrefixContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathSearchPrefix(s) + } +} + +func (p *GQLParser) PathSearchPrefix() (localctx IPathSearchPrefixContext) { + localctx = NewPathSearchPrefixContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 350, GQLParserRULE_pathSearchPrefix) + p.SetState(2192) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2189) + p.AllPathSearch() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2190) + p.AnyPathSearch() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2191) + p.ShortestPathSearch() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IAllPathSearchContext is an interface to support dynamic dispatch. +type IAllPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ALL() antlr.TerminalNode + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsAllPathSearchContext differentiates from other interfaces. + IsAllPathSearchContext() +} + +type AllPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAllPathSearchContext() *AllPathSearchContext { + var p = new(AllPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_allPathSearch + return p +} + +func InitEmptyAllPathSearchContext(p *AllPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_allPathSearch +} + +func (*AllPathSearchContext) IsAllPathSearchContext() {} + +func NewAllPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AllPathSearchContext { + var p = new(AllPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_allPathSearch + + return p +} + +func (s *AllPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *AllPathSearchContext) ALL() antlr.TerminalNode { + return s.GetToken(GQLParserALL, 0) +} + +func (s *AllPathSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *AllPathSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *AllPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AllPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AllPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAllPathSearch(s) + } +} + +func (s *AllPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAllPathSearch(s) + } +} + +func (p *GQLParser) AllPathSearch() (localctx IAllPathSearchContext) { + localctx = NewAllPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 352, GQLParserRULE_allPathSearch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2194) + p.Match(GQLParserALL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2196) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 173, p.GetParserRuleContext()) == 1 { + { + p.SetState(2195) + p.PathMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2199) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 174, p.GetParserRuleContext()) == 1 { + { + p.SetState(2198) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// IPathOrPathsContext is an interface to support dynamic dispatch. +type IPathOrPathsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PATH() antlr.TerminalNode + PATHS() antlr.TerminalNode + + // IsPathOrPathsContext differentiates from other interfaces. + IsPathOrPathsContext() +} + +type PathOrPathsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathOrPathsContext() *PathOrPathsContext { + var p = new(PathOrPathsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathOrPaths + return p +} + +func InitEmptyPathOrPathsContext(p *PathOrPathsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathOrPaths +} + +func (*PathOrPathsContext) IsPathOrPathsContext() {} + +func NewPathOrPathsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathOrPathsContext { + var p = new(PathOrPathsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathOrPaths + + return p +} + +func (s *PathOrPathsContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathOrPathsContext) PATH() antlr.TerminalNode { + return s.GetToken(GQLParserPATH, 0) +} + +func (s *PathOrPathsContext) PATHS() antlr.TerminalNode { + return s.GetToken(GQLParserPATHS, 0) +} + +func (s *PathOrPathsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathOrPathsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathOrPathsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathOrPaths(s) + } +} + +func (s *PathOrPathsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathOrPaths(s) + } +} + +func (p *GQLParser) PathOrPaths() (localctx IPathOrPathsContext) { + localctx = NewPathOrPathsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 354, GQLParserRULE_pathOrPaths) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2201) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserPATH || _la == GQLParserPATHS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IAnyPathSearchContext is an interface to support dynamic dispatch. +type IAnyPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ANY() antlr.TerminalNode + NumberOfPaths() INumberOfPathsContext + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsAnyPathSearchContext differentiates from other interfaces. + IsAnyPathSearchContext() +} + +type AnyPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAnyPathSearchContext() *AnyPathSearchContext { + var p = new(AnyPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_anyPathSearch + return p +} + +func InitEmptyAnyPathSearchContext(p *AnyPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_anyPathSearch +} + +func (*AnyPathSearchContext) IsAnyPathSearchContext() {} + +func NewAnyPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AnyPathSearchContext { + var p = new(AnyPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_anyPathSearch + + return p +} + +func (s *AnyPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *AnyPathSearchContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *AnyPathSearchContext) NumberOfPaths() INumberOfPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumberOfPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumberOfPathsContext) +} + +func (s *AnyPathSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *AnyPathSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *AnyPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AnyPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AnyPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAnyPathSearch(s) + } +} + +func (s *AnyPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAnyPathSearch(s) + } +} + +func (p *GQLParser) AnyPathSearch() (localctx IAnyPathSearchContext) { + localctx = NewAnyPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 356, GQLParserRULE_anyPathSearch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2203) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2205) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) == 1 { + { + p.SetState(2204) + p.NumberOfPaths() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2208) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 176, p.GetParserRuleContext()) == 1 { + { + p.SetState(2207) + p.PathMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2211) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 177, p.GetParserRuleContext()) == 1 { + { + p.SetState(2210) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// INumberOfPathsContext is an interface to support dynamic dispatch. +type INumberOfPathsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext + + // IsNumberOfPathsContext differentiates from other interfaces. + IsNumberOfPathsContext() +} + +type NumberOfPathsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumberOfPathsContext() *NumberOfPathsContext { + var p = new(NumberOfPathsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numberOfPaths + return p +} + +func InitEmptyNumberOfPathsContext(p *NumberOfPathsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numberOfPaths +} + +func (*NumberOfPathsContext) IsNumberOfPathsContext() {} + +func NewNumberOfPathsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumberOfPathsContext { + var p = new(NumberOfPathsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numberOfPaths + + return p +} + +func (s *NumberOfPathsContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumberOfPathsContext) NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonNegativeIntegerSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonNegativeIntegerSpecificationContext) +} + +func (s *NumberOfPathsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumberOfPathsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumberOfPathsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumberOfPaths(s) + } +} + +func (s *NumberOfPathsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumberOfPaths(s) + } +} + +func (p *GQLParser) NumberOfPaths() (localctx INumberOfPathsContext) { + localctx = NewNumberOfPathsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 358, GQLParserRULE_numberOfPaths) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2213) + p.NonNegativeIntegerSpecification() + } + +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 +} + +// IShortestPathSearchContext is an interface to support dynamic dispatch. +type IShortestPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllShortestPathSearch() IAllShortestPathSearchContext + AnyShortestPathSearch() IAnyShortestPathSearchContext + CountedShortestPathSearch() ICountedShortestPathSearchContext + CountedShortestGroupSearch() ICountedShortestGroupSearchContext + + // IsShortestPathSearchContext differentiates from other interfaces. + IsShortestPathSearchContext() +} + +type ShortestPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyShortestPathSearchContext() *ShortestPathSearchContext { + var p = new(ShortestPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_shortestPathSearch + return p +} + +func InitEmptyShortestPathSearchContext(p *ShortestPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_shortestPathSearch +} + +func (*ShortestPathSearchContext) IsShortestPathSearchContext() {} + +func NewShortestPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ShortestPathSearchContext { + var p = new(ShortestPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_shortestPathSearch + + return p +} + +func (s *ShortestPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *ShortestPathSearchContext) AllShortestPathSearch() IAllShortestPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAllShortestPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAllShortestPathSearchContext) +} + +func (s *ShortestPathSearchContext) AnyShortestPathSearch() IAnyShortestPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnyShortestPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAnyShortestPathSearchContext) +} + +func (s *ShortestPathSearchContext) CountedShortestPathSearch() ICountedShortestPathSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICountedShortestPathSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICountedShortestPathSearchContext) +} + +func (s *ShortestPathSearchContext) CountedShortestGroupSearch() ICountedShortestGroupSearchContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICountedShortestGroupSearchContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICountedShortestGroupSearchContext) +} + +func (s *ShortestPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ShortestPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ShortestPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterShortestPathSearch(s) + } +} + +func (s *ShortestPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitShortestPathSearch(s) + } +} + +func (p *GQLParser) ShortestPathSearch() (localctx IShortestPathSearchContext) { + localctx = NewShortestPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 360, GQLParserRULE_shortestPathSearch) + p.SetState(2219) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 178, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2215) + p.AllShortestPathSearch() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2216) + p.AnyShortestPathSearch() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2217) + p.CountedShortestPathSearch() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2218) + p.CountedShortestGroupSearch() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IAllShortestPathSearchContext is an interface to support dynamic dispatch. +type IAllShortestPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ALL() antlr.TerminalNode + SHORTEST() antlr.TerminalNode + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsAllShortestPathSearchContext differentiates from other interfaces. + IsAllShortestPathSearchContext() +} + +type AllShortestPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAllShortestPathSearchContext() *AllShortestPathSearchContext { + var p = new(AllShortestPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_allShortestPathSearch + return p +} + +func InitEmptyAllShortestPathSearchContext(p *AllShortestPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_allShortestPathSearch +} + +func (*AllShortestPathSearchContext) IsAllShortestPathSearchContext() {} + +func NewAllShortestPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AllShortestPathSearchContext { + var p = new(AllShortestPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_allShortestPathSearch + + return p +} + +func (s *AllShortestPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *AllShortestPathSearchContext) ALL() antlr.TerminalNode { + return s.GetToken(GQLParserALL, 0) +} + +func (s *AllShortestPathSearchContext) SHORTEST() antlr.TerminalNode { + return s.GetToken(GQLParserSHORTEST, 0) +} + +func (s *AllShortestPathSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *AllShortestPathSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *AllShortestPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AllShortestPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AllShortestPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAllShortestPathSearch(s) + } +} + +func (s *AllShortestPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAllShortestPathSearch(s) + } +} + +func (p *GQLParser) AllShortestPathSearch() (localctx IAllShortestPathSearchContext) { + localctx = NewAllShortestPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 362, GQLParserRULE_allShortestPathSearch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2221) + p.Match(GQLParserALL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2222) + p.Match(GQLParserSHORTEST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2224) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 179, p.GetParserRuleContext()) == 1 { + { + p.SetState(2223) + p.PathMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2227) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 180, p.GetParserRuleContext()) == 1 { + { + p.SetState(2226) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// IAnyShortestPathSearchContext is an interface to support dynamic dispatch. +type IAnyShortestPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ANY() antlr.TerminalNode + SHORTEST() antlr.TerminalNode + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsAnyShortestPathSearchContext differentiates from other interfaces. + IsAnyShortestPathSearchContext() +} + +type AnyShortestPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAnyShortestPathSearchContext() *AnyShortestPathSearchContext { + var p = new(AnyShortestPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_anyShortestPathSearch + return p +} + +func InitEmptyAnyShortestPathSearchContext(p *AnyShortestPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_anyShortestPathSearch +} + +func (*AnyShortestPathSearchContext) IsAnyShortestPathSearchContext() {} + +func NewAnyShortestPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AnyShortestPathSearchContext { + var p = new(AnyShortestPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_anyShortestPathSearch + + return p +} + +func (s *AnyShortestPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *AnyShortestPathSearchContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *AnyShortestPathSearchContext) SHORTEST() antlr.TerminalNode { + return s.GetToken(GQLParserSHORTEST, 0) +} + +func (s *AnyShortestPathSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *AnyShortestPathSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *AnyShortestPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AnyShortestPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AnyShortestPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAnyShortestPathSearch(s) + } +} + +func (s *AnyShortestPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAnyShortestPathSearch(s) + } +} + +func (p *GQLParser) AnyShortestPathSearch() (localctx IAnyShortestPathSearchContext) { + localctx = NewAnyShortestPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 364, GQLParserRULE_anyShortestPathSearch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2229) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2230) + p.Match(GQLParserSHORTEST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2232) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 181, p.GetParserRuleContext()) == 1 { + { + p.SetState(2231) + p.PathMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2235) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 182, p.GetParserRuleContext()) == 1 { + { + p.SetState(2234) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// ICountedShortestPathSearchContext is an interface to support dynamic dispatch. +type ICountedShortestPathSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SHORTEST() antlr.TerminalNode + NumberOfPaths() INumberOfPathsContext + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsCountedShortestPathSearchContext differentiates from other interfaces. + IsCountedShortestPathSearchContext() +} + +type CountedShortestPathSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCountedShortestPathSearchContext() *CountedShortestPathSearchContext { + var p = new(CountedShortestPathSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_countedShortestPathSearch + return p +} + +func InitEmptyCountedShortestPathSearchContext(p *CountedShortestPathSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_countedShortestPathSearch +} + +func (*CountedShortestPathSearchContext) IsCountedShortestPathSearchContext() {} + +func NewCountedShortestPathSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CountedShortestPathSearchContext { + var p = new(CountedShortestPathSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_countedShortestPathSearch + + return p +} + +func (s *CountedShortestPathSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *CountedShortestPathSearchContext) SHORTEST() antlr.TerminalNode { + return s.GetToken(GQLParserSHORTEST, 0) +} + +func (s *CountedShortestPathSearchContext) NumberOfPaths() INumberOfPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumberOfPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumberOfPathsContext) +} + +func (s *CountedShortestPathSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *CountedShortestPathSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *CountedShortestPathSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CountedShortestPathSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CountedShortestPathSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCountedShortestPathSearch(s) + } +} + +func (s *CountedShortestPathSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCountedShortestPathSearch(s) + } +} + +func (p *GQLParser) CountedShortestPathSearch() (localctx ICountedShortestPathSearchContext) { + localctx = NewCountedShortestPathSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 366, GQLParserRULE_countedShortestPathSearch) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2237) + p.Match(GQLParserSHORTEST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2238) + p.NumberOfPaths() + } + p.SetState(2240) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 183, p.GetParserRuleContext()) == 1 { + { + p.SetState(2239) + p.PathMode() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2243) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 184, p.GetParserRuleContext()) == 1 { + { + p.SetState(2242) + p.PathOrPaths() + } + + } else if p.HasError() { // JIM + 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 +} + +// ICountedShortestGroupSearchContext is an interface to support dynamic dispatch. +type ICountedShortestGroupSearchContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SHORTEST() antlr.TerminalNode + GROUP() antlr.TerminalNode + GROUPS() antlr.TerminalNode + NumberOfGroups() INumberOfGroupsContext + PathMode() IPathModeContext + PathOrPaths() IPathOrPathsContext + + // IsCountedShortestGroupSearchContext differentiates from other interfaces. + IsCountedShortestGroupSearchContext() +} + +type CountedShortestGroupSearchContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCountedShortestGroupSearchContext() *CountedShortestGroupSearchContext { + var p = new(CountedShortestGroupSearchContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_countedShortestGroupSearch + return p +} + +func InitEmptyCountedShortestGroupSearchContext(p *CountedShortestGroupSearchContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_countedShortestGroupSearch +} + +func (*CountedShortestGroupSearchContext) IsCountedShortestGroupSearchContext() {} + +func NewCountedShortestGroupSearchContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CountedShortestGroupSearchContext { + var p = new(CountedShortestGroupSearchContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_countedShortestGroupSearch + + return p +} + +func (s *CountedShortestGroupSearchContext) GetParser() antlr.Parser { return s.parser } + +func (s *CountedShortestGroupSearchContext) SHORTEST() antlr.TerminalNode { + return s.GetToken(GQLParserSHORTEST, 0) +} + +func (s *CountedShortestGroupSearchContext) GROUP() antlr.TerminalNode { + return s.GetToken(GQLParserGROUP, 0) +} + +func (s *CountedShortestGroupSearchContext) GROUPS() antlr.TerminalNode { + return s.GetToken(GQLParserGROUPS, 0) +} + +func (s *CountedShortestGroupSearchContext) NumberOfGroups() INumberOfGroupsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumberOfGroupsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumberOfGroupsContext) +} + +func (s *CountedShortestGroupSearchContext) PathMode() IPathModeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModeContext) +} + +func (s *CountedShortestGroupSearchContext) PathOrPaths() IPathOrPathsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathOrPathsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathOrPathsContext) +} + +func (s *CountedShortestGroupSearchContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CountedShortestGroupSearchContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CountedShortestGroupSearchContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCountedShortestGroupSearch(s) + } +} + +func (s *CountedShortestGroupSearchContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCountedShortestGroupSearch(s) + } +} + +func (p *GQLParser) CountedShortestGroupSearch() (localctx ICountedShortestGroupSearchContext) { + localctx = NewCountedShortestGroupSearchContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 368, GQLParserRULE_countedShortestGroupSearch) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2245) + p.Match(GQLParserSHORTEST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2247) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&983040) != 0) || _la == GQLParserGENERAL_PARAMETER_REFERENCE { + { + p.SetState(2246) + p.NumberOfGroups() + } + + } + p.SetState(2250) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&9088150798337) != 0 { + { + p.SetState(2249) + p.PathMode() + } + + } + p.SetState(2253) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPATH || _la == GQLParserPATHS { + { + p.SetState(2252) + p.PathOrPaths() + } + + } + { + p.SetState(2255) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserGROUP || _la == GQLParserGROUPS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// INumberOfGroupsContext is an interface to support dynamic dispatch. +type INumberOfGroupsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext + + // IsNumberOfGroupsContext differentiates from other interfaces. + IsNumberOfGroupsContext() +} + +type NumberOfGroupsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumberOfGroupsContext() *NumberOfGroupsContext { + var p = new(NumberOfGroupsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numberOfGroups + return p +} + +func InitEmptyNumberOfGroupsContext(p *NumberOfGroupsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numberOfGroups +} + +func (*NumberOfGroupsContext) IsNumberOfGroupsContext() {} + +func NewNumberOfGroupsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumberOfGroupsContext { + var p = new(NumberOfGroupsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numberOfGroups + + return p +} + +func (s *NumberOfGroupsContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumberOfGroupsContext) NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonNegativeIntegerSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonNegativeIntegerSpecificationContext) +} + +func (s *NumberOfGroupsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumberOfGroupsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumberOfGroupsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumberOfGroups(s) + } +} + +func (s *NumberOfGroupsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumberOfGroups(s) + } +} + +func (p *GQLParser) NumberOfGroups() (localctx INumberOfGroupsContext) { + localctx = NewNumberOfGroupsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 370, GQLParserRULE_numberOfGroups) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2257) + p.NonNegativeIntegerSpecification() + } + +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 +} + +// IPathPatternExpressionContext is an interface to support dynamic dispatch. +type IPathPatternExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsPathPatternExpressionContext differentiates from other interfaces. + IsPathPatternExpressionContext() +} + +type PathPatternExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathPatternExpressionContext() *PathPatternExpressionContext { + var p = new(PathPatternExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternExpression + return p +} + +func InitEmptyPathPatternExpressionContext(p *PathPatternExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPatternExpression +} + +func (*PathPatternExpressionContext) IsPathPatternExpressionContext() {} + +func NewPathPatternExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathPatternExpressionContext { + var p = new(PathPatternExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathPatternExpression + + return p +} + +func (s *PathPatternExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathPatternExpressionContext) CopyAll(ctx *PathPatternExpressionContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *PathPatternExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathPatternExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type PpePatternUnionContext struct { + PathPatternExpressionContext +} + +func NewPpePatternUnionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpePatternUnionContext { + var p = new(PpePatternUnionContext) + + InitEmptyPathPatternExpressionContext(&p.PathPatternExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*PathPatternExpressionContext)) + + return p +} + +func (s *PpePatternUnionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpePatternUnionContext) AllPathTerm() []IPathTermContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPathTermContext); ok { + len++ + } + } + + tst := make([]IPathTermContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPathTermContext); ok { + tst[i] = t.(IPathTermContext) + i++ + } + } + + return tst +} + +func (s *PpePatternUnionContext) PathTerm(i int) IPathTermContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathTermContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPathTermContext) +} + +func (s *PpePatternUnionContext) AllVERTICAL_BAR() []antlr.TerminalNode { + return s.GetTokens(GQLParserVERTICAL_BAR) +} + +func (s *PpePatternUnionContext) VERTICAL_BAR(i int) antlr.TerminalNode { + return s.GetToken(GQLParserVERTICAL_BAR, i) +} + +func (s *PpePatternUnionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpePatternUnion(s) + } +} + +func (s *PpePatternUnionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpePatternUnion(s) + } +} + +type PpePathTermContext struct { + PathPatternExpressionContext +} + +func NewPpePathTermContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpePathTermContext { + var p = new(PpePathTermContext) + + InitEmptyPathPatternExpressionContext(&p.PathPatternExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*PathPatternExpressionContext)) + + return p +} + +func (s *PpePathTermContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpePathTermContext) PathTerm() IPathTermContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathTermContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathTermContext) +} + +func (s *PpePathTermContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpePathTerm(s) + } +} + +func (s *PpePathTermContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpePathTerm(s) + } +} + +type PpeMultisetAlternationContext struct { + PathPatternExpressionContext +} + +func NewPpeMultisetAlternationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpeMultisetAlternationContext { + var p = new(PpeMultisetAlternationContext) + + InitEmptyPathPatternExpressionContext(&p.PathPatternExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*PathPatternExpressionContext)) + + return p +} + +func (s *PpeMultisetAlternationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpeMultisetAlternationContext) AllPathTerm() []IPathTermContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPathTermContext); ok { + len++ + } + } + + tst := make([]IPathTermContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPathTermContext); ok { + tst[i] = t.(IPathTermContext) + i++ + } + } + + return tst +} + +func (s *PpeMultisetAlternationContext) PathTerm(i int) IPathTermContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathTermContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPathTermContext) +} + +func (s *PpeMultisetAlternationContext) AllMULTISET_ALTERNATION_OPERATOR() []antlr.TerminalNode { + return s.GetTokens(GQLParserMULTISET_ALTERNATION_OPERATOR) +} + +func (s *PpeMultisetAlternationContext) MULTISET_ALTERNATION_OPERATOR(i int) antlr.TerminalNode { + return s.GetToken(GQLParserMULTISET_ALTERNATION_OPERATOR, i) +} + +func (s *PpeMultisetAlternationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpeMultisetAlternation(s) + } +} + +func (s *PpeMultisetAlternationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpeMultisetAlternation(s) + } +} + +func (p *GQLParser) PathPatternExpression() (localctx IPathPatternExpressionContext) { + localctx = NewPathPatternExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 372, GQLParserRULE_pathPatternExpression) + var _alt int + + p.SetState(2274) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 190, p.GetParserRuleContext()) { + case 1: + localctx = NewPpePathTermContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2259) + p.PathTerm() + } + + case 2: + localctx = NewPpeMultisetAlternationContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2260) + p.PathTerm() + } + p.SetState(2263) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(2261) + p.Match(GQLParserMULTISET_ALTERNATION_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2262) + p.PathTerm() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(2265) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 188, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case 3: + localctx = NewPpePatternUnionContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2267) + p.PathTerm() + } + p.SetState(2270) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(2268) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2269) + p.PathTerm() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(2272) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 189, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IPathTermContext is an interface to support dynamic dispatch. +type IPathTermContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllPathFactor() []IPathFactorContext + PathFactor(i int) IPathFactorContext + + // IsPathTermContext differentiates from other interfaces. + IsPathTermContext() +} + +type PathTermContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathTermContext() *PathTermContext { + var p = new(PathTermContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathTerm + return p +} + +func InitEmptyPathTermContext(p *PathTermContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathTerm +} + +func (*PathTermContext) IsPathTermContext() {} + +func NewPathTermContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathTermContext { + var p = new(PathTermContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathTerm + + return p +} + +func (s *PathTermContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathTermContext) AllPathFactor() []IPathFactorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPathFactorContext); ok { + len++ + } + } + + tst := make([]IPathFactorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPathFactorContext); ok { + tst[i] = t.(IPathFactorContext) + i++ + } + } + + return tst +} + +func (s *PathTermContext) PathFactor(i int) IPathFactorContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathFactorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPathFactorContext) +} + +func (s *PathTermContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathTermContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathTermContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathTerm(s) + } +} + +func (s *PathTermContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathTerm(s) + } +} + +func (p *GQLParser) PathTerm() (localctx IPathTermContext) { + localctx = NewPathTermContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 374, GQLParserRULE_pathTerm) + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2277) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(2276) + p.PathFactor() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(2279) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 191, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IPathFactorContext is an interface to support dynamic dispatch. +type IPathFactorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsPathFactorContext differentiates from other interfaces. + IsPathFactorContext() +} + +type PathFactorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathFactorContext() *PathFactorContext { + var p = new(PathFactorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathFactor + return p +} + +func InitEmptyPathFactorContext(p *PathFactorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathFactor +} + +func (*PathFactorContext) IsPathFactorContext() {} + +func NewPathFactorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathFactorContext { + var p = new(PathFactorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathFactor + + return p +} + +func (s *PathFactorContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathFactorContext) CopyAll(ctx *PathFactorContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *PathFactorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathFactorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type PfQuantifiedPathPrimaryContext struct { + PathFactorContext +} + +func NewPfQuantifiedPathPrimaryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PfQuantifiedPathPrimaryContext { + var p = new(PfQuantifiedPathPrimaryContext) + + InitEmptyPathFactorContext(&p.PathFactorContext) + p.parser = parser + p.CopyAll(ctx.(*PathFactorContext)) + + return p +} + +func (s *PfQuantifiedPathPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PfQuantifiedPathPrimaryContext) PathPrimary() IPathPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPrimaryContext) +} + +func (s *PfQuantifiedPathPrimaryContext) GraphPatternQuantifier() IGraphPatternQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternQuantifierContext) +} + +func (s *PfQuantifiedPathPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPfQuantifiedPathPrimary(s) + } +} + +func (s *PfQuantifiedPathPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPfQuantifiedPathPrimary(s) + } +} + +type PfQuestionedPathPrimaryContext struct { + PathFactorContext +} + +func NewPfQuestionedPathPrimaryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PfQuestionedPathPrimaryContext { + var p = new(PfQuestionedPathPrimaryContext) + + InitEmptyPathFactorContext(&p.PathFactorContext) + p.parser = parser + p.CopyAll(ctx.(*PathFactorContext)) + + return p +} + +func (s *PfQuestionedPathPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PfQuestionedPathPrimaryContext) PathPrimary() IPathPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPrimaryContext) +} + +func (s *PfQuestionedPathPrimaryContext) QUESTION_MARK() antlr.TerminalNode { + return s.GetToken(GQLParserQUESTION_MARK, 0) +} + +func (s *PfQuestionedPathPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPfQuestionedPathPrimary(s) + } +} + +func (s *PfQuestionedPathPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPfQuestionedPathPrimary(s) + } +} + +type PfPathPrimaryContext struct { + PathFactorContext +} + +func NewPfPathPrimaryContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PfPathPrimaryContext { + var p = new(PfPathPrimaryContext) + + InitEmptyPathFactorContext(&p.PathFactorContext) + p.parser = parser + p.CopyAll(ctx.(*PathFactorContext)) + + return p +} + +func (s *PfPathPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PfPathPrimaryContext) PathPrimary() IPathPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPrimaryContext) +} + +func (s *PfPathPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPfPathPrimary(s) + } +} + +func (s *PfPathPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPfPathPrimary(s) + } +} + +func (p *GQLParser) PathFactor() (localctx IPathFactorContext) { + localctx = NewPathFactorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 376, GQLParserRULE_pathFactor) + p.SetState(2288) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 192, p.GetParserRuleContext()) { + case 1: + localctx = NewPfPathPrimaryContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2281) + p.PathPrimary() + } + + case 2: + localctx = NewPfQuantifiedPathPrimaryContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2282) + p.PathPrimary() + } + { + p.SetState(2283) + p.GraphPatternQuantifier() + } + + case 3: + localctx = NewPfQuestionedPathPrimaryContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2285) + p.PathPrimary() + } + { + p.SetState(2286) + p.Match(GQLParserQUESTION_MARK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IPathPrimaryContext is an interface to support dynamic dispatch. +type IPathPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsPathPrimaryContext differentiates from other interfaces. + IsPathPrimaryContext() +} + +type PathPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathPrimaryContext() *PathPrimaryContext { + var p = new(PathPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPrimary + return p +} + +func InitEmptyPathPrimaryContext(p *PathPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathPrimary +} + +func (*PathPrimaryContext) IsPathPrimaryContext() {} + +func NewPathPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathPrimaryContext { + var p = new(PathPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathPrimary + + return p +} + +func (s *PathPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathPrimaryContext) CopyAll(ctx *PathPrimaryContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *PathPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type PpParenthesizedPathPatternExpressionContext struct { + PathPrimaryContext +} + +func NewPpParenthesizedPathPatternExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpParenthesizedPathPatternExpressionContext { + var p = new(PpParenthesizedPathPatternExpressionContext) + + InitEmptyPathPrimaryContext(&p.PathPrimaryContext) + p.parser = parser + p.CopyAll(ctx.(*PathPrimaryContext)) + + return p +} + +func (s *PpParenthesizedPathPatternExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpParenthesizedPathPatternExpressionContext) ParenthesizedPathPatternExpression() IParenthesizedPathPatternExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParenthesizedPathPatternExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IParenthesizedPathPatternExpressionContext) +} + +func (s *PpParenthesizedPathPatternExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpParenthesizedPathPatternExpression(s) + } +} + +func (s *PpParenthesizedPathPatternExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpParenthesizedPathPatternExpression(s) + } +} + +type PpElementPatternContext struct { + PathPrimaryContext +} + +func NewPpElementPatternContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpElementPatternContext { + var p = new(PpElementPatternContext) + + InitEmptyPathPrimaryContext(&p.PathPrimaryContext) + p.parser = parser + p.CopyAll(ctx.(*PathPrimaryContext)) + + return p +} + +func (s *PpElementPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpElementPatternContext) ElementPattern() IElementPatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternContext) +} + +func (s *PpElementPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpElementPattern(s) + } +} + +func (s *PpElementPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpElementPattern(s) + } +} + +type PpSimplifiedPathPatternExpressionContext struct { + PathPrimaryContext +} + +func NewPpSimplifiedPathPatternExpressionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PpSimplifiedPathPatternExpressionContext { + var p = new(PpSimplifiedPathPatternExpressionContext) + + InitEmptyPathPrimaryContext(&p.PathPrimaryContext) + p.parser = parser + p.CopyAll(ctx.(*PathPrimaryContext)) + + return p +} + +func (s *PpSimplifiedPathPatternExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PpSimplifiedPathPatternExpressionContext) SimplifiedPathPatternExpression() ISimplifiedPathPatternExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedPathPatternExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedPathPatternExpressionContext) +} + +func (s *PpSimplifiedPathPatternExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPpSimplifiedPathPatternExpression(s) + } +} + +func (s *PpSimplifiedPathPatternExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPpSimplifiedPathPatternExpression(s) + } +} + +func (p *GQLParser) PathPrimary() (localctx IPathPrimaryContext) { + localctx = NewPathPrimaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 378, GQLParserRULE_pathPrimary) + p.SetState(2293) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 193, p.GetParserRuleContext()) { + case 1: + localctx = NewPpElementPatternContext(p, localctx) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2290) + p.ElementPattern() + } + + case 2: + localctx = NewPpParenthesizedPathPatternExpressionContext(p, localctx) + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2291) + p.ParenthesizedPathPatternExpression() + } + + case 3: + localctx = NewPpSimplifiedPathPatternExpressionContext(p, localctx) + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2292) + p.SimplifiedPathPatternExpression() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IElementPatternContext is an interface to support dynamic dispatch. +type IElementPatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodePattern() INodePatternContext + EdgePattern() IEdgePatternContext + + // IsElementPatternContext differentiates from other interfaces. + IsElementPatternContext() +} + +type ElementPatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementPatternContext() *ElementPatternContext { + var p = new(ElementPatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPattern + return p +} + +func InitEmptyElementPatternContext(p *ElementPatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPattern +} + +func (*ElementPatternContext) IsElementPatternContext() {} + +func NewElementPatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementPatternContext { + var p = new(ElementPatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementPattern + + return p +} + +func (s *ElementPatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementPatternContext) NodePattern() INodePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodePatternContext) +} + +func (s *ElementPatternContext) EdgePattern() IEdgePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgePatternContext) +} + +func (s *ElementPatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementPatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementPatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementPattern(s) + } +} + +func (s *ElementPatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementPattern(s) + } +} + +func (p *GQLParser) ElementPattern() (localctx IElementPatternContext) { + localctx = NewElementPatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 380, GQLParserRULE_elementPattern) + p.SetState(2297) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2295) + p.NodePattern() + } + + case GQLParserLEFT_ARROW, GQLParserLEFT_ARROW_TILDE, GQLParserLEFT_ARROW_BRACKET, GQLParserLEFT_ARROW_TILDE_BRACKET, GQLParserLEFT_MINUS_RIGHT, GQLParserMINUS_LEFT_BRACKET, GQLParserRIGHT_ARROW, GQLParserTILDE_LEFT_BRACKET, GQLParserTILDE_RIGHT_ARROW, GQLParserMINUS_SIGN, GQLParserTILDE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2296) + p.EdgePattern() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// INodePatternContext is an interface to support dynamic dispatch. +type INodePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + RIGHT_PAREN() antlr.TerminalNode + + // IsNodePatternContext differentiates from other interfaces. + IsNodePatternContext() +} + +type NodePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodePatternContext() *NodePatternContext { + var p = new(NodePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodePattern + return p +} + +func InitEmptyNodePatternContext(p *NodePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodePattern +} + +func (*NodePatternContext) IsNodePatternContext() {} + +func NewNodePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodePatternContext { + var p = new(NodePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodePattern + + return p +} + +func (s *NodePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodePatternContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *NodePatternContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *NodePatternContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *NodePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodePattern(s) + } +} + +func (s *NodePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodePattern(s) + } +} + +func (p *GQLParser) NodePattern() (localctx INodePatternContext) { + localctx = NewNodePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 382, GQLParserRULE_nodePattern) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2299) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2300) + p.ElementPatternFiller() + } + { + p.SetState(2301) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IElementPatternFillerContext is an interface to support dynamic dispatch. +type IElementPatternFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableDeclaration() IElementVariableDeclarationContext + IsLabelExpression() IIsLabelExpressionContext + ElementPatternPredicate() IElementPatternPredicateContext + + // IsElementPatternFillerContext differentiates from other interfaces. + IsElementPatternFillerContext() +} + +type ElementPatternFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementPatternFillerContext() *ElementPatternFillerContext { + var p = new(ElementPatternFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternFiller + return p +} + +func InitEmptyElementPatternFillerContext(p *ElementPatternFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternFiller +} + +func (*ElementPatternFillerContext) IsElementPatternFillerContext() {} + +func NewElementPatternFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementPatternFillerContext { + var p = new(ElementPatternFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementPatternFiller + + return p +} + +func (s *ElementPatternFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementPatternFillerContext) ElementVariableDeclaration() IElementVariableDeclarationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableDeclarationContext) +} + +func (s *ElementPatternFillerContext) IsLabelExpression() IIsLabelExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsLabelExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsLabelExpressionContext) +} + +func (s *ElementPatternFillerContext) ElementPatternPredicate() IElementPatternPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternPredicateContext) +} + +func (s *ElementPatternFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementPatternFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementPatternFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementPatternFiller(s) + } +} + +func (s *ElementPatternFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementPatternFiller(s) + } +} + +func (p *GQLParser) ElementPatternFiller() (localctx IElementPatternFillerContext) { + localctx = NewElementPatternFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 384, GQLParserRULE_elementPatternFiller) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2304) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0 { + { + p.SetState(2303) + p.ElementVariableDeclaration() + } + + } + p.SetState(2307) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserCOLON { + { + p.SetState(2306) + p.IsLabelExpression() + } + + } + p.SetState(2310) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserWHERE || _la == GQLParserLEFT_BRACE { + { + p.SetState(2309) + p.ElementPatternPredicate() + } + + } + +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 +} + +// IElementVariableDeclarationContext is an interface to support dynamic dispatch. +type IElementVariableDeclarationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariable() IElementVariableContext + + // IsElementVariableDeclarationContext differentiates from other interfaces. + IsElementVariableDeclarationContext() +} + +type ElementVariableDeclarationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementVariableDeclarationContext() *ElementVariableDeclarationContext { + var p = new(ElementVariableDeclarationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariableDeclaration + return p +} + +func InitEmptyElementVariableDeclarationContext(p *ElementVariableDeclarationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariableDeclaration +} + +func (*ElementVariableDeclarationContext) IsElementVariableDeclarationContext() {} + +func NewElementVariableDeclarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementVariableDeclarationContext { + var p = new(ElementVariableDeclarationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementVariableDeclaration + + return p +} + +func (s *ElementVariableDeclarationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementVariableDeclarationContext) ElementVariable() IElementVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableContext) +} + +func (s *ElementVariableDeclarationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementVariableDeclarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementVariableDeclarationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementVariableDeclaration(s) + } +} + +func (s *ElementVariableDeclarationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementVariableDeclaration(s) + } +} + +func (p *GQLParser) ElementVariableDeclaration() (localctx IElementVariableDeclarationContext) { + localctx = NewElementVariableDeclarationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 386, GQLParserRULE_elementVariableDeclaration) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2312) + p.ElementVariable() + } + +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 +} + +// IIsLabelExpressionContext is an interface to support dynamic dispatch. +type IIsLabelExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IsOrColon() IIsOrColonContext + LabelExpression() ILabelExpressionContext + + // IsIsLabelExpressionContext differentiates from other interfaces. + IsIsLabelExpressionContext() +} + +type IsLabelExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIsLabelExpressionContext() *IsLabelExpressionContext { + var p = new(IsLabelExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isLabelExpression + return p +} + +func InitEmptyIsLabelExpressionContext(p *IsLabelExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isLabelExpression +} + +func (*IsLabelExpressionContext) IsIsLabelExpressionContext() {} + +func NewIsLabelExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IsLabelExpressionContext { + var p = new(IsLabelExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_isLabelExpression + + return p +} + +func (s *IsLabelExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *IsLabelExpressionContext) IsOrColon() IIsOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsOrColonContext) +} + +func (s *IsLabelExpressionContext) LabelExpression() ILabelExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *IsLabelExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IsLabelExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *IsLabelExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIsLabelExpression(s) + } +} + +func (s *IsLabelExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIsLabelExpression(s) + } +} + +func (p *GQLParser) IsLabelExpression() (localctx IIsLabelExpressionContext) { + localctx = NewIsLabelExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 388, GQLParserRULE_isLabelExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2314) + p.IsOrColon() + } + { + p.SetState(2315) + p.labelExpression(0) + } + +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 +} + +// IIsOrColonContext is an interface to support dynamic dispatch. +type IIsOrColonContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + COLON() antlr.TerminalNode + + // IsIsOrColonContext differentiates from other interfaces. + IsIsOrColonContext() +} + +type IsOrColonContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIsOrColonContext() *IsOrColonContext { + var p = new(IsOrColonContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isOrColon + return p +} + +func InitEmptyIsOrColonContext(p *IsOrColonContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isOrColon +} + +func (*IsOrColonContext) IsIsOrColonContext() {} + +func NewIsOrColonContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IsOrColonContext { + var p = new(IsOrColonContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_isOrColon + + return p +} + +func (s *IsOrColonContext) GetParser() antlr.Parser { return s.parser } + +func (s *IsOrColonContext) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *IsOrColonContext) COLON() antlr.TerminalNode { + return s.GetToken(GQLParserCOLON, 0) +} + +func (s *IsOrColonContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IsOrColonContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *IsOrColonContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIsOrColon(s) + } +} + +func (s *IsOrColonContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIsOrColon(s) + } +} + +func (p *GQLParser) IsOrColon() (localctx IIsOrColonContext) { + localctx = NewIsOrColonContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 390, GQLParserRULE_isOrColon) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2317) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserIS || _la == GQLParserCOLON) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IElementPatternPredicateContext is an interface to support dynamic dispatch. +type IElementPatternPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementPatternWhereClause() IElementPatternWhereClauseContext + ElementPropertySpecification() IElementPropertySpecificationContext + + // IsElementPatternPredicateContext differentiates from other interfaces. + IsElementPatternPredicateContext() +} + +type ElementPatternPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementPatternPredicateContext() *ElementPatternPredicateContext { + var p = new(ElementPatternPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternPredicate + return p +} + +func InitEmptyElementPatternPredicateContext(p *ElementPatternPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternPredicate +} + +func (*ElementPatternPredicateContext) IsElementPatternPredicateContext() {} + +func NewElementPatternPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementPatternPredicateContext { + var p = new(ElementPatternPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementPatternPredicate + + return p +} + +func (s *ElementPatternPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementPatternPredicateContext) ElementPatternWhereClause() IElementPatternWhereClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternWhereClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternWhereClauseContext) +} + +func (s *ElementPatternPredicateContext) ElementPropertySpecification() IElementPropertySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPropertySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPropertySpecificationContext) +} + +func (s *ElementPatternPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementPatternPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementPatternPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementPatternPredicate(s) + } +} + +func (s *ElementPatternPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementPatternPredicate(s) + } +} + +func (p *GQLParser) ElementPatternPredicate() (localctx IElementPatternPredicateContext) { + localctx = NewElementPatternPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 392, GQLParserRULE_elementPatternPredicate) + p.SetState(2321) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserWHERE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2319) + p.ElementPatternWhereClause() + } + + case GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2320) + p.ElementPropertySpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IElementPatternWhereClauseContext is an interface to support dynamic dispatch. +type IElementPatternWhereClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHERE() antlr.TerminalNode + SearchCondition() ISearchConditionContext + + // IsElementPatternWhereClauseContext differentiates from other interfaces. + IsElementPatternWhereClauseContext() +} + +type ElementPatternWhereClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementPatternWhereClauseContext() *ElementPatternWhereClauseContext { + var p = new(ElementPatternWhereClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternWhereClause + return p +} + +func InitEmptyElementPatternWhereClauseContext(p *ElementPatternWhereClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPatternWhereClause +} + +func (*ElementPatternWhereClauseContext) IsElementPatternWhereClauseContext() {} + +func NewElementPatternWhereClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementPatternWhereClauseContext { + var p = new(ElementPatternWhereClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementPatternWhereClause + + return p +} + +func (s *ElementPatternWhereClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementPatternWhereClauseContext) WHERE() antlr.TerminalNode { + return s.GetToken(GQLParserWHERE, 0) +} + +func (s *ElementPatternWhereClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *ElementPatternWhereClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementPatternWhereClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementPatternWhereClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementPatternWhereClause(s) + } +} + +func (s *ElementPatternWhereClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementPatternWhereClause(s) + } +} + +func (p *GQLParser) ElementPatternWhereClause() (localctx IElementPatternWhereClauseContext) { + localctx = NewElementPatternWhereClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 394, GQLParserRULE_elementPatternWhereClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2323) + p.Match(GQLParserWHERE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2324) + p.SearchCondition() + } + +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 +} + +// IElementPropertySpecificationContext is an interface to support dynamic dispatch. +type IElementPropertySpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + PropertyKeyValuePairList() IPropertyKeyValuePairListContext + RIGHT_BRACE() antlr.TerminalNode + + // IsElementPropertySpecificationContext differentiates from other interfaces. + IsElementPropertySpecificationContext() +} + +type ElementPropertySpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementPropertySpecificationContext() *ElementPropertySpecificationContext { + var p = new(ElementPropertySpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPropertySpecification + return p +} + +func InitEmptyElementPropertySpecificationContext(p *ElementPropertySpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementPropertySpecification +} + +func (*ElementPropertySpecificationContext) IsElementPropertySpecificationContext() {} + +func NewElementPropertySpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementPropertySpecificationContext { + var p = new(ElementPropertySpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementPropertySpecification + + return p +} + +func (s *ElementPropertySpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementPropertySpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *ElementPropertySpecificationContext) PropertyKeyValuePairList() IPropertyKeyValuePairListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyKeyValuePairListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyKeyValuePairListContext) +} + +func (s *ElementPropertySpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *ElementPropertySpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementPropertySpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementPropertySpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementPropertySpecification(s) + } +} + +func (s *ElementPropertySpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementPropertySpecification(s) + } +} + +func (p *GQLParser) ElementPropertySpecification() (localctx IElementPropertySpecificationContext) { + localctx = NewElementPropertySpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 396, GQLParserRULE_elementPropertySpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2326) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2327) + p.PropertyKeyValuePairList() + } + { + p.SetState(2328) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IPropertyKeyValuePairListContext is an interface to support dynamic dispatch. +type IPropertyKeyValuePairListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllPropertyKeyValuePair() []IPropertyKeyValuePairContext + PropertyKeyValuePair(i int) IPropertyKeyValuePairContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsPropertyKeyValuePairListContext differentiates from other interfaces. + IsPropertyKeyValuePairListContext() +} + +type PropertyKeyValuePairListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyKeyValuePairListContext() *PropertyKeyValuePairListContext { + var p = new(PropertyKeyValuePairListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyKeyValuePairList + return p +} + +func InitEmptyPropertyKeyValuePairListContext(p *PropertyKeyValuePairListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyKeyValuePairList +} + +func (*PropertyKeyValuePairListContext) IsPropertyKeyValuePairListContext() {} + +func NewPropertyKeyValuePairListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyKeyValuePairListContext { + var p = new(PropertyKeyValuePairListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyKeyValuePairList + + return p +} + +func (s *PropertyKeyValuePairListContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyKeyValuePairListContext) AllPropertyKeyValuePair() []IPropertyKeyValuePairContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPropertyKeyValuePairContext); ok { + len++ + } + } + + tst := make([]IPropertyKeyValuePairContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPropertyKeyValuePairContext); ok { + tst[i] = t.(IPropertyKeyValuePairContext) + i++ + } + } + + return tst +} + +func (s *PropertyKeyValuePairListContext) PropertyKeyValuePair(i int) IPropertyKeyValuePairContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyKeyValuePairContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPropertyKeyValuePairContext) +} + +func (s *PropertyKeyValuePairListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *PropertyKeyValuePairListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *PropertyKeyValuePairListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyKeyValuePairListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyKeyValuePairListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyKeyValuePairList(s) + } +} + +func (s *PropertyKeyValuePairListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyKeyValuePairList(s) + } +} + +func (p *GQLParser) PropertyKeyValuePairList() (localctx IPropertyKeyValuePairListContext) { + localctx = NewPropertyKeyValuePairListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 398, GQLParserRULE_propertyKeyValuePairList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2330) + p.PropertyKeyValuePair() + } + p.SetState(2335) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2331) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2332) + p.PropertyKeyValuePair() + } + + p.SetState(2337) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IPropertyKeyValuePairContext is an interface to support dynamic dispatch. +type IPropertyKeyValuePairContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PropertyName() IPropertyNameContext + COLON() antlr.TerminalNode + ValueExpression() IValueExpressionContext + + // IsPropertyKeyValuePairContext differentiates from other interfaces. + IsPropertyKeyValuePairContext() +} + +type PropertyKeyValuePairContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyKeyValuePairContext() *PropertyKeyValuePairContext { + var p = new(PropertyKeyValuePairContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyKeyValuePair + return p +} + +func InitEmptyPropertyKeyValuePairContext(p *PropertyKeyValuePairContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyKeyValuePair +} + +func (*PropertyKeyValuePairContext) IsPropertyKeyValuePairContext() {} + +func NewPropertyKeyValuePairContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyKeyValuePairContext { + var p = new(PropertyKeyValuePairContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyKeyValuePair + + return p +} + +func (s *PropertyKeyValuePairContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyKeyValuePairContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *PropertyKeyValuePairContext) COLON() antlr.TerminalNode { + return s.GetToken(GQLParserCOLON, 0) +} + +func (s *PropertyKeyValuePairContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *PropertyKeyValuePairContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyKeyValuePairContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyKeyValuePairContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyKeyValuePair(s) + } +} + +func (s *PropertyKeyValuePairContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyKeyValuePair(s) + } +} + +func (p *GQLParser) PropertyKeyValuePair() (localctx IPropertyKeyValuePairContext) { + localctx = NewPropertyKeyValuePairContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 400, GQLParserRULE_propertyKeyValuePair) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2338) + p.PropertyName() + } + { + p.SetState(2339) + p.Match(GQLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2340) + p.valueExpression(0) + } + +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 +} + +// IEdgePatternContext is an interface to support dynamic dispatch. +type IEdgePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FullEdgePattern() IFullEdgePatternContext + AbbreviatedEdgePattern() IAbbreviatedEdgePatternContext + + // IsEdgePatternContext differentiates from other interfaces. + IsEdgePatternContext() +} + +type EdgePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgePatternContext() *EdgePatternContext { + var p = new(EdgePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgePattern + return p +} + +func InitEmptyEdgePatternContext(p *EdgePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgePattern +} + +func (*EdgePatternContext) IsEdgePatternContext() {} + +func NewEdgePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgePatternContext { + var p = new(EdgePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgePattern + + return p +} + +func (s *EdgePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgePatternContext) FullEdgePattern() IFullEdgePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgePatternContext) +} + +func (s *EdgePatternContext) AbbreviatedEdgePattern() IAbbreviatedEdgePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbbreviatedEdgePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbbreviatedEdgePatternContext) +} + +func (s *EdgePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgePattern(s) + } +} + +func (s *EdgePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgePattern(s) + } +} + +func (p *GQLParser) EdgePattern() (localctx IEdgePatternContext) { + localctx = NewEdgePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 402, GQLParserRULE_edgePattern) + p.SetState(2344) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT_ARROW_BRACKET, GQLParserLEFT_ARROW_TILDE_BRACKET, GQLParserMINUS_LEFT_BRACKET, GQLParserTILDE_LEFT_BRACKET: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2342) + p.FullEdgePattern() + } + + case GQLParserLEFT_ARROW, GQLParserLEFT_ARROW_TILDE, GQLParserLEFT_MINUS_RIGHT, GQLParserRIGHT_ARROW, GQLParserTILDE_RIGHT_ARROW, GQLParserMINUS_SIGN, GQLParserTILDE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2343) + p.AbbreviatedEdgePattern() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IFullEdgePatternContext is an interface to support dynamic dispatch. +type IFullEdgePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FullEdgePointingLeft() IFullEdgePointingLeftContext + FullEdgeUndirected() IFullEdgeUndirectedContext + FullEdgePointingRight() IFullEdgePointingRightContext + FullEdgeLeftOrUndirected() IFullEdgeLeftOrUndirectedContext + FullEdgeUndirectedOrRight() IFullEdgeUndirectedOrRightContext + FullEdgeLeftOrRight() IFullEdgeLeftOrRightContext + FullEdgeAnyDirection() IFullEdgeAnyDirectionContext + + // IsFullEdgePatternContext differentiates from other interfaces. + IsFullEdgePatternContext() +} + +type FullEdgePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgePatternContext() *FullEdgePatternContext { + var p = new(FullEdgePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePattern + return p +} + +func InitEmptyFullEdgePatternContext(p *FullEdgePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePattern +} + +func (*FullEdgePatternContext) IsFullEdgePatternContext() {} + +func NewFullEdgePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgePatternContext { + var p = new(FullEdgePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgePattern + + return p +} + +func (s *FullEdgePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgePatternContext) FullEdgePointingLeft() IFullEdgePointingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgePointingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgePointingLeftContext) +} + +func (s *FullEdgePatternContext) FullEdgeUndirected() IFullEdgeUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgeUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgeUndirectedContext) +} + +func (s *FullEdgePatternContext) FullEdgePointingRight() IFullEdgePointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgePointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgePointingRightContext) +} + +func (s *FullEdgePatternContext) FullEdgeLeftOrUndirected() IFullEdgeLeftOrUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgeLeftOrUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgeLeftOrUndirectedContext) +} + +func (s *FullEdgePatternContext) FullEdgeUndirectedOrRight() IFullEdgeUndirectedOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgeUndirectedOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgeUndirectedOrRightContext) +} + +func (s *FullEdgePatternContext) FullEdgeLeftOrRight() IFullEdgeLeftOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgeLeftOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgeLeftOrRightContext) +} + +func (s *FullEdgePatternContext) FullEdgeAnyDirection() IFullEdgeAnyDirectionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFullEdgeAnyDirectionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFullEdgeAnyDirectionContext) +} + +func (s *FullEdgePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgePattern(s) + } +} + +func (s *FullEdgePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgePattern(s) + } +} + +func (p *GQLParser) FullEdgePattern() (localctx IFullEdgePatternContext) { + localctx = NewFullEdgePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 404, GQLParserRULE_fullEdgePattern) + p.SetState(2353) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 201, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2346) + p.FullEdgePointingLeft() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2347) + p.FullEdgeUndirected() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2348) + p.FullEdgePointingRight() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2349) + p.FullEdgeLeftOrUndirected() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(2350) + p.FullEdgeUndirectedOrRight() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(2351) + p.FullEdgeLeftOrRight() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(2352) + p.FullEdgeAnyDirection() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IFullEdgePointingLeftContext is an interface to support dynamic dispatch. +type IFullEdgePointingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + RIGHT_BRACKET_MINUS() antlr.TerminalNode + + // IsFullEdgePointingLeftContext differentiates from other interfaces. + IsFullEdgePointingLeftContext() +} + +type FullEdgePointingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgePointingLeftContext() *FullEdgePointingLeftContext { + var p = new(FullEdgePointingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePointingLeft + return p +} + +func InitEmptyFullEdgePointingLeftContext(p *FullEdgePointingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePointingLeft +} + +func (*FullEdgePointingLeftContext) IsFullEdgePointingLeftContext() {} + +func NewFullEdgePointingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgePointingLeftContext { + var p = new(FullEdgePointingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgePointingLeft + + return p +} + +func (s *FullEdgePointingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgePointingLeftContext) LEFT_ARROW_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_BRACKET, 0) +} + +func (s *FullEdgePointingLeftContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgePointingLeftContext) RIGHT_BRACKET_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_MINUS, 0) +} + +func (s *FullEdgePointingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgePointingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgePointingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgePointingLeft(s) + } +} + +func (s *FullEdgePointingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgePointingLeft(s) + } +} + +func (p *GQLParser) FullEdgePointingLeft() (localctx IFullEdgePointingLeftContext) { + localctx = NewFullEdgePointingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 406, GQLParserRULE_fullEdgePointingLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2355) + p.Match(GQLParserLEFT_ARROW_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2356) + p.ElementPatternFiller() + } + { + p.SetState(2357) + p.Match(GQLParserRIGHT_BRACKET_MINUS) + 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 +} + +// IFullEdgeUndirectedContext is an interface to support dynamic dispatch. +type IFullEdgeUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_LEFT_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + RIGHT_BRACKET_TILDE() antlr.TerminalNode + + // IsFullEdgeUndirectedContext differentiates from other interfaces. + IsFullEdgeUndirectedContext() +} + +type FullEdgeUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgeUndirectedContext() *FullEdgeUndirectedContext { + var p = new(FullEdgeUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeUndirected + return p +} + +func InitEmptyFullEdgeUndirectedContext(p *FullEdgeUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeUndirected +} + +func (*FullEdgeUndirectedContext) IsFullEdgeUndirectedContext() {} + +func NewFullEdgeUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgeUndirectedContext { + var p = new(FullEdgeUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgeUndirected + + return p +} + +func (s *FullEdgeUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgeUndirectedContext) TILDE_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_LEFT_BRACKET, 0) +} + +func (s *FullEdgeUndirectedContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgeUndirectedContext) RIGHT_BRACKET_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_TILDE, 0) +} + +func (s *FullEdgeUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgeUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgeUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgeUndirected(s) + } +} + +func (s *FullEdgeUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgeUndirected(s) + } +} + +func (p *GQLParser) FullEdgeUndirected() (localctx IFullEdgeUndirectedContext) { + localctx = NewFullEdgeUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 408, GQLParserRULE_fullEdgeUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2359) + p.Match(GQLParserTILDE_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2360) + p.ElementPatternFiller() + } + { + p.SetState(2361) + p.Match(GQLParserRIGHT_BRACKET_TILDE) + 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 +} + +// IFullEdgePointingRightContext is an interface to support dynamic dispatch. +type IFullEdgePointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_LEFT_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + BRACKET_RIGHT_ARROW() antlr.TerminalNode + + // IsFullEdgePointingRightContext differentiates from other interfaces. + IsFullEdgePointingRightContext() +} + +type FullEdgePointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgePointingRightContext() *FullEdgePointingRightContext { + var p = new(FullEdgePointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePointingRight + return p +} + +func InitEmptyFullEdgePointingRightContext(p *FullEdgePointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgePointingRight +} + +func (*FullEdgePointingRightContext) IsFullEdgePointingRightContext() {} + +func NewFullEdgePointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgePointingRightContext { + var p = new(FullEdgePointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgePointingRight + + return p +} + +func (s *FullEdgePointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgePointingRightContext) MINUS_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_LEFT_BRACKET, 0) +} + +func (s *FullEdgePointingRightContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgePointingRightContext) BRACKET_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserBRACKET_RIGHT_ARROW, 0) +} + +func (s *FullEdgePointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgePointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgePointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgePointingRight(s) + } +} + +func (s *FullEdgePointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgePointingRight(s) + } +} + +func (p *GQLParser) FullEdgePointingRight() (localctx IFullEdgePointingRightContext) { + localctx = NewFullEdgePointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 410, GQLParserRULE_fullEdgePointingRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2363) + p.Match(GQLParserMINUS_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2364) + p.ElementPatternFiller() + } + { + p.SetState(2365) + p.Match(GQLParserBRACKET_RIGHT_ARROW) + 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 +} + +// IFullEdgeLeftOrUndirectedContext is an interface to support dynamic dispatch. +type IFullEdgeLeftOrUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_TILDE_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + RIGHT_BRACKET_TILDE() antlr.TerminalNode + + // IsFullEdgeLeftOrUndirectedContext differentiates from other interfaces. + IsFullEdgeLeftOrUndirectedContext() +} + +type FullEdgeLeftOrUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgeLeftOrUndirectedContext() *FullEdgeLeftOrUndirectedContext { + var p = new(FullEdgeLeftOrUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrUndirected + return p +} + +func InitEmptyFullEdgeLeftOrUndirectedContext(p *FullEdgeLeftOrUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrUndirected +} + +func (*FullEdgeLeftOrUndirectedContext) IsFullEdgeLeftOrUndirectedContext() {} + +func NewFullEdgeLeftOrUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgeLeftOrUndirectedContext { + var p = new(FullEdgeLeftOrUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrUndirected + + return p +} + +func (s *FullEdgeLeftOrUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgeLeftOrUndirectedContext) LEFT_ARROW_TILDE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_TILDE_BRACKET, 0) +} + +func (s *FullEdgeLeftOrUndirectedContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgeLeftOrUndirectedContext) RIGHT_BRACKET_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_TILDE, 0) +} + +func (s *FullEdgeLeftOrUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgeLeftOrUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgeLeftOrUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgeLeftOrUndirected(s) + } +} + +func (s *FullEdgeLeftOrUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgeLeftOrUndirected(s) + } +} + +func (p *GQLParser) FullEdgeLeftOrUndirected() (localctx IFullEdgeLeftOrUndirectedContext) { + localctx = NewFullEdgeLeftOrUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 412, GQLParserRULE_fullEdgeLeftOrUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2367) + p.Match(GQLParserLEFT_ARROW_TILDE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2368) + p.ElementPatternFiller() + } + { + p.SetState(2369) + p.Match(GQLParserRIGHT_BRACKET_TILDE) + 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 +} + +// IFullEdgeUndirectedOrRightContext is an interface to support dynamic dispatch. +type IFullEdgeUndirectedOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_LEFT_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + BRACKET_TILDE_RIGHT_ARROW() antlr.TerminalNode + + // IsFullEdgeUndirectedOrRightContext differentiates from other interfaces. + IsFullEdgeUndirectedOrRightContext() +} + +type FullEdgeUndirectedOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgeUndirectedOrRightContext() *FullEdgeUndirectedOrRightContext { + var p = new(FullEdgeUndirectedOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeUndirectedOrRight + return p +} + +func InitEmptyFullEdgeUndirectedOrRightContext(p *FullEdgeUndirectedOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeUndirectedOrRight +} + +func (*FullEdgeUndirectedOrRightContext) IsFullEdgeUndirectedOrRightContext() {} + +func NewFullEdgeUndirectedOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgeUndirectedOrRightContext { + var p = new(FullEdgeUndirectedOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgeUndirectedOrRight + + return p +} + +func (s *FullEdgeUndirectedOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgeUndirectedOrRightContext) TILDE_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_LEFT_BRACKET, 0) +} + +func (s *FullEdgeUndirectedOrRightContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgeUndirectedOrRightContext) BRACKET_TILDE_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserBRACKET_TILDE_RIGHT_ARROW, 0) +} + +func (s *FullEdgeUndirectedOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgeUndirectedOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgeUndirectedOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgeUndirectedOrRight(s) + } +} + +func (s *FullEdgeUndirectedOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgeUndirectedOrRight(s) + } +} + +func (p *GQLParser) FullEdgeUndirectedOrRight() (localctx IFullEdgeUndirectedOrRightContext) { + localctx = NewFullEdgeUndirectedOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 414, GQLParserRULE_fullEdgeUndirectedOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2371) + p.Match(GQLParserTILDE_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2372) + p.ElementPatternFiller() + } + { + p.SetState(2373) + p.Match(GQLParserBRACKET_TILDE_RIGHT_ARROW) + 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 +} + +// IFullEdgeLeftOrRightContext is an interface to support dynamic dispatch. +type IFullEdgeLeftOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + BRACKET_RIGHT_ARROW() antlr.TerminalNode + + // IsFullEdgeLeftOrRightContext differentiates from other interfaces. + IsFullEdgeLeftOrRightContext() +} + +type FullEdgeLeftOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgeLeftOrRightContext() *FullEdgeLeftOrRightContext { + var p = new(FullEdgeLeftOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrRight + return p +} + +func InitEmptyFullEdgeLeftOrRightContext(p *FullEdgeLeftOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrRight +} + +func (*FullEdgeLeftOrRightContext) IsFullEdgeLeftOrRightContext() {} + +func NewFullEdgeLeftOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgeLeftOrRightContext { + var p = new(FullEdgeLeftOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgeLeftOrRight + + return p +} + +func (s *FullEdgeLeftOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgeLeftOrRightContext) LEFT_ARROW_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_BRACKET, 0) +} + +func (s *FullEdgeLeftOrRightContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgeLeftOrRightContext) BRACKET_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserBRACKET_RIGHT_ARROW, 0) +} + +func (s *FullEdgeLeftOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgeLeftOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgeLeftOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgeLeftOrRight(s) + } +} + +func (s *FullEdgeLeftOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgeLeftOrRight(s) + } +} + +func (p *GQLParser) FullEdgeLeftOrRight() (localctx IFullEdgeLeftOrRightContext) { + localctx = NewFullEdgeLeftOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 416, GQLParserRULE_fullEdgeLeftOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2375) + p.Match(GQLParserLEFT_ARROW_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2376) + p.ElementPatternFiller() + } + { + p.SetState(2377) + p.Match(GQLParserBRACKET_RIGHT_ARROW) + 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 +} + +// IFullEdgeAnyDirectionContext is an interface to support dynamic dispatch. +type IFullEdgeAnyDirectionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_LEFT_BRACKET() antlr.TerminalNode + ElementPatternFiller() IElementPatternFillerContext + RIGHT_BRACKET_MINUS() antlr.TerminalNode + + // IsFullEdgeAnyDirectionContext differentiates from other interfaces. + IsFullEdgeAnyDirectionContext() +} + +type FullEdgeAnyDirectionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFullEdgeAnyDirectionContext() *FullEdgeAnyDirectionContext { + var p = new(FullEdgeAnyDirectionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeAnyDirection + return p +} + +func InitEmptyFullEdgeAnyDirectionContext(p *FullEdgeAnyDirectionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fullEdgeAnyDirection +} + +func (*FullEdgeAnyDirectionContext) IsFullEdgeAnyDirectionContext() {} + +func NewFullEdgeAnyDirectionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FullEdgeAnyDirectionContext { + var p = new(FullEdgeAnyDirectionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fullEdgeAnyDirection + + return p +} + +func (s *FullEdgeAnyDirectionContext) GetParser() antlr.Parser { return s.parser } + +func (s *FullEdgeAnyDirectionContext) MINUS_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_LEFT_BRACKET, 0) +} + +func (s *FullEdgeAnyDirectionContext) ElementPatternFiller() IElementPatternFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementPatternFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementPatternFillerContext) +} + +func (s *FullEdgeAnyDirectionContext) RIGHT_BRACKET_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_MINUS, 0) +} + +func (s *FullEdgeAnyDirectionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FullEdgeAnyDirectionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FullEdgeAnyDirectionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFullEdgeAnyDirection(s) + } +} + +func (s *FullEdgeAnyDirectionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFullEdgeAnyDirection(s) + } +} + +func (p *GQLParser) FullEdgeAnyDirection() (localctx IFullEdgeAnyDirectionContext) { + localctx = NewFullEdgeAnyDirectionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 418, GQLParserRULE_fullEdgeAnyDirection) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2379) + p.Match(GQLParserMINUS_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2380) + p.ElementPatternFiller() + } + { + p.SetState(2381) + p.Match(GQLParserRIGHT_BRACKET_MINUS) + 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 +} + +// IAbbreviatedEdgePatternContext is an interface to support dynamic dispatch. +type IAbbreviatedEdgePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW() antlr.TerminalNode + TILDE() antlr.TerminalNode + RIGHT_ARROW() antlr.TerminalNode + LEFT_ARROW_TILDE() antlr.TerminalNode + TILDE_RIGHT_ARROW() antlr.TerminalNode + LEFT_MINUS_RIGHT() antlr.TerminalNode + MINUS_SIGN() antlr.TerminalNode + + // IsAbbreviatedEdgePatternContext differentiates from other interfaces. + IsAbbreviatedEdgePatternContext() +} + +type AbbreviatedEdgePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAbbreviatedEdgePatternContext() *AbbreviatedEdgePatternContext { + var p = new(AbbreviatedEdgePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_abbreviatedEdgePattern + return p +} + +func InitEmptyAbbreviatedEdgePatternContext(p *AbbreviatedEdgePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_abbreviatedEdgePattern +} + +func (*AbbreviatedEdgePatternContext) IsAbbreviatedEdgePatternContext() {} + +func NewAbbreviatedEdgePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AbbreviatedEdgePatternContext { + var p = new(AbbreviatedEdgePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_abbreviatedEdgePattern + + return p +} + +func (s *AbbreviatedEdgePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *AbbreviatedEdgePatternContext) LEFT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW, 0) +} + +func (s *AbbreviatedEdgePatternContext) TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE, 0) +} + +func (s *AbbreviatedEdgePatternContext) RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ARROW, 0) +} + +func (s *AbbreviatedEdgePatternContext) LEFT_ARROW_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_TILDE, 0) +} + +func (s *AbbreviatedEdgePatternContext) TILDE_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_RIGHT_ARROW, 0) +} + +func (s *AbbreviatedEdgePatternContext) LEFT_MINUS_RIGHT() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_MINUS_RIGHT, 0) +} + +func (s *AbbreviatedEdgePatternContext) MINUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SIGN, 0) +} + +func (s *AbbreviatedEdgePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AbbreviatedEdgePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AbbreviatedEdgePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAbbreviatedEdgePattern(s) + } +} + +func (s *AbbreviatedEdgePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAbbreviatedEdgePattern(s) + } +} + +func (p *GQLParser) AbbreviatedEdgePattern() (localctx IAbbreviatedEdgePatternContext) { + localctx = NewAbbreviatedEdgePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 420, GQLParserRULE_abbreviatedEdgePattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2383) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-335)) & ^0x3f) == 0 && ((int64(1)<<(_la-335))&281612416714771) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IParenthesizedPathPatternExpressionContext is an interface to support dynamic dispatch. +type IParenthesizedPathPatternExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + PathPatternExpression() IPathPatternExpressionContext + RIGHT_PAREN() antlr.TerminalNode + SubpathVariableDeclaration() ISubpathVariableDeclarationContext + PathModePrefix() IPathModePrefixContext + ParenthesizedPathPatternWhereClause() IParenthesizedPathPatternWhereClauseContext + + // IsParenthesizedPathPatternExpressionContext differentiates from other interfaces. + IsParenthesizedPathPatternExpressionContext() +} + +type ParenthesizedPathPatternExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyParenthesizedPathPatternExpressionContext() *ParenthesizedPathPatternExpressionContext { + var p = new(ParenthesizedPathPatternExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternExpression + return p +} + +func InitEmptyParenthesizedPathPatternExpressionContext(p *ParenthesizedPathPatternExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternExpression +} + +func (*ParenthesizedPathPatternExpressionContext) IsParenthesizedPathPatternExpressionContext() {} + +func NewParenthesizedPathPatternExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParenthesizedPathPatternExpressionContext { + var p = new(ParenthesizedPathPatternExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternExpression + + return p +} + +func (s *ParenthesizedPathPatternExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ParenthesizedPathPatternExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ParenthesizedPathPatternExpressionContext) PathPatternExpression() IPathPatternExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathPatternExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathPatternExpressionContext) +} + +func (s *ParenthesizedPathPatternExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ParenthesizedPathPatternExpressionContext) SubpathVariableDeclaration() ISubpathVariableDeclarationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISubpathVariableDeclarationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISubpathVariableDeclarationContext) +} + +func (s *ParenthesizedPathPatternExpressionContext) PathModePrefix() IPathModePrefixContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathModePrefixContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathModePrefixContext) +} + +func (s *ParenthesizedPathPatternExpressionContext) ParenthesizedPathPatternWhereClause() IParenthesizedPathPatternWhereClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParenthesizedPathPatternWhereClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IParenthesizedPathPatternWhereClauseContext) +} + +func (s *ParenthesizedPathPatternExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ParenthesizedPathPatternExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ParenthesizedPathPatternExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterParenthesizedPathPatternExpression(s) + } +} + +func (s *ParenthesizedPathPatternExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitParenthesizedPathPatternExpression(s) + } +} + +func (p *GQLParser) ParenthesizedPathPatternExpression() (localctx IParenthesizedPathPatternExpressionContext) { + localctx = NewParenthesizedPathPatternExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 422, GQLParserRULE_parenthesizedPathPatternExpression) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2385) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2387) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 202, p.GetParserRuleContext()) == 1 { + { + p.SetState(2386) + p.SubpathVariableDeclaration() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2390) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&9088150798337) != 0 { + { + p.SetState(2389) + p.PathModePrefix() + } + + } + { + p.SetState(2392) + p.PathPatternExpression() + } + p.SetState(2394) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserWHERE { + { + p.SetState(2393) + p.ParenthesizedPathPatternWhereClause() + } + + } + { + p.SetState(2396) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ISubpathVariableDeclarationContext is an interface to support dynamic dispatch. +type ISubpathVariableDeclarationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SubpathVariable() ISubpathVariableContext + EQUALS_OPERATOR() antlr.TerminalNode + + // IsSubpathVariableDeclarationContext differentiates from other interfaces. + IsSubpathVariableDeclarationContext() +} + +type SubpathVariableDeclarationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySubpathVariableDeclarationContext() *SubpathVariableDeclarationContext { + var p = new(SubpathVariableDeclarationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subpathVariableDeclaration + return p +} + +func InitEmptySubpathVariableDeclarationContext(p *SubpathVariableDeclarationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subpathVariableDeclaration +} + +func (*SubpathVariableDeclarationContext) IsSubpathVariableDeclarationContext() {} + +func NewSubpathVariableDeclarationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SubpathVariableDeclarationContext { + var p = new(SubpathVariableDeclarationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_subpathVariableDeclaration + + return p +} + +func (s *SubpathVariableDeclarationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SubpathVariableDeclarationContext) SubpathVariable() ISubpathVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISubpathVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISubpathVariableContext) +} + +func (s *SubpathVariableDeclarationContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *SubpathVariableDeclarationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SubpathVariableDeclarationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SubpathVariableDeclarationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSubpathVariableDeclaration(s) + } +} + +func (s *SubpathVariableDeclarationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSubpathVariableDeclaration(s) + } +} + +func (p *GQLParser) SubpathVariableDeclaration() (localctx ISubpathVariableDeclarationContext) { + localctx = NewSubpathVariableDeclarationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 424, GQLParserRULE_subpathVariableDeclaration) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2398) + p.SubpathVariable() + } + { + p.SetState(2399) + p.Match(GQLParserEQUALS_OPERATOR) + 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 +} + +// IParenthesizedPathPatternWhereClauseContext is an interface to support dynamic dispatch. +type IParenthesizedPathPatternWhereClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHERE() antlr.TerminalNode + SearchCondition() ISearchConditionContext + + // IsParenthesizedPathPatternWhereClauseContext differentiates from other interfaces. + IsParenthesizedPathPatternWhereClauseContext() +} + +type ParenthesizedPathPatternWhereClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyParenthesizedPathPatternWhereClauseContext() *ParenthesizedPathPatternWhereClauseContext { + var p = new(ParenthesizedPathPatternWhereClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternWhereClause + return p +} + +func InitEmptyParenthesizedPathPatternWhereClauseContext(p *ParenthesizedPathPatternWhereClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternWhereClause +} + +func (*ParenthesizedPathPatternWhereClauseContext) IsParenthesizedPathPatternWhereClauseContext() {} + +func NewParenthesizedPathPatternWhereClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParenthesizedPathPatternWhereClauseContext { + var p = new(ParenthesizedPathPatternWhereClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_parenthesizedPathPatternWhereClause + + return p +} + +func (s *ParenthesizedPathPatternWhereClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *ParenthesizedPathPatternWhereClauseContext) WHERE() antlr.TerminalNode { + return s.GetToken(GQLParserWHERE, 0) +} + +func (s *ParenthesizedPathPatternWhereClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *ParenthesizedPathPatternWhereClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ParenthesizedPathPatternWhereClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ParenthesizedPathPatternWhereClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterParenthesizedPathPatternWhereClause(s) + } +} + +func (s *ParenthesizedPathPatternWhereClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitParenthesizedPathPatternWhereClause(s) + } +} + +func (p *GQLParser) ParenthesizedPathPatternWhereClause() (localctx IParenthesizedPathPatternWhereClauseContext) { + localctx = NewParenthesizedPathPatternWhereClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 426, GQLParserRULE_parenthesizedPathPatternWhereClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2401) + p.Match(GQLParserWHERE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2402) + p.SearchCondition() + } + +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 +} + +// ILabelExpressionContext is an interface to support dynamic dispatch. +type ILabelExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsLabelExpressionContext differentiates from other interfaces. + IsLabelExpressionContext() +} + +type LabelExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabelExpressionContext() *LabelExpressionContext { + var p = new(LabelExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelExpression + return p +} + +func InitEmptyLabelExpressionContext(p *LabelExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelExpression +} + +func (*LabelExpressionContext) IsLabelExpressionContext() {} + +func NewLabelExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabelExpressionContext { + var p = new(LabelExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labelExpression + + return p +} + +func (s *LabelExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabelExpressionContext) CopyAll(ctx *LabelExpressionContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *LabelExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type LabelExpressionNegationContext struct { + LabelExpressionContext +} + +func NewLabelExpressionNegationContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionNegationContext { + var p = new(LabelExpressionNegationContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionNegationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionNegationContext) EXCLAMATION_MARK() antlr.TerminalNode { + return s.GetToken(GQLParserEXCLAMATION_MARK, 0) +} + +func (s *LabelExpressionNegationContext) LabelExpression() ILabelExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *LabelExpressionNegationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionNegation(s) + } +} + +func (s *LabelExpressionNegationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionNegation(s) + } +} + +type LabelExpressionDisjunctionContext struct { + LabelExpressionContext +} + +func NewLabelExpressionDisjunctionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionDisjunctionContext { + var p = new(LabelExpressionDisjunctionContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionDisjunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionDisjunctionContext) AllLabelExpression() []ILabelExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILabelExpressionContext); ok { + len++ + } + } + + tst := make([]ILabelExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILabelExpressionContext); ok { + tst[i] = t.(ILabelExpressionContext) + i++ + } + } + + return tst +} + +func (s *LabelExpressionDisjunctionContext) LabelExpression(i int) ILabelExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *LabelExpressionDisjunctionContext) VERTICAL_BAR() antlr.TerminalNode { + return s.GetToken(GQLParserVERTICAL_BAR, 0) +} + +func (s *LabelExpressionDisjunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionDisjunction(s) + } +} + +func (s *LabelExpressionDisjunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionDisjunction(s) + } +} + +type LabelExpressionParenthesizedContext struct { + LabelExpressionContext +} + +func NewLabelExpressionParenthesizedContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionParenthesizedContext { + var p = new(LabelExpressionParenthesizedContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionParenthesizedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionParenthesizedContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *LabelExpressionParenthesizedContext) LabelExpression() ILabelExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *LabelExpressionParenthesizedContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *LabelExpressionParenthesizedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionParenthesized(s) + } +} + +func (s *LabelExpressionParenthesizedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionParenthesized(s) + } +} + +type LabelExpressionWildcardContext struct { + LabelExpressionContext +} + +func NewLabelExpressionWildcardContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionWildcardContext { + var p = new(LabelExpressionWildcardContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionWildcardContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionWildcardContext) PERCENT() antlr.TerminalNode { + return s.GetToken(GQLParserPERCENT, 0) +} + +func (s *LabelExpressionWildcardContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionWildcard(s) + } +} + +func (s *LabelExpressionWildcardContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionWildcard(s) + } +} + +type LabelExpressionConjunctionContext struct { + LabelExpressionContext +} + +func NewLabelExpressionConjunctionContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionConjunctionContext { + var p = new(LabelExpressionConjunctionContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionConjunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionConjunctionContext) AllLabelExpression() []ILabelExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILabelExpressionContext); ok { + len++ + } + } + + tst := make([]ILabelExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILabelExpressionContext); ok { + tst[i] = t.(ILabelExpressionContext) + i++ + } + } + + return tst +} + +func (s *LabelExpressionConjunctionContext) LabelExpression(i int) ILabelExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *LabelExpressionConjunctionContext) AMPERSAND() antlr.TerminalNode { + return s.GetToken(GQLParserAMPERSAND, 0) +} + +func (s *LabelExpressionConjunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionConjunction(s) + } +} + +func (s *LabelExpressionConjunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionConjunction(s) + } +} + +type LabelExpressionNameContext struct { + LabelExpressionContext +} + +func NewLabelExpressionNameContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *LabelExpressionNameContext { + var p = new(LabelExpressionNameContext) + + InitEmptyLabelExpressionContext(&p.LabelExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*LabelExpressionContext)) + + return p +} + +func (s *LabelExpressionNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelExpressionNameContext) LabelName() ILabelNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *LabelExpressionNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelExpressionName(s) + } +} + +func (s *LabelExpressionNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelExpressionName(s) + } +} + +func (p *GQLParser) LabelExpression() (localctx ILabelExpressionContext) { + return p.labelExpression(0) +} + +func (p *GQLParser) labelExpression(_p int) (localctx ILabelExpressionContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewLabelExpressionContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx ILabelExpressionContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 428 + p.EnterRecursionRule(localctx, 428, GQLParserRULE_labelExpression, _p) + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2413) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserEXCLAMATION_MARK: + localctx = NewLabelExpressionNegationContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + + { + p.SetState(2405) + p.Match(GQLParserEXCLAMATION_MARK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2406) + p.labelExpression(6) + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + localctx = NewLabelExpressionNameContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(2407) + p.LabelName() + } + + case GQLParserPERCENT: + localctx = NewLabelExpressionWildcardContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(2408) + p.Match(GQLParserPERCENT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserLEFT_PAREN: + localctx = NewLabelExpressionParenthesizedContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(2409) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2410) + p.labelExpression(0) + } + { + p.SetState(2411) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(2423) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 207, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(2421) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 206, p.GetParserRuleContext()) { + case 1: + localctx = NewLabelExpressionConjunctionContext(p, NewLabelExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_labelExpression) + p.SetState(2415) + + if !(p.Precpred(p.GetParserRuleContext(), 5)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) + goto errorExit + } + { + p.SetState(2416) + p.Match(GQLParserAMPERSAND) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2417) + p.labelExpression(6) + } + + case 2: + localctx = NewLabelExpressionDisjunctionContext(p, NewLabelExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_labelExpression) + p.SetState(2418) + + if !(p.Precpred(p.GetParserRuleContext(), 4)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) + goto errorExit + } + { + p.SetState(2419) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2420) + p.labelExpression(5) + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + + } + p.SetState(2425) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 207, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IPathVariableReferenceContext is an interface to support dynamic dispatch. +type IPathVariableReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + + // IsPathVariableReferenceContext differentiates from other interfaces. + IsPathVariableReferenceContext() +} + +type PathVariableReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathVariableReferenceContext() *PathVariableReferenceContext { + var p = new(PathVariableReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariableReference + return p +} + +func InitEmptyPathVariableReferenceContext(p *PathVariableReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariableReference +} + +func (*PathVariableReferenceContext) IsPathVariableReferenceContext() {} + +func NewPathVariableReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathVariableReferenceContext { + var p = new(PathVariableReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathVariableReference + + return p +} + +func (s *PathVariableReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathVariableReferenceContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *PathVariableReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathVariableReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathVariableReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathVariableReference(s) + } +} + +func (s *PathVariableReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathVariableReference(s) + } +} + +func (p *GQLParser) PathVariableReference() (localctx IPathVariableReferenceContext) { + localctx = NewPathVariableReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 430, GQLParserRULE_pathVariableReference) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2426) + p.BindingVariableReference() + } + +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 +} + +// IElementVariableReferenceContext is an interface to support dynamic dispatch. +type IElementVariableReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + + // IsElementVariableReferenceContext differentiates from other interfaces. + IsElementVariableReferenceContext() +} + +type ElementVariableReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementVariableReferenceContext() *ElementVariableReferenceContext { + var p = new(ElementVariableReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariableReference + return p +} + +func InitEmptyElementVariableReferenceContext(p *ElementVariableReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariableReference +} + +func (*ElementVariableReferenceContext) IsElementVariableReferenceContext() {} + +func NewElementVariableReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementVariableReferenceContext { + var p = new(ElementVariableReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementVariableReference + + return p +} + +func (s *ElementVariableReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementVariableReferenceContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *ElementVariableReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementVariableReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementVariableReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementVariableReference(s) + } +} + +func (s *ElementVariableReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementVariableReference(s) + } +} + +func (p *GQLParser) ElementVariableReference() (localctx IElementVariableReferenceContext) { + localctx = NewElementVariableReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 432, GQLParserRULE_elementVariableReference) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2428) + p.BindingVariableReference() + } + +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 +} + +// IGraphPatternQuantifierContext is an interface to support dynamic dispatch. +type IGraphPatternQuantifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ASTERISK() antlr.TerminalNode + PLUS_SIGN() antlr.TerminalNode + FixedQuantifier() IFixedQuantifierContext + GeneralQuantifier() IGeneralQuantifierContext + + // IsGraphPatternQuantifierContext differentiates from other interfaces. + IsGraphPatternQuantifierContext() +} + +type GraphPatternQuantifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphPatternQuantifierContext() *GraphPatternQuantifierContext { + var p = new(GraphPatternQuantifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternQuantifier + return p +} + +func InitEmptyGraphPatternQuantifierContext(p *GraphPatternQuantifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphPatternQuantifier +} + +func (*GraphPatternQuantifierContext) IsGraphPatternQuantifierContext() {} + +func NewGraphPatternQuantifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphPatternQuantifierContext { + var p = new(GraphPatternQuantifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphPatternQuantifier + + return p +} + +func (s *GraphPatternQuantifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphPatternQuantifierContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *GraphPatternQuantifierContext) PLUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserPLUS_SIGN, 0) +} + +func (s *GraphPatternQuantifierContext) FixedQuantifier() IFixedQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFixedQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFixedQuantifierContext) +} + +func (s *GraphPatternQuantifierContext) GeneralQuantifier() IGeneralQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralQuantifierContext) +} + +func (s *GraphPatternQuantifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphPatternQuantifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphPatternQuantifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphPatternQuantifier(s) + } +} + +func (s *GraphPatternQuantifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphPatternQuantifier(s) + } +} + +func (p *GQLParser) GraphPatternQuantifier() (localctx IGraphPatternQuantifierContext) { + localctx = NewGraphPatternQuantifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 434, GQLParserRULE_graphPatternQuantifier) + p.SetState(2434) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 208, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2430) + p.Match(GQLParserASTERISK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2431) + p.Match(GQLParserPLUS_SIGN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2432) + p.FixedQuantifier() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2433) + p.GeneralQuantifier() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IFixedQuantifierContext is an interface to support dynamic dispatch. +type IFixedQuantifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + UnsignedInteger() IUnsignedIntegerContext + RIGHT_BRACE() antlr.TerminalNode + + // IsFixedQuantifierContext differentiates from other interfaces. + IsFixedQuantifierContext() +} + +type FixedQuantifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFixedQuantifierContext() *FixedQuantifierContext { + var p = new(FixedQuantifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fixedQuantifier + return p +} + +func InitEmptyFixedQuantifierContext(p *FixedQuantifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fixedQuantifier +} + +func (*FixedQuantifierContext) IsFixedQuantifierContext() {} + +func NewFixedQuantifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FixedQuantifierContext { + var p = new(FixedQuantifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fixedQuantifier + + return p +} + +func (s *FixedQuantifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *FixedQuantifierContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *FixedQuantifierContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *FixedQuantifierContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *FixedQuantifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FixedQuantifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FixedQuantifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFixedQuantifier(s) + } +} + +func (s *FixedQuantifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFixedQuantifier(s) + } +} + +func (p *GQLParser) FixedQuantifier() (localctx IFixedQuantifierContext) { + localctx = NewFixedQuantifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 436, GQLParserRULE_fixedQuantifier) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2436) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2437) + p.UnsignedInteger() + } + { + p.SetState(2438) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IGeneralQuantifierContext is an interface to support dynamic dispatch. +type IGeneralQuantifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + COMMA() antlr.TerminalNode + RIGHT_BRACE() antlr.TerminalNode + LowerBound() ILowerBoundContext + UpperBound() IUpperBoundContext + + // IsGeneralQuantifierContext differentiates from other interfaces. + IsGeneralQuantifierContext() +} + +type GeneralQuantifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralQuantifierContext() *GeneralQuantifierContext { + var p = new(GeneralQuantifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalQuantifier + return p +} + +func InitEmptyGeneralQuantifierContext(p *GeneralQuantifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalQuantifier +} + +func (*GeneralQuantifierContext) IsGeneralQuantifierContext() {} + +func NewGeneralQuantifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralQuantifierContext { + var p = new(GeneralQuantifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalQuantifier + + return p +} + +func (s *GeneralQuantifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralQuantifierContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *GeneralQuantifierContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *GeneralQuantifierContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *GeneralQuantifierContext) LowerBound() ILowerBoundContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILowerBoundContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILowerBoundContext) +} + +func (s *GeneralQuantifierContext) UpperBound() IUpperBoundContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpperBoundContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUpperBoundContext) +} + +func (s *GeneralQuantifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralQuantifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralQuantifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralQuantifier(s) + } +} + +func (s *GeneralQuantifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralQuantifier(s) + } +} + +func (p *GQLParser) GeneralQuantifier() (localctx IGeneralQuantifierContext) { + localctx = NewGeneralQuantifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 438, GQLParserRULE_generalQuantifier) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2440) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2442) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&983040) != 0 { + { + p.SetState(2441) + p.LowerBound() + } + + } + { + p.SetState(2444) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2446) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&983040) != 0 { + { + p.SetState(2445) + p.UpperBound() + } + + } + { + p.SetState(2448) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// ILowerBoundContext is an interface to support dynamic dispatch. +type ILowerBoundContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + + // IsLowerBoundContext differentiates from other interfaces. + IsLowerBoundContext() +} + +type LowerBoundContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLowerBoundContext() *LowerBoundContext { + var p = new(LowerBoundContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_lowerBound + return p +} + +func InitEmptyLowerBoundContext(p *LowerBoundContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_lowerBound +} + +func (*LowerBoundContext) IsLowerBoundContext() {} + +func NewLowerBoundContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LowerBoundContext { + var p = new(LowerBoundContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_lowerBound + + return p +} + +func (s *LowerBoundContext) GetParser() antlr.Parser { return s.parser } + +func (s *LowerBoundContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *LowerBoundContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LowerBoundContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LowerBoundContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLowerBound(s) + } +} + +func (s *LowerBoundContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLowerBound(s) + } +} + +func (p *GQLParser) LowerBound() (localctx ILowerBoundContext) { + localctx = NewLowerBoundContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 440, GQLParserRULE_lowerBound) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2450) + p.UnsignedInteger() + } + +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 +} + +// IUpperBoundContext is an interface to support dynamic dispatch. +type IUpperBoundContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + + // IsUpperBoundContext differentiates from other interfaces. + IsUpperBoundContext() +} + +type UpperBoundContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUpperBoundContext() *UpperBoundContext { + var p = new(UpperBoundContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_upperBound + return p +} + +func InitEmptyUpperBoundContext(p *UpperBoundContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_upperBound +} + +func (*UpperBoundContext) IsUpperBoundContext() {} + +func NewUpperBoundContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UpperBoundContext { + var p = new(UpperBoundContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_upperBound + + return p +} + +func (s *UpperBoundContext) GetParser() antlr.Parser { return s.parser } + +func (s *UpperBoundContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *UpperBoundContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UpperBoundContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UpperBoundContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUpperBound(s) + } +} + +func (s *UpperBoundContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUpperBound(s) + } +} + +func (p *GQLParser) UpperBound() (localctx IUpperBoundContext) { + localctx = NewUpperBoundContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 442, GQLParserRULE_upperBound) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2452) + p.UnsignedInteger() + } + +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 +} + +// ISimplifiedPathPatternExpressionContext is an interface to support dynamic dispatch. +type ISimplifiedPathPatternExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedDefaultingLeft() ISimplifiedDefaultingLeftContext + SimplifiedDefaultingUndirected() ISimplifiedDefaultingUndirectedContext + SimplifiedDefaultingRight() ISimplifiedDefaultingRightContext + SimplifiedDefaultingLeftOrUndirected() ISimplifiedDefaultingLeftOrUndirectedContext + SimplifiedDefaultingUndirectedOrRight() ISimplifiedDefaultingUndirectedOrRightContext + SimplifiedDefaultingLeftOrRight() ISimplifiedDefaultingLeftOrRightContext + SimplifiedDefaultingAnyDirection() ISimplifiedDefaultingAnyDirectionContext + + // IsSimplifiedPathPatternExpressionContext differentiates from other interfaces. + IsSimplifiedPathPatternExpressionContext() +} + +type SimplifiedPathPatternExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedPathPatternExpressionContext() *SimplifiedPathPatternExpressionContext { + var p = new(SimplifiedPathPatternExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPathPatternExpression + return p +} + +func InitEmptySimplifiedPathPatternExpressionContext(p *SimplifiedPathPatternExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPathPatternExpression +} + +func (*SimplifiedPathPatternExpressionContext) IsSimplifiedPathPatternExpressionContext() {} + +func NewSimplifiedPathPatternExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedPathPatternExpressionContext { + var p = new(SimplifiedPathPatternExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedPathPatternExpression + + return p +} + +func (s *SimplifiedPathPatternExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingLeft() ISimplifiedDefaultingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingLeftContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingUndirected() ISimplifiedDefaultingUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingUndirectedContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingRight() ISimplifiedDefaultingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingRightContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingLeftOrUndirected() ISimplifiedDefaultingLeftOrUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingLeftOrUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingLeftOrUndirectedContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingUndirectedOrRight() ISimplifiedDefaultingUndirectedOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingUndirectedOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingUndirectedOrRightContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingLeftOrRight() ISimplifiedDefaultingLeftOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingLeftOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingLeftOrRightContext) +} + +func (s *SimplifiedPathPatternExpressionContext) SimplifiedDefaultingAnyDirection() ISimplifiedDefaultingAnyDirectionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDefaultingAnyDirectionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDefaultingAnyDirectionContext) +} + +func (s *SimplifiedPathPatternExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedPathPatternExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedPathPatternExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedPathPatternExpression(s) + } +} + +func (s *SimplifiedPathPatternExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedPathPatternExpression(s) + } +} + +func (p *GQLParser) SimplifiedPathPatternExpression() (localctx ISimplifiedPathPatternExpressionContext) { + localctx = NewSimplifiedPathPatternExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 444, GQLParserRULE_simplifiedPathPatternExpression) + p.SetState(2461) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 211, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2454) + p.SimplifiedDefaultingLeft() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2455) + p.SimplifiedDefaultingUndirected() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2456) + p.SimplifiedDefaultingRight() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2457) + p.SimplifiedDefaultingLeftOrUndirected() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(2458) + p.SimplifiedDefaultingUndirectedOrRight() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(2459) + p.SimplifiedDefaultingLeftOrRight() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(2460) + p.SimplifiedDefaultingAnyDirection() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimplifiedDefaultingLeftContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_MINUS_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_MINUS() antlr.TerminalNode + + // IsSimplifiedDefaultingLeftContext differentiates from other interfaces. + IsSimplifiedDefaultingLeftContext() +} + +type SimplifiedDefaultingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingLeftContext() *SimplifiedDefaultingLeftContext { + var p = new(SimplifiedDefaultingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeft + return p +} + +func InitEmptySimplifiedDefaultingLeftContext(p *SimplifiedDefaultingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeft +} + +func (*SimplifiedDefaultingLeftContext) IsSimplifiedDefaultingLeftContext() {} + +func NewSimplifiedDefaultingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingLeftContext { + var p = new(SimplifiedDefaultingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeft + + return p +} + +func (s *SimplifiedDefaultingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingLeftContext) LEFT_MINUS_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_MINUS_SLASH, 0) +} + +func (s *SimplifiedDefaultingLeftContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingLeftContext) SLASH_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_MINUS, 0) +} + +func (s *SimplifiedDefaultingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingLeft(s) + } +} + +func (s *SimplifiedDefaultingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingLeft(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingLeft() (localctx ISimplifiedDefaultingLeftContext) { + localctx = NewSimplifiedDefaultingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 446, GQLParserRULE_simplifiedDefaultingLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2463) + p.Match(GQLParserLEFT_MINUS_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2464) + p.SimplifiedContents() + } + { + p.SetState(2465) + p.Match(GQLParserSLASH_MINUS) + 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 +} + +// ISimplifiedDefaultingUndirectedContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_TILDE() antlr.TerminalNode + + // IsSimplifiedDefaultingUndirectedContext differentiates from other interfaces. + IsSimplifiedDefaultingUndirectedContext() +} + +type SimplifiedDefaultingUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingUndirectedContext() *SimplifiedDefaultingUndirectedContext { + var p = new(SimplifiedDefaultingUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirected + return p +} + +func InitEmptySimplifiedDefaultingUndirectedContext(p *SimplifiedDefaultingUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirected +} + +func (*SimplifiedDefaultingUndirectedContext) IsSimplifiedDefaultingUndirectedContext() {} + +func NewSimplifiedDefaultingUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingUndirectedContext { + var p = new(SimplifiedDefaultingUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirected + + return p +} + +func (s *SimplifiedDefaultingUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingUndirectedContext) TILDE_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_SLASH, 0) +} + +func (s *SimplifiedDefaultingUndirectedContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingUndirectedContext) SLASH_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_TILDE, 0) +} + +func (s *SimplifiedDefaultingUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingUndirected(s) + } +} + +func (s *SimplifiedDefaultingUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingUndirected(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingUndirected() (localctx ISimplifiedDefaultingUndirectedContext) { + localctx = NewSimplifiedDefaultingUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 448, GQLParserRULE_simplifiedDefaultingUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2467) + p.Match(GQLParserTILDE_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2468) + p.SimplifiedContents() + } + { + p.SetState(2469) + p.Match(GQLParserSLASH_TILDE) + 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 +} + +// ISimplifiedDefaultingRightContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_MINUS_RIGHT() antlr.TerminalNode + + // IsSimplifiedDefaultingRightContext differentiates from other interfaces. + IsSimplifiedDefaultingRightContext() +} + +type SimplifiedDefaultingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingRightContext() *SimplifiedDefaultingRightContext { + var p = new(SimplifiedDefaultingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingRight + return p +} + +func InitEmptySimplifiedDefaultingRightContext(p *SimplifiedDefaultingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingRight +} + +func (*SimplifiedDefaultingRightContext) IsSimplifiedDefaultingRightContext() {} + +func NewSimplifiedDefaultingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingRightContext { + var p = new(SimplifiedDefaultingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingRight + + return p +} + +func (s *SimplifiedDefaultingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingRightContext) MINUS_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SLASH, 0) +} + +func (s *SimplifiedDefaultingRightContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingRightContext) SLASH_MINUS_RIGHT() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_MINUS_RIGHT, 0) +} + +func (s *SimplifiedDefaultingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingRight(s) + } +} + +func (s *SimplifiedDefaultingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingRight(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingRight() (localctx ISimplifiedDefaultingRightContext) { + localctx = NewSimplifiedDefaultingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 450, GQLParserRULE_simplifiedDefaultingRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2471) + p.Match(GQLParserMINUS_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2472) + p.SimplifiedContents() + } + { + p.SetState(2473) + p.Match(GQLParserSLASH_MINUS_RIGHT) + 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 +} + +// ISimplifiedDefaultingLeftOrUndirectedContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingLeftOrUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_TILDE_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_TILDE() antlr.TerminalNode + + // IsSimplifiedDefaultingLeftOrUndirectedContext differentiates from other interfaces. + IsSimplifiedDefaultingLeftOrUndirectedContext() +} + +type SimplifiedDefaultingLeftOrUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingLeftOrUndirectedContext() *SimplifiedDefaultingLeftOrUndirectedContext { + var p = new(SimplifiedDefaultingLeftOrUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrUndirected + return p +} + +func InitEmptySimplifiedDefaultingLeftOrUndirectedContext(p *SimplifiedDefaultingLeftOrUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrUndirected +} + +func (*SimplifiedDefaultingLeftOrUndirectedContext) IsSimplifiedDefaultingLeftOrUndirectedContext() {} + +func NewSimplifiedDefaultingLeftOrUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingLeftOrUndirectedContext { + var p = new(SimplifiedDefaultingLeftOrUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrUndirected + + return p +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) LEFT_TILDE_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_TILDE_SLASH, 0) +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) SLASH_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_TILDE, 0) +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingLeftOrUndirected(s) + } +} + +func (s *SimplifiedDefaultingLeftOrUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingLeftOrUndirected(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingLeftOrUndirected() (localctx ISimplifiedDefaultingLeftOrUndirectedContext) { + localctx = NewSimplifiedDefaultingLeftOrUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 452, GQLParserRULE_simplifiedDefaultingLeftOrUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2475) + p.Match(GQLParserLEFT_TILDE_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2476) + p.SimplifiedContents() + } + { + p.SetState(2477) + p.Match(GQLParserSLASH_TILDE) + 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 +} + +// ISimplifiedDefaultingUndirectedOrRightContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingUndirectedOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_TILDE_RIGHT() antlr.TerminalNode + + // IsSimplifiedDefaultingUndirectedOrRightContext differentiates from other interfaces. + IsSimplifiedDefaultingUndirectedOrRightContext() +} + +type SimplifiedDefaultingUndirectedOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingUndirectedOrRightContext() *SimplifiedDefaultingUndirectedOrRightContext { + var p = new(SimplifiedDefaultingUndirectedOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirectedOrRight + return p +} + +func InitEmptySimplifiedDefaultingUndirectedOrRightContext(p *SimplifiedDefaultingUndirectedOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirectedOrRight +} + +func (*SimplifiedDefaultingUndirectedOrRightContext) IsSimplifiedDefaultingUndirectedOrRightContext() { +} + +func NewSimplifiedDefaultingUndirectedOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingUndirectedOrRightContext { + var p = new(SimplifiedDefaultingUndirectedOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingUndirectedOrRight + + return p +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingUndirectedOrRightContext) TILDE_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_SLASH, 0) +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) SLASH_TILDE_RIGHT() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_TILDE_RIGHT, 0) +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingUndirectedOrRight(s) + } +} + +func (s *SimplifiedDefaultingUndirectedOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingUndirectedOrRight(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingUndirectedOrRight() (localctx ISimplifiedDefaultingUndirectedOrRightContext) { + localctx = NewSimplifiedDefaultingUndirectedOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 454, GQLParserRULE_simplifiedDefaultingUndirectedOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2479) + p.Match(GQLParserTILDE_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2480) + p.SimplifiedContents() + } + { + p.SetState(2481) + p.Match(GQLParserSLASH_TILDE_RIGHT) + 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 +} + +// ISimplifiedDefaultingLeftOrRightContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingLeftOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_MINUS_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_MINUS_RIGHT() antlr.TerminalNode + + // IsSimplifiedDefaultingLeftOrRightContext differentiates from other interfaces. + IsSimplifiedDefaultingLeftOrRightContext() +} + +type SimplifiedDefaultingLeftOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingLeftOrRightContext() *SimplifiedDefaultingLeftOrRightContext { + var p = new(SimplifiedDefaultingLeftOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrRight + return p +} + +func InitEmptySimplifiedDefaultingLeftOrRightContext(p *SimplifiedDefaultingLeftOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrRight +} + +func (*SimplifiedDefaultingLeftOrRightContext) IsSimplifiedDefaultingLeftOrRightContext() {} + +func NewSimplifiedDefaultingLeftOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingLeftOrRightContext { + var p = new(SimplifiedDefaultingLeftOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingLeftOrRight + + return p +} + +func (s *SimplifiedDefaultingLeftOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingLeftOrRightContext) LEFT_MINUS_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_MINUS_SLASH, 0) +} + +func (s *SimplifiedDefaultingLeftOrRightContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingLeftOrRightContext) SLASH_MINUS_RIGHT() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_MINUS_RIGHT, 0) +} + +func (s *SimplifiedDefaultingLeftOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingLeftOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingLeftOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingLeftOrRight(s) + } +} + +func (s *SimplifiedDefaultingLeftOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingLeftOrRight(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingLeftOrRight() (localctx ISimplifiedDefaultingLeftOrRightContext) { + localctx = NewSimplifiedDefaultingLeftOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 456, GQLParserRULE_simplifiedDefaultingLeftOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2483) + p.Match(GQLParserLEFT_MINUS_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2484) + p.SimplifiedContents() + } + { + p.SetState(2485) + p.Match(GQLParserSLASH_MINUS_RIGHT) + 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 +} + +// ISimplifiedDefaultingAnyDirectionContext is an interface to support dynamic dispatch. +type ISimplifiedDefaultingAnyDirectionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_SLASH() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + SLASH_MINUS() antlr.TerminalNode + + // IsSimplifiedDefaultingAnyDirectionContext differentiates from other interfaces. + IsSimplifiedDefaultingAnyDirectionContext() +} + +type SimplifiedDefaultingAnyDirectionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDefaultingAnyDirectionContext() *SimplifiedDefaultingAnyDirectionContext { + var p = new(SimplifiedDefaultingAnyDirectionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingAnyDirection + return p +} + +func InitEmptySimplifiedDefaultingAnyDirectionContext(p *SimplifiedDefaultingAnyDirectionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDefaultingAnyDirection +} + +func (*SimplifiedDefaultingAnyDirectionContext) IsSimplifiedDefaultingAnyDirectionContext() {} + +func NewSimplifiedDefaultingAnyDirectionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDefaultingAnyDirectionContext { + var p = new(SimplifiedDefaultingAnyDirectionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDefaultingAnyDirection + + return p +} + +func (s *SimplifiedDefaultingAnyDirectionContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDefaultingAnyDirectionContext) MINUS_SLASH() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SLASH, 0) +} + +func (s *SimplifiedDefaultingAnyDirectionContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedDefaultingAnyDirectionContext) SLASH_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserSLASH_MINUS, 0) +} + +func (s *SimplifiedDefaultingAnyDirectionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDefaultingAnyDirectionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDefaultingAnyDirectionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDefaultingAnyDirection(s) + } +} + +func (s *SimplifiedDefaultingAnyDirectionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDefaultingAnyDirection(s) + } +} + +func (p *GQLParser) SimplifiedDefaultingAnyDirection() (localctx ISimplifiedDefaultingAnyDirectionContext) { + localctx = NewSimplifiedDefaultingAnyDirectionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 458, GQLParserRULE_simplifiedDefaultingAnyDirection) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2487) + p.Match(GQLParserMINUS_SLASH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2488) + p.SimplifiedContents() + } + { + p.SetState(2489) + p.Match(GQLParserSLASH_MINUS) + 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 +} + +// ISimplifiedContentsContext is an interface to support dynamic dispatch. +type ISimplifiedContentsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedTerm() ISimplifiedTermContext + SimplifiedPathUnion() ISimplifiedPathUnionContext + SimplifiedMultisetAlternation() ISimplifiedMultisetAlternationContext + + // IsSimplifiedContentsContext differentiates from other interfaces. + IsSimplifiedContentsContext() +} + +type SimplifiedContentsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedContentsContext() *SimplifiedContentsContext { + var p = new(SimplifiedContentsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedContents + return p +} + +func InitEmptySimplifiedContentsContext(p *SimplifiedContentsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedContents +} + +func (*SimplifiedContentsContext) IsSimplifiedContentsContext() {} + +func NewSimplifiedContentsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedContentsContext { + var p = new(SimplifiedContentsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedContents + + return p +} + +func (s *SimplifiedContentsContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedContentsContext) SimplifiedTerm() ISimplifiedTermContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTermContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTermContext) +} + +func (s *SimplifiedContentsContext) SimplifiedPathUnion() ISimplifiedPathUnionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedPathUnionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedPathUnionContext) +} + +func (s *SimplifiedContentsContext) SimplifiedMultisetAlternation() ISimplifiedMultisetAlternationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedMultisetAlternationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedMultisetAlternationContext) +} + +func (s *SimplifiedContentsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedContentsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedContentsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedContents(s) + } +} + +func (s *SimplifiedContentsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedContents(s) + } +} + +func (p *GQLParser) SimplifiedContents() (localctx ISimplifiedContentsContext) { + localctx = NewSimplifiedContentsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 460, GQLParserRULE_simplifiedContents) + p.SetState(2494) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 212, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2491) + p.simplifiedTerm(0) + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2492) + p.SimplifiedPathUnion() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2493) + p.SimplifiedMultisetAlternation() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimplifiedPathUnionContext is an interface to support dynamic dispatch. +type ISimplifiedPathUnionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSimplifiedTerm() []ISimplifiedTermContext + SimplifiedTerm(i int) ISimplifiedTermContext + AllVERTICAL_BAR() []antlr.TerminalNode + VERTICAL_BAR(i int) antlr.TerminalNode + + // IsSimplifiedPathUnionContext differentiates from other interfaces. + IsSimplifiedPathUnionContext() +} + +type SimplifiedPathUnionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedPathUnionContext() *SimplifiedPathUnionContext { + var p = new(SimplifiedPathUnionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPathUnion + return p +} + +func InitEmptySimplifiedPathUnionContext(p *SimplifiedPathUnionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPathUnion +} + +func (*SimplifiedPathUnionContext) IsSimplifiedPathUnionContext() {} + +func NewSimplifiedPathUnionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedPathUnionContext { + var p = new(SimplifiedPathUnionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedPathUnion + + return p +} + +func (s *SimplifiedPathUnionContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedPathUnionContext) AllSimplifiedTerm() []ISimplifiedTermContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimplifiedTermContext); ok { + len++ + } + } + + tst := make([]ISimplifiedTermContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimplifiedTermContext); ok { + tst[i] = t.(ISimplifiedTermContext) + i++ + } + } + + return tst +} + +func (s *SimplifiedPathUnionContext) SimplifiedTerm(i int) ISimplifiedTermContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTermContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTermContext) +} + +func (s *SimplifiedPathUnionContext) AllVERTICAL_BAR() []antlr.TerminalNode { + return s.GetTokens(GQLParserVERTICAL_BAR) +} + +func (s *SimplifiedPathUnionContext) VERTICAL_BAR(i int) antlr.TerminalNode { + return s.GetToken(GQLParserVERTICAL_BAR, i) +} + +func (s *SimplifiedPathUnionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedPathUnionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedPathUnionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedPathUnion(s) + } +} + +func (s *SimplifiedPathUnionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedPathUnion(s) + } +} + +func (p *GQLParser) SimplifiedPathUnion() (localctx ISimplifiedPathUnionContext) { + localctx = NewSimplifiedPathUnionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 462, GQLParserRULE_simplifiedPathUnion) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2496) + p.simplifiedTerm(0) + } + { + p.SetState(2497) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2498) + p.simplifiedTerm(0) + } + p.SetState(2503) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserVERTICAL_BAR { + { + p.SetState(2499) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2500) + p.simplifiedTerm(0) + } + + p.SetState(2505) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISimplifiedMultisetAlternationContext is an interface to support dynamic dispatch. +type ISimplifiedMultisetAlternationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSimplifiedTerm() []ISimplifiedTermContext + SimplifiedTerm(i int) ISimplifiedTermContext + AllMULTISET_ALTERNATION_OPERATOR() []antlr.TerminalNode + MULTISET_ALTERNATION_OPERATOR(i int) antlr.TerminalNode + + // IsSimplifiedMultisetAlternationContext differentiates from other interfaces. + IsSimplifiedMultisetAlternationContext() +} + +type SimplifiedMultisetAlternationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedMultisetAlternationContext() *SimplifiedMultisetAlternationContext { + var p = new(SimplifiedMultisetAlternationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedMultisetAlternation + return p +} + +func InitEmptySimplifiedMultisetAlternationContext(p *SimplifiedMultisetAlternationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedMultisetAlternation +} + +func (*SimplifiedMultisetAlternationContext) IsSimplifiedMultisetAlternationContext() {} + +func NewSimplifiedMultisetAlternationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedMultisetAlternationContext { + var p = new(SimplifiedMultisetAlternationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedMultisetAlternation + + return p +} + +func (s *SimplifiedMultisetAlternationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedMultisetAlternationContext) AllSimplifiedTerm() []ISimplifiedTermContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimplifiedTermContext); ok { + len++ + } + } + + tst := make([]ISimplifiedTermContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimplifiedTermContext); ok { + tst[i] = t.(ISimplifiedTermContext) + i++ + } + } + + return tst +} + +func (s *SimplifiedMultisetAlternationContext) SimplifiedTerm(i int) ISimplifiedTermContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTermContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTermContext) +} + +func (s *SimplifiedMultisetAlternationContext) AllMULTISET_ALTERNATION_OPERATOR() []antlr.TerminalNode { + return s.GetTokens(GQLParserMULTISET_ALTERNATION_OPERATOR) +} + +func (s *SimplifiedMultisetAlternationContext) MULTISET_ALTERNATION_OPERATOR(i int) antlr.TerminalNode { + return s.GetToken(GQLParserMULTISET_ALTERNATION_OPERATOR, i) +} + +func (s *SimplifiedMultisetAlternationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedMultisetAlternationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedMultisetAlternationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedMultisetAlternation(s) + } +} + +func (s *SimplifiedMultisetAlternationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedMultisetAlternation(s) + } +} + +func (p *GQLParser) SimplifiedMultisetAlternation() (localctx ISimplifiedMultisetAlternationContext) { + localctx = NewSimplifiedMultisetAlternationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 464, GQLParserRULE_simplifiedMultisetAlternation) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2506) + p.simplifiedTerm(0) + } + { + p.SetState(2507) + p.Match(GQLParserMULTISET_ALTERNATION_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2508) + p.simplifiedTerm(0) + } + p.SetState(2513) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserMULTISET_ALTERNATION_OPERATOR { + { + p.SetState(2509) + p.Match(GQLParserMULTISET_ALTERNATION_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2510) + p.simplifiedTerm(0) + } + + p.SetState(2515) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// ISimplifiedTermContext is an interface to support dynamic dispatch. +type ISimplifiedTermContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsSimplifiedTermContext differentiates from other interfaces. + IsSimplifiedTermContext() +} + +type SimplifiedTermContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedTermContext() *SimplifiedTermContext { + var p = new(SimplifiedTermContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedTerm + return p +} + +func InitEmptySimplifiedTermContext(p *SimplifiedTermContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedTerm +} + +func (*SimplifiedTermContext) IsSimplifiedTermContext() {} + +func NewSimplifiedTermContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedTermContext { + var p = new(SimplifiedTermContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedTerm + + return p +} + +func (s *SimplifiedTermContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedTermContext) CopyAll(ctx *SimplifiedTermContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *SimplifiedTermContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedTermContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type SimplifiedFactorLowLabelContext struct { + SimplifiedTermContext +} + +func NewSimplifiedFactorLowLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimplifiedFactorLowLabelContext { + var p = new(SimplifiedFactorLowLabelContext) + + InitEmptySimplifiedTermContext(&p.SimplifiedTermContext) + p.parser = parser + p.CopyAll(ctx.(*SimplifiedTermContext)) + + return p +} + +func (s *SimplifiedFactorLowLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedFactorLowLabelContext) SimplifiedFactorLow() ISimplifiedFactorLowContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedFactorLowContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedFactorLowContext) +} + +func (s *SimplifiedFactorLowLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedFactorLowLabel(s) + } +} + +func (s *SimplifiedFactorLowLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedFactorLowLabel(s) + } +} + +type SimplifiedConcatenationLabelContext struct { + SimplifiedTermContext +} + +func NewSimplifiedConcatenationLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimplifiedConcatenationLabelContext { + var p = new(SimplifiedConcatenationLabelContext) + + InitEmptySimplifiedTermContext(&p.SimplifiedTermContext) + p.parser = parser + p.CopyAll(ctx.(*SimplifiedTermContext)) + + return p +} + +func (s *SimplifiedConcatenationLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedConcatenationLabelContext) SimplifiedTerm() ISimplifiedTermContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTermContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTermContext) +} + +func (s *SimplifiedConcatenationLabelContext) SimplifiedFactorLow() ISimplifiedFactorLowContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedFactorLowContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedFactorLowContext) +} + +func (s *SimplifiedConcatenationLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedConcatenationLabel(s) + } +} + +func (s *SimplifiedConcatenationLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedConcatenationLabel(s) + } +} + +func (p *GQLParser) SimplifiedTerm() (localctx ISimplifiedTermContext) { + return p.simplifiedTerm(0) +} + +func (p *GQLParser) simplifiedTerm(_p int) (localctx ISimplifiedTermContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewSimplifiedTermContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx ISimplifiedTermContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 466 + p.EnterRecursionRule(localctx, 466, GQLParserRULE_simplifiedTerm, _p) + var _alt int + + p.EnterOuterAlt(localctx, 1) + localctx = NewSimplifiedFactorLowLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + + { + p.SetState(2517) + p.simplifiedFactorLow(0) + } + + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(2523) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 215, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + localctx = NewSimplifiedConcatenationLabelContext(p, NewSimplifiedTermContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_simplifiedTerm) + p.SetState(2519) + + if !(p.Precpred(p.GetParserRuleContext(), 1)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) + goto errorExit + } + { + p.SetState(2520) + p.simplifiedFactorLow(0) + } + + } + p.SetState(2525) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 215, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ISimplifiedFactorLowContext is an interface to support dynamic dispatch. +type ISimplifiedFactorLowContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsSimplifiedFactorLowContext differentiates from other interfaces. + IsSimplifiedFactorLowContext() +} + +type SimplifiedFactorLowContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedFactorLowContext() *SimplifiedFactorLowContext { + var p = new(SimplifiedFactorLowContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedFactorLow + return p +} + +func InitEmptySimplifiedFactorLowContext(p *SimplifiedFactorLowContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedFactorLow +} + +func (*SimplifiedFactorLowContext) IsSimplifiedFactorLowContext() {} + +func NewSimplifiedFactorLowContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedFactorLowContext { + var p = new(SimplifiedFactorLowContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedFactorLow + + return p +} + +func (s *SimplifiedFactorLowContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedFactorLowContext) CopyAll(ctx *SimplifiedFactorLowContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *SimplifiedFactorLowContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedFactorLowContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type SimplifiedConjunctionLabelContext struct { + SimplifiedFactorLowContext +} + +func NewSimplifiedConjunctionLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimplifiedConjunctionLabelContext { + var p = new(SimplifiedConjunctionLabelContext) + + InitEmptySimplifiedFactorLowContext(&p.SimplifiedFactorLowContext) + p.parser = parser + p.CopyAll(ctx.(*SimplifiedFactorLowContext)) + + return p +} + +func (s *SimplifiedConjunctionLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedConjunctionLabelContext) SimplifiedFactorLow() ISimplifiedFactorLowContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedFactorLowContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedFactorLowContext) +} + +func (s *SimplifiedConjunctionLabelContext) AMPERSAND() antlr.TerminalNode { + return s.GetToken(GQLParserAMPERSAND, 0) +} + +func (s *SimplifiedConjunctionLabelContext) SimplifiedFactorHigh() ISimplifiedFactorHighContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedFactorHighContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedFactorHighContext) +} + +func (s *SimplifiedConjunctionLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedConjunctionLabel(s) + } +} + +func (s *SimplifiedConjunctionLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedConjunctionLabel(s) + } +} + +type SimplifiedFactorHighLabelContext struct { + SimplifiedFactorLowContext +} + +func NewSimplifiedFactorHighLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SimplifiedFactorHighLabelContext { + var p = new(SimplifiedFactorHighLabelContext) + + InitEmptySimplifiedFactorLowContext(&p.SimplifiedFactorLowContext) + p.parser = parser + p.CopyAll(ctx.(*SimplifiedFactorLowContext)) + + return p +} + +func (s *SimplifiedFactorHighLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedFactorHighLabelContext) SimplifiedFactorHigh() ISimplifiedFactorHighContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedFactorHighContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedFactorHighContext) +} + +func (s *SimplifiedFactorHighLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedFactorHighLabel(s) + } +} + +func (s *SimplifiedFactorHighLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedFactorHighLabel(s) + } +} + +func (p *GQLParser) SimplifiedFactorLow() (localctx ISimplifiedFactorLowContext) { + return p.simplifiedFactorLow(0) +} + +func (p *GQLParser) simplifiedFactorLow(_p int) (localctx ISimplifiedFactorLowContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewSimplifiedFactorLowContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx ISimplifiedFactorLowContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 468 + p.EnterRecursionRule(localctx, 468, GQLParserRULE_simplifiedFactorLow, _p) + var _alt int + + p.EnterOuterAlt(localctx, 1) + localctx = NewSimplifiedFactorHighLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + + { + p.SetState(2527) + p.SimplifiedFactorHigh() + } + + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(2534) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 216, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + localctx = NewSimplifiedConjunctionLabelContext(p, NewSimplifiedFactorLowContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_simplifiedFactorLow) + p.SetState(2529) + + if !(p.Precpred(p.GetParserRuleContext(), 1)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) + goto errorExit + } + { + p.SetState(2530) + p.Match(GQLParserAMPERSAND) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2531) + p.SimplifiedFactorHigh() + } + + } + p.SetState(2536) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 216, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ISimplifiedFactorHighContext is an interface to support dynamic dispatch. +type ISimplifiedFactorHighContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedTertiary() ISimplifiedTertiaryContext + SimplifiedQuantified() ISimplifiedQuantifiedContext + SimplifiedQuestioned() ISimplifiedQuestionedContext + + // IsSimplifiedFactorHighContext differentiates from other interfaces. + IsSimplifiedFactorHighContext() +} + +type SimplifiedFactorHighContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedFactorHighContext() *SimplifiedFactorHighContext { + var p = new(SimplifiedFactorHighContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedFactorHigh + return p +} + +func InitEmptySimplifiedFactorHighContext(p *SimplifiedFactorHighContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedFactorHigh +} + +func (*SimplifiedFactorHighContext) IsSimplifiedFactorHighContext() {} + +func NewSimplifiedFactorHighContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedFactorHighContext { + var p = new(SimplifiedFactorHighContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedFactorHigh + + return p +} + +func (s *SimplifiedFactorHighContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedFactorHighContext) SimplifiedTertiary() ISimplifiedTertiaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTertiaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTertiaryContext) +} + +func (s *SimplifiedFactorHighContext) SimplifiedQuantified() ISimplifiedQuantifiedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedQuantifiedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedQuantifiedContext) +} + +func (s *SimplifiedFactorHighContext) SimplifiedQuestioned() ISimplifiedQuestionedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedQuestionedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedQuestionedContext) +} + +func (s *SimplifiedFactorHighContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedFactorHighContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedFactorHighContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedFactorHigh(s) + } +} + +func (s *SimplifiedFactorHighContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedFactorHigh(s) + } +} + +func (p *GQLParser) SimplifiedFactorHigh() (localctx ISimplifiedFactorHighContext) { + localctx = NewSimplifiedFactorHighContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 470, GQLParserRULE_simplifiedFactorHigh) + p.SetState(2540) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 217, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2537) + p.SimplifiedTertiary() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2538) + p.SimplifiedQuantified() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2539) + p.SimplifiedQuestioned() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimplifiedQuantifiedContext is an interface to support dynamic dispatch. +type ISimplifiedQuantifiedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedTertiary() ISimplifiedTertiaryContext + GraphPatternQuantifier() IGraphPatternQuantifierContext + + // IsSimplifiedQuantifiedContext differentiates from other interfaces. + IsSimplifiedQuantifiedContext() +} + +type SimplifiedQuantifiedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedQuantifiedContext() *SimplifiedQuantifiedContext { + var p = new(SimplifiedQuantifiedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedQuantified + return p +} + +func InitEmptySimplifiedQuantifiedContext(p *SimplifiedQuantifiedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedQuantified +} + +func (*SimplifiedQuantifiedContext) IsSimplifiedQuantifiedContext() {} + +func NewSimplifiedQuantifiedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedQuantifiedContext { + var p = new(SimplifiedQuantifiedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedQuantified + + return p +} + +func (s *SimplifiedQuantifiedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedQuantifiedContext) SimplifiedTertiary() ISimplifiedTertiaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTertiaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTertiaryContext) +} + +func (s *SimplifiedQuantifiedContext) GraphPatternQuantifier() IGraphPatternQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternQuantifierContext) +} + +func (s *SimplifiedQuantifiedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedQuantifiedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedQuantifiedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedQuantified(s) + } +} + +func (s *SimplifiedQuantifiedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedQuantified(s) + } +} + +func (p *GQLParser) SimplifiedQuantified() (localctx ISimplifiedQuantifiedContext) { + localctx = NewSimplifiedQuantifiedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 472, GQLParserRULE_simplifiedQuantified) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2542) + p.SimplifiedTertiary() + } + { + p.SetState(2543) + p.GraphPatternQuantifier() + } + +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 +} + +// ISimplifiedQuestionedContext is an interface to support dynamic dispatch. +type ISimplifiedQuestionedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedTertiary() ISimplifiedTertiaryContext + QUESTION_MARK() antlr.TerminalNode + + // IsSimplifiedQuestionedContext differentiates from other interfaces. + IsSimplifiedQuestionedContext() +} + +type SimplifiedQuestionedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedQuestionedContext() *SimplifiedQuestionedContext { + var p = new(SimplifiedQuestionedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedQuestioned + return p +} + +func InitEmptySimplifiedQuestionedContext(p *SimplifiedQuestionedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedQuestioned +} + +func (*SimplifiedQuestionedContext) IsSimplifiedQuestionedContext() {} + +func NewSimplifiedQuestionedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedQuestionedContext { + var p = new(SimplifiedQuestionedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedQuestioned + + return p +} + +func (s *SimplifiedQuestionedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedQuestionedContext) SimplifiedTertiary() ISimplifiedTertiaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedTertiaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedTertiaryContext) +} + +func (s *SimplifiedQuestionedContext) QUESTION_MARK() antlr.TerminalNode { + return s.GetToken(GQLParserQUESTION_MARK, 0) +} + +func (s *SimplifiedQuestionedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedQuestionedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedQuestionedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedQuestioned(s) + } +} + +func (s *SimplifiedQuestionedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedQuestioned(s) + } +} + +func (p *GQLParser) SimplifiedQuestioned() (localctx ISimplifiedQuestionedContext) { + localctx = NewSimplifiedQuestionedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 474, GQLParserRULE_simplifiedQuestioned) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2545) + p.SimplifiedTertiary() + } + { + p.SetState(2546) + p.Match(GQLParserQUESTION_MARK) + 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 +} + +// ISimplifiedTertiaryContext is an interface to support dynamic dispatch. +type ISimplifiedTertiaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedDirectionOverride() ISimplifiedDirectionOverrideContext + SimplifiedSecondary() ISimplifiedSecondaryContext + + // IsSimplifiedTertiaryContext differentiates from other interfaces. + IsSimplifiedTertiaryContext() +} + +type SimplifiedTertiaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedTertiaryContext() *SimplifiedTertiaryContext { + var p = new(SimplifiedTertiaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedTertiary + return p +} + +func InitEmptySimplifiedTertiaryContext(p *SimplifiedTertiaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedTertiary +} + +func (*SimplifiedTertiaryContext) IsSimplifiedTertiaryContext() {} + +func NewSimplifiedTertiaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedTertiaryContext { + var p = new(SimplifiedTertiaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedTertiary + + return p +} + +func (s *SimplifiedTertiaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedTertiaryContext) SimplifiedDirectionOverride() ISimplifiedDirectionOverrideContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedDirectionOverrideContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedDirectionOverrideContext) +} + +func (s *SimplifiedTertiaryContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedTertiaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedTertiaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedTertiaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedTertiary(s) + } +} + +func (s *SimplifiedTertiaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedTertiary(s) + } +} + +func (p *GQLParser) SimplifiedTertiary() (localctx ISimplifiedTertiaryContext) { + localctx = NewSimplifiedTertiaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 476, GQLParserRULE_simplifiedTertiary) + p.SetState(2550) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 218, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2548) + p.SimplifiedDirectionOverride() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2549) + p.SimplifiedSecondary() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimplifiedDirectionOverrideContext is an interface to support dynamic dispatch. +type ISimplifiedDirectionOverrideContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedOverrideLeft() ISimplifiedOverrideLeftContext + SimplifiedOverrideUndirected() ISimplifiedOverrideUndirectedContext + SimplifiedOverrideRight() ISimplifiedOverrideRightContext + SimplifiedOverrideLeftOrUndirected() ISimplifiedOverrideLeftOrUndirectedContext + SimplifiedOverrideUndirectedOrRight() ISimplifiedOverrideUndirectedOrRightContext + SimplifiedOverrideLeftOrRight() ISimplifiedOverrideLeftOrRightContext + SimplifiedOverrideAnyDirection() ISimplifiedOverrideAnyDirectionContext + + // IsSimplifiedDirectionOverrideContext differentiates from other interfaces. + IsSimplifiedDirectionOverrideContext() +} + +type SimplifiedDirectionOverrideContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedDirectionOverrideContext() *SimplifiedDirectionOverrideContext { + var p = new(SimplifiedDirectionOverrideContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDirectionOverride + return p +} + +func InitEmptySimplifiedDirectionOverrideContext(p *SimplifiedDirectionOverrideContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedDirectionOverride +} + +func (*SimplifiedDirectionOverrideContext) IsSimplifiedDirectionOverrideContext() {} + +func NewSimplifiedDirectionOverrideContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedDirectionOverrideContext { + var p = new(SimplifiedDirectionOverrideContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedDirectionOverride + + return p +} + +func (s *SimplifiedDirectionOverrideContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideLeft() ISimplifiedOverrideLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideLeftContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideUndirected() ISimplifiedOverrideUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideUndirectedContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideRight() ISimplifiedOverrideRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideRightContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideLeftOrUndirected() ISimplifiedOverrideLeftOrUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideLeftOrUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideLeftOrUndirectedContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideUndirectedOrRight() ISimplifiedOverrideUndirectedOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideUndirectedOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideUndirectedOrRightContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideLeftOrRight() ISimplifiedOverrideLeftOrRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideLeftOrRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideLeftOrRightContext) +} + +func (s *SimplifiedDirectionOverrideContext) SimplifiedOverrideAnyDirection() ISimplifiedOverrideAnyDirectionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedOverrideAnyDirectionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedOverrideAnyDirectionContext) +} + +func (s *SimplifiedDirectionOverrideContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedDirectionOverrideContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedDirectionOverrideContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedDirectionOverride(s) + } +} + +func (s *SimplifiedDirectionOverrideContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedDirectionOverride(s) + } +} + +func (p *GQLParser) SimplifiedDirectionOverride() (localctx ISimplifiedDirectionOverrideContext) { + localctx = NewSimplifiedDirectionOverrideContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 478, GQLParserRULE_simplifiedDirectionOverride) + p.SetState(2559) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 219, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2552) + p.SimplifiedOverrideLeft() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2553) + p.SimplifiedOverrideUndirected() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2554) + p.SimplifiedOverrideRight() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2555) + p.SimplifiedOverrideLeftOrUndirected() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(2556) + p.SimplifiedOverrideUndirectedOrRight() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(2557) + p.SimplifiedOverrideLeftOrRight() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(2558) + p.SimplifiedOverrideAnyDirection() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimplifiedOverrideLeftContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ANGLE_BRACKET() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + + // IsSimplifiedOverrideLeftContext differentiates from other interfaces. + IsSimplifiedOverrideLeftContext() +} + +type SimplifiedOverrideLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideLeftContext() *SimplifiedOverrideLeftContext { + var p = new(SimplifiedOverrideLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeft + return p +} + +func InitEmptySimplifiedOverrideLeftContext(p *SimplifiedOverrideLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeft +} + +func (*SimplifiedOverrideLeftContext) IsSimplifiedOverrideLeftContext() {} + +func NewSimplifiedOverrideLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideLeftContext { + var p = new(SimplifiedOverrideLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeft + + return p +} + +func (s *SimplifiedOverrideLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideLeftContext) LEFT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ANGLE_BRACKET, 0) +} + +func (s *SimplifiedOverrideLeftContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideLeft(s) + } +} + +func (s *SimplifiedOverrideLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideLeft(s) + } +} + +func (p *GQLParser) SimplifiedOverrideLeft() (localctx ISimplifiedOverrideLeftContext) { + localctx = NewSimplifiedOverrideLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 480, GQLParserRULE_simplifiedOverrideLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2561) + p.Match(GQLParserLEFT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2562) + p.SimplifiedSecondary() + } + +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 +} + +// ISimplifiedOverrideUndirectedContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + + // IsSimplifiedOverrideUndirectedContext differentiates from other interfaces. + IsSimplifiedOverrideUndirectedContext() +} + +type SimplifiedOverrideUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideUndirectedContext() *SimplifiedOverrideUndirectedContext { + var p = new(SimplifiedOverrideUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirected + return p +} + +func InitEmptySimplifiedOverrideUndirectedContext(p *SimplifiedOverrideUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirected +} + +func (*SimplifiedOverrideUndirectedContext) IsSimplifiedOverrideUndirectedContext() {} + +func NewSimplifiedOverrideUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideUndirectedContext { + var p = new(SimplifiedOverrideUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirected + + return p +} + +func (s *SimplifiedOverrideUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideUndirectedContext) TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE, 0) +} + +func (s *SimplifiedOverrideUndirectedContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideUndirected(s) + } +} + +func (s *SimplifiedOverrideUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideUndirected(s) + } +} + +func (p *GQLParser) SimplifiedOverrideUndirected() (localctx ISimplifiedOverrideUndirectedContext) { + localctx = NewSimplifiedOverrideUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 482, GQLParserRULE_simplifiedOverrideUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2564) + p.Match(GQLParserTILDE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2565) + p.SimplifiedSecondary() + } + +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 +} + +// ISimplifiedOverrideRightContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedSecondary() ISimplifiedSecondaryContext + RIGHT_ANGLE_BRACKET() antlr.TerminalNode + + // IsSimplifiedOverrideRightContext differentiates from other interfaces. + IsSimplifiedOverrideRightContext() +} + +type SimplifiedOverrideRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideRightContext() *SimplifiedOverrideRightContext { + var p = new(SimplifiedOverrideRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideRight + return p +} + +func InitEmptySimplifiedOverrideRightContext(p *SimplifiedOverrideRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideRight +} + +func (*SimplifiedOverrideRightContext) IsSimplifiedOverrideRightContext() {} + +func NewSimplifiedOverrideRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideRightContext { + var p = new(SimplifiedOverrideRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideRight + + return p +} + +func (s *SimplifiedOverrideRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideRightContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideRightContext) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *SimplifiedOverrideRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideRight(s) + } +} + +func (s *SimplifiedOverrideRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideRight(s) + } +} + +func (p *GQLParser) SimplifiedOverrideRight() (localctx ISimplifiedOverrideRightContext) { + localctx = NewSimplifiedOverrideRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 484, GQLParserRULE_simplifiedOverrideRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2567) + p.SimplifiedSecondary() + } + { + p.SetState(2568) + p.Match(GQLParserRIGHT_ANGLE_BRACKET) + 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 +} + +// ISimplifiedOverrideLeftOrUndirectedContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideLeftOrUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_TILDE() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + + // IsSimplifiedOverrideLeftOrUndirectedContext differentiates from other interfaces. + IsSimplifiedOverrideLeftOrUndirectedContext() +} + +type SimplifiedOverrideLeftOrUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideLeftOrUndirectedContext() *SimplifiedOverrideLeftOrUndirectedContext { + var p = new(SimplifiedOverrideLeftOrUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrUndirected + return p +} + +func InitEmptySimplifiedOverrideLeftOrUndirectedContext(p *SimplifiedOverrideLeftOrUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrUndirected +} + +func (*SimplifiedOverrideLeftOrUndirectedContext) IsSimplifiedOverrideLeftOrUndirectedContext() {} + +func NewSimplifiedOverrideLeftOrUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideLeftOrUndirectedContext { + var p = new(SimplifiedOverrideLeftOrUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrUndirected + + return p +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideLeftOrUndirectedContext) LEFT_ARROW_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_TILDE, 0) +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideLeftOrUndirected(s) + } +} + +func (s *SimplifiedOverrideLeftOrUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideLeftOrUndirected(s) + } +} + +func (p *GQLParser) SimplifiedOverrideLeftOrUndirected() (localctx ISimplifiedOverrideLeftOrUndirectedContext) { + localctx = NewSimplifiedOverrideLeftOrUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 486, GQLParserRULE_simplifiedOverrideLeftOrUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2570) + p.Match(GQLParserLEFT_ARROW_TILDE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2571) + p.SimplifiedSecondary() + } + +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 +} + +// ISimplifiedOverrideUndirectedOrRightContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideUndirectedOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + RIGHT_ANGLE_BRACKET() antlr.TerminalNode + + // IsSimplifiedOverrideUndirectedOrRightContext differentiates from other interfaces. + IsSimplifiedOverrideUndirectedOrRightContext() +} + +type SimplifiedOverrideUndirectedOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideUndirectedOrRightContext() *SimplifiedOverrideUndirectedOrRightContext { + var p = new(SimplifiedOverrideUndirectedOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirectedOrRight + return p +} + +func InitEmptySimplifiedOverrideUndirectedOrRightContext(p *SimplifiedOverrideUndirectedOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirectedOrRight +} + +func (*SimplifiedOverrideUndirectedOrRightContext) IsSimplifiedOverrideUndirectedOrRightContext() {} + +func NewSimplifiedOverrideUndirectedOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideUndirectedOrRightContext { + var p = new(SimplifiedOverrideUndirectedOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideUndirectedOrRight + + return p +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideUndirectedOrRightContext) TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE, 0) +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideUndirectedOrRight(s) + } +} + +func (s *SimplifiedOverrideUndirectedOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideUndirectedOrRight(s) + } +} + +func (p *GQLParser) SimplifiedOverrideUndirectedOrRight() (localctx ISimplifiedOverrideUndirectedOrRightContext) { + localctx = NewSimplifiedOverrideUndirectedOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 488, GQLParserRULE_simplifiedOverrideUndirectedOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2573) + p.Match(GQLParserTILDE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2574) + p.SimplifiedSecondary() + } + { + p.SetState(2575) + p.Match(GQLParserRIGHT_ANGLE_BRACKET) + 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 +} + +// ISimplifiedOverrideLeftOrRightContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideLeftOrRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ANGLE_BRACKET() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + RIGHT_ANGLE_BRACKET() antlr.TerminalNode + + // IsSimplifiedOverrideLeftOrRightContext differentiates from other interfaces. + IsSimplifiedOverrideLeftOrRightContext() +} + +type SimplifiedOverrideLeftOrRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideLeftOrRightContext() *SimplifiedOverrideLeftOrRightContext { + var p = new(SimplifiedOverrideLeftOrRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrRight + return p +} + +func InitEmptySimplifiedOverrideLeftOrRightContext(p *SimplifiedOverrideLeftOrRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrRight +} + +func (*SimplifiedOverrideLeftOrRightContext) IsSimplifiedOverrideLeftOrRightContext() {} + +func NewSimplifiedOverrideLeftOrRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideLeftOrRightContext { + var p = new(SimplifiedOverrideLeftOrRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideLeftOrRight + + return p +} + +func (s *SimplifiedOverrideLeftOrRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideLeftOrRightContext) LEFT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ANGLE_BRACKET, 0) +} + +func (s *SimplifiedOverrideLeftOrRightContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideLeftOrRightContext) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *SimplifiedOverrideLeftOrRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideLeftOrRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideLeftOrRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideLeftOrRight(s) + } +} + +func (s *SimplifiedOverrideLeftOrRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideLeftOrRight(s) + } +} + +func (p *GQLParser) SimplifiedOverrideLeftOrRight() (localctx ISimplifiedOverrideLeftOrRightContext) { + localctx = NewSimplifiedOverrideLeftOrRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 490, GQLParserRULE_simplifiedOverrideLeftOrRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2577) + p.Match(GQLParserLEFT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2578) + p.SimplifiedSecondary() + } + { + p.SetState(2579) + p.Match(GQLParserRIGHT_ANGLE_BRACKET) + 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 +} + +// ISimplifiedOverrideAnyDirectionContext is an interface to support dynamic dispatch. +type ISimplifiedOverrideAnyDirectionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_SIGN() antlr.TerminalNode + SimplifiedSecondary() ISimplifiedSecondaryContext + + // IsSimplifiedOverrideAnyDirectionContext differentiates from other interfaces. + IsSimplifiedOverrideAnyDirectionContext() +} + +type SimplifiedOverrideAnyDirectionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedOverrideAnyDirectionContext() *SimplifiedOverrideAnyDirectionContext { + var p = new(SimplifiedOverrideAnyDirectionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideAnyDirection + return p +} + +func InitEmptySimplifiedOverrideAnyDirectionContext(p *SimplifiedOverrideAnyDirectionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedOverrideAnyDirection +} + +func (*SimplifiedOverrideAnyDirectionContext) IsSimplifiedOverrideAnyDirectionContext() {} + +func NewSimplifiedOverrideAnyDirectionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedOverrideAnyDirectionContext { + var p = new(SimplifiedOverrideAnyDirectionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedOverrideAnyDirection + + return p +} + +func (s *SimplifiedOverrideAnyDirectionContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedOverrideAnyDirectionContext) MINUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SIGN, 0) +} + +func (s *SimplifiedOverrideAnyDirectionContext) SimplifiedSecondary() ISimplifiedSecondaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedSecondaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedSecondaryContext) +} + +func (s *SimplifiedOverrideAnyDirectionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedOverrideAnyDirectionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedOverrideAnyDirectionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedOverrideAnyDirection(s) + } +} + +func (s *SimplifiedOverrideAnyDirectionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedOverrideAnyDirection(s) + } +} + +func (p *GQLParser) SimplifiedOverrideAnyDirection() (localctx ISimplifiedOverrideAnyDirectionContext) { + localctx = NewSimplifiedOverrideAnyDirectionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 492, GQLParserRULE_simplifiedOverrideAnyDirection) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2581) + p.Match(GQLParserMINUS_SIGN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2582) + p.SimplifiedSecondary() + } + +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 +} + +// ISimplifiedSecondaryContext is an interface to support dynamic dispatch. +type ISimplifiedSecondaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimplifiedPrimary() ISimplifiedPrimaryContext + SimplifiedNegation() ISimplifiedNegationContext + + // IsSimplifiedSecondaryContext differentiates from other interfaces. + IsSimplifiedSecondaryContext() +} + +type SimplifiedSecondaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedSecondaryContext() *SimplifiedSecondaryContext { + var p = new(SimplifiedSecondaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedSecondary + return p +} + +func InitEmptySimplifiedSecondaryContext(p *SimplifiedSecondaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedSecondary +} + +func (*SimplifiedSecondaryContext) IsSimplifiedSecondaryContext() {} + +func NewSimplifiedSecondaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedSecondaryContext { + var p = new(SimplifiedSecondaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedSecondary + + return p +} + +func (s *SimplifiedSecondaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedSecondaryContext) SimplifiedPrimary() ISimplifiedPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedPrimaryContext) +} + +func (s *SimplifiedSecondaryContext) SimplifiedNegation() ISimplifiedNegationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedNegationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedNegationContext) +} + +func (s *SimplifiedSecondaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedSecondaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedSecondaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedSecondary(s) + } +} + +func (s *SimplifiedSecondaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedSecondary(s) + } +} + +func (p *GQLParser) SimplifiedSecondary() (localctx ISimplifiedSecondaryContext) { + localctx = NewSimplifiedSecondaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 494, GQLParserRULE_simplifiedSecondary) + p.SetState(2586) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2584) + p.SimplifiedPrimary() + } + + case GQLParserEXCLAMATION_MARK: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2585) + p.SimplifiedNegation() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISimplifiedNegationContext is an interface to support dynamic dispatch. +type ISimplifiedNegationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EXCLAMATION_MARK() antlr.TerminalNode + SimplifiedPrimary() ISimplifiedPrimaryContext + + // IsSimplifiedNegationContext differentiates from other interfaces. + IsSimplifiedNegationContext() +} + +type SimplifiedNegationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedNegationContext() *SimplifiedNegationContext { + var p = new(SimplifiedNegationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedNegation + return p +} + +func InitEmptySimplifiedNegationContext(p *SimplifiedNegationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedNegation +} + +func (*SimplifiedNegationContext) IsSimplifiedNegationContext() {} + +func NewSimplifiedNegationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedNegationContext { + var p = new(SimplifiedNegationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedNegation + + return p +} + +func (s *SimplifiedNegationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedNegationContext) EXCLAMATION_MARK() antlr.TerminalNode { + return s.GetToken(GQLParserEXCLAMATION_MARK, 0) +} + +func (s *SimplifiedNegationContext) SimplifiedPrimary() ISimplifiedPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedPrimaryContext) +} + +func (s *SimplifiedNegationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedNegationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedNegationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedNegation(s) + } +} + +func (s *SimplifiedNegationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedNegation(s) + } +} + +func (p *GQLParser) SimplifiedNegation() (localctx ISimplifiedNegationContext) { + localctx = NewSimplifiedNegationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 496, GQLParserRULE_simplifiedNegation) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2588) + p.Match(GQLParserEXCLAMATION_MARK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2589) + p.SimplifiedPrimary() + } + +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 +} + +// ISimplifiedPrimaryContext is an interface to support dynamic dispatch. +type ISimplifiedPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LabelName() ILabelNameContext + LEFT_PAREN() antlr.TerminalNode + SimplifiedContents() ISimplifiedContentsContext + RIGHT_PAREN() antlr.TerminalNode + + // IsSimplifiedPrimaryContext differentiates from other interfaces. + IsSimplifiedPrimaryContext() +} + +type SimplifiedPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimplifiedPrimaryContext() *SimplifiedPrimaryContext { + var p = new(SimplifiedPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPrimary + return p +} + +func InitEmptySimplifiedPrimaryContext(p *SimplifiedPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simplifiedPrimary +} + +func (*SimplifiedPrimaryContext) IsSimplifiedPrimaryContext() {} + +func NewSimplifiedPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimplifiedPrimaryContext { + var p = new(SimplifiedPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simplifiedPrimary + + return p +} + +func (s *SimplifiedPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimplifiedPrimaryContext) LabelName() ILabelNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *SimplifiedPrimaryContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SimplifiedPrimaryContext) SimplifiedContents() ISimplifiedContentsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimplifiedContentsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimplifiedContentsContext) +} + +func (s *SimplifiedPrimaryContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SimplifiedPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimplifiedPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimplifiedPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimplifiedPrimary(s) + } +} + +func (s *SimplifiedPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimplifiedPrimary(s) + } +} + +func (p *GQLParser) SimplifiedPrimary() (localctx ISimplifiedPrimaryContext) { + localctx = NewSimplifiedPrimaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 498, GQLParserRULE_simplifiedPrimary) + p.SetState(2596) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2591) + p.LabelName() + } + + case GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2592) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2593) + p.SimplifiedContents() + } + { + p.SetState(2594) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IWhereClauseContext is an interface to support dynamic dispatch. +type IWhereClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHERE() antlr.TerminalNode + SearchCondition() ISearchConditionContext + + // IsWhereClauseContext differentiates from other interfaces. + IsWhereClauseContext() +} + +type WhereClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWhereClauseContext() *WhereClauseContext { + var p = new(WhereClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whereClause + return p +} + +func InitEmptyWhereClauseContext(p *WhereClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whereClause +} + +func (*WhereClauseContext) IsWhereClauseContext() {} + +func NewWhereClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhereClauseContext { + var p = new(WhereClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_whereClause + + return p +} + +func (s *WhereClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *WhereClauseContext) WHERE() antlr.TerminalNode { + return s.GetToken(GQLParserWHERE, 0) +} + +func (s *WhereClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *WhereClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhereClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WhereClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterWhereClause(s) + } +} + +func (s *WhereClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitWhereClause(s) + } +} + +func (p *GQLParser) WhereClause() (localctx IWhereClauseContext) { + localctx = NewWhereClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 500, GQLParserRULE_whereClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2598) + p.Match(GQLParserWHERE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2599) + p.SearchCondition() + } + +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 +} + +// IYieldClauseContext is an interface to support dynamic dispatch. +type IYieldClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + YIELD() antlr.TerminalNode + YieldItemList() IYieldItemListContext + + // IsYieldClauseContext differentiates from other interfaces. + IsYieldClauseContext() +} + +type YieldClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyYieldClauseContext() *YieldClauseContext { + var p = new(YieldClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldClause + return p +} + +func InitEmptyYieldClauseContext(p *YieldClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldClause +} + +func (*YieldClauseContext) IsYieldClauseContext() {} + +func NewYieldClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *YieldClauseContext { + var p = new(YieldClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_yieldClause + + return p +} + +func (s *YieldClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *YieldClauseContext) YIELD() antlr.TerminalNode { + return s.GetToken(GQLParserYIELD, 0) +} + +func (s *YieldClauseContext) YieldItemList() IYieldItemListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldItemListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IYieldItemListContext) +} + +func (s *YieldClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *YieldClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *YieldClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterYieldClause(s) + } +} + +func (s *YieldClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitYieldClause(s) + } +} + +func (p *GQLParser) YieldClause() (localctx IYieldClauseContext) { + localctx = NewYieldClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 502, GQLParserRULE_yieldClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2601) + p.Match(GQLParserYIELD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2602) + p.YieldItemList() + } + +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 +} + +// IYieldItemListContext is an interface to support dynamic dispatch. +type IYieldItemListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllYieldItem() []IYieldItemContext + YieldItem(i int) IYieldItemContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsYieldItemListContext differentiates from other interfaces. + IsYieldItemListContext() +} + +type YieldItemListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyYieldItemListContext() *YieldItemListContext { + var p = new(YieldItemListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemList + return p +} + +func InitEmptyYieldItemListContext(p *YieldItemListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemList +} + +func (*YieldItemListContext) IsYieldItemListContext() {} + +func NewYieldItemListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *YieldItemListContext { + var p = new(YieldItemListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_yieldItemList + + return p +} + +func (s *YieldItemListContext) GetParser() antlr.Parser { return s.parser } + +func (s *YieldItemListContext) AllYieldItem() []IYieldItemContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IYieldItemContext); ok { + len++ + } + } + + tst := make([]IYieldItemContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IYieldItemContext); ok { + tst[i] = t.(IYieldItemContext) + i++ + } + } + + return tst +} + +func (s *YieldItemListContext) YieldItem(i int) IYieldItemContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldItemContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IYieldItemContext) +} + +func (s *YieldItemListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *YieldItemListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *YieldItemListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *YieldItemListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *YieldItemListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterYieldItemList(s) + } +} + +func (s *YieldItemListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitYieldItemList(s) + } +} + +func (p *GQLParser) YieldItemList() (localctx IYieldItemListContext) { + localctx = NewYieldItemListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 504, GQLParserRULE_yieldItemList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2604) + p.YieldItem() + } + p.SetState(2609) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2605) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2606) + p.YieldItem() + } + + p.SetState(2611) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IYieldItemContext is an interface to support dynamic dispatch. +type IYieldItemContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + YieldItemName() IYieldItemNameContext + YieldItemAlias() IYieldItemAliasContext + + // IsYieldItemContext differentiates from other interfaces. + IsYieldItemContext() +} + +type YieldItemContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyYieldItemContext() *YieldItemContext { + var p = new(YieldItemContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItem + return p +} + +func InitEmptyYieldItemContext(p *YieldItemContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItem +} + +func (*YieldItemContext) IsYieldItemContext() {} + +func NewYieldItemContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *YieldItemContext { + var p = new(YieldItemContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_yieldItem + + return p +} + +func (s *YieldItemContext) GetParser() antlr.Parser { return s.parser } + +func (s *YieldItemContext) YieldItemName() IYieldItemNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldItemNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IYieldItemNameContext) +} + +func (s *YieldItemContext) YieldItemAlias() IYieldItemAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IYieldItemAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IYieldItemAliasContext) +} + +func (s *YieldItemContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *YieldItemContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *YieldItemContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterYieldItem(s) + } +} + +func (s *YieldItemContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitYieldItem(s) + } +} + +func (p *GQLParser) YieldItem() (localctx IYieldItemContext) { + localctx = NewYieldItemContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 506, GQLParserRULE_yieldItem) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2612) + p.YieldItemName() + } + p.SetState(2614) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserAS { + { + p.SetState(2613) + p.YieldItemAlias() + } + + } + +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 +} + +// IYieldItemNameContext is an interface to support dynamic dispatch. +type IYieldItemNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FieldName() IFieldNameContext + + // IsYieldItemNameContext differentiates from other interfaces. + IsYieldItemNameContext() +} + +type YieldItemNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyYieldItemNameContext() *YieldItemNameContext { + var p = new(YieldItemNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemName + return p +} + +func InitEmptyYieldItemNameContext(p *YieldItemNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemName +} + +func (*YieldItemNameContext) IsYieldItemNameContext() {} + +func NewYieldItemNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *YieldItemNameContext { + var p = new(YieldItemNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_yieldItemName + + return p +} + +func (s *YieldItemNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *YieldItemNameContext) FieldName() IFieldNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldNameContext) +} + +func (s *YieldItemNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *YieldItemNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *YieldItemNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterYieldItemName(s) + } +} + +func (s *YieldItemNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitYieldItemName(s) + } +} + +func (p *GQLParser) YieldItemName() (localctx IYieldItemNameContext) { + localctx = NewYieldItemNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 508, GQLParserRULE_yieldItemName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2616) + p.FieldName() + } + +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 +} + +// IYieldItemAliasContext is an interface to support dynamic dispatch. +type IYieldItemAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AS() antlr.TerminalNode + BindingVariable() IBindingVariableContext + + // IsYieldItemAliasContext differentiates from other interfaces. + IsYieldItemAliasContext() +} + +type YieldItemAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyYieldItemAliasContext() *YieldItemAliasContext { + var p = new(YieldItemAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemAlias + return p +} + +func InitEmptyYieldItemAliasContext(p *YieldItemAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_yieldItemAlias +} + +func (*YieldItemAliasContext) IsYieldItemAliasContext() {} + +func NewYieldItemAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *YieldItemAliasContext { + var p = new(YieldItemAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_yieldItemAlias + + return p +} + +func (s *YieldItemAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *YieldItemAliasContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *YieldItemAliasContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *YieldItemAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *YieldItemAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *YieldItemAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterYieldItemAlias(s) + } +} + +func (s *YieldItemAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitYieldItemAlias(s) + } +} + +func (p *GQLParser) YieldItemAlias() (localctx IYieldItemAliasContext) { + localctx = NewYieldItemAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 510, GQLParserRULE_yieldItemAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2618) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2619) + p.BindingVariable() + } + +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 +} + +// IGroupByClauseContext is an interface to support dynamic dispatch. +type IGroupByClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GROUP() antlr.TerminalNode + BY() antlr.TerminalNode + GroupingElementList() IGroupingElementListContext + + // IsGroupByClauseContext differentiates from other interfaces. + IsGroupByClauseContext() +} + +type GroupByClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGroupByClauseContext() *GroupByClauseContext { + var p = new(GroupByClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupByClause + return p +} + +func InitEmptyGroupByClauseContext(p *GroupByClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupByClause +} + +func (*GroupByClauseContext) IsGroupByClauseContext() {} + +func NewGroupByClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByClauseContext { + var p = new(GroupByClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_groupByClause + + return p +} + +func (s *GroupByClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *GroupByClauseContext) GROUP() antlr.TerminalNode { + return s.GetToken(GQLParserGROUP, 0) +} + +func (s *GroupByClauseContext) BY() antlr.TerminalNode { + return s.GetToken(GQLParserBY, 0) +} + +func (s *GroupByClauseContext) GroupingElementList() IGroupingElementListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupingElementListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupingElementListContext) +} + +func (s *GroupByClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GroupByClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GroupByClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGroupByClause(s) + } +} + +func (s *GroupByClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGroupByClause(s) + } +} + +func (p *GQLParser) GroupByClause() (localctx IGroupByClauseContext) { + localctx = NewGroupByClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 512, GQLParserRULE_groupByClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2621) + p.Match(GQLParserGROUP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2622) + p.Match(GQLParserBY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2623) + p.GroupingElementList() + } + +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 +} + +// IGroupingElementListContext is an interface to support dynamic dispatch. +type IGroupingElementListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllGroupingElement() []IGroupingElementContext + GroupingElement(i int) IGroupingElementContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + EmptyGroupingSet() IEmptyGroupingSetContext + + // IsGroupingElementListContext differentiates from other interfaces. + IsGroupingElementListContext() +} + +type GroupingElementListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGroupingElementListContext() *GroupingElementListContext { + var p = new(GroupingElementListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupingElementList + return p +} + +func InitEmptyGroupingElementListContext(p *GroupingElementListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupingElementList +} + +func (*GroupingElementListContext) IsGroupingElementListContext() {} + +func NewGroupingElementListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupingElementListContext { + var p = new(GroupingElementListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_groupingElementList + + return p +} + +func (s *GroupingElementListContext) GetParser() antlr.Parser { return s.parser } + +func (s *GroupingElementListContext) AllGroupingElement() []IGroupingElementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IGroupingElementContext); ok { + len++ + } + } + + tst := make([]IGroupingElementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IGroupingElementContext); ok { + tst[i] = t.(IGroupingElementContext) + i++ + } + } + + return tst +} + +func (s *GroupingElementListContext) GroupingElement(i int) IGroupingElementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupingElementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IGroupingElementContext) +} + +func (s *GroupingElementListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *GroupingElementListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *GroupingElementListContext) EmptyGroupingSet() IEmptyGroupingSetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEmptyGroupingSetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEmptyGroupingSetContext) +} + +func (s *GroupingElementListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GroupingElementListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GroupingElementListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGroupingElementList(s) + } +} + +func (s *GroupingElementListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGroupingElementList(s) + } +} + +func (p *GQLParser) GroupingElementList() (localctx IGroupingElementListContext) { + localctx = NewGroupingElementListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 514, GQLParserRULE_groupingElementList) + var _alt int + + p.SetState(2634) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2625) + p.GroupingElement() + } + p.SetState(2630) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 224, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2626) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2627) + p.GroupingElement() + } + + } + p.SetState(2632) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 224, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2633) + p.EmptyGroupingSet() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IGroupingElementContext is an interface to support dynamic dispatch. +type IGroupingElementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariableReference() IBindingVariableReferenceContext + + // IsGroupingElementContext differentiates from other interfaces. + IsGroupingElementContext() +} + +type GroupingElementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGroupingElementContext() *GroupingElementContext { + var p = new(GroupingElementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupingElement + return p +} + +func InitEmptyGroupingElementContext(p *GroupingElementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_groupingElement +} + +func (*GroupingElementContext) IsGroupingElementContext() {} + +func NewGroupingElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupingElementContext { + var p = new(GroupingElementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_groupingElement + + return p +} + +func (s *GroupingElementContext) GetParser() antlr.Parser { return s.parser } + +func (s *GroupingElementContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *GroupingElementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GroupingElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GroupingElementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGroupingElement(s) + } +} + +func (s *GroupingElementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGroupingElement(s) + } +} + +func (p *GQLParser) GroupingElement() (localctx IGroupingElementContext) { + localctx = NewGroupingElementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 516, GQLParserRULE_groupingElement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2636) + p.BindingVariableReference() + } + +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 +} + +// IEmptyGroupingSetContext is an interface to support dynamic dispatch. +type IEmptyGroupingSetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + + // IsEmptyGroupingSetContext differentiates from other interfaces. + IsEmptyGroupingSetContext() +} + +type EmptyGroupingSetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEmptyGroupingSetContext() *EmptyGroupingSetContext { + var p = new(EmptyGroupingSetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_emptyGroupingSet + return p +} + +func InitEmptyEmptyGroupingSetContext(p *EmptyGroupingSetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_emptyGroupingSet +} + +func (*EmptyGroupingSetContext) IsEmptyGroupingSetContext() {} + +func NewEmptyGroupingSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EmptyGroupingSetContext { + var p = new(EmptyGroupingSetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_emptyGroupingSet + + return p +} + +func (s *EmptyGroupingSetContext) GetParser() antlr.Parser { return s.parser } + +func (s *EmptyGroupingSetContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *EmptyGroupingSetContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *EmptyGroupingSetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EmptyGroupingSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EmptyGroupingSetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEmptyGroupingSet(s) + } +} + +func (s *EmptyGroupingSetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEmptyGroupingSet(s) + } +} + +func (p *GQLParser) EmptyGroupingSet() (localctx IEmptyGroupingSetContext) { + localctx = NewEmptyGroupingSetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 518, GQLParserRULE_emptyGroupingSet) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2638) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2639) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IOrderByClauseContext is an interface to support dynamic dispatch. +type IOrderByClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ORDER() antlr.TerminalNode + BY() antlr.TerminalNode + SortSpecificationList() ISortSpecificationListContext + + // IsOrderByClauseContext differentiates from other interfaces. + IsOrderByClauseContext() +} + +type OrderByClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOrderByClauseContext() *OrderByClauseContext { + var p = new(OrderByClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderByClause + return p +} + +func InitEmptyOrderByClauseContext(p *OrderByClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderByClause +} + +func (*OrderByClauseContext) IsOrderByClauseContext() {} + +func NewOrderByClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderByClauseContext { + var p = new(OrderByClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_orderByClause + + return p +} + +func (s *OrderByClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *OrderByClauseContext) ORDER() antlr.TerminalNode { + return s.GetToken(GQLParserORDER, 0) +} + +func (s *OrderByClauseContext) BY() antlr.TerminalNode { + return s.GetToken(GQLParserBY, 0) +} + +func (s *OrderByClauseContext) SortSpecificationList() ISortSpecificationListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISortSpecificationListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISortSpecificationListContext) +} + +func (s *OrderByClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OrderByClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OrderByClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOrderByClause(s) + } +} + +func (s *OrderByClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOrderByClause(s) + } +} + +func (p *GQLParser) OrderByClause() (localctx IOrderByClauseContext) { + localctx = NewOrderByClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 520, GQLParserRULE_orderByClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2641) + p.Match(GQLParserORDER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2642) + p.Match(GQLParserBY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2643) + p.SortSpecificationList() + } + +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 +} + +// ISortSpecificationListContext is an interface to support dynamic dispatch. +type ISortSpecificationListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllSortSpecification() []ISortSpecificationContext + SortSpecification(i int) ISortSpecificationContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsSortSpecificationListContext differentiates from other interfaces. + IsSortSpecificationListContext() +} + +type SortSpecificationListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySortSpecificationListContext() *SortSpecificationListContext { + var p = new(SortSpecificationListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortSpecificationList + return p +} + +func InitEmptySortSpecificationListContext(p *SortSpecificationListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortSpecificationList +} + +func (*SortSpecificationListContext) IsSortSpecificationListContext() {} + +func NewSortSpecificationListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SortSpecificationListContext { + var p = new(SortSpecificationListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sortSpecificationList + + return p +} + +func (s *SortSpecificationListContext) GetParser() antlr.Parser { return s.parser } + +func (s *SortSpecificationListContext) AllSortSpecification() []ISortSpecificationContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISortSpecificationContext); ok { + len++ + } + } + + tst := make([]ISortSpecificationContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISortSpecificationContext); ok { + tst[i] = t.(ISortSpecificationContext) + i++ + } + } + + return tst +} + +func (s *SortSpecificationListContext) SortSpecification(i int) ISortSpecificationContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISortSpecificationContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISortSpecificationContext) +} + +func (s *SortSpecificationListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *SortSpecificationListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *SortSpecificationListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SortSpecificationListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SortSpecificationListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSortSpecificationList(s) + } +} + +func (s *SortSpecificationListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSortSpecificationList(s) + } +} + +func (p *GQLParser) SortSpecificationList() (localctx ISortSpecificationListContext) { + localctx = NewSortSpecificationListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 522, GQLParserRULE_sortSpecificationList) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2645) + p.SortSpecification() + } + p.SetState(2650) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 226, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2646) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2647) + p.SortSpecification() + } + + } + p.SetState(2652) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 226, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// ISortSpecificationContext is an interface to support dynamic dispatch. +type ISortSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SortKey() ISortKeyContext + OrderingSpecification() IOrderingSpecificationContext + NullOrdering() INullOrderingContext + + // IsSortSpecificationContext differentiates from other interfaces. + IsSortSpecificationContext() +} + +type SortSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySortSpecificationContext() *SortSpecificationContext { + var p = new(SortSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortSpecification + return p +} + +func InitEmptySortSpecificationContext(p *SortSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortSpecification +} + +func (*SortSpecificationContext) IsSortSpecificationContext() {} + +func NewSortSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SortSpecificationContext { + var p = new(SortSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sortSpecification + + return p +} + +func (s *SortSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *SortSpecificationContext) SortKey() ISortKeyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISortKeyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISortKeyContext) +} + +func (s *SortSpecificationContext) OrderingSpecification() IOrderingSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrderingSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOrderingSpecificationContext) +} + +func (s *SortSpecificationContext) NullOrdering() INullOrderingContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullOrderingContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullOrderingContext) +} + +func (s *SortSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SortSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SortSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSortSpecification(s) + } +} + +func (s *SortSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSortSpecification(s) + } +} + +func (p *GQLParser) SortSpecification() (localctx ISortSpecificationContext) { + localctx = NewSortSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 524, GQLParserRULE_sortSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2653) + p.SortKey() + } + p.SetState(2655) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 227, p.GetParserRuleContext()) == 1 { + { + p.SetState(2654) + p.OrderingSpecification() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2658) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 228, p.GetParserRuleContext()) == 1 { + { + p.SetState(2657) + p.NullOrdering() + } + + } else if p.HasError() { // JIM + 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 +} + +// ISortKeyContext is an interface to support dynamic dispatch. +type ISortKeyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AggregatingValueExpression() IAggregatingValueExpressionContext + + // IsSortKeyContext differentiates from other interfaces. + IsSortKeyContext() +} + +type SortKeyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySortKeyContext() *SortKeyContext { + var p = new(SortKeyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortKey + return p +} + +func InitEmptySortKeyContext(p *SortKeyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sortKey +} + +func (*SortKeyContext) IsSortKeyContext() {} + +func NewSortKeyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SortKeyContext { + var p = new(SortKeyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sortKey + + return p +} + +func (s *SortKeyContext) GetParser() antlr.Parser { return s.parser } + +func (s *SortKeyContext) AggregatingValueExpression() IAggregatingValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregatingValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregatingValueExpressionContext) +} + +func (s *SortKeyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SortKeyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SortKeyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSortKey(s) + } +} + +func (s *SortKeyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSortKey(s) + } +} + +func (p *GQLParser) SortKey() (localctx ISortKeyContext) { + localctx = NewSortKeyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 526, GQLParserRULE_sortKey) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2660) + p.AggregatingValueExpression() + } + +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 +} + +// IOrderingSpecificationContext is an interface to support dynamic dispatch. +type IOrderingSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ASC() antlr.TerminalNode + ASCENDING() antlr.TerminalNode + DESC() antlr.TerminalNode + DESCENDING() antlr.TerminalNode + + // IsOrderingSpecificationContext differentiates from other interfaces. + IsOrderingSpecificationContext() +} + +type OrderingSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOrderingSpecificationContext() *OrderingSpecificationContext { + var p = new(OrderingSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderingSpecification + return p +} + +func InitEmptyOrderingSpecificationContext(p *OrderingSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_orderingSpecification +} + +func (*OrderingSpecificationContext) IsOrderingSpecificationContext() {} + +func NewOrderingSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OrderingSpecificationContext { + var p = new(OrderingSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_orderingSpecification + + return p +} + +func (s *OrderingSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *OrderingSpecificationContext) ASC() antlr.TerminalNode { + return s.GetToken(GQLParserASC, 0) +} + +func (s *OrderingSpecificationContext) ASCENDING() antlr.TerminalNode { + return s.GetToken(GQLParserASCENDING, 0) +} + +func (s *OrderingSpecificationContext) DESC() antlr.TerminalNode { + return s.GetToken(GQLParserDESC, 0) +} + +func (s *OrderingSpecificationContext) DESCENDING() antlr.TerminalNode { + return s.GetToken(GQLParserDESCENDING, 0) +} + +func (s *OrderingSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OrderingSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OrderingSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOrderingSpecification(s) + } +} + +func (s *OrderingSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOrderingSpecification(s) + } +} + +func (p *GQLParser) OrderingSpecification() (localctx IOrderingSpecificationContext) { + localctx = NewOrderingSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 528, GQLParserRULE_orderingSpecification) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2662) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-28)) & ^0x3f) == 0 && ((int64(1)<<(_la-28))&1688849860263939) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// INullOrderingContext is an interface to support dynamic dispatch. +type INullOrderingContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NULLS() antlr.TerminalNode + FIRST() antlr.TerminalNode + LAST() antlr.TerminalNode + + // IsNullOrderingContext differentiates from other interfaces. + IsNullOrderingContext() +} + +type NullOrderingContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNullOrderingContext() *NullOrderingContext { + var p = new(NullOrderingContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullOrdering + return p +} + +func InitEmptyNullOrderingContext(p *NullOrderingContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullOrdering +} + +func (*NullOrderingContext) IsNullOrderingContext() {} + +func NewNullOrderingContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullOrderingContext { + var p = new(NullOrderingContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nullOrdering + + return p +} + +func (s *NullOrderingContext) GetParser() antlr.Parser { return s.parser } + +func (s *NullOrderingContext) NULLS() antlr.TerminalNode { + return s.GetToken(GQLParserNULLS, 0) +} + +func (s *NullOrderingContext) FIRST() antlr.TerminalNode { + return s.GetToken(GQLParserFIRST, 0) +} + +func (s *NullOrderingContext) LAST() antlr.TerminalNode { + return s.GetToken(GQLParserLAST, 0) +} + +func (s *NullOrderingContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NullOrderingContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NullOrderingContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNullOrdering(s) + } +} + +func (s *NullOrderingContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNullOrdering(s) + } +} + +func (p *GQLParser) NullOrdering() (localctx INullOrderingContext) { + localctx = NewNullOrderingContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 530, GQLParserRULE_nullOrdering) + p.SetState(2668) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 229, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2664) + p.Match(GQLParserNULLS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2665) + p.Match(GQLParserFIRST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2666) + p.Match(GQLParserNULLS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2667) + p.Match(GQLParserLAST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ILimitClauseContext is an interface to support dynamic dispatch. +type ILimitClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LIMIT() antlr.TerminalNode + NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext + + // IsLimitClauseContext differentiates from other interfaces. + IsLimitClauseContext() +} + +type LimitClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLimitClauseContext() *LimitClauseContext { + var p = new(LimitClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_limitClause + return p +} + +func InitEmptyLimitClauseContext(p *LimitClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_limitClause +} + +func (*LimitClauseContext) IsLimitClauseContext() {} + +func NewLimitClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LimitClauseContext { + var p = new(LimitClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_limitClause + + return p +} + +func (s *LimitClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *LimitClauseContext) LIMIT() antlr.TerminalNode { + return s.GetToken(GQLParserLIMIT, 0) +} + +func (s *LimitClauseContext) NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonNegativeIntegerSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonNegativeIntegerSpecificationContext) +} + +func (s *LimitClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LimitClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LimitClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLimitClause(s) + } +} + +func (s *LimitClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLimitClause(s) + } +} + +func (p *GQLParser) LimitClause() (localctx ILimitClauseContext) { + localctx = NewLimitClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 532, GQLParserRULE_limitClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2670) + p.Match(GQLParserLIMIT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2671) + p.NonNegativeIntegerSpecification() + } + +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 +} + +// IOffsetClauseContext is an interface to support dynamic dispatch. +type IOffsetClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OffsetSynonym() IOffsetSynonymContext + NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext + + // IsOffsetClauseContext differentiates from other interfaces. + IsOffsetClauseContext() +} + +type OffsetClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOffsetClauseContext() *OffsetClauseContext { + var p = new(OffsetClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_offsetClause + return p +} + +func InitEmptyOffsetClauseContext(p *OffsetClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_offsetClause +} + +func (*OffsetClauseContext) IsOffsetClauseContext() {} + +func NewOffsetClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OffsetClauseContext { + var p = new(OffsetClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_offsetClause + + return p +} + +func (s *OffsetClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *OffsetClauseContext) OffsetSynonym() IOffsetSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOffsetSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOffsetSynonymContext) +} + +func (s *OffsetClauseContext) NonNegativeIntegerSpecification() INonNegativeIntegerSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonNegativeIntegerSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonNegativeIntegerSpecificationContext) +} + +func (s *OffsetClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OffsetClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OffsetClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOffsetClause(s) + } +} + +func (s *OffsetClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOffsetClause(s) + } +} + +func (p *GQLParser) OffsetClause() (localctx IOffsetClauseContext) { + localctx = NewOffsetClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 534, GQLParserRULE_offsetClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2673) + p.OffsetSynonym() + } + { + p.SetState(2674) + p.NonNegativeIntegerSpecification() + } + +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 +} + +// IOffsetSynonymContext is an interface to support dynamic dispatch. +type IOffsetSynonymContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OFFSET() antlr.TerminalNode + SKIP_RESERVED_WORD() antlr.TerminalNode + + // IsOffsetSynonymContext differentiates from other interfaces. + IsOffsetSynonymContext() +} + +type OffsetSynonymContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOffsetSynonymContext() *OffsetSynonymContext { + var p = new(OffsetSynonymContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_offsetSynonym + return p +} + +func InitEmptyOffsetSynonymContext(p *OffsetSynonymContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_offsetSynonym +} + +func (*OffsetSynonymContext) IsOffsetSynonymContext() {} + +func NewOffsetSynonymContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OffsetSynonymContext { + var p = new(OffsetSynonymContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_offsetSynonym + + return p +} + +func (s *OffsetSynonymContext) GetParser() antlr.Parser { return s.parser } + +func (s *OffsetSynonymContext) OFFSET() antlr.TerminalNode { + return s.GetToken(GQLParserOFFSET, 0) +} + +func (s *OffsetSynonymContext) SKIP_RESERVED_WORD() antlr.TerminalNode { + return s.GetToken(GQLParserSKIP_RESERVED_WORD, 0) +} + +func (s *OffsetSynonymContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OffsetSynonymContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OffsetSynonymContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOffsetSynonym(s) + } +} + +func (s *OffsetSynonymContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOffsetSynonym(s) + } +} + +func (p *GQLParser) OffsetSynonym() (localctx IOffsetSynonymContext) { + localctx = NewOffsetSynonymContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 536, GQLParserRULE_offsetSynonym) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2676) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserOFFSET || _la == GQLParserSKIP_RESERVED_WORD) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// ISchemaReferenceContext is an interface to support dynamic dispatch. +type ISchemaReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AbsoluteCatalogSchemaReference() IAbsoluteCatalogSchemaReferenceContext + RelativeCatalogSchemaReference() IRelativeCatalogSchemaReferenceContext + ReferenceParameterSpecification() IReferenceParameterSpecificationContext + + // IsSchemaReferenceContext differentiates from other interfaces. + IsSchemaReferenceContext() +} + +type SchemaReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySchemaReferenceContext() *SchemaReferenceContext { + var p = new(SchemaReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_schemaReference + return p +} + +func InitEmptySchemaReferenceContext(p *SchemaReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_schemaReference +} + +func (*SchemaReferenceContext) IsSchemaReferenceContext() {} + +func NewSchemaReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SchemaReferenceContext { + var p = new(SchemaReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_schemaReference + + return p +} + +func (s *SchemaReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *SchemaReferenceContext) AbsoluteCatalogSchemaReference() IAbsoluteCatalogSchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbsoluteCatalogSchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbsoluteCatalogSchemaReferenceContext) +} + +func (s *SchemaReferenceContext) RelativeCatalogSchemaReference() IRelativeCatalogSchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRelativeCatalogSchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRelativeCatalogSchemaReferenceContext) +} + +func (s *SchemaReferenceContext) ReferenceParameterSpecification() IReferenceParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceParameterSpecificationContext) +} + +func (s *SchemaReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SchemaReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SchemaReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSchemaReference(s) + } +} + +func (s *SchemaReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSchemaReference(s) + } +} + +func (p *GQLParser) SchemaReference() (localctx ISchemaReferenceContext) { + localctx = NewSchemaReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 538, GQLParserRULE_schemaReference) + p.SetState(2681) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSOLIDUS: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2678) + p.AbsoluteCatalogSchemaReference() + } + + case GQLParserCURRENT_SCHEMA, GQLParserHOME_SCHEMA, GQLParserDOUBLE_PERIOD, GQLParserPERIOD: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2679) + p.RelativeCatalogSchemaReference() + } + + case GQLParserSUBSTITUTED_PARAMETER_REFERENCE: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2680) + p.ReferenceParameterSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IAbsoluteCatalogSchemaReferenceContext is an interface to support dynamic dispatch. +type IAbsoluteCatalogSchemaReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SOLIDUS() antlr.TerminalNode + AbsoluteDirectoryPath() IAbsoluteDirectoryPathContext + SchemaName() ISchemaNameContext + + // IsAbsoluteCatalogSchemaReferenceContext differentiates from other interfaces. + IsAbsoluteCatalogSchemaReferenceContext() +} + +type AbsoluteCatalogSchemaReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAbsoluteCatalogSchemaReferenceContext() *AbsoluteCatalogSchemaReferenceContext { + var p = new(AbsoluteCatalogSchemaReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteCatalogSchemaReference + return p +} + +func InitEmptyAbsoluteCatalogSchemaReferenceContext(p *AbsoluteCatalogSchemaReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteCatalogSchemaReference +} + +func (*AbsoluteCatalogSchemaReferenceContext) IsAbsoluteCatalogSchemaReferenceContext() {} + +func NewAbsoluteCatalogSchemaReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AbsoluteCatalogSchemaReferenceContext { + var p = new(AbsoluteCatalogSchemaReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_absoluteCatalogSchemaReference + + return p +} + +func (s *AbsoluteCatalogSchemaReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *AbsoluteCatalogSchemaReferenceContext) SOLIDUS() antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, 0) +} + +func (s *AbsoluteCatalogSchemaReferenceContext) AbsoluteDirectoryPath() IAbsoluteDirectoryPathContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbsoluteDirectoryPathContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbsoluteDirectoryPathContext) +} + +func (s *AbsoluteCatalogSchemaReferenceContext) SchemaName() ISchemaNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaNameContext) +} + +func (s *AbsoluteCatalogSchemaReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AbsoluteCatalogSchemaReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AbsoluteCatalogSchemaReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAbsoluteCatalogSchemaReference(s) + } +} + +func (s *AbsoluteCatalogSchemaReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAbsoluteCatalogSchemaReference(s) + } +} + +func (p *GQLParser) AbsoluteCatalogSchemaReference() (localctx IAbsoluteCatalogSchemaReferenceContext) { + localctx = NewAbsoluteCatalogSchemaReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 540, GQLParserRULE_absoluteCatalogSchemaReference) + p.SetState(2687) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 231, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2683) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2684) + p.AbsoluteDirectoryPath() + } + { + p.SetState(2685) + p.SchemaName() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICatalogSchemaParentAndNameContext is an interface to support dynamic dispatch. +type ICatalogSchemaParentAndNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AbsoluteDirectoryPath() IAbsoluteDirectoryPathContext + SchemaName() ISchemaNameContext + + // IsCatalogSchemaParentAndNameContext differentiates from other interfaces. + IsCatalogSchemaParentAndNameContext() +} + +type CatalogSchemaParentAndNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCatalogSchemaParentAndNameContext() *CatalogSchemaParentAndNameContext { + var p = new(CatalogSchemaParentAndNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogSchemaParentAndName + return p +} + +func InitEmptyCatalogSchemaParentAndNameContext(p *CatalogSchemaParentAndNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogSchemaParentAndName +} + +func (*CatalogSchemaParentAndNameContext) IsCatalogSchemaParentAndNameContext() {} + +func NewCatalogSchemaParentAndNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CatalogSchemaParentAndNameContext { + var p = new(CatalogSchemaParentAndNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_catalogSchemaParentAndName + + return p +} + +func (s *CatalogSchemaParentAndNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *CatalogSchemaParentAndNameContext) AbsoluteDirectoryPath() IAbsoluteDirectoryPathContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbsoluteDirectoryPathContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbsoluteDirectoryPathContext) +} + +func (s *CatalogSchemaParentAndNameContext) SchemaName() ISchemaNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaNameContext) +} + +func (s *CatalogSchemaParentAndNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CatalogSchemaParentAndNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CatalogSchemaParentAndNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCatalogSchemaParentAndName(s) + } +} + +func (s *CatalogSchemaParentAndNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCatalogSchemaParentAndName(s) + } +} + +func (p *GQLParser) CatalogSchemaParentAndName() (localctx ICatalogSchemaParentAndNameContext) { + localctx = NewCatalogSchemaParentAndNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 542, GQLParserRULE_catalogSchemaParentAndName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2689) + p.AbsoluteDirectoryPath() + } + { + p.SetState(2690) + p.SchemaName() + } + +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 +} + +// IRelativeCatalogSchemaReferenceContext is an interface to support dynamic dispatch. +type IRelativeCatalogSchemaReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PredefinedSchemaReference() IPredefinedSchemaReferenceContext + RelativeDirectoryPath() IRelativeDirectoryPathContext + SchemaName() ISchemaNameContext + + // IsRelativeCatalogSchemaReferenceContext differentiates from other interfaces. + IsRelativeCatalogSchemaReferenceContext() +} + +type RelativeCatalogSchemaReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRelativeCatalogSchemaReferenceContext() *RelativeCatalogSchemaReferenceContext { + var p = new(RelativeCatalogSchemaReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_relativeCatalogSchemaReference + return p +} + +func InitEmptyRelativeCatalogSchemaReferenceContext(p *RelativeCatalogSchemaReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_relativeCatalogSchemaReference +} + +func (*RelativeCatalogSchemaReferenceContext) IsRelativeCatalogSchemaReferenceContext() {} + +func NewRelativeCatalogSchemaReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RelativeCatalogSchemaReferenceContext { + var p = new(RelativeCatalogSchemaReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_relativeCatalogSchemaReference + + return p +} + +func (s *RelativeCatalogSchemaReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *RelativeCatalogSchemaReferenceContext) PredefinedSchemaReference() IPredefinedSchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPredefinedSchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPredefinedSchemaReferenceContext) +} + +func (s *RelativeCatalogSchemaReferenceContext) RelativeDirectoryPath() IRelativeDirectoryPathContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRelativeDirectoryPathContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRelativeDirectoryPathContext) +} + +func (s *RelativeCatalogSchemaReferenceContext) SchemaName() ISchemaNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaNameContext) +} + +func (s *RelativeCatalogSchemaReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RelativeCatalogSchemaReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RelativeCatalogSchemaReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRelativeCatalogSchemaReference(s) + } +} + +func (s *RelativeCatalogSchemaReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRelativeCatalogSchemaReference(s) + } +} + +func (p *GQLParser) RelativeCatalogSchemaReference() (localctx IRelativeCatalogSchemaReferenceContext) { + localctx = NewRelativeCatalogSchemaReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 544, GQLParserRULE_relativeCatalogSchemaReference) + p.SetState(2696) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_SCHEMA, GQLParserHOME_SCHEMA, GQLParserPERIOD: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2692) + p.PredefinedSchemaReference() + } + + case GQLParserDOUBLE_PERIOD: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2693) + p.RelativeDirectoryPath() + } + { + p.SetState(2694) + p.SchemaName() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IPredefinedSchemaReferenceContext is an interface to support dynamic dispatch. +type IPredefinedSchemaReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + HOME_SCHEMA() antlr.TerminalNode + CURRENT_SCHEMA() antlr.TerminalNode + PERIOD() antlr.TerminalNode + + // IsPredefinedSchemaReferenceContext differentiates from other interfaces. + IsPredefinedSchemaReferenceContext() +} + +type PredefinedSchemaReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPredefinedSchemaReferenceContext() *PredefinedSchemaReferenceContext { + var p = new(PredefinedSchemaReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predefinedSchemaReference + return p +} + +func InitEmptyPredefinedSchemaReferenceContext(p *PredefinedSchemaReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predefinedSchemaReference +} + +func (*PredefinedSchemaReferenceContext) IsPredefinedSchemaReferenceContext() {} + +func NewPredefinedSchemaReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PredefinedSchemaReferenceContext { + var p = new(PredefinedSchemaReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_predefinedSchemaReference + + return p +} + +func (s *PredefinedSchemaReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *PredefinedSchemaReferenceContext) HOME_SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserHOME_SCHEMA, 0) +} + +func (s *PredefinedSchemaReferenceContext) CURRENT_SCHEMA() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_SCHEMA, 0) +} + +func (s *PredefinedSchemaReferenceContext) PERIOD() antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, 0) +} + +func (s *PredefinedSchemaReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PredefinedSchemaReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PredefinedSchemaReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPredefinedSchemaReference(s) + } +} + +func (s *PredefinedSchemaReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPredefinedSchemaReference(s) + } +} + +func (p *GQLParser) PredefinedSchemaReference() (localctx IPredefinedSchemaReferenceContext) { + localctx = NewPredefinedSchemaReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 546, GQLParserRULE_predefinedSchemaReference) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2698) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserCURRENT_SCHEMA || _la == GQLParserHOME_SCHEMA || _la == GQLParserPERIOD) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IAbsoluteDirectoryPathContext is an interface to support dynamic dispatch. +type IAbsoluteDirectoryPathContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SOLIDUS() antlr.TerminalNode + SimpleDirectoryPath() ISimpleDirectoryPathContext + + // IsAbsoluteDirectoryPathContext differentiates from other interfaces. + IsAbsoluteDirectoryPathContext() +} + +type AbsoluteDirectoryPathContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAbsoluteDirectoryPathContext() *AbsoluteDirectoryPathContext { + var p = new(AbsoluteDirectoryPathContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteDirectoryPath + return p +} + +func InitEmptyAbsoluteDirectoryPathContext(p *AbsoluteDirectoryPathContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteDirectoryPath +} + +func (*AbsoluteDirectoryPathContext) IsAbsoluteDirectoryPathContext() {} + +func NewAbsoluteDirectoryPathContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AbsoluteDirectoryPathContext { + var p = new(AbsoluteDirectoryPathContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_absoluteDirectoryPath + + return p +} + +func (s *AbsoluteDirectoryPathContext) GetParser() antlr.Parser { return s.parser } + +func (s *AbsoluteDirectoryPathContext) SOLIDUS() antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, 0) +} + +func (s *AbsoluteDirectoryPathContext) SimpleDirectoryPath() ISimpleDirectoryPathContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleDirectoryPathContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleDirectoryPathContext) +} + +func (s *AbsoluteDirectoryPathContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AbsoluteDirectoryPathContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AbsoluteDirectoryPathContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAbsoluteDirectoryPath(s) + } +} + +func (s *AbsoluteDirectoryPathContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAbsoluteDirectoryPath(s) + } +} + +func (p *GQLParser) AbsoluteDirectoryPath() (localctx IAbsoluteDirectoryPathContext) { + localctx = NewAbsoluteDirectoryPathContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 548, GQLParserRULE_absoluteDirectoryPath) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2700) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2702) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 233, p.GetParserRuleContext()) == 1 { + { + p.SetState(2701) + p.SimpleDirectoryPath() + } + + } else if p.HasError() { // JIM + 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 +} + +// IRelativeDirectoryPathContext is an interface to support dynamic dispatch. +type IRelativeDirectoryPathContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllDOUBLE_PERIOD() []antlr.TerminalNode + DOUBLE_PERIOD(i int) antlr.TerminalNode + AllSOLIDUS() []antlr.TerminalNode + SOLIDUS(i int) antlr.TerminalNode + SimpleDirectoryPath() ISimpleDirectoryPathContext + + // IsRelativeDirectoryPathContext differentiates from other interfaces. + IsRelativeDirectoryPathContext() +} + +type RelativeDirectoryPathContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRelativeDirectoryPathContext() *RelativeDirectoryPathContext { + var p = new(RelativeDirectoryPathContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_relativeDirectoryPath + return p +} + +func InitEmptyRelativeDirectoryPathContext(p *RelativeDirectoryPathContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_relativeDirectoryPath +} + +func (*RelativeDirectoryPathContext) IsRelativeDirectoryPathContext() {} + +func NewRelativeDirectoryPathContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RelativeDirectoryPathContext { + var p = new(RelativeDirectoryPathContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_relativeDirectoryPath + + return p +} + +func (s *RelativeDirectoryPathContext) GetParser() antlr.Parser { return s.parser } + +func (s *RelativeDirectoryPathContext) AllDOUBLE_PERIOD() []antlr.TerminalNode { + return s.GetTokens(GQLParserDOUBLE_PERIOD) +} + +func (s *RelativeDirectoryPathContext) DOUBLE_PERIOD(i int) antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_PERIOD, i) +} + +func (s *RelativeDirectoryPathContext) AllSOLIDUS() []antlr.TerminalNode { + return s.GetTokens(GQLParserSOLIDUS) +} + +func (s *RelativeDirectoryPathContext) SOLIDUS(i int) antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, i) +} + +func (s *RelativeDirectoryPathContext) SimpleDirectoryPath() ISimpleDirectoryPathContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleDirectoryPathContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleDirectoryPathContext) +} + +func (s *RelativeDirectoryPathContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RelativeDirectoryPathContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RelativeDirectoryPathContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRelativeDirectoryPath(s) + } +} + +func (s *RelativeDirectoryPathContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRelativeDirectoryPath(s) + } +} + +func (p *GQLParser) RelativeDirectoryPath() (localctx IRelativeDirectoryPathContext) { + localctx = NewRelativeDirectoryPathContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 550, GQLParserRULE_relativeDirectoryPath) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2704) + p.Match(GQLParserDOUBLE_PERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2709) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 234, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2705) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2706) + p.Match(GQLParserDOUBLE_PERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(2711) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 234, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + { + p.SetState(2712) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2714) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 235, p.GetParserRuleContext()) == 1 { + { + p.SetState(2713) + p.SimpleDirectoryPath() + } + + } else if p.HasError() { // JIM + 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 +} + +// ISimpleDirectoryPathContext is an interface to support dynamic dispatch. +type ISimpleDirectoryPathContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllDirectoryName() []IDirectoryNameContext + DirectoryName(i int) IDirectoryNameContext + AllSOLIDUS() []antlr.TerminalNode + SOLIDUS(i int) antlr.TerminalNode + + // IsSimpleDirectoryPathContext differentiates from other interfaces. + IsSimpleDirectoryPathContext() +} + +type SimpleDirectoryPathContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleDirectoryPathContext() *SimpleDirectoryPathContext { + var p = new(SimpleDirectoryPathContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDirectoryPath + return p +} + +func InitEmptySimpleDirectoryPathContext(p *SimpleDirectoryPathContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleDirectoryPath +} + +func (*SimpleDirectoryPathContext) IsSimpleDirectoryPathContext() {} + +func NewSimpleDirectoryPathContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleDirectoryPathContext { + var p = new(SimpleDirectoryPathContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleDirectoryPath + + return p +} + +func (s *SimpleDirectoryPathContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleDirectoryPathContext) AllDirectoryName() []IDirectoryNameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDirectoryNameContext); ok { + len++ + } + } + + tst := make([]IDirectoryNameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDirectoryNameContext); ok { + tst[i] = t.(IDirectoryNameContext) + i++ + } + } + + return tst +} + +func (s *SimpleDirectoryPathContext) DirectoryName(i int) IDirectoryNameContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDirectoryNameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDirectoryNameContext) +} + +func (s *SimpleDirectoryPathContext) AllSOLIDUS() []antlr.TerminalNode { + return s.GetTokens(GQLParserSOLIDUS) +} + +func (s *SimpleDirectoryPathContext) SOLIDUS(i int) antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, i) +} + +func (s *SimpleDirectoryPathContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleDirectoryPathContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleDirectoryPathContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleDirectoryPath(s) + } +} + +func (s *SimpleDirectoryPathContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleDirectoryPath(s) + } +} + +func (p *GQLParser) SimpleDirectoryPath() (localctx ISimpleDirectoryPathContext) { + localctx = NewSimpleDirectoryPathContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 552, GQLParserRULE_simpleDirectoryPath) + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2719) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(2716) + p.DirectoryName() + } + { + p.SetState(2717) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(2721) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 236, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IGraphReferenceContext is an interface to support dynamic dispatch. +type IGraphReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CatalogObjectParentReference() ICatalogObjectParentReferenceContext + GraphName() IGraphNameContext + DelimitedGraphName() IDelimitedGraphNameContext + HomeGraph() IHomeGraphContext + ReferenceParameterSpecification() IReferenceParameterSpecificationContext + + // IsGraphReferenceContext differentiates from other interfaces. + IsGraphReferenceContext() +} + +type GraphReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphReferenceContext() *GraphReferenceContext { + var p = new(GraphReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphReference + return p +} + +func InitEmptyGraphReferenceContext(p *GraphReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphReference +} + +func (*GraphReferenceContext) IsGraphReferenceContext() {} + +func NewGraphReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphReferenceContext { + var p = new(GraphReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphReference + + return p +} + +func (s *GraphReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphReferenceContext) CatalogObjectParentReference() ICatalogObjectParentReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogObjectParentReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogObjectParentReferenceContext) +} + +func (s *GraphReferenceContext) GraphName() IGraphNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphNameContext) +} + +func (s *GraphReferenceContext) DelimitedGraphName() IDelimitedGraphNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelimitedGraphNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDelimitedGraphNameContext) +} + +func (s *GraphReferenceContext) HomeGraph() IHomeGraphContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IHomeGraphContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IHomeGraphContext) +} + +func (s *GraphReferenceContext) ReferenceParameterSpecification() IReferenceParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceParameterSpecificationContext) +} + +func (s *GraphReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphReference(s) + } +} + +func (s *GraphReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphReference(s) + } +} + +func (p *GQLParser) GraphReference() (localctx IGraphReferenceContext) { + localctx = NewGraphReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 554, GQLParserRULE_graphReference) + p.SetState(2729) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 237, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2723) + p.CatalogObjectParentReference() + } + { + p.SetState(2724) + p.GraphName() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2726) + p.DelimitedGraphName() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2727) + p.HomeGraph() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(2728) + p.ReferenceParameterSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICatalogGraphParentAndNameContext is an interface to support dynamic dispatch. +type ICatalogGraphParentAndNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphName() IGraphNameContext + CatalogObjectParentReference() ICatalogObjectParentReferenceContext + + // IsCatalogGraphParentAndNameContext differentiates from other interfaces. + IsCatalogGraphParentAndNameContext() +} + +type CatalogGraphParentAndNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCatalogGraphParentAndNameContext() *CatalogGraphParentAndNameContext { + var p = new(CatalogGraphParentAndNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogGraphParentAndName + return p +} + +func InitEmptyCatalogGraphParentAndNameContext(p *CatalogGraphParentAndNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogGraphParentAndName +} + +func (*CatalogGraphParentAndNameContext) IsCatalogGraphParentAndNameContext() {} + +func NewCatalogGraphParentAndNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CatalogGraphParentAndNameContext { + var p = new(CatalogGraphParentAndNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_catalogGraphParentAndName + + return p +} + +func (s *CatalogGraphParentAndNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *CatalogGraphParentAndNameContext) GraphName() IGraphNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphNameContext) +} + +func (s *CatalogGraphParentAndNameContext) CatalogObjectParentReference() ICatalogObjectParentReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogObjectParentReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogObjectParentReferenceContext) +} + +func (s *CatalogGraphParentAndNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CatalogGraphParentAndNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CatalogGraphParentAndNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCatalogGraphParentAndName(s) + } +} + +func (s *CatalogGraphParentAndNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCatalogGraphParentAndName(s) + } +} + +func (p *GQLParser) CatalogGraphParentAndName() (localctx ICatalogGraphParentAndNameContext) { + localctx = NewCatalogGraphParentAndNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 556, GQLParserRULE_catalogGraphParentAndName) + p.EnterOuterAlt(localctx, 1) + p.SetState(2732) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 238, p.GetParserRuleContext()) == 1 { + { + p.SetState(2731) + p.CatalogObjectParentReference() + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2734) + p.GraphName() + } + +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 +} + +// IHomeGraphContext is an interface to support dynamic dispatch. +type IHomeGraphContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + HOME_PROPERTY_GRAPH() antlr.TerminalNode + HOME_GRAPH() antlr.TerminalNode + + // IsHomeGraphContext differentiates from other interfaces. + IsHomeGraphContext() +} + +type HomeGraphContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyHomeGraphContext() *HomeGraphContext { + var p = new(HomeGraphContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_homeGraph + return p +} + +func InitEmptyHomeGraphContext(p *HomeGraphContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_homeGraph +} + +func (*HomeGraphContext) IsHomeGraphContext() {} + +func NewHomeGraphContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *HomeGraphContext { + var p = new(HomeGraphContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_homeGraph + + return p +} + +func (s *HomeGraphContext) GetParser() antlr.Parser { return s.parser } + +func (s *HomeGraphContext) HOME_PROPERTY_GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserHOME_PROPERTY_GRAPH, 0) +} + +func (s *HomeGraphContext) HOME_GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserHOME_GRAPH, 0) +} + +func (s *HomeGraphContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *HomeGraphContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *HomeGraphContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterHomeGraph(s) + } +} + +func (s *HomeGraphContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitHomeGraph(s) + } +} + +func (p *GQLParser) HomeGraph() (localctx IHomeGraphContext) { + localctx = NewHomeGraphContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 558, GQLParserRULE_homeGraph) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2736) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserHOME_GRAPH || _la == GQLParserHOME_PROPERTY_GRAPH) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IGraphTypeReferenceContext is an interface to support dynamic dispatch. +type IGraphTypeReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext + ReferenceParameterSpecification() IReferenceParameterSpecificationContext + + // IsGraphTypeReferenceContext differentiates from other interfaces. + IsGraphTypeReferenceContext() +} + +type GraphTypeReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphTypeReferenceContext() *GraphTypeReferenceContext { + var p = new(GraphTypeReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeReference + return p +} + +func InitEmptyGraphTypeReferenceContext(p *GraphTypeReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeReference +} + +func (*GraphTypeReferenceContext) IsGraphTypeReferenceContext() {} + +func NewGraphTypeReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphTypeReferenceContext { + var p = new(GraphTypeReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphTypeReference + + return p +} + +func (s *GraphTypeReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphTypeReferenceContext) CatalogGraphTypeParentAndName() ICatalogGraphTypeParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogGraphTypeParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogGraphTypeParentAndNameContext) +} + +func (s *GraphTypeReferenceContext) ReferenceParameterSpecification() IReferenceParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceParameterSpecificationContext) +} + +func (s *GraphTypeReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphTypeReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphTypeReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphTypeReference(s) + } +} + +func (s *GraphTypeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphTypeReference(s) + } +} + +func (p *GQLParser) GraphTypeReference() (localctx IGraphTypeReferenceContext) { + localctx = NewGraphTypeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 560, GQLParserRULE_graphTypeReference) + p.SetState(2740) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 239, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2738) + p.CatalogGraphTypeParentAndName() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2739) + p.ReferenceParameterSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICatalogGraphTypeParentAndNameContext is an interface to support dynamic dispatch. +type ICatalogGraphTypeParentAndNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphTypeName() IGraphTypeNameContext + CatalogObjectParentReference() ICatalogObjectParentReferenceContext + + // IsCatalogGraphTypeParentAndNameContext differentiates from other interfaces. + IsCatalogGraphTypeParentAndNameContext() +} + +type CatalogGraphTypeParentAndNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCatalogGraphTypeParentAndNameContext() *CatalogGraphTypeParentAndNameContext { + var p = new(CatalogGraphTypeParentAndNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogGraphTypeParentAndName + return p +} + +func InitEmptyCatalogGraphTypeParentAndNameContext(p *CatalogGraphTypeParentAndNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogGraphTypeParentAndName +} + +func (*CatalogGraphTypeParentAndNameContext) IsCatalogGraphTypeParentAndNameContext() {} + +func NewCatalogGraphTypeParentAndNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CatalogGraphTypeParentAndNameContext { + var p = new(CatalogGraphTypeParentAndNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_catalogGraphTypeParentAndName + + return p +} + +func (s *CatalogGraphTypeParentAndNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *CatalogGraphTypeParentAndNameContext) GraphTypeName() IGraphTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeNameContext) +} + +func (s *CatalogGraphTypeParentAndNameContext) CatalogObjectParentReference() ICatalogObjectParentReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogObjectParentReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogObjectParentReferenceContext) +} + +func (s *CatalogGraphTypeParentAndNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CatalogGraphTypeParentAndNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CatalogGraphTypeParentAndNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCatalogGraphTypeParentAndName(s) + } +} + +func (s *CatalogGraphTypeParentAndNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCatalogGraphTypeParentAndName(s) + } +} + +func (p *GQLParser) CatalogGraphTypeParentAndName() (localctx ICatalogGraphTypeParentAndNameContext) { + localctx = NewCatalogGraphTypeParentAndNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 562, GQLParserRULE_catalogGraphTypeParentAndName) + p.EnterOuterAlt(localctx, 1) + p.SetState(2743) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 240, p.GetParserRuleContext()) == 1 { + { + p.SetState(2742) + p.CatalogObjectParentReference() + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2745) + p.GraphTypeName() + } + +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 +} + +// IBindingTableReferenceContext is an interface to support dynamic dispatch. +type IBindingTableReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CatalogObjectParentReference() ICatalogObjectParentReferenceContext + BindingTableName() IBindingTableNameContext + DelimitedBindingTableName() IDelimitedBindingTableNameContext + ReferenceParameterSpecification() IReferenceParameterSpecificationContext + + // IsBindingTableReferenceContext differentiates from other interfaces. + IsBindingTableReferenceContext() +} + +type BindingTableReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableReferenceContext() *BindingTableReferenceContext { + var p = new(BindingTableReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableReference + return p +} + +func InitEmptyBindingTableReferenceContext(p *BindingTableReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableReference +} + +func (*BindingTableReferenceContext) IsBindingTableReferenceContext() {} + +func NewBindingTableReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableReferenceContext { + var p = new(BindingTableReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableReference + + return p +} + +func (s *BindingTableReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableReferenceContext) CatalogObjectParentReference() ICatalogObjectParentReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogObjectParentReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogObjectParentReferenceContext) +} + +func (s *BindingTableReferenceContext) BindingTableName() IBindingTableNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableNameContext) +} + +func (s *BindingTableReferenceContext) DelimitedBindingTableName() IDelimitedBindingTableNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelimitedBindingTableNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDelimitedBindingTableNameContext) +} + +func (s *BindingTableReferenceContext) ReferenceParameterSpecification() IReferenceParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceParameterSpecificationContext) +} + +func (s *BindingTableReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableReference(s) + } +} + +func (s *BindingTableReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableReference(s) + } +} + +func (p *GQLParser) BindingTableReference() (localctx IBindingTableReferenceContext) { + localctx = NewBindingTableReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 564, GQLParserRULE_bindingTableReference) + p.SetState(2752) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 241, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2747) + p.CatalogObjectParentReference() + } + { + p.SetState(2748) + p.BindingTableName() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2750) + p.DelimitedBindingTableName() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2751) + p.ReferenceParameterSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IProcedureReferenceContext is an interface to support dynamic dispatch. +type IProcedureReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CatalogProcedureParentAndName() ICatalogProcedureParentAndNameContext + ReferenceParameterSpecification() IReferenceParameterSpecificationContext + + // IsProcedureReferenceContext differentiates from other interfaces. + IsProcedureReferenceContext() +} + +type ProcedureReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureReferenceContext() *ProcedureReferenceContext { + var p = new(ProcedureReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureReference + return p +} + +func InitEmptyProcedureReferenceContext(p *ProcedureReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureReference +} + +func (*ProcedureReferenceContext) IsProcedureReferenceContext() {} + +func NewProcedureReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureReferenceContext { + var p = new(ProcedureReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureReference + + return p +} + +func (s *ProcedureReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureReferenceContext) CatalogProcedureParentAndName() ICatalogProcedureParentAndNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogProcedureParentAndNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogProcedureParentAndNameContext) +} + +func (s *ProcedureReferenceContext) ReferenceParameterSpecification() IReferenceParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceParameterSpecificationContext) +} + +func (s *ProcedureReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureReference(s) + } +} + +func (s *ProcedureReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureReference(s) + } +} + +func (p *GQLParser) ProcedureReference() (localctx IProcedureReferenceContext) { + localctx = NewProcedureReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 566, GQLParserRULE_procedureReference) + p.SetState(2756) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 242, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2754) + p.CatalogProcedureParentAndName() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2755) + p.ReferenceParameterSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICatalogProcedureParentAndNameContext is an interface to support dynamic dispatch. +type ICatalogProcedureParentAndNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ProcedureName() IProcedureNameContext + CatalogObjectParentReference() ICatalogObjectParentReferenceContext + + // IsCatalogProcedureParentAndNameContext differentiates from other interfaces. + IsCatalogProcedureParentAndNameContext() +} + +type CatalogProcedureParentAndNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCatalogProcedureParentAndNameContext() *CatalogProcedureParentAndNameContext { + var p = new(CatalogProcedureParentAndNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogProcedureParentAndName + return p +} + +func InitEmptyCatalogProcedureParentAndNameContext(p *CatalogProcedureParentAndNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogProcedureParentAndName +} + +func (*CatalogProcedureParentAndNameContext) IsCatalogProcedureParentAndNameContext() {} + +func NewCatalogProcedureParentAndNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CatalogProcedureParentAndNameContext { + var p = new(CatalogProcedureParentAndNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_catalogProcedureParentAndName + + return p +} + +func (s *CatalogProcedureParentAndNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *CatalogProcedureParentAndNameContext) ProcedureName() IProcedureNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProcedureNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProcedureNameContext) +} + +func (s *CatalogProcedureParentAndNameContext) CatalogObjectParentReference() ICatalogObjectParentReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICatalogObjectParentReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICatalogObjectParentReferenceContext) +} + +func (s *CatalogProcedureParentAndNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CatalogProcedureParentAndNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CatalogProcedureParentAndNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCatalogProcedureParentAndName(s) + } +} + +func (s *CatalogProcedureParentAndNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCatalogProcedureParentAndName(s) + } +} + +func (p *GQLParser) CatalogProcedureParentAndName() (localctx ICatalogProcedureParentAndNameContext) { + localctx = NewCatalogProcedureParentAndNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 568, GQLParserRULE_catalogProcedureParentAndName) + p.EnterOuterAlt(localctx, 1) + p.SetState(2759) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 243, p.GetParserRuleContext()) == 1 { + { + p.SetState(2758) + p.CatalogObjectParentReference() + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2761) + p.ProcedureName() + } + +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 +} + +// ICatalogObjectParentReferenceContext is an interface to support dynamic dispatch. +type ICatalogObjectParentReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SchemaReference() ISchemaReferenceContext + SOLIDUS() antlr.TerminalNode + AllObjectName() []IObjectNameContext + ObjectName(i int) IObjectNameContext + AllPERIOD() []antlr.TerminalNode + PERIOD(i int) antlr.TerminalNode + + // IsCatalogObjectParentReferenceContext differentiates from other interfaces. + IsCatalogObjectParentReferenceContext() +} + +type CatalogObjectParentReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCatalogObjectParentReferenceContext() *CatalogObjectParentReferenceContext { + var p = new(CatalogObjectParentReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogObjectParentReference + return p +} + +func InitEmptyCatalogObjectParentReferenceContext(p *CatalogObjectParentReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_catalogObjectParentReference +} + +func (*CatalogObjectParentReferenceContext) IsCatalogObjectParentReferenceContext() {} + +func NewCatalogObjectParentReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CatalogObjectParentReferenceContext { + var p = new(CatalogObjectParentReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_catalogObjectParentReference + + return p +} + +func (s *CatalogObjectParentReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *CatalogObjectParentReferenceContext) SchemaReference() ISchemaReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISchemaReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISchemaReferenceContext) +} + +func (s *CatalogObjectParentReferenceContext) SOLIDUS() antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, 0) +} + +func (s *CatalogObjectParentReferenceContext) AllObjectName() []IObjectNameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IObjectNameContext); ok { + len++ + } + } + + tst := make([]IObjectNameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IObjectNameContext); ok { + tst[i] = t.(IObjectNameContext) + i++ + } + } + + return tst +} + +func (s *CatalogObjectParentReferenceContext) ObjectName(i int) IObjectNameContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IObjectNameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IObjectNameContext) +} + +func (s *CatalogObjectParentReferenceContext) AllPERIOD() []antlr.TerminalNode { + return s.GetTokens(GQLParserPERIOD) +} + +func (s *CatalogObjectParentReferenceContext) PERIOD(i int) antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, i) +} + +func (s *CatalogObjectParentReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CatalogObjectParentReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CatalogObjectParentReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCatalogObjectParentReference(s) + } +} + +func (s *CatalogObjectParentReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCatalogObjectParentReference(s) + } +} + +func (p *GQLParser) CatalogObjectParentReference() (localctx ICatalogObjectParentReferenceContext) { + localctx = NewCatalogObjectParentReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 570, GQLParserRULE_catalogObjectParentReference) + var _la int + + var _alt int + + p.SetState(2782) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_SCHEMA, GQLParserHOME_SCHEMA, GQLParserSUBSTITUTED_PARAMETER_REFERENCE, GQLParserDOUBLE_PERIOD, GQLParserPERIOD, GQLParserSOLIDUS: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2763) + p.SchemaReference() + } + p.SetState(2765) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSOLIDUS { + { + p.SetState(2764) + p.Match(GQLParserSOLIDUS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(2772) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 245, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(2767) + p.ObjectName() + } + { + p.SetState(2768) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(2774) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 245, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 2) + p.SetState(2778) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(2775) + p.ObjectName() + } + { + p.SetState(2776) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + + p.SetState(2780) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 246, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IReferenceParameterSpecificationContext is an interface to support dynamic dispatch. +type IReferenceParameterSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SUBSTITUTED_PARAMETER_REFERENCE() antlr.TerminalNode + + // IsReferenceParameterSpecificationContext differentiates from other interfaces. + IsReferenceParameterSpecificationContext() +} + +type ReferenceParameterSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReferenceParameterSpecificationContext() *ReferenceParameterSpecificationContext { + var p = new(ReferenceParameterSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_referenceParameterSpecification + return p +} + +func InitEmptyReferenceParameterSpecificationContext(p *ReferenceParameterSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_referenceParameterSpecification +} + +func (*ReferenceParameterSpecificationContext) IsReferenceParameterSpecificationContext() {} + +func NewReferenceParameterSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReferenceParameterSpecificationContext { + var p = new(ReferenceParameterSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_referenceParameterSpecification + + return p +} + +func (s *ReferenceParameterSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReferenceParameterSpecificationContext) SUBSTITUTED_PARAMETER_REFERENCE() antlr.TerminalNode { + return s.GetToken(GQLParserSUBSTITUTED_PARAMETER_REFERENCE, 0) +} + +func (s *ReferenceParameterSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReferenceParameterSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReferenceParameterSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReferenceParameterSpecification(s) + } +} + +func (s *ReferenceParameterSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReferenceParameterSpecification(s) + } +} + +func (p *GQLParser) ReferenceParameterSpecification() (localctx IReferenceParameterSpecificationContext) { + localctx = NewReferenceParameterSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 572, GQLParserRULE_referenceParameterSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2784) + p.Match(GQLParserSUBSTITUTED_PARAMETER_REFERENCE) + 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 +} + +// INestedGraphTypeSpecificationContext is an interface to support dynamic dispatch. +type INestedGraphTypeSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + GraphTypeSpecificationBody() IGraphTypeSpecificationBodyContext + RIGHT_BRACE() antlr.TerminalNode + + // IsNestedGraphTypeSpecificationContext differentiates from other interfaces. + IsNestedGraphTypeSpecificationContext() +} + +type NestedGraphTypeSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNestedGraphTypeSpecificationContext() *NestedGraphTypeSpecificationContext { + var p = new(NestedGraphTypeSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedGraphTypeSpecification + return p +} + +func InitEmptyNestedGraphTypeSpecificationContext(p *NestedGraphTypeSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nestedGraphTypeSpecification +} + +func (*NestedGraphTypeSpecificationContext) IsNestedGraphTypeSpecificationContext() {} + +func NewNestedGraphTypeSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NestedGraphTypeSpecificationContext { + var p = new(NestedGraphTypeSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nestedGraphTypeSpecification + + return p +} + +func (s *NestedGraphTypeSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NestedGraphTypeSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *NestedGraphTypeSpecificationContext) GraphTypeSpecificationBody() IGraphTypeSpecificationBodyContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphTypeSpecificationBodyContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphTypeSpecificationBodyContext) +} + +func (s *NestedGraphTypeSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *NestedGraphTypeSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NestedGraphTypeSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NestedGraphTypeSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNestedGraphTypeSpecification(s) + } +} + +func (s *NestedGraphTypeSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNestedGraphTypeSpecification(s) + } +} + +func (p *GQLParser) NestedGraphTypeSpecification() (localctx INestedGraphTypeSpecificationContext) { + localctx = NewNestedGraphTypeSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 574, GQLParserRULE_nestedGraphTypeSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2786) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2787) + p.GraphTypeSpecificationBody() + } + { + p.SetState(2788) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IGraphTypeSpecificationBodyContext is an interface to support dynamic dispatch. +type IGraphTypeSpecificationBodyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementTypeList() IElementTypeListContext + + // IsGraphTypeSpecificationBodyContext differentiates from other interfaces. + IsGraphTypeSpecificationBodyContext() +} + +type GraphTypeSpecificationBodyContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphTypeSpecificationBodyContext() *GraphTypeSpecificationBodyContext { + var p = new(GraphTypeSpecificationBodyContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeSpecificationBody + return p +} + +func InitEmptyGraphTypeSpecificationBodyContext(p *GraphTypeSpecificationBodyContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeSpecificationBody +} + +func (*GraphTypeSpecificationBodyContext) IsGraphTypeSpecificationBodyContext() {} + +func NewGraphTypeSpecificationBodyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphTypeSpecificationBodyContext { + var p = new(GraphTypeSpecificationBodyContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphTypeSpecificationBody + + return p +} + +func (s *GraphTypeSpecificationBodyContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphTypeSpecificationBodyContext) ElementTypeList() IElementTypeListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementTypeListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementTypeListContext) +} + +func (s *GraphTypeSpecificationBodyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphTypeSpecificationBodyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphTypeSpecificationBodyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphTypeSpecificationBody(s) + } +} + +func (s *GraphTypeSpecificationBodyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphTypeSpecificationBody(s) + } +} + +func (p *GQLParser) GraphTypeSpecificationBody() (localctx IGraphTypeSpecificationBodyContext) { + localctx = NewGraphTypeSpecificationBodyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 576, GQLParserRULE_graphTypeSpecificationBody) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2790) + p.ElementTypeList() + } + +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 +} + +// IElementTypeListContext is an interface to support dynamic dispatch. +type IElementTypeListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllElementTypeSpecification() []IElementTypeSpecificationContext + ElementTypeSpecification(i int) IElementTypeSpecificationContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsElementTypeListContext differentiates from other interfaces. + IsElementTypeListContext() +} + +type ElementTypeListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementTypeListContext() *ElementTypeListContext { + var p = new(ElementTypeListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementTypeList + return p +} + +func InitEmptyElementTypeListContext(p *ElementTypeListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementTypeList +} + +func (*ElementTypeListContext) IsElementTypeListContext() {} + +func NewElementTypeListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementTypeListContext { + var p = new(ElementTypeListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementTypeList + + return p +} + +func (s *ElementTypeListContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementTypeListContext) AllElementTypeSpecification() []IElementTypeSpecificationContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IElementTypeSpecificationContext); ok { + len++ + } + } + + tst := make([]IElementTypeSpecificationContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IElementTypeSpecificationContext); ok { + tst[i] = t.(IElementTypeSpecificationContext) + i++ + } + } + + return tst +} + +func (s *ElementTypeListContext) ElementTypeSpecification(i int) IElementTypeSpecificationContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementTypeSpecificationContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IElementTypeSpecificationContext) +} + +func (s *ElementTypeListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *ElementTypeListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *ElementTypeListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementTypeListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementTypeListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementTypeList(s) + } +} + +func (s *ElementTypeListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementTypeList(s) + } +} + +func (p *GQLParser) ElementTypeList() (localctx IElementTypeListContext) { + localctx = NewElementTypeListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 578, GQLParserRULE_elementTypeList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2792) + p.ElementTypeSpecification() + } + p.SetState(2797) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(2793) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2794) + p.ElementTypeSpecification() + } + + p.SetState(2799) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IElementTypeSpecificationContext is an interface to support dynamic dispatch. +type IElementTypeSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypeSpecification() INodeTypeSpecificationContext + EdgeTypeSpecification() IEdgeTypeSpecificationContext + + // IsElementTypeSpecificationContext differentiates from other interfaces. + IsElementTypeSpecificationContext() +} + +type ElementTypeSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementTypeSpecificationContext() *ElementTypeSpecificationContext { + var p = new(ElementTypeSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementTypeSpecification + return p +} + +func InitEmptyElementTypeSpecificationContext(p *ElementTypeSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementTypeSpecification +} + +func (*ElementTypeSpecificationContext) IsElementTypeSpecificationContext() {} + +func NewElementTypeSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementTypeSpecificationContext { + var p = new(ElementTypeSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementTypeSpecification + + return p +} + +func (s *ElementTypeSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementTypeSpecificationContext) NodeTypeSpecification() INodeTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeSpecificationContext) +} + +func (s *ElementTypeSpecificationContext) EdgeTypeSpecification() IEdgeTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeSpecificationContext) +} + +func (s *ElementTypeSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementTypeSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementTypeSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementTypeSpecification(s) + } +} + +func (s *ElementTypeSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementTypeSpecification(s) + } +} + +func (p *GQLParser) ElementTypeSpecification() (localctx IElementTypeSpecificationContext) { + localctx = NewElementTypeSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 580, GQLParserRULE_elementTypeSpecification) + p.SetState(2802) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 249, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2800) + p.NodeTypeSpecification() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2801) + p.EdgeTypeSpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INodeTypeSpecificationContext is an interface to support dynamic dispatch. +type INodeTypeSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypePattern() INodeTypePatternContext + NodeTypePhrase() INodeTypePhraseContext + + // IsNodeTypeSpecificationContext differentiates from other interfaces. + IsNodeTypeSpecificationContext() +} + +type NodeTypeSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeSpecificationContext() *NodeTypeSpecificationContext { + var p = new(NodeTypeSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeSpecification + return p +} + +func InitEmptyNodeTypeSpecificationContext(p *NodeTypeSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeSpecification +} + +func (*NodeTypeSpecificationContext) IsNodeTypeSpecificationContext() {} + +func NewNodeTypeSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeSpecificationContext { + var p = new(NodeTypeSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeSpecification + + return p +} + +func (s *NodeTypeSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeSpecificationContext) NodeTypePattern() INodeTypePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypePatternContext) +} + +func (s *NodeTypeSpecificationContext) NodeTypePhrase() INodeTypePhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypePhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypePhraseContext) +} + +func (s *NodeTypeSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeSpecification(s) + } +} + +func (s *NodeTypeSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeSpecification(s) + } +} + +func (p *GQLParser) NodeTypeSpecification() (localctx INodeTypeSpecificationContext) { + localctx = NewNodeTypeSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 582, GQLParserRULE_nodeTypeSpecification) + p.SetState(2806) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 250, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2804) + p.NodeTypePattern() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2805) + p.NodeTypePhrase() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INodeTypePatternContext is an interface to support dynamic dispatch. +type INodeTypePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + NodeSynonym() INodeSynonymContext + NodeTypeName() INodeTypeNameContext + LocalNodeTypeAlias() ILocalNodeTypeAliasContext + NodeTypeFiller() INodeTypeFillerContext + TYPE() antlr.TerminalNode + + // IsNodeTypePatternContext differentiates from other interfaces. + IsNodeTypePatternContext() +} + +type NodeTypePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypePatternContext() *NodeTypePatternContext { + var p = new(NodeTypePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePattern + return p +} + +func InitEmptyNodeTypePatternContext(p *NodeTypePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePattern +} + +func (*NodeTypePatternContext) IsNodeTypePatternContext() {} + +func NewNodeTypePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypePatternContext { + var p = new(NodeTypePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypePattern + + return p +} + +func (s *NodeTypePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypePatternContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *NodeTypePatternContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *NodeTypePatternContext) NodeSynonym() INodeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeSynonymContext) +} + +func (s *NodeTypePatternContext) NodeTypeName() INodeTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeNameContext) +} + +func (s *NodeTypePatternContext) LocalNodeTypeAlias() ILocalNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocalNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocalNodeTypeAliasContext) +} + +func (s *NodeTypePatternContext) NodeTypeFiller() INodeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeFillerContext) +} + +func (s *NodeTypePatternContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *NodeTypePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypePattern(s) + } +} + +func (s *NodeTypePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypePattern(s) + } +} + +func (p *GQLParser) NodeTypePattern() (localctx INodeTypePatternContext) { + localctx = NewNodeTypePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 584, GQLParserRULE_nodeTypePattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2814) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNODE || _la == GQLParserVERTEX { + { + p.SetState(2808) + p.NodeSynonym() + } + p.SetState(2810) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 251, p.GetParserRuleContext()) == 1 { + { + p.SetState(2809) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2812) + p.NodeTypeName() + } + + } + { + p.SetState(2816) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2818) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 253, p.GetParserRuleContext()) == 1 { + { + p.SetState(2817) + p.LocalNodeTypeAlias() + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(2821) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIMPLIES || _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2820) + p.NodeTypeFiller() + } + + } + { + p.SetState(2823) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INodeTypePhraseContext is an interface to support dynamic dispatch. +type INodeTypePhraseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeSynonym() INodeSynonymContext + NodeTypePhraseFiller() INodeTypePhraseFillerContext + TYPE() antlr.TerminalNode + AS() antlr.TerminalNode + LocalNodeTypeAlias() ILocalNodeTypeAliasContext + + // IsNodeTypePhraseContext differentiates from other interfaces. + IsNodeTypePhraseContext() +} + +type NodeTypePhraseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypePhraseContext() *NodeTypePhraseContext { + var p = new(NodeTypePhraseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePhrase + return p +} + +func InitEmptyNodeTypePhraseContext(p *NodeTypePhraseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePhrase +} + +func (*NodeTypePhraseContext) IsNodeTypePhraseContext() {} + +func NewNodeTypePhraseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypePhraseContext { + var p = new(NodeTypePhraseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypePhrase + + return p +} + +func (s *NodeTypePhraseContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypePhraseContext) NodeSynonym() INodeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeSynonymContext) +} + +func (s *NodeTypePhraseContext) NodeTypePhraseFiller() INodeTypePhraseFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypePhraseFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypePhraseFillerContext) +} + +func (s *NodeTypePhraseContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *NodeTypePhraseContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *NodeTypePhraseContext) LocalNodeTypeAlias() ILocalNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocalNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocalNodeTypeAliasContext) +} + +func (s *NodeTypePhraseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypePhraseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypePhraseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypePhrase(s) + } +} + +func (s *NodeTypePhraseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypePhrase(s) + } +} + +func (p *GQLParser) NodeTypePhrase() (localctx INodeTypePhraseContext) { + localctx = NewNodeTypePhraseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 586, GQLParserRULE_nodeTypePhrase) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2825) + p.NodeSynonym() + } + p.SetState(2827) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 255, p.GetParserRuleContext()) == 1 { + { + p.SetState(2826) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2829) + p.NodeTypePhraseFiller() + } + p.SetState(2832) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 256, p.GetParserRuleContext()) == 1 { + { + p.SetState(2830) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2831) + p.LocalNodeTypeAlias() + } + + } else if p.HasError() { // JIM + 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 +} + +// INodeTypePhraseFillerContext is an interface to support dynamic dispatch. +type INodeTypePhraseFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypeName() INodeTypeNameContext + NodeTypeFiller() INodeTypeFillerContext + + // IsNodeTypePhraseFillerContext differentiates from other interfaces. + IsNodeTypePhraseFillerContext() +} + +type NodeTypePhraseFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypePhraseFillerContext() *NodeTypePhraseFillerContext { + var p = new(NodeTypePhraseFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePhraseFiller + return p +} + +func InitEmptyNodeTypePhraseFillerContext(p *NodeTypePhraseFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePhraseFiller +} + +func (*NodeTypePhraseFillerContext) IsNodeTypePhraseFillerContext() {} + +func NewNodeTypePhraseFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypePhraseFillerContext { + var p = new(NodeTypePhraseFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypePhraseFiller + + return p +} + +func (s *NodeTypePhraseFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypePhraseFillerContext) NodeTypeName() INodeTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeNameContext) +} + +func (s *NodeTypePhraseFillerContext) NodeTypeFiller() INodeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeFillerContext) +} + +func (s *NodeTypePhraseFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypePhraseFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypePhraseFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypePhraseFiller(s) + } +} + +func (s *NodeTypePhraseFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypePhraseFiller(s) + } +} + +func (p *GQLParser) NodeTypePhraseFiller() (localctx INodeTypePhraseFillerContext) { + localctx = NewNodeTypePhraseFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 588, GQLParserRULE_nodeTypePhraseFiller) + p.SetState(2839) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 258, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2834) + p.NodeTypeName() + } + p.SetState(2836) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 257, p.GetParserRuleContext()) == 1 { + { + p.SetState(2835) + p.NodeTypeFiller() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2838) + p.NodeTypeFiller() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INodeTypeFillerContext is an interface to support dynamic dispatch. +type INodeTypeFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypeKeyLabelSet() INodeTypeKeyLabelSetContext + NodeTypeImpliedContent() INodeTypeImpliedContentContext + + // IsNodeTypeFillerContext differentiates from other interfaces. + IsNodeTypeFillerContext() +} + +type NodeTypeFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeFillerContext() *NodeTypeFillerContext { + var p = new(NodeTypeFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeFiller + return p +} + +func InitEmptyNodeTypeFillerContext(p *NodeTypeFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeFiller +} + +func (*NodeTypeFillerContext) IsNodeTypeFillerContext() {} + +func NewNodeTypeFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeFillerContext { + var p = new(NodeTypeFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeFiller + + return p +} + +func (s *NodeTypeFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeFillerContext) NodeTypeKeyLabelSet() INodeTypeKeyLabelSetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeKeyLabelSetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeKeyLabelSetContext) +} + +func (s *NodeTypeFillerContext) NodeTypeImpliedContent() INodeTypeImpliedContentContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeImpliedContentContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeImpliedContentContext) +} + +func (s *NodeTypeFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeFiller(s) + } +} + +func (s *NodeTypeFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeFiller(s) + } +} + +func (p *GQLParser) NodeTypeFiller() (localctx INodeTypeFillerContext) { + localctx = NewNodeTypeFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 590, GQLParserRULE_nodeTypeFiller) + p.SetState(2846) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 260, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2841) + p.NodeTypeKeyLabelSet() + } + p.SetState(2843) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 259, p.GetParserRuleContext()) == 1 { + { + p.SetState(2842) + p.NodeTypeImpliedContent() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2845) + p.NodeTypeImpliedContent() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ILocalNodeTypeAliasContext is an interface to support dynamic dispatch. +type ILocalNodeTypeAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsLocalNodeTypeAliasContext differentiates from other interfaces. + IsLocalNodeTypeAliasContext() +} + +type LocalNodeTypeAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLocalNodeTypeAliasContext() *LocalNodeTypeAliasContext { + var p = new(LocalNodeTypeAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localNodeTypeAlias + return p +} + +func InitEmptyLocalNodeTypeAliasContext(p *LocalNodeTypeAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localNodeTypeAlias +} + +func (*LocalNodeTypeAliasContext) IsLocalNodeTypeAliasContext() {} + +func NewLocalNodeTypeAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LocalNodeTypeAliasContext { + var p = new(LocalNodeTypeAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_localNodeTypeAlias + + return p +} + +func (s *LocalNodeTypeAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *LocalNodeTypeAliasContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *LocalNodeTypeAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LocalNodeTypeAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LocalNodeTypeAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLocalNodeTypeAlias(s) + } +} + +func (s *LocalNodeTypeAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLocalNodeTypeAlias(s) + } +} + +func (p *GQLParser) LocalNodeTypeAlias() (localctx ILocalNodeTypeAliasContext) { + localctx = NewLocalNodeTypeAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 592, GQLParserRULE_localNodeTypeAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2848) + p.RegularIdentifier() + } + +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 +} + +// INodeTypeImpliedContentContext is an interface to support dynamic dispatch. +type INodeTypeImpliedContentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypeLabelSet() INodeTypeLabelSetContext + NodeTypePropertyTypes() INodeTypePropertyTypesContext + + // IsNodeTypeImpliedContentContext differentiates from other interfaces. + IsNodeTypeImpliedContentContext() +} + +type NodeTypeImpliedContentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeImpliedContentContext() *NodeTypeImpliedContentContext { + var p = new(NodeTypeImpliedContentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeImpliedContent + return p +} + +func InitEmptyNodeTypeImpliedContentContext(p *NodeTypeImpliedContentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeImpliedContent +} + +func (*NodeTypeImpliedContentContext) IsNodeTypeImpliedContentContext() {} + +func NewNodeTypeImpliedContentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeImpliedContentContext { + var p = new(NodeTypeImpliedContentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeImpliedContent + + return p +} + +func (s *NodeTypeImpliedContentContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeImpliedContentContext) NodeTypeLabelSet() INodeTypeLabelSetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeLabelSetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeLabelSetContext) +} + +func (s *NodeTypeImpliedContentContext) NodeTypePropertyTypes() INodeTypePropertyTypesContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypePropertyTypesContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypePropertyTypesContext) +} + +func (s *NodeTypeImpliedContentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeImpliedContentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeImpliedContentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeImpliedContent(s) + } +} + +func (s *NodeTypeImpliedContentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeImpliedContent(s) + } +} + +func (p *GQLParser) NodeTypeImpliedContent() (localctx INodeTypeImpliedContentContext) { + localctx = NewNodeTypeImpliedContentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 594, GQLParserRULE_nodeTypeImpliedContent) + p.SetState(2855) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 261, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2850) + p.NodeTypeLabelSet() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2851) + p.NodeTypePropertyTypes() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2852) + p.NodeTypeLabelSet() + } + { + p.SetState(2853) + p.NodeTypePropertyTypes() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INodeTypeKeyLabelSetContext is an interface to support dynamic dispatch. +type INodeTypeKeyLabelSetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IMPLIES() antlr.TerminalNode + LabelSetPhrase() ILabelSetPhraseContext + + // IsNodeTypeKeyLabelSetContext differentiates from other interfaces. + IsNodeTypeKeyLabelSetContext() +} + +type NodeTypeKeyLabelSetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeKeyLabelSetContext() *NodeTypeKeyLabelSetContext { + var p = new(NodeTypeKeyLabelSetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeKeyLabelSet + return p +} + +func InitEmptyNodeTypeKeyLabelSetContext(p *NodeTypeKeyLabelSetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeKeyLabelSet +} + +func (*NodeTypeKeyLabelSetContext) IsNodeTypeKeyLabelSetContext() {} + +func NewNodeTypeKeyLabelSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeKeyLabelSetContext { + var p = new(NodeTypeKeyLabelSetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeKeyLabelSet + + return p +} + +func (s *NodeTypeKeyLabelSetContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeKeyLabelSetContext) IMPLIES() antlr.TerminalNode { + return s.GetToken(GQLParserIMPLIES, 0) +} + +func (s *NodeTypeKeyLabelSetContext) LabelSetPhrase() ILabelSetPhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetPhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetPhraseContext) +} + +func (s *NodeTypeKeyLabelSetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeKeyLabelSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeKeyLabelSetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeKeyLabelSet(s) + } +} + +func (s *NodeTypeKeyLabelSetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeKeyLabelSet(s) + } +} + +func (p *GQLParser) NodeTypeKeyLabelSet() (localctx INodeTypeKeyLabelSetContext) { + localctx = NewNodeTypeKeyLabelSetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 596, GQLParserRULE_nodeTypeKeyLabelSet) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2858) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON { + { + p.SetState(2857) + p.LabelSetPhrase() + } + + } + { + p.SetState(2860) + p.Match(GQLParserIMPLIES) + 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 +} + +// INodeTypeLabelSetContext is an interface to support dynamic dispatch. +type INodeTypeLabelSetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LabelSetPhrase() ILabelSetPhraseContext + + // IsNodeTypeLabelSetContext differentiates from other interfaces. + IsNodeTypeLabelSetContext() +} + +type NodeTypeLabelSetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeLabelSetContext() *NodeTypeLabelSetContext { + var p = new(NodeTypeLabelSetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeLabelSet + return p +} + +func InitEmptyNodeTypeLabelSetContext(p *NodeTypeLabelSetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeLabelSet +} + +func (*NodeTypeLabelSetContext) IsNodeTypeLabelSetContext() {} + +func NewNodeTypeLabelSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeLabelSetContext { + var p = new(NodeTypeLabelSetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeLabelSet + + return p +} + +func (s *NodeTypeLabelSetContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeLabelSetContext) LabelSetPhrase() ILabelSetPhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetPhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetPhraseContext) +} + +func (s *NodeTypeLabelSetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeLabelSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeLabelSetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeLabelSet(s) + } +} + +func (s *NodeTypeLabelSetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeLabelSet(s) + } +} + +func (p *GQLParser) NodeTypeLabelSet() (localctx INodeTypeLabelSetContext) { + localctx = NewNodeTypeLabelSetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 598, GQLParserRULE_nodeTypeLabelSet) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2862) + p.LabelSetPhrase() + } + +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 +} + +// INodeTypePropertyTypesContext is an interface to support dynamic dispatch. +type INodeTypePropertyTypesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PropertyTypesSpecification() IPropertyTypesSpecificationContext + + // IsNodeTypePropertyTypesContext differentiates from other interfaces. + IsNodeTypePropertyTypesContext() +} + +type NodeTypePropertyTypesContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypePropertyTypesContext() *NodeTypePropertyTypesContext { + var p = new(NodeTypePropertyTypesContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePropertyTypes + return p +} + +func InitEmptyNodeTypePropertyTypesContext(p *NodeTypePropertyTypesContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypePropertyTypes +} + +func (*NodeTypePropertyTypesContext) IsNodeTypePropertyTypesContext() {} + +func NewNodeTypePropertyTypesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypePropertyTypesContext { + var p = new(NodeTypePropertyTypesContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypePropertyTypes + + return p +} + +func (s *NodeTypePropertyTypesContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypePropertyTypesContext) PropertyTypesSpecification() IPropertyTypesSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyTypesSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyTypesSpecificationContext) +} + +func (s *NodeTypePropertyTypesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypePropertyTypesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypePropertyTypesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypePropertyTypes(s) + } +} + +func (s *NodeTypePropertyTypesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypePropertyTypes(s) + } +} + +func (p *GQLParser) NodeTypePropertyTypes() (localctx INodeTypePropertyTypesContext) { + localctx = NewNodeTypePropertyTypesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 600, GQLParserRULE_nodeTypePropertyTypes) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2864) + p.PropertyTypesSpecification() + } + +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 +} + +// IEdgeTypeSpecificationContext is an interface to support dynamic dispatch. +type IEdgeTypeSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypePattern() IEdgeTypePatternContext + EdgeTypePhrase() IEdgeTypePhraseContext + + // IsEdgeTypeSpecificationContext differentiates from other interfaces. + IsEdgeTypeSpecificationContext() +} + +type EdgeTypeSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeSpecificationContext() *EdgeTypeSpecificationContext { + var p = new(EdgeTypeSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeSpecification + return p +} + +func InitEmptyEdgeTypeSpecificationContext(p *EdgeTypeSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeSpecification +} + +func (*EdgeTypeSpecificationContext) IsEdgeTypeSpecificationContext() {} + +func NewEdgeTypeSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeSpecificationContext { + var p = new(EdgeTypeSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeSpecification + + return p +} + +func (s *EdgeTypeSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeSpecificationContext) EdgeTypePattern() IEdgeTypePatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePatternContext) +} + +func (s *EdgeTypeSpecificationContext) EdgeTypePhrase() IEdgeTypePhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePhraseContext) +} + +func (s *EdgeTypeSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeSpecification(s) + } +} + +func (s *EdgeTypeSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeSpecification(s) + } +} + +func (p *GQLParser) EdgeTypeSpecification() (localctx IEdgeTypeSpecificationContext) { + localctx = NewEdgeTypeSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 602, GQLParserRULE_edgeTypeSpecification) + p.SetState(2868) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 263, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2866) + p.EdgeTypePattern() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2867) + p.EdgeTypePhrase() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypePatternContext is an interface to support dynamic dispatch. +type IEdgeTypePatternContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypePatternDirected() IEdgeTypePatternDirectedContext + EdgeTypePatternUndirected() IEdgeTypePatternUndirectedContext + EdgeSynonym() IEdgeSynonymContext + EdgeTypeName() IEdgeTypeNameContext + EdgeKind() IEdgeKindContext + TYPE() antlr.TerminalNode + + // IsEdgeTypePatternContext differentiates from other interfaces. + IsEdgeTypePatternContext() +} + +type EdgeTypePatternContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePatternContext() *EdgeTypePatternContext { + var p = new(EdgeTypePatternContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePattern + return p +} + +func InitEmptyEdgeTypePatternContext(p *EdgeTypePatternContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePattern +} + +func (*EdgeTypePatternContext) IsEdgeTypePatternContext() {} + +func NewEdgeTypePatternContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePatternContext { + var p = new(EdgeTypePatternContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePattern + + return p +} + +func (s *EdgeTypePatternContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePatternContext) EdgeTypePatternDirected() IEdgeTypePatternDirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePatternDirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePatternDirectedContext) +} + +func (s *EdgeTypePatternContext) EdgeTypePatternUndirected() IEdgeTypePatternUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePatternUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePatternUndirectedContext) +} + +func (s *EdgeTypePatternContext) EdgeSynonym() IEdgeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeSynonymContext) +} + +func (s *EdgeTypePatternContext) EdgeTypeName() IEdgeTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeNameContext) +} + +func (s *EdgeTypePatternContext) EdgeKind() IEdgeKindContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeKindContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeKindContext) +} + +func (s *EdgeTypePatternContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *EdgeTypePatternContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePatternContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePatternContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePattern(s) + } +} + +func (s *EdgeTypePatternContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePattern(s) + } +} + +func (p *GQLParser) EdgeTypePattern() (localctx IEdgeTypePatternContext) { + localctx = NewEdgeTypePatternContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 604, GQLParserRULE_edgeTypePattern) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2879) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-283)) & ^0x3f) == 0 && ((int64(1)<<(_la-283))&34376515587) != 0 { + p.SetState(2871) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDIRECTED || _la == GQLParserUNDIRECTED { + { + p.SetState(2870) + p.EdgeKind() + } + + } + { + p.SetState(2873) + p.EdgeSynonym() + } + p.SetState(2875) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 265, p.GetParserRuleContext()) == 1 { + { + p.SetState(2874) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2877) + p.EdgeTypeName() + } + + } + p.SetState(2883) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 267, p.GetParserRuleContext()) { + case 1: + { + p.SetState(2881) + p.EdgeTypePatternDirected() + } + + case 2: + { + p.SetState(2882) + p.EdgeTypePatternUndirected() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypePhraseContext is an interface to support dynamic dispatch. +type IEdgeTypePhraseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeKind() IEdgeKindContext + EdgeSynonym() IEdgeSynonymContext + EdgeTypePhraseFiller() IEdgeTypePhraseFillerContext + EndpointPairPhrase() IEndpointPairPhraseContext + TYPE() antlr.TerminalNode + + // IsEdgeTypePhraseContext differentiates from other interfaces. + IsEdgeTypePhraseContext() +} + +type EdgeTypePhraseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePhraseContext() *EdgeTypePhraseContext { + var p = new(EdgeTypePhraseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePhrase + return p +} + +func InitEmptyEdgeTypePhraseContext(p *EdgeTypePhraseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePhrase +} + +func (*EdgeTypePhraseContext) IsEdgeTypePhraseContext() {} + +func NewEdgeTypePhraseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePhraseContext { + var p = new(EdgeTypePhraseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePhrase + + return p +} + +func (s *EdgeTypePhraseContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePhraseContext) EdgeKind() IEdgeKindContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeKindContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeKindContext) +} + +func (s *EdgeTypePhraseContext) EdgeSynonym() IEdgeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeSynonymContext) +} + +func (s *EdgeTypePhraseContext) EdgeTypePhraseFiller() IEdgeTypePhraseFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePhraseFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePhraseFillerContext) +} + +func (s *EdgeTypePhraseContext) EndpointPairPhrase() IEndpointPairPhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairPhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairPhraseContext) +} + +func (s *EdgeTypePhraseContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *EdgeTypePhraseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePhraseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePhraseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePhrase(s) + } +} + +func (s *EdgeTypePhraseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePhrase(s) + } +} + +func (p *GQLParser) EdgeTypePhrase() (localctx IEdgeTypePhraseContext) { + localctx = NewEdgeTypePhraseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 606, GQLParserRULE_edgeTypePhrase) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2885) + p.EdgeKind() + } + { + p.SetState(2886) + p.EdgeSynonym() + } + p.SetState(2888) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 268, p.GetParserRuleContext()) == 1 { + { + p.SetState(2887) + p.Match(GQLParserTYPE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(2890) + p.EdgeTypePhraseFiller() + } + { + p.SetState(2891) + p.EndpointPairPhrase() + } + +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 +} + +// IEdgeTypePhraseFillerContext is an interface to support dynamic dispatch. +type IEdgeTypePhraseFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypeName() IEdgeTypeNameContext + EdgeTypeFiller() IEdgeTypeFillerContext + + // IsEdgeTypePhraseFillerContext differentiates from other interfaces. + IsEdgeTypePhraseFillerContext() +} + +type EdgeTypePhraseFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePhraseFillerContext() *EdgeTypePhraseFillerContext { + var p = new(EdgeTypePhraseFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePhraseFiller + return p +} + +func InitEmptyEdgeTypePhraseFillerContext(p *EdgeTypePhraseFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePhraseFiller +} + +func (*EdgeTypePhraseFillerContext) IsEdgeTypePhraseFillerContext() {} + +func NewEdgeTypePhraseFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePhraseFillerContext { + var p = new(EdgeTypePhraseFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePhraseFiller + + return p +} + +func (s *EdgeTypePhraseFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePhraseFillerContext) EdgeTypeName() IEdgeTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeNameContext) +} + +func (s *EdgeTypePhraseFillerContext) EdgeTypeFiller() IEdgeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeFillerContext) +} + +func (s *EdgeTypePhraseFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePhraseFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePhraseFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePhraseFiller(s) + } +} + +func (s *EdgeTypePhraseFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePhraseFiller(s) + } +} + +func (p *GQLParser) EdgeTypePhraseFiller() (localctx IEdgeTypePhraseFillerContext) { + localctx = NewEdgeTypePhraseFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 608, GQLParserRULE_edgeTypePhraseFiller) + var _la int + + p.SetState(2898) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 270, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2893) + p.EdgeTypeName() + } + p.SetState(2895) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIMPLIES || _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2894) + p.EdgeTypeFiller() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2897) + p.EdgeTypeFiller() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypeFillerContext is an interface to support dynamic dispatch. +type IEdgeTypeFillerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypeKeyLabelSet() IEdgeTypeKeyLabelSetContext + EdgeTypeImpliedContent() IEdgeTypeImpliedContentContext + + // IsEdgeTypeFillerContext differentiates from other interfaces. + IsEdgeTypeFillerContext() +} + +type EdgeTypeFillerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeFillerContext() *EdgeTypeFillerContext { + var p = new(EdgeTypeFillerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeFiller + return p +} + +func InitEmptyEdgeTypeFillerContext(p *EdgeTypeFillerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeFiller +} + +func (*EdgeTypeFillerContext) IsEdgeTypeFillerContext() {} + +func NewEdgeTypeFillerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeFillerContext { + var p = new(EdgeTypeFillerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeFiller + + return p +} + +func (s *EdgeTypeFillerContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeFillerContext) EdgeTypeKeyLabelSet() IEdgeTypeKeyLabelSetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeKeyLabelSetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeKeyLabelSetContext) +} + +func (s *EdgeTypeFillerContext) EdgeTypeImpliedContent() IEdgeTypeImpliedContentContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeImpliedContentContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeImpliedContentContext) +} + +func (s *EdgeTypeFillerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeFillerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeFillerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeFiller(s) + } +} + +func (s *EdgeTypeFillerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeFiller(s) + } +} + +func (p *GQLParser) EdgeTypeFiller() (localctx IEdgeTypeFillerContext) { + localctx = NewEdgeTypeFillerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 610, GQLParserRULE_edgeTypeFiller) + var _la int + + p.SetState(2905) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 272, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2900) + p.EdgeTypeKeyLabelSet() + } + p.SetState(2902) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2901) + p.EdgeTypeImpliedContent() + } + + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2904) + p.EdgeTypeImpliedContent() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypeImpliedContentContext is an interface to support dynamic dispatch. +type IEdgeTypeImpliedContentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypeLabelSet() IEdgeTypeLabelSetContext + EdgeTypePropertyTypes() IEdgeTypePropertyTypesContext + + // IsEdgeTypeImpliedContentContext differentiates from other interfaces. + IsEdgeTypeImpliedContentContext() +} + +type EdgeTypeImpliedContentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeImpliedContentContext() *EdgeTypeImpliedContentContext { + var p = new(EdgeTypeImpliedContentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeImpliedContent + return p +} + +func InitEmptyEdgeTypeImpliedContentContext(p *EdgeTypeImpliedContentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeImpliedContent +} + +func (*EdgeTypeImpliedContentContext) IsEdgeTypeImpliedContentContext() {} + +func NewEdgeTypeImpliedContentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeImpliedContentContext { + var p = new(EdgeTypeImpliedContentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeImpliedContent + + return p +} + +func (s *EdgeTypeImpliedContentContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeImpliedContentContext) EdgeTypeLabelSet() IEdgeTypeLabelSetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeLabelSetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeLabelSetContext) +} + +func (s *EdgeTypeImpliedContentContext) EdgeTypePropertyTypes() IEdgeTypePropertyTypesContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePropertyTypesContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePropertyTypesContext) +} + +func (s *EdgeTypeImpliedContentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeImpliedContentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeImpliedContentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeImpliedContent(s) + } +} + +func (s *EdgeTypeImpliedContentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeImpliedContent(s) + } +} + +func (p *GQLParser) EdgeTypeImpliedContent() (localctx IEdgeTypeImpliedContentContext) { + localctx = NewEdgeTypeImpliedContentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 612, GQLParserRULE_edgeTypeImpliedContent) + p.SetState(2912) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 273, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2907) + p.EdgeTypeLabelSet() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2908) + p.EdgeTypePropertyTypes() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(2909) + p.EdgeTypeLabelSet() + } + { + p.SetState(2910) + p.EdgeTypePropertyTypes() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypeKeyLabelSetContext is an interface to support dynamic dispatch. +type IEdgeTypeKeyLabelSetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IMPLIES() antlr.TerminalNode + LabelSetPhrase() ILabelSetPhraseContext + + // IsEdgeTypeKeyLabelSetContext differentiates from other interfaces. + IsEdgeTypeKeyLabelSetContext() +} + +type EdgeTypeKeyLabelSetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeKeyLabelSetContext() *EdgeTypeKeyLabelSetContext { + var p = new(EdgeTypeKeyLabelSetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeKeyLabelSet + return p +} + +func InitEmptyEdgeTypeKeyLabelSetContext(p *EdgeTypeKeyLabelSetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeKeyLabelSet +} + +func (*EdgeTypeKeyLabelSetContext) IsEdgeTypeKeyLabelSetContext() {} + +func NewEdgeTypeKeyLabelSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeKeyLabelSetContext { + var p = new(EdgeTypeKeyLabelSetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeKeyLabelSet + + return p +} + +func (s *EdgeTypeKeyLabelSetContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeKeyLabelSetContext) IMPLIES() antlr.TerminalNode { + return s.GetToken(GQLParserIMPLIES, 0) +} + +func (s *EdgeTypeKeyLabelSetContext) LabelSetPhrase() ILabelSetPhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetPhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetPhraseContext) +} + +func (s *EdgeTypeKeyLabelSetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeKeyLabelSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeKeyLabelSetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeKeyLabelSet(s) + } +} + +func (s *EdgeTypeKeyLabelSetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeKeyLabelSet(s) + } +} + +func (p *GQLParser) EdgeTypeKeyLabelSet() (localctx IEdgeTypeKeyLabelSetContext) { + localctx = NewEdgeTypeKeyLabelSetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 614, GQLParserRULE_edgeTypeKeyLabelSet) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(2915) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON { + { + p.SetState(2914) + p.LabelSetPhrase() + } + + } + { + p.SetState(2917) + p.Match(GQLParserIMPLIES) + 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 +} + +// IEdgeTypeLabelSetContext is an interface to support dynamic dispatch. +type IEdgeTypeLabelSetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LabelSetPhrase() ILabelSetPhraseContext + + // IsEdgeTypeLabelSetContext differentiates from other interfaces. + IsEdgeTypeLabelSetContext() +} + +type EdgeTypeLabelSetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeLabelSetContext() *EdgeTypeLabelSetContext { + var p = new(EdgeTypeLabelSetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeLabelSet + return p +} + +func InitEmptyEdgeTypeLabelSetContext(p *EdgeTypeLabelSetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeLabelSet +} + +func (*EdgeTypeLabelSetContext) IsEdgeTypeLabelSetContext() {} + +func NewEdgeTypeLabelSetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeLabelSetContext { + var p = new(EdgeTypeLabelSetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeLabelSet + + return p +} + +func (s *EdgeTypeLabelSetContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeLabelSetContext) LabelSetPhrase() ILabelSetPhraseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetPhraseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetPhraseContext) +} + +func (s *EdgeTypeLabelSetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeLabelSetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeLabelSetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeLabelSet(s) + } +} + +func (s *EdgeTypeLabelSetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeLabelSet(s) + } +} + +func (p *GQLParser) EdgeTypeLabelSet() (localctx IEdgeTypeLabelSetContext) { + localctx = NewEdgeTypeLabelSetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 616, GQLParserRULE_edgeTypeLabelSet) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2919) + p.LabelSetPhrase() + } + +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 +} + +// IEdgeTypePropertyTypesContext is an interface to support dynamic dispatch. +type IEdgeTypePropertyTypesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PropertyTypesSpecification() IPropertyTypesSpecificationContext + + // IsEdgeTypePropertyTypesContext differentiates from other interfaces. + IsEdgeTypePropertyTypesContext() +} + +type EdgeTypePropertyTypesContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePropertyTypesContext() *EdgeTypePropertyTypesContext { + var p = new(EdgeTypePropertyTypesContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePropertyTypes + return p +} + +func InitEmptyEdgeTypePropertyTypesContext(p *EdgeTypePropertyTypesContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePropertyTypes +} + +func (*EdgeTypePropertyTypesContext) IsEdgeTypePropertyTypesContext() {} + +func NewEdgeTypePropertyTypesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePropertyTypesContext { + var p = new(EdgeTypePropertyTypesContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePropertyTypes + + return p +} + +func (s *EdgeTypePropertyTypesContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePropertyTypesContext) PropertyTypesSpecification() IPropertyTypesSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyTypesSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyTypesSpecificationContext) +} + +func (s *EdgeTypePropertyTypesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePropertyTypesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePropertyTypesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePropertyTypes(s) + } +} + +func (s *EdgeTypePropertyTypesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePropertyTypes(s) + } +} + +func (p *GQLParser) EdgeTypePropertyTypes() (localctx IEdgeTypePropertyTypesContext) { + localctx = NewEdgeTypePropertyTypesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 618, GQLParserRULE_edgeTypePropertyTypes) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2921) + p.PropertyTypesSpecification() + } + +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 +} + +// IEdgeTypePatternDirectedContext is an interface to support dynamic dispatch. +type IEdgeTypePatternDirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypePatternPointingRight() IEdgeTypePatternPointingRightContext + EdgeTypePatternPointingLeft() IEdgeTypePatternPointingLeftContext + + // IsEdgeTypePatternDirectedContext differentiates from other interfaces. + IsEdgeTypePatternDirectedContext() +} + +type EdgeTypePatternDirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePatternDirectedContext() *EdgeTypePatternDirectedContext { + var p = new(EdgeTypePatternDirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternDirected + return p +} + +func InitEmptyEdgeTypePatternDirectedContext(p *EdgeTypePatternDirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternDirected +} + +func (*EdgeTypePatternDirectedContext) IsEdgeTypePatternDirectedContext() {} + +func NewEdgeTypePatternDirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePatternDirectedContext { + var p = new(EdgeTypePatternDirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePatternDirected + + return p +} + +func (s *EdgeTypePatternDirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePatternDirectedContext) EdgeTypePatternPointingRight() IEdgeTypePatternPointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePatternPointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePatternPointingRightContext) +} + +func (s *EdgeTypePatternDirectedContext) EdgeTypePatternPointingLeft() IEdgeTypePatternPointingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypePatternPointingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypePatternPointingLeftContext) +} + +func (s *EdgeTypePatternDirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePatternDirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePatternDirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePatternDirected(s) + } +} + +func (s *EdgeTypePatternDirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePatternDirected(s) + } +} + +func (p *GQLParser) EdgeTypePatternDirected() (localctx IEdgeTypePatternDirectedContext) { + localctx = NewEdgeTypePatternDirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 620, GQLParserRULE_edgeTypePatternDirected) + p.SetState(2925) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 275, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2923) + p.EdgeTypePatternPointingRight() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2924) + p.EdgeTypePatternPointingLeft() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeTypePatternPointingRightContext is an interface to support dynamic dispatch. +type IEdgeTypePatternPointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SourceNodeTypeReference() ISourceNodeTypeReferenceContext + ArcTypePointingRight() IArcTypePointingRightContext + DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext + + // IsEdgeTypePatternPointingRightContext differentiates from other interfaces. + IsEdgeTypePatternPointingRightContext() +} + +type EdgeTypePatternPointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePatternPointingRightContext() *EdgeTypePatternPointingRightContext { + var p = new(EdgeTypePatternPointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingRight + return p +} + +func InitEmptyEdgeTypePatternPointingRightContext(p *EdgeTypePatternPointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingRight +} + +func (*EdgeTypePatternPointingRightContext) IsEdgeTypePatternPointingRightContext() {} + +func NewEdgeTypePatternPointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePatternPointingRightContext { + var p = new(EdgeTypePatternPointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingRight + + return p +} + +func (s *EdgeTypePatternPointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePatternPointingRightContext) SourceNodeTypeReference() ISourceNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternPointingRightContext) ArcTypePointingRight() IArcTypePointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArcTypePointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IArcTypePointingRightContext) +} + +func (s *EdgeTypePatternPointingRightContext) DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternPointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePatternPointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePatternPointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePatternPointingRight(s) + } +} + +func (s *EdgeTypePatternPointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePatternPointingRight(s) + } +} + +func (p *GQLParser) EdgeTypePatternPointingRight() (localctx IEdgeTypePatternPointingRightContext) { + localctx = NewEdgeTypePatternPointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 622, GQLParserRULE_edgeTypePatternPointingRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2927) + p.SourceNodeTypeReference() + } + { + p.SetState(2928) + p.ArcTypePointingRight() + } + { + p.SetState(2929) + p.DestinationNodeTypeReference() + } + +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 +} + +// IEdgeTypePatternPointingLeftContext is an interface to support dynamic dispatch. +type IEdgeTypePatternPointingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext + ArcTypePointingLeft() IArcTypePointingLeftContext + SourceNodeTypeReference() ISourceNodeTypeReferenceContext + + // IsEdgeTypePatternPointingLeftContext differentiates from other interfaces. + IsEdgeTypePatternPointingLeftContext() +} + +type EdgeTypePatternPointingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePatternPointingLeftContext() *EdgeTypePatternPointingLeftContext { + var p = new(EdgeTypePatternPointingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingLeft + return p +} + +func InitEmptyEdgeTypePatternPointingLeftContext(p *EdgeTypePatternPointingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingLeft +} + +func (*EdgeTypePatternPointingLeftContext) IsEdgeTypePatternPointingLeftContext() {} + +func NewEdgeTypePatternPointingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePatternPointingLeftContext { + var p = new(EdgeTypePatternPointingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePatternPointingLeft + + return p +} + +func (s *EdgeTypePatternPointingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePatternPointingLeftContext) DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternPointingLeftContext) ArcTypePointingLeft() IArcTypePointingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArcTypePointingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IArcTypePointingLeftContext) +} + +func (s *EdgeTypePatternPointingLeftContext) SourceNodeTypeReference() ISourceNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternPointingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePatternPointingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePatternPointingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePatternPointingLeft(s) + } +} + +func (s *EdgeTypePatternPointingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePatternPointingLeft(s) + } +} + +func (p *GQLParser) EdgeTypePatternPointingLeft() (localctx IEdgeTypePatternPointingLeftContext) { + localctx = NewEdgeTypePatternPointingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 624, GQLParserRULE_edgeTypePatternPointingLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2931) + p.DestinationNodeTypeReference() + } + { + p.SetState(2932) + p.ArcTypePointingLeft() + } + { + p.SetState(2933) + p.SourceNodeTypeReference() + } + +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 +} + +// IEdgeTypePatternUndirectedContext is an interface to support dynamic dispatch. +type IEdgeTypePatternUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SourceNodeTypeReference() ISourceNodeTypeReferenceContext + ArcTypeUndirected() IArcTypeUndirectedContext + DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext + + // IsEdgeTypePatternUndirectedContext differentiates from other interfaces. + IsEdgeTypePatternUndirectedContext() +} + +type EdgeTypePatternUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypePatternUndirectedContext() *EdgeTypePatternUndirectedContext { + var p = new(EdgeTypePatternUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternUndirected + return p +} + +func InitEmptyEdgeTypePatternUndirectedContext(p *EdgeTypePatternUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypePatternUndirected +} + +func (*EdgeTypePatternUndirectedContext) IsEdgeTypePatternUndirectedContext() {} + +func NewEdgeTypePatternUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypePatternUndirectedContext { + var p = new(EdgeTypePatternUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypePatternUndirected + + return p +} + +func (s *EdgeTypePatternUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypePatternUndirectedContext) SourceNodeTypeReference() ISourceNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternUndirectedContext) ArcTypeUndirected() IArcTypeUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IArcTypeUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IArcTypeUndirectedContext) +} + +func (s *EdgeTypePatternUndirectedContext) DestinationNodeTypeReference() IDestinationNodeTypeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeReferenceContext) +} + +func (s *EdgeTypePatternUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypePatternUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypePatternUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypePatternUndirected(s) + } +} + +func (s *EdgeTypePatternUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypePatternUndirected(s) + } +} + +func (p *GQLParser) EdgeTypePatternUndirected() (localctx IEdgeTypePatternUndirectedContext) { + localctx = NewEdgeTypePatternUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 626, GQLParserRULE_edgeTypePatternUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2935) + p.SourceNodeTypeReference() + } + { + p.SetState(2936) + p.ArcTypeUndirected() + } + { + p.SetState(2937) + p.DestinationNodeTypeReference() + } + +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 +} + +// IArcTypePointingRightContext is an interface to support dynamic dispatch. +type IArcTypePointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MINUS_LEFT_BRACKET() antlr.TerminalNode + EdgeTypeFiller() IEdgeTypeFillerContext + BRACKET_RIGHT_ARROW() antlr.TerminalNode + + // IsArcTypePointingRightContext differentiates from other interfaces. + IsArcTypePointingRightContext() +} + +type ArcTypePointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyArcTypePointingRightContext() *ArcTypePointingRightContext { + var p = new(ArcTypePointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypePointingRight + return p +} + +func InitEmptyArcTypePointingRightContext(p *ArcTypePointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypePointingRight +} + +func (*ArcTypePointingRightContext) IsArcTypePointingRightContext() {} + +func NewArcTypePointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ArcTypePointingRightContext { + var p = new(ArcTypePointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_arcTypePointingRight + + return p +} + +func (s *ArcTypePointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *ArcTypePointingRightContext) MINUS_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_LEFT_BRACKET, 0) +} + +func (s *ArcTypePointingRightContext) EdgeTypeFiller() IEdgeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeFillerContext) +} + +func (s *ArcTypePointingRightContext) BRACKET_RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserBRACKET_RIGHT_ARROW, 0) +} + +func (s *ArcTypePointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ArcTypePointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ArcTypePointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterArcTypePointingRight(s) + } +} + +func (s *ArcTypePointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitArcTypePointingRight(s) + } +} + +func (p *GQLParser) ArcTypePointingRight() (localctx IArcTypePointingRightContext) { + localctx = NewArcTypePointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 628, GQLParserRULE_arcTypePointingRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2939) + p.Match(GQLParserMINUS_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2940) + p.EdgeTypeFiller() + } + { + p.SetState(2941) + p.Match(GQLParserBRACKET_RIGHT_ARROW) + 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 +} + +// IArcTypePointingLeftContext is an interface to support dynamic dispatch. +type IArcTypePointingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_ARROW_BRACKET() antlr.TerminalNode + EdgeTypeFiller() IEdgeTypeFillerContext + RIGHT_BRACKET_MINUS() antlr.TerminalNode + + // IsArcTypePointingLeftContext differentiates from other interfaces. + IsArcTypePointingLeftContext() +} + +type ArcTypePointingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyArcTypePointingLeftContext() *ArcTypePointingLeftContext { + var p = new(ArcTypePointingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypePointingLeft + return p +} + +func InitEmptyArcTypePointingLeftContext(p *ArcTypePointingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypePointingLeft +} + +func (*ArcTypePointingLeftContext) IsArcTypePointingLeftContext() {} + +func NewArcTypePointingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ArcTypePointingLeftContext { + var p = new(ArcTypePointingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_arcTypePointingLeft + + return p +} + +func (s *ArcTypePointingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *ArcTypePointingLeftContext) LEFT_ARROW_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW_BRACKET, 0) +} + +func (s *ArcTypePointingLeftContext) EdgeTypeFiller() IEdgeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeFillerContext) +} + +func (s *ArcTypePointingLeftContext) RIGHT_BRACKET_MINUS() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_MINUS, 0) +} + +func (s *ArcTypePointingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ArcTypePointingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ArcTypePointingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterArcTypePointingLeft(s) + } +} + +func (s *ArcTypePointingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitArcTypePointingLeft(s) + } +} + +func (p *GQLParser) ArcTypePointingLeft() (localctx IArcTypePointingLeftContext) { + localctx = NewArcTypePointingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 630, GQLParserRULE_arcTypePointingLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2943) + p.Match(GQLParserLEFT_ARROW_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2944) + p.EdgeTypeFiller() + } + { + p.SetState(2945) + p.Match(GQLParserRIGHT_BRACKET_MINUS) + 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 +} + +// IArcTypeUndirectedContext is an interface to support dynamic dispatch. +type IArcTypeUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TILDE_LEFT_BRACKET() antlr.TerminalNode + EdgeTypeFiller() IEdgeTypeFillerContext + RIGHT_BRACKET_TILDE() antlr.TerminalNode + + // IsArcTypeUndirectedContext differentiates from other interfaces. + IsArcTypeUndirectedContext() +} + +type ArcTypeUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyArcTypeUndirectedContext() *ArcTypeUndirectedContext { + var p = new(ArcTypeUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypeUndirected + return p +} + +func InitEmptyArcTypeUndirectedContext(p *ArcTypeUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_arcTypeUndirected +} + +func (*ArcTypeUndirectedContext) IsArcTypeUndirectedContext() {} + +func NewArcTypeUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ArcTypeUndirectedContext { + var p = new(ArcTypeUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_arcTypeUndirected + + return p +} + +func (s *ArcTypeUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *ArcTypeUndirectedContext) TILDE_LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE_LEFT_BRACKET, 0) +} + +func (s *ArcTypeUndirectedContext) EdgeTypeFiller() IEdgeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeFillerContext) +} + +func (s *ArcTypeUndirectedContext) RIGHT_BRACKET_TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET_TILDE, 0) +} + +func (s *ArcTypeUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ArcTypeUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ArcTypeUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterArcTypeUndirected(s) + } +} + +func (s *ArcTypeUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitArcTypeUndirected(s) + } +} + +func (p *GQLParser) ArcTypeUndirected() (localctx IArcTypeUndirectedContext) { + localctx = NewArcTypeUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 632, GQLParserRULE_arcTypeUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2947) + p.Match(GQLParserTILDE_LEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2948) + p.EdgeTypeFiller() + } + { + p.SetState(2949) + p.Match(GQLParserRIGHT_BRACKET_TILDE) + 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 +} + +// ISourceNodeTypeReferenceContext is an interface to support dynamic dispatch. +type ISourceNodeTypeReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + SourceNodeTypeAlias() ISourceNodeTypeAliasContext + RIGHT_PAREN() antlr.TerminalNode + NodeTypeFiller() INodeTypeFillerContext + + // IsSourceNodeTypeReferenceContext differentiates from other interfaces. + IsSourceNodeTypeReferenceContext() +} + +type SourceNodeTypeReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySourceNodeTypeReferenceContext() *SourceNodeTypeReferenceContext { + var p = new(SourceNodeTypeReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceNodeTypeReference + return p +} + +func InitEmptySourceNodeTypeReferenceContext(p *SourceNodeTypeReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceNodeTypeReference +} + +func (*SourceNodeTypeReferenceContext) IsSourceNodeTypeReferenceContext() {} + +func NewSourceNodeTypeReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SourceNodeTypeReferenceContext { + var p = new(SourceNodeTypeReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sourceNodeTypeReference + + return p +} + +func (s *SourceNodeTypeReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *SourceNodeTypeReferenceContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SourceNodeTypeReferenceContext) SourceNodeTypeAlias() ISourceNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeAliasContext) +} + +func (s *SourceNodeTypeReferenceContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SourceNodeTypeReferenceContext) NodeTypeFiller() INodeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeFillerContext) +} + +func (s *SourceNodeTypeReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SourceNodeTypeReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SourceNodeTypeReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSourceNodeTypeReference(s) + } +} + +func (s *SourceNodeTypeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSourceNodeTypeReference(s) + } +} + +func (p *GQLParser) SourceNodeTypeReference() (localctx ISourceNodeTypeReferenceContext) { + localctx = NewSourceNodeTypeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 634, GQLParserRULE_sourceNodeTypeReference) + var _la int + + p.SetState(2960) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 277, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2951) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2952) + p.SourceNodeTypeAlias() + } + { + p.SetState(2953) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2955) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2957) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIMPLIES || _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2956) + p.NodeTypeFiller() + } + + } + { + p.SetState(2959) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IDestinationNodeTypeReferenceContext is an interface to support dynamic dispatch. +type IDestinationNodeTypeReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext + RIGHT_PAREN() antlr.TerminalNode + NodeTypeFiller() INodeTypeFillerContext + + // IsDestinationNodeTypeReferenceContext differentiates from other interfaces. + IsDestinationNodeTypeReferenceContext() +} + +type DestinationNodeTypeReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDestinationNodeTypeReferenceContext() *DestinationNodeTypeReferenceContext { + var p = new(DestinationNodeTypeReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationNodeTypeReference + return p +} + +func InitEmptyDestinationNodeTypeReferenceContext(p *DestinationNodeTypeReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationNodeTypeReference +} + +func (*DestinationNodeTypeReferenceContext) IsDestinationNodeTypeReferenceContext() {} + +func NewDestinationNodeTypeReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DestinationNodeTypeReferenceContext { + var p = new(DestinationNodeTypeReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_destinationNodeTypeReference + + return p +} + +func (s *DestinationNodeTypeReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *DestinationNodeTypeReferenceContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DestinationNodeTypeReferenceContext) DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeAliasContext) +} + +func (s *DestinationNodeTypeReferenceContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DestinationNodeTypeReferenceContext) NodeTypeFiller() INodeTypeFillerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeFillerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeFillerContext) +} + +func (s *DestinationNodeTypeReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DestinationNodeTypeReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DestinationNodeTypeReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDestinationNodeTypeReference(s) + } +} + +func (s *DestinationNodeTypeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDestinationNodeTypeReference(s) + } +} + +func (p *GQLParser) DestinationNodeTypeReference() (localctx IDestinationNodeTypeReferenceContext) { + localctx = NewDestinationNodeTypeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 636, GQLParserRULE_destinationNodeTypeReference) + var _la int + + p.SetState(2971) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 279, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2962) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2963) + p.DestinationNodeTypeAlias() + } + { + p.SetState(2964) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2966) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(2968) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserIMPLIES || _la == GQLParserIS || _la == GQLParserLABEL || _la == GQLParserLABELS || _la == GQLParserCOLON || _la == GQLParserLEFT_BRACE { + { + p.SetState(2967) + p.NodeTypeFiller() + } + + } + { + p.SetState(2970) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEdgeKindContext is an interface to support dynamic dispatch. +type IEdgeKindContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DIRECTED() antlr.TerminalNode + UNDIRECTED() antlr.TerminalNode + + // IsEdgeKindContext differentiates from other interfaces. + IsEdgeKindContext() +} + +type EdgeKindContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeKindContext() *EdgeKindContext { + var p = new(EdgeKindContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeKind + return p +} + +func InitEmptyEdgeKindContext(p *EdgeKindContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeKind +} + +func (*EdgeKindContext) IsEdgeKindContext() {} + +func NewEdgeKindContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeKindContext { + var p = new(EdgeKindContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeKind + + return p +} + +func (s *EdgeKindContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeKindContext) DIRECTED() antlr.TerminalNode { + return s.GetToken(GQLParserDIRECTED, 0) +} + +func (s *EdgeKindContext) UNDIRECTED() antlr.TerminalNode { + return s.GetToken(GQLParserUNDIRECTED, 0) +} + +func (s *EdgeKindContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeKindContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeKindContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeKind(s) + } +} + +func (s *EdgeKindContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeKind(s) + } +} + +func (p *GQLParser) EdgeKind() (localctx IEdgeKindContext) { + localctx = NewEdgeKindContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 638, GQLParserRULE_edgeKind) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2973) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDIRECTED || _la == GQLParserUNDIRECTED) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IEndpointPairPhraseContext is an interface to support dynamic dispatch. +type IEndpointPairPhraseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CONNECTING() antlr.TerminalNode + EndpointPair() IEndpointPairContext + + // IsEndpointPairPhraseContext differentiates from other interfaces. + IsEndpointPairPhraseContext() +} + +type EndpointPairPhraseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairPhraseContext() *EndpointPairPhraseContext { + var p = new(EndpointPairPhraseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPhrase + return p +} + +func InitEmptyEndpointPairPhraseContext(p *EndpointPairPhraseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPhrase +} + +func (*EndpointPairPhraseContext) IsEndpointPairPhraseContext() {} + +func NewEndpointPairPhraseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairPhraseContext { + var p = new(EndpointPairPhraseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPairPhrase + + return p +} + +func (s *EndpointPairPhraseContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairPhraseContext) CONNECTING() antlr.TerminalNode { + return s.GetToken(GQLParserCONNECTING, 0) +} + +func (s *EndpointPairPhraseContext) EndpointPair() IEndpointPairContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairContext) +} + +func (s *EndpointPairPhraseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairPhraseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairPhraseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPairPhrase(s) + } +} + +func (s *EndpointPairPhraseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPairPhrase(s) + } +} + +func (p *GQLParser) EndpointPairPhrase() (localctx IEndpointPairPhraseContext) { + localctx = NewEndpointPairPhraseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 640, GQLParserRULE_endpointPairPhrase) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2975) + p.Match(GQLParserCONNECTING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2976) + p.EndpointPair() + } + +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 +} + +// IEndpointPairContext is an interface to support dynamic dispatch. +type IEndpointPairContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EndpointPairDirected() IEndpointPairDirectedContext + EndpointPairUndirected() IEndpointPairUndirectedContext + + // IsEndpointPairContext differentiates from other interfaces. + IsEndpointPairContext() +} + +type EndpointPairContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairContext() *EndpointPairContext { + var p = new(EndpointPairContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPair + return p +} + +func InitEmptyEndpointPairContext(p *EndpointPairContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPair +} + +func (*EndpointPairContext) IsEndpointPairContext() {} + +func NewEndpointPairContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairContext { + var p = new(EndpointPairContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPair + + return p +} + +func (s *EndpointPairContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairContext) EndpointPairDirected() IEndpointPairDirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairDirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairDirectedContext) +} + +func (s *EndpointPairContext) EndpointPairUndirected() IEndpointPairUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairUndirectedContext) +} + +func (s *EndpointPairContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPair(s) + } +} + +func (s *EndpointPairContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPair(s) + } +} + +func (p *GQLParser) EndpointPair() (localctx IEndpointPairContext) { + localctx = NewEndpointPairContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 642, GQLParserRULE_endpointPair) + p.SetState(2980) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 280, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2978) + p.EndpointPairDirected() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2979) + p.EndpointPairUndirected() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEndpointPairDirectedContext is an interface to support dynamic dispatch. +type IEndpointPairDirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EndpointPairPointingRight() IEndpointPairPointingRightContext + EndpointPairPointingLeft() IEndpointPairPointingLeftContext + + // IsEndpointPairDirectedContext differentiates from other interfaces. + IsEndpointPairDirectedContext() +} + +type EndpointPairDirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairDirectedContext() *EndpointPairDirectedContext { + var p = new(EndpointPairDirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairDirected + return p +} + +func InitEmptyEndpointPairDirectedContext(p *EndpointPairDirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairDirected +} + +func (*EndpointPairDirectedContext) IsEndpointPairDirectedContext() {} + +func NewEndpointPairDirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairDirectedContext { + var p = new(EndpointPairDirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPairDirected + + return p +} + +func (s *EndpointPairDirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairDirectedContext) EndpointPairPointingRight() IEndpointPairPointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairPointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairPointingRightContext) +} + +func (s *EndpointPairDirectedContext) EndpointPairPointingLeft() IEndpointPairPointingLeftContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEndpointPairPointingLeftContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEndpointPairPointingLeftContext) +} + +func (s *EndpointPairDirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairDirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairDirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPairDirected(s) + } +} + +func (s *EndpointPairDirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPairDirected(s) + } +} + +func (p *GQLParser) EndpointPairDirected() (localctx IEndpointPairDirectedContext) { + localctx = NewEndpointPairDirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 644, GQLParserRULE_endpointPairDirected) + p.SetState(2984) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 281, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2982) + p.EndpointPairPointingRight() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(2983) + p.EndpointPairPointingLeft() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IEndpointPairPointingRightContext is an interface to support dynamic dispatch. +type IEndpointPairPointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + SourceNodeTypeAlias() ISourceNodeTypeAliasContext + ConnectorPointingRight() IConnectorPointingRightContext + DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext + RIGHT_PAREN() antlr.TerminalNode + + // IsEndpointPairPointingRightContext differentiates from other interfaces. + IsEndpointPairPointingRightContext() +} + +type EndpointPairPointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairPointingRightContext() *EndpointPairPointingRightContext { + var p = new(EndpointPairPointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPointingRight + return p +} + +func InitEmptyEndpointPairPointingRightContext(p *EndpointPairPointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPointingRight +} + +func (*EndpointPairPointingRightContext) IsEndpointPairPointingRightContext() {} + +func NewEndpointPairPointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairPointingRightContext { + var p = new(EndpointPairPointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPairPointingRight + + return p +} + +func (s *EndpointPairPointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairPointingRightContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *EndpointPairPointingRightContext) SourceNodeTypeAlias() ISourceNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeAliasContext) +} + +func (s *EndpointPairPointingRightContext) ConnectorPointingRight() IConnectorPointingRightContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConnectorPointingRightContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IConnectorPointingRightContext) +} + +func (s *EndpointPairPointingRightContext) DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeAliasContext) +} + +func (s *EndpointPairPointingRightContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *EndpointPairPointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairPointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairPointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPairPointingRight(s) + } +} + +func (s *EndpointPairPointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPairPointingRight(s) + } +} + +func (p *GQLParser) EndpointPairPointingRight() (localctx IEndpointPairPointingRightContext) { + localctx = NewEndpointPairPointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 646, GQLParserRULE_endpointPairPointingRight) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2986) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2987) + p.SourceNodeTypeAlias() + } + { + p.SetState(2988) + p.ConnectorPointingRight() + } + { + p.SetState(2989) + p.DestinationNodeTypeAlias() + } + { + p.SetState(2990) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IEndpointPairPointingLeftContext is an interface to support dynamic dispatch. +type IEndpointPairPointingLeftContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext + LEFT_ARROW() antlr.TerminalNode + SourceNodeTypeAlias() ISourceNodeTypeAliasContext + RIGHT_PAREN() antlr.TerminalNode + + // IsEndpointPairPointingLeftContext differentiates from other interfaces. + IsEndpointPairPointingLeftContext() +} + +type EndpointPairPointingLeftContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairPointingLeftContext() *EndpointPairPointingLeftContext { + var p = new(EndpointPairPointingLeftContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPointingLeft + return p +} + +func InitEmptyEndpointPairPointingLeftContext(p *EndpointPairPointingLeftContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairPointingLeft +} + +func (*EndpointPairPointingLeftContext) IsEndpointPairPointingLeftContext() {} + +func NewEndpointPairPointingLeftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairPointingLeftContext { + var p = new(EndpointPairPointingLeftContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPairPointingLeft + + return p +} + +func (s *EndpointPairPointingLeftContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairPointingLeftContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *EndpointPairPointingLeftContext) DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeAliasContext) +} + +func (s *EndpointPairPointingLeftContext) LEFT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ARROW, 0) +} + +func (s *EndpointPairPointingLeftContext) SourceNodeTypeAlias() ISourceNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeAliasContext) +} + +func (s *EndpointPairPointingLeftContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *EndpointPairPointingLeftContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairPointingLeftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairPointingLeftContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPairPointingLeft(s) + } +} + +func (s *EndpointPairPointingLeftContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPairPointingLeft(s) + } +} + +func (p *GQLParser) EndpointPairPointingLeft() (localctx IEndpointPairPointingLeftContext) { + localctx = NewEndpointPairPointingLeftContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 648, GQLParserRULE_endpointPairPointingLeft) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2992) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2993) + p.DestinationNodeTypeAlias() + } + { + p.SetState(2994) + p.Match(GQLParserLEFT_ARROW) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2995) + p.SourceNodeTypeAlias() + } + { + p.SetState(2996) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IEndpointPairUndirectedContext is an interface to support dynamic dispatch. +type IEndpointPairUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + SourceNodeTypeAlias() ISourceNodeTypeAliasContext + ConnectorUndirected() IConnectorUndirectedContext + DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext + RIGHT_PAREN() antlr.TerminalNode + + // IsEndpointPairUndirectedContext differentiates from other interfaces. + IsEndpointPairUndirectedContext() +} + +type EndpointPairUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEndpointPairUndirectedContext() *EndpointPairUndirectedContext { + var p = new(EndpointPairUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairUndirected + return p +} + +func InitEmptyEndpointPairUndirectedContext(p *EndpointPairUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_endpointPairUndirected +} + +func (*EndpointPairUndirectedContext) IsEndpointPairUndirectedContext() {} + +func NewEndpointPairUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EndpointPairUndirectedContext { + var p = new(EndpointPairUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_endpointPairUndirected + + return p +} + +func (s *EndpointPairUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *EndpointPairUndirectedContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *EndpointPairUndirectedContext) SourceNodeTypeAlias() ISourceNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceNodeTypeAliasContext) +} + +func (s *EndpointPairUndirectedContext) ConnectorUndirected() IConnectorUndirectedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConnectorUndirectedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IConnectorUndirectedContext) +} + +func (s *EndpointPairUndirectedContext) DestinationNodeTypeAlias() IDestinationNodeTypeAliasContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationNodeTypeAliasContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationNodeTypeAliasContext) +} + +func (s *EndpointPairUndirectedContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *EndpointPairUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EndpointPairUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EndpointPairUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEndpointPairUndirected(s) + } +} + +func (s *EndpointPairUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEndpointPairUndirected(s) + } +} + +func (p *GQLParser) EndpointPairUndirected() (localctx IEndpointPairUndirectedContext) { + localctx = NewEndpointPairUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 650, GQLParserRULE_endpointPairUndirected) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(2998) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(2999) + p.SourceNodeTypeAlias() + } + { + p.SetState(3000) + p.ConnectorUndirected() + } + { + p.SetState(3001) + p.DestinationNodeTypeAlias() + } + { + p.SetState(3002) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IConnectorPointingRightContext is an interface to support dynamic dispatch. +type IConnectorPointingRightContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TO() antlr.TerminalNode + RIGHT_ARROW() antlr.TerminalNode + + // IsConnectorPointingRightContext differentiates from other interfaces. + IsConnectorPointingRightContext() +} + +type ConnectorPointingRightContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyConnectorPointingRightContext() *ConnectorPointingRightContext { + var p = new(ConnectorPointingRightContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_connectorPointingRight + return p +} + +func InitEmptyConnectorPointingRightContext(p *ConnectorPointingRightContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_connectorPointingRight +} + +func (*ConnectorPointingRightContext) IsConnectorPointingRightContext() {} + +func NewConnectorPointingRightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConnectorPointingRightContext { + var p = new(ConnectorPointingRightContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_connectorPointingRight + + return p +} + +func (s *ConnectorPointingRightContext) GetParser() antlr.Parser { return s.parser } + +func (s *ConnectorPointingRightContext) TO() antlr.TerminalNode { + return s.GetToken(GQLParserTO, 0) +} + +func (s *ConnectorPointingRightContext) RIGHT_ARROW() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ARROW, 0) +} + +func (s *ConnectorPointingRightContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ConnectorPointingRightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ConnectorPointingRightContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterConnectorPointingRight(s) + } +} + +func (s *ConnectorPointingRightContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitConnectorPointingRight(s) + } +} + +func (p *GQLParser) ConnectorPointingRight() (localctx IConnectorPointingRightContext) { + localctx = NewConnectorPointingRightContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 652, GQLParserRULE_connectorPointingRight) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3004) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserTO || _la == GQLParserRIGHT_ARROW) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IConnectorUndirectedContext is an interface to support dynamic dispatch. +type IConnectorUndirectedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TO() antlr.TerminalNode + TILDE() antlr.TerminalNode + + // IsConnectorUndirectedContext differentiates from other interfaces. + IsConnectorUndirectedContext() +} + +type ConnectorUndirectedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyConnectorUndirectedContext() *ConnectorUndirectedContext { + var p = new(ConnectorUndirectedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_connectorUndirected + return p +} + +func InitEmptyConnectorUndirectedContext(p *ConnectorUndirectedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_connectorUndirected +} + +func (*ConnectorUndirectedContext) IsConnectorUndirectedContext() {} + +func NewConnectorUndirectedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ConnectorUndirectedContext { + var p = new(ConnectorUndirectedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_connectorUndirected + + return p +} + +func (s *ConnectorUndirectedContext) GetParser() antlr.Parser { return s.parser } + +func (s *ConnectorUndirectedContext) TO() antlr.TerminalNode { + return s.GetToken(GQLParserTO, 0) +} + +func (s *ConnectorUndirectedContext) TILDE() antlr.TerminalNode { + return s.GetToken(GQLParserTILDE, 0) +} + +func (s *ConnectorUndirectedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ConnectorUndirectedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ConnectorUndirectedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterConnectorUndirected(s) + } +} + +func (s *ConnectorUndirectedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitConnectorUndirected(s) + } +} + +func (p *GQLParser) ConnectorUndirected() (localctx IConnectorUndirectedContext) { + localctx = NewConnectorUndirectedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 654, GQLParserRULE_connectorUndirected) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3006) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserTO || _la == GQLParserTILDE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// ISourceNodeTypeAliasContext is an interface to support dynamic dispatch. +type ISourceNodeTypeAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsSourceNodeTypeAliasContext differentiates from other interfaces. + IsSourceNodeTypeAliasContext() +} + +type SourceNodeTypeAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySourceNodeTypeAliasContext() *SourceNodeTypeAliasContext { + var p = new(SourceNodeTypeAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceNodeTypeAlias + return p +} + +func InitEmptySourceNodeTypeAliasContext(p *SourceNodeTypeAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceNodeTypeAlias +} + +func (*SourceNodeTypeAliasContext) IsSourceNodeTypeAliasContext() {} + +func NewSourceNodeTypeAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SourceNodeTypeAliasContext { + var p = new(SourceNodeTypeAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sourceNodeTypeAlias + + return p +} + +func (s *SourceNodeTypeAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *SourceNodeTypeAliasContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *SourceNodeTypeAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SourceNodeTypeAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SourceNodeTypeAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSourceNodeTypeAlias(s) + } +} + +func (s *SourceNodeTypeAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSourceNodeTypeAlias(s) + } +} + +func (p *GQLParser) SourceNodeTypeAlias() (localctx ISourceNodeTypeAliasContext) { + localctx = NewSourceNodeTypeAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 656, GQLParserRULE_sourceNodeTypeAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3008) + p.RegularIdentifier() + } + +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 +} + +// IDestinationNodeTypeAliasContext is an interface to support dynamic dispatch. +type IDestinationNodeTypeAliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsDestinationNodeTypeAliasContext differentiates from other interfaces. + IsDestinationNodeTypeAliasContext() +} + +type DestinationNodeTypeAliasContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDestinationNodeTypeAliasContext() *DestinationNodeTypeAliasContext { + var p = new(DestinationNodeTypeAliasContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationNodeTypeAlias + return p +} + +func InitEmptyDestinationNodeTypeAliasContext(p *DestinationNodeTypeAliasContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationNodeTypeAlias +} + +func (*DestinationNodeTypeAliasContext) IsDestinationNodeTypeAliasContext() {} + +func NewDestinationNodeTypeAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DestinationNodeTypeAliasContext { + var p = new(DestinationNodeTypeAliasContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_destinationNodeTypeAlias + + return p +} + +func (s *DestinationNodeTypeAliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *DestinationNodeTypeAliasContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *DestinationNodeTypeAliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DestinationNodeTypeAliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DestinationNodeTypeAliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDestinationNodeTypeAlias(s) + } +} + +func (s *DestinationNodeTypeAliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDestinationNodeTypeAlias(s) + } +} + +func (p *GQLParser) DestinationNodeTypeAlias() (localctx IDestinationNodeTypeAliasContext) { + localctx = NewDestinationNodeTypeAliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 658, GQLParserRULE_destinationNodeTypeAlias) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3010) + p.RegularIdentifier() + } + +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 +} + +// ILabelSetPhraseContext is an interface to support dynamic dispatch. +type ILabelSetPhraseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LABEL() antlr.TerminalNode + LabelName() ILabelNameContext + LABELS() antlr.TerminalNode + LabelSetSpecification() ILabelSetSpecificationContext + IsOrColon() IIsOrColonContext + + // IsLabelSetPhraseContext differentiates from other interfaces. + IsLabelSetPhraseContext() +} + +type LabelSetPhraseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabelSetPhraseContext() *LabelSetPhraseContext { + var p = new(LabelSetPhraseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelSetPhrase + return p +} + +func InitEmptyLabelSetPhraseContext(p *LabelSetPhraseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelSetPhrase +} + +func (*LabelSetPhraseContext) IsLabelSetPhraseContext() {} + +func NewLabelSetPhraseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabelSetPhraseContext { + var p = new(LabelSetPhraseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labelSetPhrase + + return p +} + +func (s *LabelSetPhraseContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabelSetPhraseContext) LABEL() antlr.TerminalNode { + return s.GetToken(GQLParserLABEL, 0) +} + +func (s *LabelSetPhraseContext) LabelName() ILabelNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *LabelSetPhraseContext) LABELS() antlr.TerminalNode { + return s.GetToken(GQLParserLABELS, 0) +} + +func (s *LabelSetPhraseContext) LabelSetSpecification() ILabelSetSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelSetSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelSetSpecificationContext) +} + +func (s *LabelSetPhraseContext) IsOrColon() IIsOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsOrColonContext) +} + +func (s *LabelSetPhraseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelSetPhraseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabelSetPhraseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelSetPhrase(s) + } +} + +func (s *LabelSetPhraseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelSetPhrase(s) + } +} + +func (p *GQLParser) LabelSetPhrase() (localctx ILabelSetPhraseContext) { + localctx = NewLabelSetPhraseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 660, GQLParserRULE_labelSetPhrase) + p.SetState(3019) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLABEL: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3012) + p.Match(GQLParserLABEL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3013) + p.LabelName() + } + + case GQLParserLABELS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3014) + p.Match(GQLParserLABELS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3015) + p.LabelSetSpecification() + } + + case GQLParserIS, GQLParserCOLON: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3016) + p.IsOrColon() + } + { + p.SetState(3017) + p.LabelSetSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILabelSetSpecificationContext is an interface to support dynamic dispatch. +type ILabelSetSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllLabelName() []ILabelNameContext + LabelName(i int) ILabelNameContext + AllAMPERSAND() []antlr.TerminalNode + AMPERSAND(i int) antlr.TerminalNode + + // IsLabelSetSpecificationContext differentiates from other interfaces. + IsLabelSetSpecificationContext() +} + +type LabelSetSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabelSetSpecificationContext() *LabelSetSpecificationContext { + var p = new(LabelSetSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelSetSpecification + return p +} + +func InitEmptyLabelSetSpecificationContext(p *LabelSetSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelSetSpecification +} + +func (*LabelSetSpecificationContext) IsLabelSetSpecificationContext() {} + +func NewLabelSetSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabelSetSpecificationContext { + var p = new(LabelSetSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labelSetSpecification + + return p +} + +func (s *LabelSetSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabelSetSpecificationContext) AllLabelName() []ILabelNameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ILabelNameContext); ok { + len++ + } + } + + tst := make([]ILabelNameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ILabelNameContext); ok { + tst[i] = t.(ILabelNameContext) + i++ + } + } + + return tst +} + +func (s *LabelSetSpecificationContext) LabelName(i int) ILabelNameContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelNameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ILabelNameContext) +} + +func (s *LabelSetSpecificationContext) AllAMPERSAND() []antlr.TerminalNode { + return s.GetTokens(GQLParserAMPERSAND) +} + +func (s *LabelSetSpecificationContext) AMPERSAND(i int) antlr.TerminalNode { + return s.GetToken(GQLParserAMPERSAND, i) +} + +func (s *LabelSetSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelSetSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabelSetSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelSetSpecification(s) + } +} + +func (s *LabelSetSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelSetSpecification(s) + } +} + +func (p *GQLParser) LabelSetSpecification() (localctx ILabelSetSpecificationContext) { + localctx = NewLabelSetSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 662, GQLParserRULE_labelSetSpecification) + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3021) + p.LabelName() + } + p.SetState(3026) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 283, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(3022) + p.Match(GQLParserAMPERSAND) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3023) + p.LabelName() + } + + } + p.SetState(3028) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 283, p.GetParserRuleContext()) + if p.HasError() { + 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 +} + +// IPropertyTypesSpecificationContext is an interface to support dynamic dispatch. +type IPropertyTypesSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + RIGHT_BRACE() antlr.TerminalNode + PropertyTypeList() IPropertyTypeListContext + + // IsPropertyTypesSpecificationContext differentiates from other interfaces. + IsPropertyTypesSpecificationContext() +} + +type PropertyTypesSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyTypesSpecificationContext() *PropertyTypesSpecificationContext { + var p = new(PropertyTypesSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyTypesSpecification + return p +} + +func InitEmptyPropertyTypesSpecificationContext(p *PropertyTypesSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyTypesSpecification +} + +func (*PropertyTypesSpecificationContext) IsPropertyTypesSpecificationContext() {} + +func NewPropertyTypesSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyTypesSpecificationContext { + var p = new(PropertyTypesSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyTypesSpecification + + return p +} + +func (s *PropertyTypesSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyTypesSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *PropertyTypesSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *PropertyTypesSpecificationContext) PropertyTypeList() IPropertyTypeListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyTypeListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyTypeListContext) +} + +func (s *PropertyTypesSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyTypesSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyTypesSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyTypesSpecification(s) + } +} + +func (s *PropertyTypesSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyTypesSpecification(s) + } +} + +func (p *GQLParser) PropertyTypesSpecification() (localctx IPropertyTypesSpecificationContext) { + localctx = NewPropertyTypesSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 664, GQLParserRULE_propertyTypesSpecification) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3029) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3031) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) { + { + p.SetState(3030) + p.PropertyTypeList() + } + + } + { + p.SetState(3033) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IPropertyTypeListContext is an interface to support dynamic dispatch. +type IPropertyTypeListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllPropertyType() []IPropertyTypeContext + PropertyType(i int) IPropertyTypeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsPropertyTypeListContext differentiates from other interfaces. + IsPropertyTypeListContext() +} + +type PropertyTypeListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyTypeListContext() *PropertyTypeListContext { + var p = new(PropertyTypeListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyTypeList + return p +} + +func InitEmptyPropertyTypeListContext(p *PropertyTypeListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyTypeList +} + +func (*PropertyTypeListContext) IsPropertyTypeListContext() {} + +func NewPropertyTypeListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyTypeListContext { + var p = new(PropertyTypeListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyTypeList + + return p +} + +func (s *PropertyTypeListContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyTypeListContext) AllPropertyType() []IPropertyTypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPropertyTypeContext); ok { + len++ + } + } + + tst := make([]IPropertyTypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPropertyTypeContext); ok { + tst[i] = t.(IPropertyTypeContext) + i++ + } + } + + return tst +} + +func (s *PropertyTypeListContext) PropertyType(i int) IPropertyTypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyTypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPropertyTypeContext) +} + +func (s *PropertyTypeListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *PropertyTypeListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *PropertyTypeListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyTypeListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyTypeListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyTypeList(s) + } +} + +func (s *PropertyTypeListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyTypeList(s) + } +} + +func (p *GQLParser) PropertyTypeList() (localctx IPropertyTypeListContext) { + localctx = NewPropertyTypeListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 666, GQLParserRULE_propertyTypeList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3035) + p.PropertyType() + } + p.SetState(3040) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(3036) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3037) + p.PropertyType() + } + + p.SetState(3042) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IPropertyTypeContext is an interface to support dynamic dispatch. +type IPropertyTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PropertyName() IPropertyNameContext + PropertyValueType() IPropertyValueTypeContext + Typed() ITypedContext + + // IsPropertyTypeContext differentiates from other interfaces. + IsPropertyTypeContext() +} + +type PropertyTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyTypeContext() *PropertyTypeContext { + var p = new(PropertyTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyType + return p +} + +func InitEmptyPropertyTypeContext(p *PropertyTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyType +} + +func (*PropertyTypeContext) IsPropertyTypeContext() {} + +func NewPropertyTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyTypeContext { + var p = new(PropertyTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyType + + return p +} + +func (s *PropertyTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyTypeContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *PropertyTypeContext) PropertyValueType() IPropertyValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyValueTypeContext) +} + +func (s *PropertyTypeContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *PropertyTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyType(s) + } +} + +func (s *PropertyTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyType(s) + } +} + +func (p *GQLParser) PropertyType() (localctx IPropertyTypeContext) { + localctx = NewPropertyTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 668, GQLParserRULE_propertyType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3043) + p.PropertyName() + } + p.SetState(3045) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(3044) + p.Typed() + } + + } + { + p.SetState(3047) + p.PropertyValueType() + } + +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 +} + +// IPropertyValueTypeContext is an interface to support dynamic dispatch. +type IPropertyValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueType() IValueTypeContext + + // IsPropertyValueTypeContext differentiates from other interfaces. + IsPropertyValueTypeContext() +} + +type PropertyValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyValueTypeContext() *PropertyValueTypeContext { + var p = new(PropertyValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyValueType + return p +} + +func InitEmptyPropertyValueTypeContext(p *PropertyValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyValueType +} + +func (*PropertyValueTypeContext) IsPropertyValueTypeContext() {} + +func NewPropertyValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyValueTypeContext { + var p = new(PropertyValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyValueType + + return p +} + +func (s *PropertyValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyValueTypeContext) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *PropertyValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyValueType(s) + } +} + +func (s *PropertyValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyValueType(s) + } +} + +func (p *GQLParser) PropertyValueType() (localctx IPropertyValueTypeContext) { + localctx = NewPropertyValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 670, GQLParserRULE_propertyValueType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3049) + p.valueType(0) + } + +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 +} + +// IBindingTableTypeContext is an interface to support dynamic dispatch. +type IBindingTableTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TABLE() antlr.TerminalNode + FieldTypesSpecification() IFieldTypesSpecificationContext + BINDING() antlr.TerminalNode + + // IsBindingTableTypeContext differentiates from other interfaces. + IsBindingTableTypeContext() +} + +type BindingTableTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableTypeContext() *BindingTableTypeContext { + var p = new(BindingTableTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableType + return p +} + +func InitEmptyBindingTableTypeContext(p *BindingTableTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableType +} + +func (*BindingTableTypeContext) IsBindingTableTypeContext() {} + +func NewBindingTableTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableTypeContext { + var p = new(BindingTableTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableType + + return p +} + +func (s *BindingTableTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableTypeContext) TABLE() antlr.TerminalNode { + return s.GetToken(GQLParserTABLE, 0) +} + +func (s *BindingTableTypeContext) FieldTypesSpecification() IFieldTypesSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldTypesSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldTypesSpecificationContext) +} + +func (s *BindingTableTypeContext) BINDING() antlr.TerminalNode { + return s.GetToken(GQLParserBINDING, 0) +} + +func (s *BindingTableTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableType(s) + } +} + +func (s *BindingTableTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableType(s) + } +} + +func (p *GQLParser) BindingTableType() (localctx IBindingTableTypeContext) { + localctx = NewBindingTableTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 672, GQLParserRULE_bindingTableType) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3052) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserBINDING { + { + p.SetState(3051) + p.Match(GQLParserBINDING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3054) + p.Match(GQLParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3055) + p.FieldTypesSpecification() + } + +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 +} + +// IValueTypeContext is an interface to support dynamic dispatch. +type IValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsValueTypeContext differentiates from other interfaces. + IsValueTypeContext() +} + +type ValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueTypeContext() *ValueTypeContext { + var p = new(ValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueType + return p +} + +func InitEmptyValueTypeContext(p *ValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueType +} + +func (*ValueTypeContext) IsValueTypeContext() {} + +func NewValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueTypeContext { + var p = new(ValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueType + + return p +} + +func (s *ValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueTypeContext) CopyAll(ctx *ValueTypeContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *ValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type DynamicPropertyValueTypeLabelContext struct { + ValueTypeContext +} + +func NewDynamicPropertyValueTypeLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DynamicPropertyValueTypeLabelContext { + var p = new(DynamicPropertyValueTypeLabelContext) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *DynamicPropertyValueTypeLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DynamicPropertyValueTypeLabelContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *DynamicPropertyValueTypeLabelContext) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *DynamicPropertyValueTypeLabelContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *DynamicPropertyValueTypeLabelContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *DynamicPropertyValueTypeLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDynamicPropertyValueTypeLabel(s) + } +} + +func (s *DynamicPropertyValueTypeLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDynamicPropertyValueTypeLabel(s) + } +} + +type ClosedDynamicUnionTypeAtl1Context struct { + ValueTypeContext +} + +func NewClosedDynamicUnionTypeAtl1Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *ClosedDynamicUnionTypeAtl1Context { + var p = new(ClosedDynamicUnionTypeAtl1Context) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *ClosedDynamicUnionTypeAtl1Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ClosedDynamicUnionTypeAtl1Context) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) LEFT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ANGLE_BRACKET, 0) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) AllValueType() []IValueTypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueTypeContext); ok { + len++ + } + } + + tst := make([]IValueTypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueTypeContext); ok { + tst[i] = t.(IValueTypeContext) + i++ + } + } + + return tst +} + +func (s *ClosedDynamicUnionTypeAtl1Context) ValueType(i int) IValueTypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) AllVERTICAL_BAR() []antlr.TerminalNode { + return s.GetTokens(GQLParserVERTICAL_BAR) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) VERTICAL_BAR(i int) antlr.TerminalNode { + return s.GetToken(GQLParserVERTICAL_BAR, i) +} + +func (s *ClosedDynamicUnionTypeAtl1Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterClosedDynamicUnionTypeAtl1(s) + } +} + +func (s *ClosedDynamicUnionTypeAtl1Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitClosedDynamicUnionTypeAtl1(s) + } +} + +type ClosedDynamicUnionTypeAtl2Context struct { + ValueTypeContext +} + +func NewClosedDynamicUnionTypeAtl2Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *ClosedDynamicUnionTypeAtl2Context { + var p = new(ClosedDynamicUnionTypeAtl2Context) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *ClosedDynamicUnionTypeAtl2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ClosedDynamicUnionTypeAtl2Context) AllValueType() []IValueTypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueTypeContext); ok { + len++ + } + } + + tst := make([]IValueTypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueTypeContext); ok { + tst[i] = t.(IValueTypeContext) + i++ + } + } + + return tst +} + +func (s *ClosedDynamicUnionTypeAtl2Context) ValueType(i int) IValueTypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *ClosedDynamicUnionTypeAtl2Context) VERTICAL_BAR() antlr.TerminalNode { + return s.GetToken(GQLParserVERTICAL_BAR, 0) +} + +func (s *ClosedDynamicUnionTypeAtl2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterClosedDynamicUnionTypeAtl2(s) + } +} + +func (s *ClosedDynamicUnionTypeAtl2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitClosedDynamicUnionTypeAtl2(s) + } +} + +type PathValueTypeLabelContext struct { + ValueTypeContext +} + +func NewPathValueTypeLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PathValueTypeLabelContext { + var p = new(PathValueTypeLabelContext) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *PathValueTypeLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathValueTypeLabelContext) PathValueType() IPathValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueTypeContext) +} + +func (s *PathValueTypeLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathValueTypeLabel(s) + } +} + +func (s *PathValueTypeLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathValueTypeLabel(s) + } +} + +type ListValueTypeAlt3Context struct { + ValueTypeContext +} + +func NewListValueTypeAlt3Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *ListValueTypeAlt3Context { + var p = new(ListValueTypeAlt3Context) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *ListValueTypeAlt3Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueTypeAlt3Context) ListValueTypeName() IListValueTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueTypeNameContext) +} + +func (s *ListValueTypeAlt3Context) LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACKET, 0) +} + +func (s *ListValueTypeAlt3Context) MaxLength() IMaxLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMaxLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMaxLengthContext) +} + +func (s *ListValueTypeAlt3Context) RIGHT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET, 0) +} + +func (s *ListValueTypeAlt3Context) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ListValueTypeAlt3Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueTypeAlt3(s) + } +} + +func (s *ListValueTypeAlt3Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueTypeAlt3(s) + } +} + +type ListValueTypeAlt2Context struct { + ValueTypeContext +} + +func NewListValueTypeAlt2Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *ListValueTypeAlt2Context { + var p = new(ListValueTypeAlt2Context) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *ListValueTypeAlt2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueTypeAlt2Context) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *ListValueTypeAlt2Context) ListValueTypeName() IListValueTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueTypeNameContext) +} + +func (s *ListValueTypeAlt2Context) LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACKET, 0) +} + +func (s *ListValueTypeAlt2Context) MaxLength() IMaxLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMaxLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMaxLengthContext) +} + +func (s *ListValueTypeAlt2Context) RIGHT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET, 0) +} + +func (s *ListValueTypeAlt2Context) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ListValueTypeAlt2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueTypeAlt2(s) + } +} + +func (s *ListValueTypeAlt2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueTypeAlt2(s) + } +} + +type ListValueTypeAlt1Context struct { + ValueTypeContext +} + +func NewListValueTypeAlt1Context(parser antlr.Parser, ctx antlr.ParserRuleContext) *ListValueTypeAlt1Context { + var p = new(ListValueTypeAlt1Context) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *ListValueTypeAlt1Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueTypeAlt1Context) ListValueTypeName() IListValueTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueTypeNameContext) +} + +func (s *ListValueTypeAlt1Context) LEFT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ANGLE_BRACKET, 0) +} + +func (s *ListValueTypeAlt1Context) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *ListValueTypeAlt1Context) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *ListValueTypeAlt1Context) LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACKET, 0) +} + +func (s *ListValueTypeAlt1Context) MaxLength() IMaxLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMaxLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMaxLengthContext) +} + +func (s *ListValueTypeAlt1Context) RIGHT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET, 0) +} + +func (s *ListValueTypeAlt1Context) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ListValueTypeAlt1Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueTypeAlt1(s) + } +} + +func (s *ListValueTypeAlt1Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueTypeAlt1(s) + } +} + +type PredefinedTypeLabelContext struct { + ValueTypeContext +} + +func NewPredefinedTypeLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PredefinedTypeLabelContext { + var p = new(PredefinedTypeLabelContext) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *PredefinedTypeLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PredefinedTypeLabelContext) PredefinedType() IPredefinedTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPredefinedTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPredefinedTypeContext) +} + +func (s *PredefinedTypeLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPredefinedTypeLabel(s) + } +} + +func (s *PredefinedTypeLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPredefinedTypeLabel(s) + } +} + +type RecordTypeLabelContext struct { + ValueTypeContext +} + +func NewRecordTypeLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *RecordTypeLabelContext { + var p = new(RecordTypeLabelContext) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *RecordTypeLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RecordTypeLabelContext) RecordType() IRecordTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordTypeContext) +} + +func (s *RecordTypeLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRecordTypeLabel(s) + } +} + +func (s *RecordTypeLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRecordTypeLabel(s) + } +} + +type OpenDynamicUnionTypeLabelContext struct { + ValueTypeContext +} + +func NewOpenDynamicUnionTypeLabelContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *OpenDynamicUnionTypeLabelContext { + var p = new(OpenDynamicUnionTypeLabelContext) + + InitEmptyValueTypeContext(&p.ValueTypeContext) + p.parser = parser + p.CopyAll(ctx.(*ValueTypeContext)) + + return p +} + +func (s *OpenDynamicUnionTypeLabelContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OpenDynamicUnionTypeLabelContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *OpenDynamicUnionTypeLabelContext) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *OpenDynamicUnionTypeLabelContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *OpenDynamicUnionTypeLabelContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOpenDynamicUnionTypeLabel(s) + } +} + +func (s *OpenDynamicUnionTypeLabelContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOpenDynamicUnionTypeLabel(s) + } +} + +func (p *GQLParser) ValueType() (localctx IValueTypeContext) { + return p.valueType(0) +} + +func (p *GQLParser) valueType(_p int) (localctx IValueTypeContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewValueTypeContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IValueTypeContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 674 + p.EnterRecursionRule(localctx, 674, GQLParserRULE_valueType, _p) + var _la int + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3114) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 298, p.GetParserRuleContext()) { + case 1: + localctx = NewPredefinedTypeLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + + { + p.SetState(3058) + p.PredefinedType() + } + + case 2: + localctx = NewPathValueTypeLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3059) + p.PathValueType() + } + + case 3: + localctx = NewListValueTypeAlt1Context(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3060) + p.ListValueTypeName() + } + { + p.SetState(3061) + p.Match(GQLParserLEFT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3062) + p.valueType(0) + } + { + p.SetState(3063) + p.Match(GQLParserRIGHT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3068) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 288, p.GetParserRuleContext()) == 1 { + { + p.SetState(3064) + p.Match(GQLParserLEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3065) + p.MaxLength() + } + { + p.SetState(3066) + p.Match(GQLParserRIGHT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3071) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 289, p.GetParserRuleContext()) == 1 { + { + p.SetState(3070) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 4: + localctx = NewListValueTypeAlt3Context(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3073) + p.ListValueTypeName() + } + p.SetState(3078) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 290, p.GetParserRuleContext()) == 1 { + { + p.SetState(3074) + p.Match(GQLParserLEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3075) + p.MaxLength() + } + { + p.SetState(3076) + p.Match(GQLParserRIGHT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3081) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 291, p.GetParserRuleContext()) == 1 { + { + p.SetState(3080) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 5: + localctx = NewRecordTypeLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3083) + p.RecordType() + } + + case 6: + localctx = NewOpenDynamicUnionTypeLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3084) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3086) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 292, p.GetParserRuleContext()) == 1 { + { + p.SetState(3085) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3089) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 293, p.GetParserRuleContext()) == 1 { + { + p.SetState(3088) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 7: + localctx = NewDynamicPropertyValueTypeLabelContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + p.SetState(3092) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserANY { + { + p.SetState(3091) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3094) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3095) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3097) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 295, p.GetParserRuleContext()) == 1 { + { + p.SetState(3096) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 8: + localctx = NewClosedDynamicUnionTypeAtl1Context(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3099) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3101) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserVALUE { + { + p.SetState(3100) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3103) + p.Match(GQLParserLEFT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3104) + p.valueType(0) + } + p.SetState(3109) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserVERTICAL_BAR { + { + p.SetState(3105) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3106) + p.valueType(0) + } + + p.SetState(3111) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(3112) + p.Match(GQLParserRIGHT_ANGLE_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(3132) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 302, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(3130) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 301, p.GetParserRuleContext()) { + case 1: + localctx = NewClosedDynamicUnionTypeAtl2Context(p, NewValueTypeContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueType) + p.SetState(3116) + + if !(p.Precpred(p.GetParserRuleContext(), 1)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 1)", "")) + goto errorExit + } + { + p.SetState(3117) + p.Match(GQLParserVERTICAL_BAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3118) + p.valueType(2) + } + + case 2: + localctx = NewListValueTypeAlt2Context(p, NewValueTypeContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueType) + p.SetState(3119) + + if !(p.Precpred(p.GetParserRuleContext(), 7)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) + goto errorExit + } + { + p.SetState(3120) + p.ListValueTypeName() + } + p.SetState(3125) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 299, p.GetParserRuleContext()) == 1 { + { + p.SetState(3121) + p.Match(GQLParserLEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3122) + p.MaxLength() + } + { + p.SetState(3123) + p.Match(GQLParserRIGHT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3128) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 300, p.GetParserRuleContext()) == 1 { + { + p.SetState(3127) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + + } + p.SetState(3134) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 302, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// ITypedContext is an interface to support dynamic dispatch. +type ITypedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DOUBLE_COLON() antlr.TerminalNode + TYPED() antlr.TerminalNode + + // IsTypedContext differentiates from other interfaces. + IsTypedContext() +} + +type TypedContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTypedContext() *TypedContext { + var p = new(TypedContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_typed + return p +} + +func InitEmptyTypedContext(p *TypedContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_typed +} + +func (*TypedContext) IsTypedContext() {} + +func NewTypedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TypedContext { + var p = new(TypedContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_typed + + return p +} + +func (s *TypedContext) GetParser() antlr.Parser { return s.parser } + +func (s *TypedContext) DOUBLE_COLON() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_COLON, 0) +} + +func (s *TypedContext) TYPED() antlr.TerminalNode { + return s.GetToken(GQLParserTYPED, 0) +} + +func (s *TypedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TypedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TypedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTyped(s) + } +} + +func (s *TypedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTyped(s) + } +} + +func (p *GQLParser) Typed() (localctx ITypedContext) { + localctx = NewTypedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 676, GQLParserRULE_typed) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3135) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IPredefinedTypeContext is an interface to support dynamic dispatch. +type IPredefinedTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BooleanType() IBooleanTypeContext + CharacterStringType() ICharacterStringTypeContext + ByteStringType() IByteStringTypeContext + NumericType() INumericTypeContext + TemporalType() ITemporalTypeContext + ReferenceValueType() IReferenceValueTypeContext + ImmaterialValueType() IImmaterialValueTypeContext + + // IsPredefinedTypeContext differentiates from other interfaces. + IsPredefinedTypeContext() +} + +type PredefinedTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPredefinedTypeContext() *PredefinedTypeContext { + var p = new(PredefinedTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predefinedType + return p +} + +func InitEmptyPredefinedTypeContext(p *PredefinedTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predefinedType +} + +func (*PredefinedTypeContext) IsPredefinedTypeContext() {} + +func NewPredefinedTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PredefinedTypeContext { + var p = new(PredefinedTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_predefinedType + + return p +} + +func (s *PredefinedTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *PredefinedTypeContext) BooleanType() IBooleanTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBooleanTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBooleanTypeContext) +} + +func (s *PredefinedTypeContext) CharacterStringType() ICharacterStringTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringTypeContext) +} + +func (s *PredefinedTypeContext) ByteStringType() IByteStringTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IByteStringTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IByteStringTypeContext) +} + +func (s *PredefinedTypeContext) NumericType() INumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericTypeContext) +} + +func (s *PredefinedTypeContext) TemporalType() ITemporalTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalTypeContext) +} + +func (s *PredefinedTypeContext) ReferenceValueType() IReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IReferenceValueTypeContext) +} + +func (s *PredefinedTypeContext) ImmaterialValueType() IImmaterialValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IImmaterialValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IImmaterialValueTypeContext) +} + +func (s *PredefinedTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PredefinedTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PredefinedTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPredefinedType(s) + } +} + +func (s *PredefinedTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPredefinedType(s) + } +} + +func (p *GQLParser) PredefinedType() (localctx IPredefinedTypeContext) { + localctx = NewPredefinedTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 678, GQLParserRULE_predefinedType) + p.SetState(3144) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBOOL, GQLParserBOOLEAN: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3137) + p.BooleanType() + } + + case GQLParserCHAR, GQLParserSTRING, GQLParserVARCHAR: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3138) + p.CharacterStringType() + } + + case GQLParserBINARY, GQLParserBYTES, GQLParserVARBINARY: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3139) + p.ByteStringType() + } + + case GQLParserBIG, GQLParserBIGINT, GQLParserDEC, GQLParserDECIMAL, GQLParserDOUBLE, GQLParserFLOAT, GQLParserFLOAT16, GQLParserFLOAT32, GQLParserFLOAT64, GQLParserFLOAT128, GQLParserFLOAT256, GQLParserINT, GQLParserINTEGER, GQLParserINT8, GQLParserINTEGER8, GQLParserINT16, GQLParserINTEGER16, GQLParserINT32, GQLParserINTEGER32, GQLParserINT64, GQLParserINTEGER64, GQLParserINT128, GQLParserINTEGER128, GQLParserINT256, GQLParserINTEGER256, GQLParserREAL, GQLParserSIGNED, GQLParserSMALL, GQLParserSMALLINT, GQLParserUBIGINT, GQLParserUINT, GQLParserUINT8, GQLParserUINT16, GQLParserUINT32, GQLParserUINT64, GQLParserUINT128, GQLParserUINT256, GQLParserUNSIGNED, GQLParserUSMALLINT: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3140) + p.NumericType() + } + + case GQLParserDATE, GQLParserDURATION, GQLParserLOCAL, GQLParserTIME, GQLParserTIMESTAMP, GQLParserZONED: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3141) + p.TemporalType() + } + + case GQLParserANY, GQLParserBINDING, GQLParserDIRECTED, GQLParserEDGE, GQLParserGRAPH, GQLParserNODE, GQLParserPROPERTY, GQLParserRELATIONSHIP, GQLParserTABLE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserLEFT_PAREN: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3142) + p.ReferenceValueType() + } + + case GQLParserNOTHING, GQLParserNULL_KW: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3143) + p.ImmaterialValueType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IBooleanTypeContext is an interface to support dynamic dispatch. +type IBooleanTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BOOL() antlr.TerminalNode + BOOLEAN() antlr.TerminalNode + NotNull() INotNullContext + + // IsBooleanTypeContext differentiates from other interfaces. + IsBooleanTypeContext() +} + +type BooleanTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBooleanTypeContext() *BooleanTypeContext { + var p = new(BooleanTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_booleanType + return p +} + +func InitEmptyBooleanTypeContext(p *BooleanTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_booleanType +} + +func (*BooleanTypeContext) IsBooleanTypeContext() {} + +func NewBooleanTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BooleanTypeContext { + var p = new(BooleanTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_booleanType + + return p +} + +func (s *BooleanTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *BooleanTypeContext) BOOL() antlr.TerminalNode { + return s.GetToken(GQLParserBOOL, 0) +} + +func (s *BooleanTypeContext) BOOLEAN() antlr.TerminalNode { + return s.GetToken(GQLParserBOOLEAN, 0) +} + +func (s *BooleanTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *BooleanTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BooleanTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BooleanTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBooleanType(s) + } +} + +func (s *BooleanTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBooleanType(s) + } +} + +func (p *GQLParser) BooleanType() (localctx IBooleanTypeContext) { + localctx = NewBooleanTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 680, GQLParserRULE_booleanType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3146) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserBOOL || _la == GQLParserBOOLEAN) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(3148) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 304, p.GetParserRuleContext()) == 1 { + { + p.SetState(3147) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// ICharacterStringTypeContext is an interface to support dynamic dispatch. +type ICharacterStringTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + STRING() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + MaxLength() IMaxLengthContext + RIGHT_PAREN() antlr.TerminalNode + NotNull() INotNullContext + MinLength() IMinLengthContext + COMMA() antlr.TerminalNode + CHAR() antlr.TerminalNode + FixedLength() IFixedLengthContext + VARCHAR() antlr.TerminalNode + + // IsCharacterStringTypeContext differentiates from other interfaces. + IsCharacterStringTypeContext() +} + +type CharacterStringTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCharacterStringTypeContext() *CharacterStringTypeContext { + var p = new(CharacterStringTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringType + return p +} + +func InitEmptyCharacterStringTypeContext(p *CharacterStringTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringType +} + +func (*CharacterStringTypeContext) IsCharacterStringTypeContext() {} + +func NewCharacterStringTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharacterStringTypeContext { + var p = new(CharacterStringTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_characterStringType + + return p +} + +func (s *CharacterStringTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *CharacterStringTypeContext) STRING() antlr.TerminalNode { + return s.GetToken(GQLParserSTRING, 0) +} + +func (s *CharacterStringTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CharacterStringTypeContext) MaxLength() IMaxLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMaxLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMaxLengthContext) +} + +func (s *CharacterStringTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CharacterStringTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *CharacterStringTypeContext) MinLength() IMinLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMinLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMinLengthContext) +} + +func (s *CharacterStringTypeContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *CharacterStringTypeContext) CHAR() antlr.TerminalNode { + return s.GetToken(GQLParserCHAR, 0) +} + +func (s *CharacterStringTypeContext) FixedLength() IFixedLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFixedLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFixedLengthContext) +} + +func (s *CharacterStringTypeContext) VARCHAR() antlr.TerminalNode { + return s.GetToken(GQLParserVARCHAR, 0) +} + +func (s *CharacterStringTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CharacterStringTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CharacterStringTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCharacterStringType(s) + } +} + +func (s *CharacterStringTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCharacterStringType(s) + } +} + +func (p *GQLParser) CharacterStringType() (localctx ICharacterStringTypeContext) { + localctx = NewCharacterStringTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 682, GQLParserRULE_characterStringType) + p.SetState(3185) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSTRING: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3150) + p.Match(GQLParserSTRING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3160) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 306, p.GetParserRuleContext()) == 1 { + { + p.SetState(3151) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3155) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 305, p.GetParserRuleContext()) == 1 { + { + p.SetState(3152) + p.MinLength() + } + { + p.SetState(3153) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(3157) + p.MaxLength() + } + { + p.SetState(3158) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3163) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 307, p.GetParserRuleContext()) == 1 { + { + p.SetState(3162) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserCHAR: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3165) + p.Match(GQLParserCHAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3170) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 308, p.GetParserRuleContext()) == 1 { + { + p.SetState(3166) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3167) + p.FixedLength() + } + { + p.SetState(3168) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3173) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 309, p.GetParserRuleContext()) == 1 { + { + p.SetState(3172) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserVARCHAR: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3175) + p.Match(GQLParserVARCHAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3180) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 310, p.GetParserRuleContext()) == 1 { + { + p.SetState(3176) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3177) + p.MaxLength() + } + { + p.SetState(3178) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3183) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 311, p.GetParserRuleContext()) == 1 { + { + p.SetState(3182) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IByteStringTypeContext is an interface to support dynamic dispatch. +type IByteStringTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BYTES() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + MaxLength() IMaxLengthContext + RIGHT_PAREN() antlr.TerminalNode + NotNull() INotNullContext + MinLength() IMinLengthContext + COMMA() antlr.TerminalNode + BINARY() antlr.TerminalNode + FixedLength() IFixedLengthContext + VARBINARY() antlr.TerminalNode + + // IsByteStringTypeContext differentiates from other interfaces. + IsByteStringTypeContext() +} + +type ByteStringTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyByteStringTypeContext() *ByteStringTypeContext { + var p = new(ByteStringTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteStringType + return p +} + +func InitEmptyByteStringTypeContext(p *ByteStringTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteStringType +} + +func (*ByteStringTypeContext) IsByteStringTypeContext() {} + +func NewByteStringTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ByteStringTypeContext { + var p = new(ByteStringTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_byteStringType + + return p +} + +func (s *ByteStringTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ByteStringTypeContext) BYTES() antlr.TerminalNode { + return s.GetToken(GQLParserBYTES, 0) +} + +func (s *ByteStringTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ByteStringTypeContext) MaxLength() IMaxLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMaxLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMaxLengthContext) +} + +func (s *ByteStringTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ByteStringTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ByteStringTypeContext) MinLength() IMinLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMinLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMinLengthContext) +} + +func (s *ByteStringTypeContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *ByteStringTypeContext) BINARY() antlr.TerminalNode { + return s.GetToken(GQLParserBINARY, 0) +} + +func (s *ByteStringTypeContext) FixedLength() IFixedLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFixedLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFixedLengthContext) +} + +func (s *ByteStringTypeContext) VARBINARY() antlr.TerminalNode { + return s.GetToken(GQLParserVARBINARY, 0) +} + +func (s *ByteStringTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ByteStringTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ByteStringTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterByteStringType(s) + } +} + +func (s *ByteStringTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitByteStringType(s) + } +} + +func (p *GQLParser) ByteStringType() (localctx IByteStringTypeContext) { + localctx = NewByteStringTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 684, GQLParserRULE_byteStringType) + p.SetState(3222) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBYTES: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3187) + p.Match(GQLParserBYTES) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3197) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 314, p.GetParserRuleContext()) == 1 { + { + p.SetState(3188) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3192) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 313, p.GetParserRuleContext()) == 1 { + { + p.SetState(3189) + p.MinLength() + } + { + p.SetState(3190) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(3194) + p.MaxLength() + } + { + p.SetState(3195) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3200) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 315, p.GetParserRuleContext()) == 1 { + { + p.SetState(3199) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserBINARY: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3202) + p.Match(GQLParserBINARY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3207) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 316, p.GetParserRuleContext()) == 1 { + { + p.SetState(3203) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3204) + p.FixedLength() + } + { + p.SetState(3205) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3210) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 317, p.GetParserRuleContext()) == 1 { + { + p.SetState(3209) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserVARBINARY: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3212) + p.Match(GQLParserVARBINARY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3217) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 318, p.GetParserRuleContext()) == 1 { + { + p.SetState(3213) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3214) + p.MaxLength() + } + { + p.SetState(3215) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3220) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 319, p.GetParserRuleContext()) == 1 { + { + p.SetState(3219) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IMinLengthContext is an interface to support dynamic dispatch. +type IMinLengthContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + + // IsMinLengthContext differentiates from other interfaces. + IsMinLengthContext() +} + +type MinLengthContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyMinLengthContext() *MinLengthContext { + var p = new(MinLengthContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_minLength + return p +} + +func InitEmptyMinLengthContext(p *MinLengthContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_minLength +} + +func (*MinLengthContext) IsMinLengthContext() {} + +func NewMinLengthContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MinLengthContext { + var p = new(MinLengthContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_minLength + + return p +} + +func (s *MinLengthContext) GetParser() antlr.Parser { return s.parser } + +func (s *MinLengthContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *MinLengthContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MinLengthContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *MinLengthContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMinLength(s) + } +} + +func (s *MinLengthContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMinLength(s) + } +} + +func (p *GQLParser) MinLength() (localctx IMinLengthContext) { + localctx = NewMinLengthContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 686, GQLParserRULE_minLength) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3224) + p.UnsignedInteger() + } + +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 +} + +// IMaxLengthContext is an interface to support dynamic dispatch. +type IMaxLengthContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + + // IsMaxLengthContext differentiates from other interfaces. + IsMaxLengthContext() +} + +type MaxLengthContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyMaxLengthContext() *MaxLengthContext { + var p = new(MaxLengthContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_maxLength + return p +} + +func InitEmptyMaxLengthContext(p *MaxLengthContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_maxLength +} + +func (*MaxLengthContext) IsMaxLengthContext() {} + +func NewMaxLengthContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *MaxLengthContext { + var p = new(MaxLengthContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_maxLength + + return p +} + +func (s *MaxLengthContext) GetParser() antlr.Parser { return s.parser } + +func (s *MaxLengthContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *MaxLengthContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MaxLengthContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *MaxLengthContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMaxLength(s) + } +} + +func (s *MaxLengthContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMaxLength(s) + } +} + +func (p *GQLParser) MaxLength() (localctx IMaxLengthContext) { + localctx = NewMaxLengthContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 688, GQLParserRULE_maxLength) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3226) + p.UnsignedInteger() + } + +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 +} + +// IFixedLengthContext is an interface to support dynamic dispatch. +type IFixedLengthContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + + // IsFixedLengthContext differentiates from other interfaces. + IsFixedLengthContext() +} + +type FixedLengthContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFixedLengthContext() *FixedLengthContext { + var p = new(FixedLengthContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fixedLength + return p +} + +func InitEmptyFixedLengthContext(p *FixedLengthContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fixedLength +} + +func (*FixedLengthContext) IsFixedLengthContext() {} + +func NewFixedLengthContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FixedLengthContext { + var p = new(FixedLengthContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fixedLength + + return p +} + +func (s *FixedLengthContext) GetParser() antlr.Parser { return s.parser } + +func (s *FixedLengthContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *FixedLengthContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FixedLengthContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FixedLengthContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFixedLength(s) + } +} + +func (s *FixedLengthContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFixedLength(s) + } +} + +func (p *GQLParser) FixedLength() (localctx IFixedLengthContext) { + localctx = NewFixedLengthContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 690, GQLParserRULE_fixedLength) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3228) + p.UnsignedInteger() + } + +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 +} + +// INumericTypeContext is an interface to support dynamic dispatch. +type INumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ExactNumericType() IExactNumericTypeContext + ApproximateNumericType() IApproximateNumericTypeContext + + // IsNumericTypeContext differentiates from other interfaces. + IsNumericTypeContext() +} + +type NumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericTypeContext() *NumericTypeContext { + var p = new(NumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericType + return p +} + +func InitEmptyNumericTypeContext(p *NumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericType +} + +func (*NumericTypeContext) IsNumericTypeContext() {} + +func NewNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericTypeContext { + var p = new(NumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericType + + return p +} + +func (s *NumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericTypeContext) ExactNumericType() IExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExactNumericTypeContext) +} + +func (s *NumericTypeContext) ApproximateNumericType() IApproximateNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IApproximateNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IApproximateNumericTypeContext) +} + +func (s *NumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericType(s) + } +} + +func (s *NumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericType(s) + } +} + +func (p *GQLParser) NumericType() (localctx INumericTypeContext) { + localctx = NewNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 692, GQLParserRULE_numericType) + p.SetState(3232) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBIG, GQLParserBIGINT, GQLParserDEC, GQLParserDECIMAL, GQLParserINT, GQLParserINTEGER, GQLParserINT8, GQLParserINTEGER8, GQLParserINT16, GQLParserINTEGER16, GQLParserINT32, GQLParserINTEGER32, GQLParserINT64, GQLParserINTEGER64, GQLParserINT128, GQLParserINTEGER128, GQLParserINT256, GQLParserINTEGER256, GQLParserSIGNED, GQLParserSMALL, GQLParserSMALLINT, GQLParserUBIGINT, GQLParserUINT, GQLParserUINT8, GQLParserUINT16, GQLParserUINT32, GQLParserUINT64, GQLParserUINT128, GQLParserUINT256, GQLParserUNSIGNED, GQLParserUSMALLINT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3230) + p.ExactNumericType() + } + + case GQLParserDOUBLE, GQLParserFLOAT, GQLParserFLOAT16, GQLParserFLOAT32, GQLParserFLOAT64, GQLParserFLOAT128, GQLParserFLOAT256, GQLParserREAL: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3231) + p.ApproximateNumericType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IExactNumericTypeContext is an interface to support dynamic dispatch. +type IExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BinaryExactNumericType() IBinaryExactNumericTypeContext + DecimalExactNumericType() IDecimalExactNumericTypeContext + + // IsExactNumericTypeContext differentiates from other interfaces. + IsExactNumericTypeContext() +} + +type ExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExactNumericTypeContext() *ExactNumericTypeContext { + var p = new(ExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exactNumericType + return p +} + +func InitEmptyExactNumericTypeContext(p *ExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exactNumericType +} + +func (*ExactNumericTypeContext) IsExactNumericTypeContext() {} + +func NewExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExactNumericTypeContext { + var p = new(ExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_exactNumericType + + return p +} + +func (s *ExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExactNumericTypeContext) BinaryExactNumericType() IBinaryExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBinaryExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBinaryExactNumericTypeContext) +} + +func (s *ExactNumericTypeContext) DecimalExactNumericType() IDecimalExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDecimalExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDecimalExactNumericTypeContext) +} + +func (s *ExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterExactNumericType(s) + } +} + +func (s *ExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitExactNumericType(s) + } +} + +func (p *GQLParser) ExactNumericType() (localctx IExactNumericTypeContext) { + localctx = NewExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 694, GQLParserRULE_exactNumericType) + p.SetState(3236) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBIG, GQLParserBIGINT, GQLParserINT, GQLParserINTEGER, GQLParserINT8, GQLParserINTEGER8, GQLParserINT16, GQLParserINTEGER16, GQLParserINT32, GQLParserINTEGER32, GQLParserINT64, GQLParserINTEGER64, GQLParserINT128, GQLParserINTEGER128, GQLParserINT256, GQLParserINTEGER256, GQLParserSIGNED, GQLParserSMALL, GQLParserSMALLINT, GQLParserUBIGINT, GQLParserUINT, GQLParserUINT8, GQLParserUINT16, GQLParserUINT32, GQLParserUINT64, GQLParserUINT128, GQLParserUINT256, GQLParserUNSIGNED, GQLParserUSMALLINT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3234) + p.BinaryExactNumericType() + } + + case GQLParserDEC, GQLParserDECIMAL: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3235) + p.DecimalExactNumericType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IBinaryExactNumericTypeContext is an interface to support dynamic dispatch. +type IBinaryExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SignedBinaryExactNumericType() ISignedBinaryExactNumericTypeContext + UnsignedBinaryExactNumericType() IUnsignedBinaryExactNumericTypeContext + + // IsBinaryExactNumericTypeContext differentiates from other interfaces. + IsBinaryExactNumericTypeContext() +} + +type BinaryExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBinaryExactNumericTypeContext() *BinaryExactNumericTypeContext { + var p = new(BinaryExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binaryExactNumericType + return p +} + +func InitEmptyBinaryExactNumericTypeContext(p *BinaryExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binaryExactNumericType +} + +func (*BinaryExactNumericTypeContext) IsBinaryExactNumericTypeContext() {} + +func NewBinaryExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BinaryExactNumericTypeContext { + var p = new(BinaryExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_binaryExactNumericType + + return p +} + +func (s *BinaryExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *BinaryExactNumericTypeContext) SignedBinaryExactNumericType() ISignedBinaryExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISignedBinaryExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISignedBinaryExactNumericTypeContext) +} + +func (s *BinaryExactNumericTypeContext) UnsignedBinaryExactNumericType() IUnsignedBinaryExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedBinaryExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedBinaryExactNumericTypeContext) +} + +func (s *BinaryExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BinaryExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BinaryExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBinaryExactNumericType(s) + } +} + +func (s *BinaryExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBinaryExactNumericType(s) + } +} + +func (p *GQLParser) BinaryExactNumericType() (localctx IBinaryExactNumericTypeContext) { + localctx = NewBinaryExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 696, GQLParserRULE_binaryExactNumericType) + p.SetState(3240) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBIG, GQLParserBIGINT, GQLParserINT, GQLParserINTEGER, GQLParserINT8, GQLParserINTEGER8, GQLParserINT16, GQLParserINTEGER16, GQLParserINT32, GQLParserINTEGER32, GQLParserINT64, GQLParserINTEGER64, GQLParserINT128, GQLParserINTEGER128, GQLParserINT256, GQLParserINTEGER256, GQLParserSIGNED, GQLParserSMALL, GQLParserSMALLINT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3238) + p.SignedBinaryExactNumericType() + } + + case GQLParserUBIGINT, GQLParserUINT, GQLParserUINT8, GQLParserUINT16, GQLParserUINT32, GQLParserUINT64, GQLParserUINT128, GQLParserUINT256, GQLParserUNSIGNED, GQLParserUSMALLINT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3239) + p.UnsignedBinaryExactNumericType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISignedBinaryExactNumericTypeContext is an interface to support dynamic dispatch. +type ISignedBinaryExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + INT8() antlr.TerminalNode + NotNull() INotNullContext + INT16() antlr.TerminalNode + INT32() antlr.TerminalNode + INT64() antlr.TerminalNode + INT128() antlr.TerminalNode + INT256() antlr.TerminalNode + SMALLINT() antlr.TerminalNode + INT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + Precision() IPrecisionContext + RIGHT_PAREN() antlr.TerminalNode + BIGINT() antlr.TerminalNode + VerboseBinaryExactNumericType() IVerboseBinaryExactNumericTypeContext + SIGNED() antlr.TerminalNode + + // IsSignedBinaryExactNumericTypeContext differentiates from other interfaces. + IsSignedBinaryExactNumericTypeContext() +} + +type SignedBinaryExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySignedBinaryExactNumericTypeContext() *SignedBinaryExactNumericTypeContext { + var p = new(SignedBinaryExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_signedBinaryExactNumericType + return p +} + +func InitEmptySignedBinaryExactNumericTypeContext(p *SignedBinaryExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_signedBinaryExactNumericType +} + +func (*SignedBinaryExactNumericTypeContext) IsSignedBinaryExactNumericTypeContext() {} + +func NewSignedBinaryExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SignedBinaryExactNumericTypeContext { + var p = new(SignedBinaryExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_signedBinaryExactNumericType + + return p +} + +func (s *SignedBinaryExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *SignedBinaryExactNumericTypeContext) INT8() antlr.TerminalNode { + return s.GetToken(GQLParserINT8, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *SignedBinaryExactNumericTypeContext) INT16() antlr.TerminalNode { + return s.GetToken(GQLParserINT16, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) INT32() antlr.TerminalNode { + return s.GetToken(GQLParserINT32, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) INT64() antlr.TerminalNode { + return s.GetToken(GQLParserINT64, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) INT128() antlr.TerminalNode { + return s.GetToken(GQLParserINT128, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) INT256() antlr.TerminalNode { + return s.GetToken(GQLParserINT256, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) SMALLINT() antlr.TerminalNode { + return s.GetToken(GQLParserSMALLINT, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) INT() antlr.TerminalNode { + return s.GetToken(GQLParserINT, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) Precision() IPrecisionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrecisionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrecisionContext) +} + +func (s *SignedBinaryExactNumericTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) BIGINT() antlr.TerminalNode { + return s.GetToken(GQLParserBIGINT, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) VerboseBinaryExactNumericType() IVerboseBinaryExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVerboseBinaryExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IVerboseBinaryExactNumericTypeContext) +} + +func (s *SignedBinaryExactNumericTypeContext) SIGNED() antlr.TerminalNode { + return s.GetToken(GQLParserSIGNED, 0) +} + +func (s *SignedBinaryExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SignedBinaryExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SignedBinaryExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSignedBinaryExactNumericType(s) + } +} + +func (s *SignedBinaryExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSignedBinaryExactNumericType(s) + } +} + +func (p *GQLParser) SignedBinaryExactNumericType() (localctx ISignedBinaryExactNumericTypeContext) { + localctx = NewSignedBinaryExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 698, GQLParserRULE_signedBinaryExactNumericType) + var _la int + + p.SetState(3288) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserINT8: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3242) + p.Match(GQLParserINT8) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3244) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 324, p.GetParserRuleContext()) == 1 { + { + p.SetState(3243) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT16: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3246) + p.Match(GQLParserINT16) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3248) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 325, p.GetParserRuleContext()) == 1 { + { + p.SetState(3247) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT32: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3250) + p.Match(GQLParserINT32) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3252) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 326, p.GetParserRuleContext()) == 1 { + { + p.SetState(3251) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT64: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3254) + p.Match(GQLParserINT64) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3256) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 327, p.GetParserRuleContext()) == 1 { + { + p.SetState(3255) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT128: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3258) + p.Match(GQLParserINT128) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3260) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 328, p.GetParserRuleContext()) == 1 { + { + p.SetState(3259) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT256: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3262) + p.Match(GQLParserINT256) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3264) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 329, p.GetParserRuleContext()) == 1 { + { + p.SetState(3263) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserSMALLINT: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3266) + p.Match(GQLParserSMALLINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3268) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 330, p.GetParserRuleContext()) == 1 { + { + p.SetState(3267) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINT: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3270) + p.Match(GQLParserINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3275) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 331, p.GetParserRuleContext()) == 1 { + { + p.SetState(3271) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3272) + p.Precision() + } + { + p.SetState(3273) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3278) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 332, p.GetParserRuleContext()) == 1 { + { + p.SetState(3277) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserBIGINT: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(3280) + p.Match(GQLParserBIGINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3282) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 333, p.GetParserRuleContext()) == 1 { + { + p.SetState(3281) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserBIG, GQLParserINTEGER, GQLParserINTEGER8, GQLParserINTEGER16, GQLParserINTEGER32, GQLParserINTEGER64, GQLParserINTEGER128, GQLParserINTEGER256, GQLParserSIGNED, GQLParserSMALL: + p.EnterOuterAlt(localctx, 10) + p.SetState(3285) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSIGNED { + { + p.SetState(3284) + p.Match(GQLParserSIGNED) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3287) + p.VerboseBinaryExactNumericType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IUnsignedBinaryExactNumericTypeContext is an interface to support dynamic dispatch. +type IUnsignedBinaryExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UINT8() antlr.TerminalNode + NotNull() INotNullContext + UINT16() antlr.TerminalNode + UINT32() antlr.TerminalNode + UINT64() antlr.TerminalNode + UINT128() antlr.TerminalNode + UINT256() antlr.TerminalNode + USMALLINT() antlr.TerminalNode + UINT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + Precision() IPrecisionContext + RIGHT_PAREN() antlr.TerminalNode + UBIGINT() antlr.TerminalNode + UNSIGNED() antlr.TerminalNode + VerboseBinaryExactNumericType() IVerboseBinaryExactNumericTypeContext + + // IsUnsignedBinaryExactNumericTypeContext differentiates from other interfaces. + IsUnsignedBinaryExactNumericTypeContext() +} + +type UnsignedBinaryExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedBinaryExactNumericTypeContext() *UnsignedBinaryExactNumericTypeContext { + var p = new(UnsignedBinaryExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedBinaryExactNumericType + return p +} + +func InitEmptyUnsignedBinaryExactNumericTypeContext(p *UnsignedBinaryExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedBinaryExactNumericType +} + +func (*UnsignedBinaryExactNumericTypeContext) IsUnsignedBinaryExactNumericTypeContext() {} + +func NewUnsignedBinaryExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedBinaryExactNumericTypeContext { + var p = new(UnsignedBinaryExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedBinaryExactNumericType + + return p +} + +func (s *UnsignedBinaryExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedBinaryExactNumericTypeContext) UINT8() antlr.TerminalNode { + return s.GetToken(GQLParserUINT8, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT16() antlr.TerminalNode { + return s.GetToken(GQLParserUINT16, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT32() antlr.TerminalNode { + return s.GetToken(GQLParserUINT32, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT64() antlr.TerminalNode { + return s.GetToken(GQLParserUINT64, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT128() antlr.TerminalNode { + return s.GetToken(GQLParserUINT128, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT256() antlr.TerminalNode { + return s.GetToken(GQLParserUINT256, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) USMALLINT() antlr.TerminalNode { + return s.GetToken(GQLParserUSMALLINT, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UINT() antlr.TerminalNode { + return s.GetToken(GQLParserUINT, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) Precision() IPrecisionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrecisionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrecisionContext) +} + +func (s *UnsignedBinaryExactNumericTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UBIGINT() antlr.TerminalNode { + return s.GetToken(GQLParserUBIGINT, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) UNSIGNED() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED, 0) +} + +func (s *UnsignedBinaryExactNumericTypeContext) VerboseBinaryExactNumericType() IVerboseBinaryExactNumericTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVerboseBinaryExactNumericTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IVerboseBinaryExactNumericTypeContext) +} + +func (s *UnsignedBinaryExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedBinaryExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedBinaryExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedBinaryExactNumericType(s) + } +} + +func (s *UnsignedBinaryExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedBinaryExactNumericType(s) + } +} + +func (p *GQLParser) UnsignedBinaryExactNumericType() (localctx IUnsignedBinaryExactNumericTypeContext) { + localctx = NewUnsignedBinaryExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 700, GQLParserRULE_unsignedBinaryExactNumericType) + p.SetState(3334) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUINT8: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3290) + p.Match(GQLParserUINT8) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3292) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 336, p.GetParserRuleContext()) == 1 { + { + p.SetState(3291) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT16: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3294) + p.Match(GQLParserUINT16) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3296) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 337, p.GetParserRuleContext()) == 1 { + { + p.SetState(3295) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT32: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3298) + p.Match(GQLParserUINT32) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3300) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 338, p.GetParserRuleContext()) == 1 { + { + p.SetState(3299) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT64: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3302) + p.Match(GQLParserUINT64) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3304) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 339, p.GetParserRuleContext()) == 1 { + { + p.SetState(3303) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT128: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3306) + p.Match(GQLParserUINT128) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3308) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 340, p.GetParserRuleContext()) == 1 { + { + p.SetState(3307) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT256: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3310) + p.Match(GQLParserUINT256) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3312) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 341, p.GetParserRuleContext()) == 1 { + { + p.SetState(3311) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUSMALLINT: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3314) + p.Match(GQLParserUSMALLINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3316) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 342, p.GetParserRuleContext()) == 1 { + { + p.SetState(3315) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUINT: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3318) + p.Match(GQLParserUINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3323) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 343, p.GetParserRuleContext()) == 1 { + { + p.SetState(3319) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3320) + p.Precision() + } + { + p.SetState(3321) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3326) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 344, p.GetParserRuleContext()) == 1 { + { + p.SetState(3325) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUBIGINT: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(3328) + p.Match(GQLParserUBIGINT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3330) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 345, p.GetParserRuleContext()) == 1 { + { + p.SetState(3329) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserUNSIGNED: + p.EnterOuterAlt(localctx, 10) + { + p.SetState(3332) + p.Match(GQLParserUNSIGNED) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3333) + p.VerboseBinaryExactNumericType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IVerboseBinaryExactNumericTypeContext is an interface to support dynamic dispatch. +type IVerboseBinaryExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + INTEGER8() antlr.TerminalNode + NotNull() INotNullContext + INTEGER16() antlr.TerminalNode + INTEGER32() antlr.TerminalNode + INTEGER64() antlr.TerminalNode + INTEGER128() antlr.TerminalNode + INTEGER256() antlr.TerminalNode + SMALL() antlr.TerminalNode + INTEGER() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + Precision() IPrecisionContext + RIGHT_PAREN() antlr.TerminalNode + BIG() antlr.TerminalNode + + // IsVerboseBinaryExactNumericTypeContext differentiates from other interfaces. + IsVerboseBinaryExactNumericTypeContext() +} + +type VerboseBinaryExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyVerboseBinaryExactNumericTypeContext() *VerboseBinaryExactNumericTypeContext { + var p = new(VerboseBinaryExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_verboseBinaryExactNumericType + return p +} + +func InitEmptyVerboseBinaryExactNumericTypeContext(p *VerboseBinaryExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_verboseBinaryExactNumericType +} + +func (*VerboseBinaryExactNumericTypeContext) IsVerboseBinaryExactNumericTypeContext() {} + +func NewVerboseBinaryExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *VerboseBinaryExactNumericTypeContext { + var p = new(VerboseBinaryExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_verboseBinaryExactNumericType + + return p +} + +func (s *VerboseBinaryExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER8() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER8, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER16() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER16, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER32() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER32, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER64() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER64, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER128() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER128, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER256() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER256, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) SMALL() antlr.TerminalNode { + return s.GetToken(GQLParserSMALL, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserINTEGER, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) Precision() IPrecisionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrecisionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrecisionContext) +} + +func (s *VerboseBinaryExactNumericTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) BIG() antlr.TerminalNode { + return s.GetToken(GQLParserBIG, 0) +} + +func (s *VerboseBinaryExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *VerboseBinaryExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *VerboseBinaryExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterVerboseBinaryExactNumericType(s) + } +} + +func (s *VerboseBinaryExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitVerboseBinaryExactNumericType(s) + } +} + +func (p *GQLParser) VerboseBinaryExactNumericType() (localctx IVerboseBinaryExactNumericTypeContext) { + localctx = NewVerboseBinaryExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 702, GQLParserRULE_verboseBinaryExactNumericType) + p.SetState(3380) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserINTEGER8: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3336) + p.Match(GQLParserINTEGER8) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3338) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 347, p.GetParserRuleContext()) == 1 { + { + p.SetState(3337) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER16: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3340) + p.Match(GQLParserINTEGER16) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3342) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 348, p.GetParserRuleContext()) == 1 { + { + p.SetState(3341) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER32: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3344) + p.Match(GQLParserINTEGER32) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3346) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 349, p.GetParserRuleContext()) == 1 { + { + p.SetState(3345) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER64: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3348) + p.Match(GQLParserINTEGER64) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3350) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 350, p.GetParserRuleContext()) == 1 { + { + p.SetState(3349) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER128: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3352) + p.Match(GQLParserINTEGER128) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3354) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 351, p.GetParserRuleContext()) == 1 { + { + p.SetState(3353) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER256: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3356) + p.Match(GQLParserINTEGER256) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3358) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 352, p.GetParserRuleContext()) == 1 { + { + p.SetState(3357) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserSMALL: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3360) + p.Match(GQLParserSMALL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3361) + p.Match(GQLParserINTEGER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3363) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 353, p.GetParserRuleContext()) == 1 { + { + p.SetState(3362) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserINTEGER: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3365) + p.Match(GQLParserINTEGER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3370) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 354, p.GetParserRuleContext()) == 1 { + { + p.SetState(3366) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3367) + p.Precision() + } + { + p.SetState(3368) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3373) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 355, p.GetParserRuleContext()) == 1 { + { + p.SetState(3372) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserBIG: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(3375) + p.Match(GQLParserBIG) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3376) + p.Match(GQLParserINTEGER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3378) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 356, p.GetParserRuleContext()) == 1 { + { + p.SetState(3377) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDecimalExactNumericTypeContext is an interface to support dynamic dispatch. +type IDecimalExactNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DECIMAL() antlr.TerminalNode + DEC() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + Precision() IPrecisionContext + RIGHT_PAREN() antlr.TerminalNode + COMMA() antlr.TerminalNode + Scale() IScaleContext + NotNull() INotNullContext + + // IsDecimalExactNumericTypeContext differentiates from other interfaces. + IsDecimalExactNumericTypeContext() +} + +type DecimalExactNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDecimalExactNumericTypeContext() *DecimalExactNumericTypeContext { + var p = new(DecimalExactNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_decimalExactNumericType + return p +} + +func InitEmptyDecimalExactNumericTypeContext(p *DecimalExactNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_decimalExactNumericType +} + +func (*DecimalExactNumericTypeContext) IsDecimalExactNumericTypeContext() {} + +func NewDecimalExactNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DecimalExactNumericTypeContext { + var p = new(DecimalExactNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_decimalExactNumericType + + return p +} + +func (s *DecimalExactNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *DecimalExactNumericTypeContext) DECIMAL() antlr.TerminalNode { + return s.GetToken(GQLParserDECIMAL, 0) +} + +func (s *DecimalExactNumericTypeContext) DEC() antlr.TerminalNode { + return s.GetToken(GQLParserDEC, 0) +} + +func (s *DecimalExactNumericTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DecimalExactNumericTypeContext) Precision() IPrecisionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrecisionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrecisionContext) +} + +func (s *DecimalExactNumericTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DecimalExactNumericTypeContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *DecimalExactNumericTypeContext) Scale() IScaleContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IScaleContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IScaleContext) +} + +func (s *DecimalExactNumericTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *DecimalExactNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DecimalExactNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DecimalExactNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDecimalExactNumericType(s) + } +} + +func (s *DecimalExactNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDecimalExactNumericType(s) + } +} + +func (p *GQLParser) DecimalExactNumericType() (localctx IDecimalExactNumericTypeContext) { + localctx = NewDecimalExactNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 704, GQLParserRULE_decimalExactNumericType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3382) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDEC || _la == GQLParserDECIMAL) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(3393) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 360, p.GetParserRuleContext()) == 1 { + { + p.SetState(3383) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3384) + p.Precision() + } + p.SetState(3387) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMA { + { + p.SetState(3385) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3386) + p.Scale() + } + + } + { + p.SetState(3389) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3391) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 359, p.GetParserRuleContext()) == 1 { + { + p.SetState(3390) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + } else if p.HasError() { // JIM + 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 +} + +// IPrecisionContext is an interface to support dynamic dispatch. +type IPrecisionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedDecimalInteger() IUnsignedDecimalIntegerContext + + // IsPrecisionContext differentiates from other interfaces. + IsPrecisionContext() +} + +type PrecisionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPrecisionContext() *PrecisionContext { + var p = new(PrecisionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_precision + return p +} + +func InitEmptyPrecisionContext(p *PrecisionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_precision +} + +func (*PrecisionContext) IsPrecisionContext() {} + +func NewPrecisionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PrecisionContext { + var p = new(PrecisionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_precision + + return p +} + +func (s *PrecisionContext) GetParser() antlr.Parser { return s.parser } + +func (s *PrecisionContext) UnsignedDecimalInteger() IUnsignedDecimalIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedDecimalIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedDecimalIntegerContext) +} + +func (s *PrecisionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrecisionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PrecisionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrecision(s) + } +} + +func (s *PrecisionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrecision(s) + } +} + +func (p *GQLParser) Precision() (localctx IPrecisionContext) { + localctx = NewPrecisionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 706, GQLParserRULE_precision) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3395) + p.UnsignedDecimalInteger() + } + +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 +} + +// IScaleContext is an interface to support dynamic dispatch. +type IScaleContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedDecimalInteger() IUnsignedDecimalIntegerContext + + // IsScaleContext differentiates from other interfaces. + IsScaleContext() +} + +type ScaleContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyScaleContext() *ScaleContext { + var p = new(ScaleContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_scale + return p +} + +func InitEmptyScaleContext(p *ScaleContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_scale +} + +func (*ScaleContext) IsScaleContext() {} + +func NewScaleContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ScaleContext { + var p = new(ScaleContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_scale + + return p +} + +func (s *ScaleContext) GetParser() antlr.Parser { return s.parser } + +func (s *ScaleContext) UnsignedDecimalInteger() IUnsignedDecimalIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedDecimalIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedDecimalIntegerContext) +} + +func (s *ScaleContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ScaleContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ScaleContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterScale(s) + } +} + +func (s *ScaleContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitScale(s) + } +} + +func (p *GQLParser) Scale() (localctx IScaleContext) { + localctx = NewScaleContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 708, GQLParserRULE_scale) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3397) + p.UnsignedDecimalInteger() + } + +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 +} + +// IApproximateNumericTypeContext is an interface to support dynamic dispatch. +type IApproximateNumericTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FLOAT16() antlr.TerminalNode + NotNull() INotNullContext + FLOAT32() antlr.TerminalNode + FLOAT64() antlr.TerminalNode + FLOAT128() antlr.TerminalNode + FLOAT256() antlr.TerminalNode + FLOAT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + Precision() IPrecisionContext + RIGHT_PAREN() antlr.TerminalNode + COMMA() antlr.TerminalNode + Scale() IScaleContext + REAL() antlr.TerminalNode + DOUBLE() antlr.TerminalNode + PRECISION() antlr.TerminalNode + + // IsApproximateNumericTypeContext differentiates from other interfaces. + IsApproximateNumericTypeContext() +} + +type ApproximateNumericTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyApproximateNumericTypeContext() *ApproximateNumericTypeContext { + var p = new(ApproximateNumericTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_approximateNumericType + return p +} + +func InitEmptyApproximateNumericTypeContext(p *ApproximateNumericTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_approximateNumericType +} + +func (*ApproximateNumericTypeContext) IsApproximateNumericTypeContext() {} + +func NewApproximateNumericTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ApproximateNumericTypeContext { + var p = new(ApproximateNumericTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_approximateNumericType + + return p +} + +func (s *ApproximateNumericTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ApproximateNumericTypeContext) FLOAT16() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT16, 0) +} + +func (s *ApproximateNumericTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ApproximateNumericTypeContext) FLOAT32() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT32, 0) +} + +func (s *ApproximateNumericTypeContext) FLOAT64() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT64, 0) +} + +func (s *ApproximateNumericTypeContext) FLOAT128() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT128, 0) +} + +func (s *ApproximateNumericTypeContext) FLOAT256() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT256, 0) +} + +func (s *ApproximateNumericTypeContext) FLOAT() antlr.TerminalNode { + return s.GetToken(GQLParserFLOAT, 0) +} + +func (s *ApproximateNumericTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ApproximateNumericTypeContext) Precision() IPrecisionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPrecisionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPrecisionContext) +} + +func (s *ApproximateNumericTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ApproximateNumericTypeContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *ApproximateNumericTypeContext) Scale() IScaleContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IScaleContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IScaleContext) +} + +func (s *ApproximateNumericTypeContext) REAL() antlr.TerminalNode { + return s.GetToken(GQLParserREAL, 0) +} + +func (s *ApproximateNumericTypeContext) DOUBLE() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE, 0) +} + +func (s *ApproximateNumericTypeContext) PRECISION() antlr.TerminalNode { + return s.GetToken(GQLParserPRECISION, 0) +} + +func (s *ApproximateNumericTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ApproximateNumericTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ApproximateNumericTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterApproximateNumericType(s) + } +} + +func (s *ApproximateNumericTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitApproximateNumericType(s) + } +} + +func (p *GQLParser) ApproximateNumericType() (localctx IApproximateNumericTypeContext) { + localctx = NewApproximateNumericTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 710, GQLParserRULE_approximateNumericType) + var _la int + + p.SetState(3444) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserFLOAT16: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3399) + p.Match(GQLParserFLOAT16) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3401) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 361, p.GetParserRuleContext()) == 1 { + { + p.SetState(3400) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFLOAT32: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3403) + p.Match(GQLParserFLOAT32) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3405) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 362, p.GetParserRuleContext()) == 1 { + { + p.SetState(3404) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFLOAT64: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3407) + p.Match(GQLParserFLOAT64) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3409) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 363, p.GetParserRuleContext()) == 1 { + { + p.SetState(3408) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFLOAT128: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3411) + p.Match(GQLParserFLOAT128) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3413) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 364, p.GetParserRuleContext()) == 1 { + { + p.SetState(3412) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFLOAT256: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3415) + p.Match(GQLParserFLOAT256) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3417) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 365, p.GetParserRuleContext()) == 1 { + { + p.SetState(3416) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserFLOAT: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3419) + p.Match(GQLParserFLOAT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3428) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 367, p.GetParserRuleContext()) == 1 { + { + p.SetState(3420) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3421) + p.Precision() + } + p.SetState(3424) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMA { + { + p.SetState(3422) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3423) + p.Scale() + } + + } + { + p.SetState(3426) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3431) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 368, p.GetParserRuleContext()) == 1 { + { + p.SetState(3430) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserREAL: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3433) + p.Match(GQLParserREAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3435) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 369, p.GetParserRuleContext()) == 1 { + { + p.SetState(3434) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserDOUBLE: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3437) + p.Match(GQLParserDOUBLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3439) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 370, p.GetParserRuleContext()) == 1 { + { + p.SetState(3438) + p.Match(GQLParserPRECISION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3442) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 371, p.GetParserRuleContext()) == 1 { + { + p.SetState(3441) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITemporalTypeContext is an interface to support dynamic dispatch. +type ITemporalTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TemporalInstantType() ITemporalInstantTypeContext + TemporalDurationType() ITemporalDurationTypeContext + + // IsTemporalTypeContext differentiates from other interfaces. + IsTemporalTypeContext() +} + +type TemporalTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTemporalTypeContext() *TemporalTypeContext { + var p = new(TemporalTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalType + return p +} + +func InitEmptyTemporalTypeContext(p *TemporalTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalType +} + +func (*TemporalTypeContext) IsTemporalTypeContext() {} + +func NewTemporalTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TemporalTypeContext { + var p = new(TemporalTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_temporalType + + return p +} + +func (s *TemporalTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TemporalTypeContext) TemporalInstantType() ITemporalInstantTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalInstantTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalInstantTypeContext) +} + +func (s *TemporalTypeContext) TemporalDurationType() ITemporalDurationTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalDurationTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalDurationTypeContext) +} + +func (s *TemporalTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TemporalTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TemporalTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTemporalType(s) + } +} + +func (s *TemporalTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTemporalType(s) + } +} + +func (p *GQLParser) TemporalType() (localctx ITemporalTypeContext) { + localctx = NewTemporalTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 712, GQLParserRULE_temporalType) + p.SetState(3448) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDATE, GQLParserLOCAL, GQLParserTIME, GQLParserTIMESTAMP, GQLParserZONED: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3446) + p.TemporalInstantType() + } + + case GQLParserDURATION: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3447) + p.TemporalDurationType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITemporalInstantTypeContext is an interface to support dynamic dispatch. +type ITemporalInstantTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeType() IDatetimeTypeContext + LocaldatetimeType() ILocaldatetimeTypeContext + DateType() IDateTypeContext + TimeType() ITimeTypeContext + LocaltimeType() ILocaltimeTypeContext + + // IsTemporalInstantTypeContext differentiates from other interfaces. + IsTemporalInstantTypeContext() +} + +type TemporalInstantTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTemporalInstantTypeContext() *TemporalInstantTypeContext { + var p = new(TemporalInstantTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalInstantType + return p +} + +func InitEmptyTemporalInstantTypeContext(p *TemporalInstantTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalInstantType +} + +func (*TemporalInstantTypeContext) IsTemporalInstantTypeContext() {} + +func NewTemporalInstantTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TemporalInstantTypeContext { + var p = new(TemporalInstantTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_temporalInstantType + + return p +} + +func (s *TemporalInstantTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TemporalInstantTypeContext) DatetimeType() IDatetimeTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeTypeContext) +} + +func (s *TemporalInstantTypeContext) LocaldatetimeType() ILocaldatetimeTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocaldatetimeTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocaldatetimeTypeContext) +} + +func (s *TemporalInstantTypeContext) DateType() IDateTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateTypeContext) +} + +func (s *TemporalInstantTypeContext) TimeType() ITimeTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeTypeContext) +} + +func (s *TemporalInstantTypeContext) LocaltimeType() ILocaltimeTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocaltimeTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocaltimeTypeContext) +} + +func (s *TemporalInstantTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TemporalInstantTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TemporalInstantTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTemporalInstantType(s) + } +} + +func (s *TemporalInstantTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTemporalInstantType(s) + } +} + +func (p *GQLParser) TemporalInstantType() (localctx ITemporalInstantTypeContext) { + localctx = NewTemporalInstantTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 714, GQLParserRULE_temporalInstantType) + p.SetState(3455) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 374, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3450) + p.DatetimeType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3451) + p.LocaldatetimeType() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3452) + p.DateType() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3453) + p.TimeType() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3454) + p.LocaltimeType() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IDatetimeTypeContext is an interface to support dynamic dispatch. +type IDatetimeTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ZONED() antlr.TerminalNode + DATETIME() antlr.TerminalNode + NotNull() INotNullContext + TIMESTAMP() antlr.TerminalNode + WITH() antlr.TerminalNode + TIME() antlr.TerminalNode + ZONE() antlr.TerminalNode + + // IsDatetimeTypeContext differentiates from other interfaces. + IsDatetimeTypeContext() +} + +type DatetimeTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeTypeContext() *DatetimeTypeContext { + var p = new(DatetimeTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeType + return p +} + +func InitEmptyDatetimeTypeContext(p *DatetimeTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeType +} + +func (*DatetimeTypeContext) IsDatetimeTypeContext() {} + +func NewDatetimeTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeTypeContext { + var p = new(DatetimeTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeType + + return p +} + +func (s *DatetimeTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeTypeContext) ZONED() antlr.TerminalNode { + return s.GetToken(GQLParserZONED, 0) +} + +func (s *DatetimeTypeContext) DATETIME() antlr.TerminalNode { + return s.GetToken(GQLParserDATETIME, 0) +} + +func (s *DatetimeTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *DatetimeTypeContext) TIMESTAMP() antlr.TerminalNode { + return s.GetToken(GQLParserTIMESTAMP, 0) +} + +func (s *DatetimeTypeContext) WITH() antlr.TerminalNode { + return s.GetToken(GQLParserWITH, 0) +} + +func (s *DatetimeTypeContext) TIME() antlr.TerminalNode { + return s.GetToken(GQLParserTIME, 0) +} + +func (s *DatetimeTypeContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *DatetimeTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeType(s) + } +} + +func (s *DatetimeTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeType(s) + } +} + +func (p *GQLParser) DatetimeType() (localctx IDatetimeTypeContext) { + localctx = NewDatetimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 716, GQLParserRULE_datetimeType) + p.SetState(3469) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserZONED: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3457) + p.Match(GQLParserZONED) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3458) + p.Match(GQLParserDATETIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3460) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 375, p.GetParserRuleContext()) == 1 { + { + p.SetState(3459) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserTIMESTAMP: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3462) + p.Match(GQLParserTIMESTAMP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3463) + p.Match(GQLParserWITH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3464) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3465) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3467) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 376, p.GetParserRuleContext()) == 1 { + { + p.SetState(3466) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILocaldatetimeTypeContext is an interface to support dynamic dispatch. +type ILocaldatetimeTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOCAL() antlr.TerminalNode + DATETIME() antlr.TerminalNode + NotNull() INotNullContext + TIMESTAMP() antlr.TerminalNode + WITHOUT() antlr.TerminalNode + TIME() antlr.TerminalNode + ZONE() antlr.TerminalNode + + // IsLocaldatetimeTypeContext differentiates from other interfaces. + IsLocaldatetimeTypeContext() +} + +type LocaldatetimeTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLocaldatetimeTypeContext() *LocaldatetimeTypeContext { + var p = new(LocaldatetimeTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localdatetimeType + return p +} + +func InitEmptyLocaldatetimeTypeContext(p *LocaldatetimeTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localdatetimeType +} + +func (*LocaldatetimeTypeContext) IsLocaldatetimeTypeContext() {} + +func NewLocaldatetimeTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LocaldatetimeTypeContext { + var p = new(LocaldatetimeTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_localdatetimeType + + return p +} + +func (s *LocaldatetimeTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *LocaldatetimeTypeContext) LOCAL() antlr.TerminalNode { + return s.GetToken(GQLParserLOCAL, 0) +} + +func (s *LocaldatetimeTypeContext) DATETIME() antlr.TerminalNode { + return s.GetToken(GQLParserDATETIME, 0) +} + +func (s *LocaldatetimeTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *LocaldatetimeTypeContext) TIMESTAMP() antlr.TerminalNode { + return s.GetToken(GQLParserTIMESTAMP, 0) +} + +func (s *LocaldatetimeTypeContext) WITHOUT() antlr.TerminalNode { + return s.GetToken(GQLParserWITHOUT, 0) +} + +func (s *LocaldatetimeTypeContext) TIME() antlr.TerminalNode { + return s.GetToken(GQLParserTIME, 0) +} + +func (s *LocaldatetimeTypeContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *LocaldatetimeTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LocaldatetimeTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LocaldatetimeTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLocaldatetimeType(s) + } +} + +func (s *LocaldatetimeTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLocaldatetimeType(s) + } +} + +func (p *GQLParser) LocaldatetimeType() (localctx ILocaldatetimeTypeContext) { + localctx = NewLocaldatetimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 718, GQLParserRULE_localdatetimeType) + p.SetState(3485) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLOCAL: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3471) + p.Match(GQLParserLOCAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3472) + p.Match(GQLParserDATETIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3474) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 378, p.GetParserRuleContext()) == 1 { + { + p.SetState(3473) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserTIMESTAMP: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3476) + p.Match(GQLParserTIMESTAMP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3480) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 379, p.GetParserRuleContext()) == 1 { + { + p.SetState(3477) + p.Match(GQLParserWITHOUT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3478) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3479) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + p.SetState(3483) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 380, p.GetParserRuleContext()) == 1 { + { + p.SetState(3482) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDateTypeContext is an interface to support dynamic dispatch. +type IDateTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DATE() antlr.TerminalNode + NotNull() INotNullContext + + // IsDateTypeContext differentiates from other interfaces. + IsDateTypeContext() +} + +type DateTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDateTypeContext() *DateTypeContext { + var p = new(DateTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateType + return p +} + +func InitEmptyDateTypeContext(p *DateTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateType +} + +func (*DateTypeContext) IsDateTypeContext() {} + +func NewDateTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DateTypeContext { + var p = new(DateTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dateType + + return p +} + +func (s *DateTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *DateTypeContext) DATE() antlr.TerminalNode { + return s.GetToken(GQLParserDATE, 0) +} + +func (s *DateTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *DateTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DateTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DateTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDateType(s) + } +} + +func (s *DateTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDateType(s) + } +} + +func (p *GQLParser) DateType() (localctx IDateTypeContext) { + localctx = NewDateTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 720, GQLParserRULE_dateType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3487) + p.Match(GQLParserDATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3489) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 382, p.GetParserRuleContext()) == 1 { + { + p.SetState(3488) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// ITimeTypeContext is an interface to support dynamic dispatch. +type ITimeTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ZONED() antlr.TerminalNode + AllTIME() []antlr.TerminalNode + TIME(i int) antlr.TerminalNode + NotNull() INotNullContext + WITH() antlr.TerminalNode + ZONE() antlr.TerminalNode + + // IsTimeTypeContext differentiates from other interfaces. + IsTimeTypeContext() +} + +type TimeTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeTypeContext() *TimeTypeContext { + var p = new(TimeTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeType + return p +} + +func InitEmptyTimeTypeContext(p *TimeTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeType +} + +func (*TimeTypeContext) IsTimeTypeContext() {} + +func NewTimeTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeTypeContext { + var p = new(TimeTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeType + + return p +} + +func (s *TimeTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeTypeContext) ZONED() antlr.TerminalNode { + return s.GetToken(GQLParserZONED, 0) +} + +func (s *TimeTypeContext) AllTIME() []antlr.TerminalNode { + return s.GetTokens(GQLParserTIME) +} + +func (s *TimeTypeContext) TIME(i int) antlr.TerminalNode { + return s.GetToken(GQLParserTIME, i) +} + +func (s *TimeTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *TimeTypeContext) WITH() antlr.TerminalNode { + return s.GetToken(GQLParserWITH, 0) +} + +func (s *TimeTypeContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *TimeTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeType(s) + } +} + +func (s *TimeTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeType(s) + } +} + +func (p *GQLParser) TimeType() (localctx ITimeTypeContext) { + localctx = NewTimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 722, GQLParserRULE_timeType) + p.SetState(3503) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserZONED: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3491) + p.Match(GQLParserZONED) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3492) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3494) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 383, p.GetParserRuleContext()) == 1 { + { + p.SetState(3493) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserTIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3496) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3497) + p.Match(GQLParserWITH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3498) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3499) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3501) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 384, p.GetParserRuleContext()) == 1 { + { + p.SetState(3500) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILocaltimeTypeContext is an interface to support dynamic dispatch. +type ILocaltimeTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOCAL() antlr.TerminalNode + AllTIME() []antlr.TerminalNode + TIME(i int) antlr.TerminalNode + NotNull() INotNullContext + WITHOUT() antlr.TerminalNode + ZONE() antlr.TerminalNode + + // IsLocaltimeTypeContext differentiates from other interfaces. + IsLocaltimeTypeContext() +} + +type LocaltimeTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLocaltimeTypeContext() *LocaltimeTypeContext { + var p = new(LocaltimeTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localtimeType + return p +} + +func InitEmptyLocaltimeTypeContext(p *LocaltimeTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localtimeType +} + +func (*LocaltimeTypeContext) IsLocaltimeTypeContext() {} + +func NewLocaltimeTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LocaltimeTypeContext { + var p = new(LocaltimeTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_localtimeType + + return p +} + +func (s *LocaltimeTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *LocaltimeTypeContext) LOCAL() antlr.TerminalNode { + return s.GetToken(GQLParserLOCAL, 0) +} + +func (s *LocaltimeTypeContext) AllTIME() []antlr.TerminalNode { + return s.GetTokens(GQLParserTIME) +} + +func (s *LocaltimeTypeContext) TIME(i int) antlr.TerminalNode { + return s.GetToken(GQLParserTIME, i) +} + +func (s *LocaltimeTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *LocaltimeTypeContext) WITHOUT() antlr.TerminalNode { + return s.GetToken(GQLParserWITHOUT, 0) +} + +func (s *LocaltimeTypeContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *LocaltimeTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LocaltimeTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LocaltimeTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLocaltimeType(s) + } +} + +func (s *LocaltimeTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLocaltimeType(s) + } +} + +func (p *GQLParser) LocaltimeType() (localctx ILocaltimeTypeContext) { + localctx = NewLocaltimeTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 724, GQLParserRULE_localtimeType) + p.SetState(3517) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLOCAL: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3505) + p.Match(GQLParserLOCAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3506) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3508) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 386, p.GetParserRuleContext()) == 1 { + { + p.SetState(3507) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case GQLParserTIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3510) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3511) + p.Match(GQLParserWITHOUT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3512) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3513) + p.Match(GQLParserZONE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3515) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 387, p.GetParserRuleContext()) == 1 { + { + p.SetState(3514) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITemporalDurationTypeContext is an interface to support dynamic dispatch. +type ITemporalDurationTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DURATION() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + TemporalDurationQualifier() ITemporalDurationQualifierContext + RIGHT_PAREN() antlr.TerminalNode + NotNull() INotNullContext + + // IsTemporalDurationTypeContext differentiates from other interfaces. + IsTemporalDurationTypeContext() +} + +type TemporalDurationTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTemporalDurationTypeContext() *TemporalDurationTypeContext { + var p = new(TemporalDurationTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalDurationType + return p +} + +func InitEmptyTemporalDurationTypeContext(p *TemporalDurationTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalDurationType +} + +func (*TemporalDurationTypeContext) IsTemporalDurationTypeContext() {} + +func NewTemporalDurationTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TemporalDurationTypeContext { + var p = new(TemporalDurationTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_temporalDurationType + + return p +} + +func (s *TemporalDurationTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *TemporalDurationTypeContext) DURATION() antlr.TerminalNode { + return s.GetToken(GQLParserDURATION, 0) +} + +func (s *TemporalDurationTypeContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TemporalDurationTypeContext) TemporalDurationQualifier() ITemporalDurationQualifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalDurationQualifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalDurationQualifierContext) +} + +func (s *TemporalDurationTypeContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TemporalDurationTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *TemporalDurationTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TemporalDurationTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TemporalDurationTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTemporalDurationType(s) + } +} + +func (s *TemporalDurationTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTemporalDurationType(s) + } +} + +func (p *GQLParser) TemporalDurationType() (localctx ITemporalDurationTypeContext) { + localctx = NewTemporalDurationTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 726, GQLParserRULE_temporalDurationType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3519) + p.Match(GQLParserDURATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3520) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3521) + p.TemporalDurationQualifier() + } + { + p.SetState(3522) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3524) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 389, p.GetParserRuleContext()) == 1 { + { + p.SetState(3523) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// ITemporalDurationQualifierContext is an interface to support dynamic dispatch. +type ITemporalDurationQualifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + YEAR() antlr.TerminalNode + TO() antlr.TerminalNode + MONTH() antlr.TerminalNode + DAY() antlr.TerminalNode + SECOND() antlr.TerminalNode + + // IsTemporalDurationQualifierContext differentiates from other interfaces. + IsTemporalDurationQualifierContext() +} + +type TemporalDurationQualifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTemporalDurationQualifierContext() *TemporalDurationQualifierContext { + var p = new(TemporalDurationQualifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalDurationQualifier + return p +} + +func InitEmptyTemporalDurationQualifierContext(p *TemporalDurationQualifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalDurationQualifier +} + +func (*TemporalDurationQualifierContext) IsTemporalDurationQualifierContext() {} + +func NewTemporalDurationQualifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TemporalDurationQualifierContext { + var p = new(TemporalDurationQualifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_temporalDurationQualifier + + return p +} + +func (s *TemporalDurationQualifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *TemporalDurationQualifierContext) YEAR() antlr.TerminalNode { + return s.GetToken(GQLParserYEAR, 0) +} + +func (s *TemporalDurationQualifierContext) TO() antlr.TerminalNode { + return s.GetToken(GQLParserTO, 0) +} + +func (s *TemporalDurationQualifierContext) MONTH() antlr.TerminalNode { + return s.GetToken(GQLParserMONTH, 0) +} + +func (s *TemporalDurationQualifierContext) DAY() antlr.TerminalNode { + return s.GetToken(GQLParserDAY, 0) +} + +func (s *TemporalDurationQualifierContext) SECOND() antlr.TerminalNode { + return s.GetToken(GQLParserSECOND, 0) +} + +func (s *TemporalDurationQualifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TemporalDurationQualifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TemporalDurationQualifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTemporalDurationQualifier(s) + } +} + +func (s *TemporalDurationQualifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTemporalDurationQualifier(s) + } +} + +func (p *GQLParser) TemporalDurationQualifier() (localctx ITemporalDurationQualifierContext) { + localctx = NewTemporalDurationQualifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 728, GQLParserRULE_temporalDurationQualifier) + p.SetState(3532) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserYEAR: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3526) + p.Match(GQLParserYEAR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3527) + p.Match(GQLParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3528) + p.Match(GQLParserMONTH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserDAY: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3529) + p.Match(GQLParserDAY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3530) + p.Match(GQLParserTO) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3531) + p.Match(GQLParserSECOND) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IReferenceValueTypeContext is an interface to support dynamic dispatch. +type IReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GraphReferenceValueType() IGraphReferenceValueTypeContext + BindingTableReferenceValueType() IBindingTableReferenceValueTypeContext + NodeReferenceValueType() INodeReferenceValueTypeContext + EdgeReferenceValueType() IEdgeReferenceValueTypeContext + + // IsReferenceValueTypeContext differentiates from other interfaces. + IsReferenceValueTypeContext() +} + +type ReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReferenceValueTypeContext() *ReferenceValueTypeContext { + var p = new(ReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_referenceValueType + return p +} + +func InitEmptyReferenceValueTypeContext(p *ReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_referenceValueType +} + +func (*ReferenceValueTypeContext) IsReferenceValueTypeContext() {} + +func NewReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ReferenceValueTypeContext { + var p = new(ReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_referenceValueType + + return p +} + +func (s *ReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ReferenceValueTypeContext) GraphReferenceValueType() IGraphReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphReferenceValueTypeContext) +} + +func (s *ReferenceValueTypeContext) BindingTableReferenceValueType() IBindingTableReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableReferenceValueTypeContext) +} + +func (s *ReferenceValueTypeContext) NodeReferenceValueType() INodeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeReferenceValueTypeContext) +} + +func (s *ReferenceValueTypeContext) EdgeReferenceValueType() IEdgeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeReferenceValueTypeContext) +} + +func (s *ReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterReferenceValueType(s) + } +} + +func (s *ReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitReferenceValueType(s) + } +} + +func (p *GQLParser) ReferenceValueType() (localctx IReferenceValueTypeContext) { + localctx = NewReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 730, GQLParserRULE_referenceValueType) + p.SetState(3538) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 391, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3534) + p.GraphReferenceValueType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3535) + p.BindingTableReferenceValueType() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3536) + p.NodeReferenceValueType() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3537) + p.EdgeReferenceValueType() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IImmaterialValueTypeContext is an interface to support dynamic dispatch. +type IImmaterialValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NullType() INullTypeContext + EmptyType() IEmptyTypeContext + + // IsImmaterialValueTypeContext differentiates from other interfaces. + IsImmaterialValueTypeContext() +} + +type ImmaterialValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyImmaterialValueTypeContext() *ImmaterialValueTypeContext { + var p = new(ImmaterialValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_immaterialValueType + return p +} + +func InitEmptyImmaterialValueTypeContext(p *ImmaterialValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_immaterialValueType +} + +func (*ImmaterialValueTypeContext) IsImmaterialValueTypeContext() {} + +func NewImmaterialValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ImmaterialValueTypeContext { + var p = new(ImmaterialValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_immaterialValueType + + return p +} + +func (s *ImmaterialValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ImmaterialValueTypeContext) NullType() INullTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullTypeContext) +} + +func (s *ImmaterialValueTypeContext) EmptyType() IEmptyTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEmptyTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEmptyTypeContext) +} + +func (s *ImmaterialValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ImmaterialValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ImmaterialValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterImmaterialValueType(s) + } +} + +func (s *ImmaterialValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitImmaterialValueType(s) + } +} + +func (p *GQLParser) ImmaterialValueType() (localctx IImmaterialValueTypeContext) { + localctx = NewImmaterialValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 732, GQLParserRULE_immaterialValueType) + p.SetState(3542) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 392, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3540) + p.NullType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3541) + p.EmptyType() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INullTypeContext is an interface to support dynamic dispatch. +type INullTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NULL_KW() antlr.TerminalNode + + // IsNullTypeContext differentiates from other interfaces. + IsNullTypeContext() +} + +type NullTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNullTypeContext() *NullTypeContext { + var p = new(NullTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullType + return p +} + +func InitEmptyNullTypeContext(p *NullTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullType +} + +func (*NullTypeContext) IsNullTypeContext() {} + +func NewNullTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullTypeContext { + var p = new(NullTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nullType + + return p +} + +func (s *NullTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *NullTypeContext) NULL_KW() antlr.TerminalNode { + return s.GetToken(GQLParserNULL_KW, 0) +} + +func (s *NullTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NullTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NullTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNullType(s) + } +} + +func (s *NullTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNullType(s) + } +} + +func (p *GQLParser) NullType() (localctx INullTypeContext) { + localctx = NewNullTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 734, GQLParserRULE_nullType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3544) + p.Match(GQLParserNULL_KW) + 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 +} + +// IEmptyTypeContext is an interface to support dynamic dispatch. +type IEmptyTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NULL_KW() antlr.TerminalNode + NotNull() INotNullContext + NOTHING() antlr.TerminalNode + + // IsEmptyTypeContext differentiates from other interfaces. + IsEmptyTypeContext() +} + +type EmptyTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEmptyTypeContext() *EmptyTypeContext { + var p = new(EmptyTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_emptyType + return p +} + +func InitEmptyEmptyTypeContext(p *EmptyTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_emptyType +} + +func (*EmptyTypeContext) IsEmptyTypeContext() {} + +func NewEmptyTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EmptyTypeContext { + var p = new(EmptyTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_emptyType + + return p +} + +func (s *EmptyTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *EmptyTypeContext) NULL_KW() antlr.TerminalNode { + return s.GetToken(GQLParserNULL_KW, 0) +} + +func (s *EmptyTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *EmptyTypeContext) NOTHING() antlr.TerminalNode { + return s.GetToken(GQLParserNOTHING, 0) +} + +func (s *EmptyTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EmptyTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EmptyTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEmptyType(s) + } +} + +func (s *EmptyTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEmptyType(s) + } +} + +func (p *GQLParser) EmptyType() (localctx IEmptyTypeContext) { + localctx = NewEmptyTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 736, GQLParserRULE_emptyType) + p.SetState(3549) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserNULL_KW: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3546) + p.Match(GQLParserNULL_KW) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3547) + p.NotNull() + } + + case GQLParserNOTHING: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3548) + p.Match(GQLParserNOTHING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IGraphReferenceValueTypeContext is an interface to support dynamic dispatch. +type IGraphReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OpenGraphReferenceValueType() IOpenGraphReferenceValueTypeContext + ClosedGraphReferenceValueType() IClosedGraphReferenceValueTypeContext + + // IsGraphReferenceValueTypeContext differentiates from other interfaces. + IsGraphReferenceValueTypeContext() +} + +type GraphReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphReferenceValueTypeContext() *GraphReferenceValueTypeContext { + var p = new(GraphReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphReferenceValueType + return p +} + +func InitEmptyGraphReferenceValueTypeContext(p *GraphReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphReferenceValueType +} + +func (*GraphReferenceValueTypeContext) IsGraphReferenceValueTypeContext() {} + +func NewGraphReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphReferenceValueTypeContext { + var p = new(GraphReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphReferenceValueType + + return p +} + +func (s *GraphReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphReferenceValueTypeContext) OpenGraphReferenceValueType() IOpenGraphReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOpenGraphReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOpenGraphReferenceValueTypeContext) +} + +func (s *GraphReferenceValueTypeContext) ClosedGraphReferenceValueType() IClosedGraphReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IClosedGraphReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IClosedGraphReferenceValueTypeContext) +} + +func (s *GraphReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphReferenceValueType(s) + } +} + +func (s *GraphReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphReferenceValueType(s) + } +} + +func (p *GQLParser) GraphReferenceValueType() (localctx IGraphReferenceValueTypeContext) { + localctx = NewGraphReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 738, GQLParserRULE_graphReferenceValueType) + p.SetState(3553) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserANY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3551) + p.OpenGraphReferenceValueType() + } + + case GQLParserGRAPH, GQLParserPROPERTY: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3552) + p.ClosedGraphReferenceValueType() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IClosedGraphReferenceValueTypeContext is an interface to support dynamic dispatch. +type IClosedGraphReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GRAPH() antlr.TerminalNode + NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext + PROPERTY() antlr.TerminalNode + NotNull() INotNullContext + + // IsClosedGraphReferenceValueTypeContext differentiates from other interfaces. + IsClosedGraphReferenceValueTypeContext() +} + +type ClosedGraphReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyClosedGraphReferenceValueTypeContext() *ClosedGraphReferenceValueTypeContext { + var p = new(ClosedGraphReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedGraphReferenceValueType + return p +} + +func InitEmptyClosedGraphReferenceValueTypeContext(p *ClosedGraphReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedGraphReferenceValueType +} + +func (*ClosedGraphReferenceValueTypeContext) IsClosedGraphReferenceValueTypeContext() {} + +func NewClosedGraphReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ClosedGraphReferenceValueTypeContext { + var p = new(ClosedGraphReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_closedGraphReferenceValueType + + return p +} + +func (s *ClosedGraphReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ClosedGraphReferenceValueTypeContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *ClosedGraphReferenceValueTypeContext) NestedGraphTypeSpecification() INestedGraphTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedGraphTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedGraphTypeSpecificationContext) +} + +func (s *ClosedGraphReferenceValueTypeContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *ClosedGraphReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ClosedGraphReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ClosedGraphReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ClosedGraphReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterClosedGraphReferenceValueType(s) + } +} + +func (s *ClosedGraphReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitClosedGraphReferenceValueType(s) + } +} + +func (p *GQLParser) ClosedGraphReferenceValueType() (localctx IClosedGraphReferenceValueTypeContext) { + localctx = NewClosedGraphReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 740, GQLParserRULE_closedGraphReferenceValueType) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3556) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(3555) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3558) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3559) + p.NestedGraphTypeSpecification() + } + p.SetState(3561) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 396, p.GetParserRuleContext()) == 1 { + { + p.SetState(3560) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IOpenGraphReferenceValueTypeContext is an interface to support dynamic dispatch. +type IOpenGraphReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ANY() antlr.TerminalNode + GRAPH() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + NotNull() INotNullContext + + // IsOpenGraphReferenceValueTypeContext differentiates from other interfaces. + IsOpenGraphReferenceValueTypeContext() +} + +type OpenGraphReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOpenGraphReferenceValueTypeContext() *OpenGraphReferenceValueTypeContext { + var p = new(OpenGraphReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openGraphReferenceValueType + return p +} + +func InitEmptyOpenGraphReferenceValueTypeContext(p *OpenGraphReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openGraphReferenceValueType +} + +func (*OpenGraphReferenceValueTypeContext) IsOpenGraphReferenceValueTypeContext() {} + +func NewOpenGraphReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OpenGraphReferenceValueTypeContext { + var p = new(OpenGraphReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_openGraphReferenceValueType + + return p +} + +func (s *OpenGraphReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *OpenGraphReferenceValueTypeContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *OpenGraphReferenceValueTypeContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *OpenGraphReferenceValueTypeContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *OpenGraphReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *OpenGraphReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OpenGraphReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OpenGraphReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOpenGraphReferenceValueType(s) + } +} + +func (s *OpenGraphReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOpenGraphReferenceValueType(s) + } +} + +func (p *GQLParser) OpenGraphReferenceValueType() (localctx IOpenGraphReferenceValueTypeContext) { + localctx = NewOpenGraphReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 742, GQLParserRULE_openGraphReferenceValueType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3563) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3565) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(3564) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3567) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3569) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 398, p.GetParserRuleContext()) == 1 { + { + p.SetState(3568) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IBindingTableReferenceValueTypeContext is an interface to support dynamic dispatch. +type IBindingTableReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingTableType() IBindingTableTypeContext + NotNull() INotNullContext + + // IsBindingTableReferenceValueTypeContext differentiates from other interfaces. + IsBindingTableReferenceValueTypeContext() +} + +type BindingTableReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableReferenceValueTypeContext() *BindingTableReferenceValueTypeContext { + var p = new(BindingTableReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableReferenceValueType + return p +} + +func InitEmptyBindingTableReferenceValueTypeContext(p *BindingTableReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableReferenceValueType +} + +func (*BindingTableReferenceValueTypeContext) IsBindingTableReferenceValueTypeContext() {} + +func NewBindingTableReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableReferenceValueTypeContext { + var p = new(BindingTableReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableReferenceValueType + + return p +} + +func (s *BindingTableReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableReferenceValueTypeContext) BindingTableType() IBindingTableTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableTypeContext) +} + +func (s *BindingTableReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *BindingTableReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableReferenceValueType(s) + } +} + +func (s *BindingTableReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableReferenceValueType(s) + } +} + +func (p *GQLParser) BindingTableReferenceValueType() (localctx IBindingTableReferenceValueTypeContext) { + localctx = NewBindingTableReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 744, GQLParserRULE_bindingTableReferenceValueType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3571) + p.BindingTableType() + } + p.SetState(3573) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 399, p.GetParserRuleContext()) == 1 { + { + p.SetState(3572) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// INodeReferenceValueTypeContext is an interface to support dynamic dispatch. +type INodeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OpenNodeReferenceValueType() IOpenNodeReferenceValueTypeContext + ClosedNodeReferenceValueType() IClosedNodeReferenceValueTypeContext + + // IsNodeReferenceValueTypeContext differentiates from other interfaces. + IsNodeReferenceValueTypeContext() +} + +type NodeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeReferenceValueTypeContext() *NodeReferenceValueTypeContext { + var p = new(NodeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReferenceValueType + return p +} + +func InitEmptyNodeReferenceValueTypeContext(p *NodeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReferenceValueType +} + +func (*NodeReferenceValueTypeContext) IsNodeReferenceValueTypeContext() {} + +func NewNodeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeReferenceValueTypeContext { + var p = new(NodeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeReferenceValueType + + return p +} + +func (s *NodeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeReferenceValueTypeContext) OpenNodeReferenceValueType() IOpenNodeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOpenNodeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOpenNodeReferenceValueTypeContext) +} + +func (s *NodeReferenceValueTypeContext) ClosedNodeReferenceValueType() IClosedNodeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IClosedNodeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IClosedNodeReferenceValueTypeContext) +} + +func (s *NodeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeReferenceValueType(s) + } +} + +func (s *NodeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeReferenceValueType(s) + } +} + +func (p *GQLParser) NodeReferenceValueType() (localctx INodeReferenceValueTypeContext) { + localctx = NewNodeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 746, GQLParserRULE_nodeReferenceValueType) + p.SetState(3577) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 400, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3575) + p.OpenNodeReferenceValueType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3576) + p.ClosedNodeReferenceValueType() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IClosedNodeReferenceValueTypeContext is an interface to support dynamic dispatch. +type IClosedNodeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeTypeSpecification() INodeTypeSpecificationContext + NotNull() INotNullContext + + // IsClosedNodeReferenceValueTypeContext differentiates from other interfaces. + IsClosedNodeReferenceValueTypeContext() +} + +type ClosedNodeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyClosedNodeReferenceValueTypeContext() *ClosedNodeReferenceValueTypeContext { + var p = new(ClosedNodeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedNodeReferenceValueType + return p +} + +func InitEmptyClosedNodeReferenceValueTypeContext(p *ClosedNodeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedNodeReferenceValueType +} + +func (*ClosedNodeReferenceValueTypeContext) IsClosedNodeReferenceValueTypeContext() {} + +func NewClosedNodeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ClosedNodeReferenceValueTypeContext { + var p = new(ClosedNodeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_closedNodeReferenceValueType + + return p +} + +func (s *ClosedNodeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ClosedNodeReferenceValueTypeContext) NodeTypeSpecification() INodeTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeTypeSpecificationContext) +} + +func (s *ClosedNodeReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ClosedNodeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ClosedNodeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ClosedNodeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterClosedNodeReferenceValueType(s) + } +} + +func (s *ClosedNodeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitClosedNodeReferenceValueType(s) + } +} + +func (p *GQLParser) ClosedNodeReferenceValueType() (localctx IClosedNodeReferenceValueTypeContext) { + localctx = NewClosedNodeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 748, GQLParserRULE_closedNodeReferenceValueType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3579) + p.NodeTypeSpecification() + } + p.SetState(3581) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 401, p.GetParserRuleContext()) == 1 { + { + p.SetState(3580) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IOpenNodeReferenceValueTypeContext is an interface to support dynamic dispatch. +type IOpenNodeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeSynonym() INodeSynonymContext + ANY() antlr.TerminalNode + NotNull() INotNullContext + + // IsOpenNodeReferenceValueTypeContext differentiates from other interfaces. + IsOpenNodeReferenceValueTypeContext() +} + +type OpenNodeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOpenNodeReferenceValueTypeContext() *OpenNodeReferenceValueTypeContext { + var p = new(OpenNodeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openNodeReferenceValueType + return p +} + +func InitEmptyOpenNodeReferenceValueTypeContext(p *OpenNodeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openNodeReferenceValueType +} + +func (*OpenNodeReferenceValueTypeContext) IsOpenNodeReferenceValueTypeContext() {} + +func NewOpenNodeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OpenNodeReferenceValueTypeContext { + var p = new(OpenNodeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_openNodeReferenceValueType + + return p +} + +func (s *OpenNodeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *OpenNodeReferenceValueTypeContext) NodeSynonym() INodeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeSynonymContext) +} + +func (s *OpenNodeReferenceValueTypeContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *OpenNodeReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *OpenNodeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OpenNodeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OpenNodeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOpenNodeReferenceValueType(s) + } +} + +func (s *OpenNodeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOpenNodeReferenceValueType(s) + } +} + +func (p *GQLParser) OpenNodeReferenceValueType() (localctx IOpenNodeReferenceValueTypeContext) { + localctx = NewOpenNodeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 750, GQLParserRULE_openNodeReferenceValueType) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3584) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserANY { + { + p.SetState(3583) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3586) + p.NodeSynonym() + } + p.SetState(3588) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 403, p.GetParserRuleContext()) == 1 { + { + p.SetState(3587) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IEdgeReferenceValueTypeContext is an interface to support dynamic dispatch. +type IEdgeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + OpenEdgeReferenceValueType() IOpenEdgeReferenceValueTypeContext + ClosedEdgeReferenceValueType() IClosedEdgeReferenceValueTypeContext + + // IsEdgeReferenceValueTypeContext differentiates from other interfaces. + IsEdgeReferenceValueTypeContext() +} + +type EdgeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeReferenceValueTypeContext() *EdgeReferenceValueTypeContext { + var p = new(EdgeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReferenceValueType + return p +} + +func InitEmptyEdgeReferenceValueTypeContext(p *EdgeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReferenceValueType +} + +func (*EdgeReferenceValueTypeContext) IsEdgeReferenceValueTypeContext() {} + +func NewEdgeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeReferenceValueTypeContext { + var p = new(EdgeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeReferenceValueType + + return p +} + +func (s *EdgeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeReferenceValueTypeContext) OpenEdgeReferenceValueType() IOpenEdgeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOpenEdgeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IOpenEdgeReferenceValueTypeContext) +} + +func (s *EdgeReferenceValueTypeContext) ClosedEdgeReferenceValueType() IClosedEdgeReferenceValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IClosedEdgeReferenceValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IClosedEdgeReferenceValueTypeContext) +} + +func (s *EdgeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeReferenceValueType(s) + } +} + +func (s *EdgeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeReferenceValueType(s) + } +} + +func (p *GQLParser) EdgeReferenceValueType() (localctx IEdgeReferenceValueTypeContext) { + localctx = NewEdgeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 752, GQLParserRULE_edgeReferenceValueType) + p.SetState(3592) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 404, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3590) + p.OpenEdgeReferenceValueType() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3591) + p.ClosedEdgeReferenceValueType() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IClosedEdgeReferenceValueTypeContext is an interface to support dynamic dispatch. +type IClosedEdgeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeTypeSpecification() IEdgeTypeSpecificationContext + NotNull() INotNullContext + + // IsClosedEdgeReferenceValueTypeContext differentiates from other interfaces. + IsClosedEdgeReferenceValueTypeContext() +} + +type ClosedEdgeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyClosedEdgeReferenceValueTypeContext() *ClosedEdgeReferenceValueTypeContext { + var p = new(ClosedEdgeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedEdgeReferenceValueType + return p +} + +func InitEmptyClosedEdgeReferenceValueTypeContext(p *ClosedEdgeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_closedEdgeReferenceValueType +} + +func (*ClosedEdgeReferenceValueTypeContext) IsClosedEdgeReferenceValueTypeContext() {} + +func NewClosedEdgeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ClosedEdgeReferenceValueTypeContext { + var p = new(ClosedEdgeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_closedEdgeReferenceValueType + + return p +} + +func (s *ClosedEdgeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *ClosedEdgeReferenceValueTypeContext) EdgeTypeSpecification() IEdgeTypeSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeTypeSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeTypeSpecificationContext) +} + +func (s *ClosedEdgeReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *ClosedEdgeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ClosedEdgeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ClosedEdgeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterClosedEdgeReferenceValueType(s) + } +} + +func (s *ClosedEdgeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitClosedEdgeReferenceValueType(s) + } +} + +func (p *GQLParser) ClosedEdgeReferenceValueType() (localctx IClosedEdgeReferenceValueTypeContext) { + localctx = NewClosedEdgeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 754, GQLParserRULE_closedEdgeReferenceValueType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3594) + p.EdgeTypeSpecification() + } + p.SetState(3596) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 405, p.GetParserRuleContext()) == 1 { + { + p.SetState(3595) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IOpenEdgeReferenceValueTypeContext is an interface to support dynamic dispatch. +type IOpenEdgeReferenceValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EdgeSynonym() IEdgeSynonymContext + ANY() antlr.TerminalNode + NotNull() INotNullContext + + // IsOpenEdgeReferenceValueTypeContext differentiates from other interfaces. + IsOpenEdgeReferenceValueTypeContext() +} + +type OpenEdgeReferenceValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOpenEdgeReferenceValueTypeContext() *OpenEdgeReferenceValueTypeContext { + var p = new(OpenEdgeReferenceValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openEdgeReferenceValueType + return p +} + +func InitEmptyOpenEdgeReferenceValueTypeContext(p *OpenEdgeReferenceValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_openEdgeReferenceValueType +} + +func (*OpenEdgeReferenceValueTypeContext) IsOpenEdgeReferenceValueTypeContext() {} + +func NewOpenEdgeReferenceValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OpenEdgeReferenceValueTypeContext { + var p = new(OpenEdgeReferenceValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_openEdgeReferenceValueType + + return p +} + +func (s *OpenEdgeReferenceValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *OpenEdgeReferenceValueTypeContext) EdgeSynonym() IEdgeSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeSynonymContext) +} + +func (s *OpenEdgeReferenceValueTypeContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *OpenEdgeReferenceValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *OpenEdgeReferenceValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *OpenEdgeReferenceValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *OpenEdgeReferenceValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterOpenEdgeReferenceValueType(s) + } +} + +func (s *OpenEdgeReferenceValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitOpenEdgeReferenceValueType(s) + } +} + +func (p *GQLParser) OpenEdgeReferenceValueType() (localctx IOpenEdgeReferenceValueTypeContext) { + localctx = NewOpenEdgeReferenceValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 756, GQLParserRULE_openEdgeReferenceValueType) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3599) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserANY { + { + p.SetState(3598) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3601) + p.EdgeSynonym() + } + p.SetState(3603) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 407, p.GetParserRuleContext()) == 1 { + { + p.SetState(3602) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IPathValueTypeContext is an interface to support dynamic dispatch. +type IPathValueTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PATH() antlr.TerminalNode + NotNull() INotNullContext + + // IsPathValueTypeContext differentiates from other interfaces. + IsPathValueTypeContext() +} + +type PathValueTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathValueTypeContext() *PathValueTypeContext { + var p = new(PathValueTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueType + return p +} + +func InitEmptyPathValueTypeContext(p *PathValueTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueType +} + +func (*PathValueTypeContext) IsPathValueTypeContext() {} + +func NewPathValueTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathValueTypeContext { + var p = new(PathValueTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathValueType + + return p +} + +func (s *PathValueTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathValueTypeContext) PATH() antlr.TerminalNode { + return s.GetToken(GQLParserPATH, 0) +} + +func (s *PathValueTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *PathValueTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathValueTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathValueTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathValueType(s) + } +} + +func (s *PathValueTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathValueType(s) + } +} + +func (p *GQLParser) PathValueType() (localctx IPathValueTypeContext) { + localctx = NewPathValueTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 758, GQLParserRULE_pathValueType) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3605) + p.Match(GQLParserPATH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3607) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 408, p.GetParserRuleContext()) == 1 { + { + p.SetState(3606) + p.NotNull() + } + + } else if p.HasError() { // JIM + 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 +} + +// IListValueTypeNameContext is an interface to support dynamic dispatch. +type IListValueTypeNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ListValueTypeNameSynonym() IListValueTypeNameSynonymContext + + // IsListValueTypeNameContext differentiates from other interfaces. + IsListValueTypeNameContext() +} + +type ListValueTypeNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueTypeNameContext() *ListValueTypeNameContext { + var p = new(ListValueTypeNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueTypeName + return p +} + +func InitEmptyListValueTypeNameContext(p *ListValueTypeNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueTypeName +} + +func (*ListValueTypeNameContext) IsListValueTypeNameContext() {} + +func NewListValueTypeNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueTypeNameContext { + var p = new(ListValueTypeNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueTypeName + + return p +} + +func (s *ListValueTypeNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueTypeNameContext) ListValueTypeNameSynonym() IListValueTypeNameSynonymContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueTypeNameSynonymContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueTypeNameSynonymContext) +} + +func (s *ListValueTypeNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueTypeNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueTypeNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueTypeName(s) + } +} + +func (s *ListValueTypeNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueTypeName(s) + } +} + +func (p *GQLParser) ListValueTypeName() (localctx IListValueTypeNameContext) { + localctx = NewListValueTypeNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 760, GQLParserRULE_listValueTypeName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3609) + p.ListValueTypeNameSynonym() + } + +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 +} + +// IListValueTypeNameSynonymContext is an interface to support dynamic dispatch. +type IListValueTypeNameSynonymContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LIST() antlr.TerminalNode + ARRAY() antlr.TerminalNode + + // IsListValueTypeNameSynonymContext differentiates from other interfaces. + IsListValueTypeNameSynonymContext() +} + +type ListValueTypeNameSynonymContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueTypeNameSynonymContext() *ListValueTypeNameSynonymContext { + var p = new(ListValueTypeNameSynonymContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueTypeNameSynonym + return p +} + +func InitEmptyListValueTypeNameSynonymContext(p *ListValueTypeNameSynonymContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueTypeNameSynonym +} + +func (*ListValueTypeNameSynonymContext) IsListValueTypeNameSynonymContext() {} + +func NewListValueTypeNameSynonymContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueTypeNameSynonymContext { + var p = new(ListValueTypeNameSynonymContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueTypeNameSynonym + + return p +} + +func (s *ListValueTypeNameSynonymContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueTypeNameSynonymContext) LIST() antlr.TerminalNode { + return s.GetToken(GQLParserLIST, 0) +} + +func (s *ListValueTypeNameSynonymContext) ARRAY() antlr.TerminalNode { + return s.GetToken(GQLParserARRAY, 0) +} + +func (s *ListValueTypeNameSynonymContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueTypeNameSynonymContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueTypeNameSynonymContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueTypeNameSynonym(s) + } +} + +func (s *ListValueTypeNameSynonymContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueTypeNameSynonym(s) + } +} + +func (p *GQLParser) ListValueTypeNameSynonym() (localctx IListValueTypeNameSynonymContext) { + localctx = NewListValueTypeNameSynonymContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 762, GQLParserRULE_listValueTypeNameSynonym) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3611) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserARRAY || _la == GQLParserLIST) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IRecordTypeContext is an interface to support dynamic dispatch. +type IRecordTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RECORD() antlr.TerminalNode + ANY() antlr.TerminalNode + NotNull() INotNullContext + FieldTypesSpecification() IFieldTypesSpecificationContext + + // IsRecordTypeContext differentiates from other interfaces. + IsRecordTypeContext() +} + +type RecordTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRecordTypeContext() *RecordTypeContext { + var p = new(RecordTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordType + return p +} + +func InitEmptyRecordTypeContext(p *RecordTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordType +} + +func (*RecordTypeContext) IsRecordTypeContext() {} + +func NewRecordTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RecordTypeContext { + var p = new(RecordTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_recordType + + return p +} + +func (s *RecordTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *RecordTypeContext) RECORD() antlr.TerminalNode { + return s.GetToken(GQLParserRECORD, 0) +} + +func (s *RecordTypeContext) ANY() antlr.TerminalNode { + return s.GetToken(GQLParserANY, 0) +} + +func (s *RecordTypeContext) NotNull() INotNullContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INotNullContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INotNullContext) +} + +func (s *RecordTypeContext) FieldTypesSpecification() IFieldTypesSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldTypesSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldTypesSpecificationContext) +} + +func (s *RecordTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RecordTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RecordTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRecordType(s) + } +} + +func (s *RecordTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRecordType(s) + } +} + +func (p *GQLParser) RecordType() (localctx IRecordTypeContext) { + localctx = NewRecordTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 764, GQLParserRULE_recordType) + var _la int + + p.SetState(3627) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 413, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(3614) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserANY { + { + p.SetState(3613) + p.Match(GQLParserANY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3616) + p.Match(GQLParserRECORD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3618) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 410, p.GetParserRuleContext()) == 1 { + { + p.SetState(3617) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case 2: + p.EnterOuterAlt(localctx, 2) + p.SetState(3621) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserRECORD { + { + p.SetState(3620) + p.Match(GQLParserRECORD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3623) + p.FieldTypesSpecification() + } + p.SetState(3625) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 412, p.GetParserRuleContext()) == 1 { + { + p.SetState(3624) + p.NotNull() + } + + } else if p.HasError() { // JIM + goto errorExit + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IFieldTypesSpecificationContext is an interface to support dynamic dispatch. +type IFieldTypesSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + RIGHT_BRACE() antlr.TerminalNode + FieldTypeList() IFieldTypeListContext + + // IsFieldTypesSpecificationContext differentiates from other interfaces. + IsFieldTypesSpecificationContext() +} + +type FieldTypesSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldTypesSpecificationContext() *FieldTypesSpecificationContext { + var p = new(FieldTypesSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldTypesSpecification + return p +} + +func InitEmptyFieldTypesSpecificationContext(p *FieldTypesSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldTypesSpecification +} + +func (*FieldTypesSpecificationContext) IsFieldTypesSpecificationContext() {} + +func NewFieldTypesSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldTypesSpecificationContext { + var p = new(FieldTypesSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldTypesSpecification + + return p +} + +func (s *FieldTypesSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldTypesSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *FieldTypesSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *FieldTypesSpecificationContext) FieldTypeList() IFieldTypeListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldTypeListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldTypeListContext) +} + +func (s *FieldTypesSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldTypesSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldTypesSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldTypesSpecification(s) + } +} + +func (s *FieldTypesSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldTypesSpecification(s) + } +} + +func (p *GQLParser) FieldTypesSpecification() (localctx IFieldTypesSpecificationContext) { + localctx = NewFieldTypesSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 766, GQLParserRULE_fieldTypesSpecification) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3629) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3631) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) { + { + p.SetState(3630) + p.FieldTypeList() + } + + } + { + p.SetState(3633) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IFieldTypeListContext is an interface to support dynamic dispatch. +type IFieldTypeListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllFieldType() []IFieldTypeContext + FieldType(i int) IFieldTypeContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsFieldTypeListContext differentiates from other interfaces. + IsFieldTypeListContext() +} + +type FieldTypeListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldTypeListContext() *FieldTypeListContext { + var p = new(FieldTypeListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldTypeList + return p +} + +func InitEmptyFieldTypeListContext(p *FieldTypeListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldTypeList +} + +func (*FieldTypeListContext) IsFieldTypeListContext() {} + +func NewFieldTypeListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldTypeListContext { + var p = new(FieldTypeListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldTypeList + + return p +} + +func (s *FieldTypeListContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldTypeListContext) AllFieldType() []IFieldTypeContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFieldTypeContext); ok { + len++ + } + } + + tst := make([]IFieldTypeContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFieldTypeContext); ok { + tst[i] = t.(IFieldTypeContext) + i++ + } + } + + return tst +} + +func (s *FieldTypeListContext) FieldType(i int) IFieldTypeContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldTypeContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFieldTypeContext) +} + +func (s *FieldTypeListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *FieldTypeListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *FieldTypeListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldTypeListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldTypeListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldTypeList(s) + } +} + +func (s *FieldTypeListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldTypeList(s) + } +} + +func (p *GQLParser) FieldTypeList() (localctx IFieldTypeListContext) { + localctx = NewFieldTypeListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 768, GQLParserRULE_fieldTypeList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3635) + p.FieldType() + } + p.SetState(3640) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(3636) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3637) + p.FieldType() + } + + p.SetState(3642) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// INotNullContext is an interface to support dynamic dispatch. +type INotNullContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NOT() antlr.TerminalNode + NULL_KW() antlr.TerminalNode + + // IsNotNullContext differentiates from other interfaces. + IsNotNullContext() +} + +type NotNullContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNotNullContext() *NotNullContext { + var p = new(NotNullContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_notNull + return p +} + +func InitEmptyNotNullContext(p *NotNullContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_notNull +} + +func (*NotNullContext) IsNotNullContext() {} + +func NewNotNullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NotNullContext { + var p = new(NotNullContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_notNull + + return p +} + +func (s *NotNullContext) GetParser() antlr.Parser { return s.parser } + +func (s *NotNullContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *NotNullContext) NULL_KW() antlr.TerminalNode { + return s.GetToken(GQLParserNULL_KW, 0) +} + +func (s *NotNullContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NotNullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NotNullContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNotNull(s) + } +} + +func (s *NotNullContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNotNull(s) + } +} + +func (p *GQLParser) NotNull() (localctx INotNullContext) { + localctx = NewNotNullContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 770, GQLParserRULE_notNull) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3643) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3644) + p.Match(GQLParserNULL_KW) + 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 +} + +// IFieldTypeContext is an interface to support dynamic dispatch. +type IFieldTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FieldName() IFieldNameContext + ValueType() IValueTypeContext + Typed() ITypedContext + + // IsFieldTypeContext differentiates from other interfaces. + IsFieldTypeContext() +} + +type FieldTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldTypeContext() *FieldTypeContext { + var p = new(FieldTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldType + return p +} + +func InitEmptyFieldTypeContext(p *FieldTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldType +} + +func (*FieldTypeContext) IsFieldTypeContext() {} + +func NewFieldTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldTypeContext { + var p = new(FieldTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldType + + return p +} + +func (s *FieldTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldTypeContext) FieldName() IFieldNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldNameContext) +} + +func (s *FieldTypeContext) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *FieldTypeContext) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *FieldTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldType(s) + } +} + +func (s *FieldTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldType(s) + } +} + +func (p *GQLParser) FieldType() (localctx IFieldTypeContext) { + localctx = NewFieldTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 772, GQLParserRULE_fieldType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3646) + p.FieldName() + } + p.SetState(3648) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserTYPED || _la == GQLParserDOUBLE_COLON { + { + p.SetState(3647) + p.Typed() + } + + } + { + p.SetState(3650) + p.valueType(0) + } + +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 +} + +// ISearchConditionContext is an interface to support dynamic dispatch. +type ISearchConditionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BooleanValueExpression() IBooleanValueExpressionContext + + // IsSearchConditionContext differentiates from other interfaces. + IsSearchConditionContext() +} + +type SearchConditionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySearchConditionContext() *SearchConditionContext { + var p = new(SearchConditionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchCondition + return p +} + +func InitEmptySearchConditionContext(p *SearchConditionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchCondition +} + +func (*SearchConditionContext) IsSearchConditionContext() {} + +func NewSearchConditionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SearchConditionContext { + var p = new(SearchConditionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_searchCondition + + return p +} + +func (s *SearchConditionContext) GetParser() antlr.Parser { return s.parser } + +func (s *SearchConditionContext) BooleanValueExpression() IBooleanValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBooleanValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBooleanValueExpressionContext) +} + +func (s *SearchConditionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SearchConditionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SearchConditionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSearchCondition(s) + } +} + +func (s *SearchConditionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSearchCondition(s) + } +} + +func (p *GQLParser) SearchCondition() (localctx ISearchConditionContext) { + localctx = NewSearchConditionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 774, GQLParserRULE_searchCondition) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3652) + p.BooleanValueExpression() + } + +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 +} + +// IPredicateContext is an interface to support dynamic dispatch. +type IPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ExistsPredicate() IExistsPredicateContext + NullPredicate() INullPredicateContext + ValueTypePredicate() IValueTypePredicateContext + DirectedPredicate() IDirectedPredicateContext + LabeledPredicate() ILabeledPredicateContext + SourceDestinationPredicate() ISourceDestinationPredicateContext + All_differentPredicate() IAll_differentPredicateContext + SamePredicate() ISamePredicateContext + Property_existsPredicate() IProperty_existsPredicateContext + + // IsPredicateContext differentiates from other interfaces. + IsPredicateContext() +} + +type PredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPredicateContext() *PredicateContext { + var p = new(PredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predicate + return p +} + +func InitEmptyPredicateContext(p *PredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_predicate +} + +func (*PredicateContext) IsPredicateContext() {} + +func NewPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PredicateContext { + var p = new(PredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_predicate + + return p +} + +func (s *PredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *PredicateContext) ExistsPredicate() IExistsPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExistsPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExistsPredicateContext) +} + +func (s *PredicateContext) NullPredicate() INullPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullPredicateContext) +} + +func (s *PredicateContext) ValueTypePredicate() IValueTypePredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypePredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypePredicateContext) +} + +func (s *PredicateContext) DirectedPredicate() IDirectedPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDirectedPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDirectedPredicateContext) +} + +func (s *PredicateContext) LabeledPredicate() ILabeledPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabeledPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabeledPredicateContext) +} + +func (s *PredicateContext) SourceDestinationPredicate() ISourceDestinationPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourceDestinationPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourceDestinationPredicateContext) +} + +func (s *PredicateContext) All_differentPredicate() IAll_differentPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAll_differentPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAll_differentPredicateContext) +} + +func (s *PredicateContext) SamePredicate() ISamePredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISamePredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISamePredicateContext) +} + +func (s *PredicateContext) Property_existsPredicate() IProperty_existsPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IProperty_existsPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IProperty_existsPredicateContext) +} + +func (s *PredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPredicate(s) + } +} + +func (s *PredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPredicate(s) + } +} + +func (p *GQLParser) Predicate() (localctx IPredicateContext) { + localctx = NewPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 776, GQLParserRULE_predicate) + p.SetState(3663) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 417, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3654) + p.ExistsPredicate() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3655) + p.NullPredicate() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3656) + p.ValueTypePredicate() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3657) + p.DirectedPredicate() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3658) + p.LabeledPredicate() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3659) + p.SourceDestinationPredicate() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3660) + p.All_differentPredicate() + } + + case 8: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3661) + p.SamePredicate() + } + + case 9: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(3662) + p.Property_existsPredicate() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICompOpContext is an interface to support dynamic dispatch. +type ICompOpContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EQUALS_OPERATOR() antlr.TerminalNode + NOT_EQUALS_OPERATOR() antlr.TerminalNode + LEFT_ANGLE_BRACKET() antlr.TerminalNode + RIGHT_ANGLE_BRACKET() antlr.TerminalNode + LESS_THAN_OR_EQUALS_OPERATOR() antlr.TerminalNode + GREATER_THAN_OR_EQUALS_OPERATOR() antlr.TerminalNode + + // IsCompOpContext differentiates from other interfaces. + IsCompOpContext() +} + +type CompOpContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompOpContext() *CompOpContext { + var p = new(CompOpContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compOp + return p +} + +func InitEmptyCompOpContext(p *CompOpContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_compOp +} + +func (*CompOpContext) IsCompOpContext() {} + +func NewCompOpContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CompOpContext { + var p = new(CompOpContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_compOp + + return p +} + +func (s *CompOpContext) GetParser() antlr.Parser { return s.parser } + +func (s *CompOpContext) EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserEQUALS_OPERATOR, 0) +} + +func (s *CompOpContext) NOT_EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserNOT_EQUALS_OPERATOR, 0) +} + +func (s *CompOpContext) LEFT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_ANGLE_BRACKET, 0) +} + +func (s *CompOpContext) RIGHT_ANGLE_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_ANGLE_BRACKET, 0) +} + +func (s *CompOpContext) LESS_THAN_OR_EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserLESS_THAN_OR_EQUALS_OPERATOR, 0) +} + +func (s *CompOpContext) GREATER_THAN_OR_EQUALS_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserGREATER_THAN_OR_EQUALS_OPERATOR, 0) +} + +func (s *CompOpContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CompOpContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CompOpContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCompOp(s) + } +} + +func (s *CompOpContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCompOp(s) + } +} + +func (p *GQLParser) CompOp() (localctx ICompOpContext) { + localctx = NewCompOpContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 778, GQLParserRULE_compOp) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3665) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-334)) & ^0x3f) == 0 && ((int64(1)<<(_la-334))&142807664897) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IExistsPredicateContext is an interface to support dynamic dispatch. +type IExistsPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EXISTS() antlr.TerminalNode + LEFT_BRACE() antlr.TerminalNode + GraphPattern() IGraphPatternContext + RIGHT_BRACE() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + MatchStatementBlock() IMatchStatementBlockContext + NestedQuerySpecification() INestedQuerySpecificationContext + + // IsExistsPredicateContext differentiates from other interfaces. + IsExistsPredicateContext() +} + +type ExistsPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExistsPredicateContext() *ExistsPredicateContext { + var p = new(ExistsPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_existsPredicate + return p +} + +func InitEmptyExistsPredicateContext(p *ExistsPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_existsPredicate +} + +func (*ExistsPredicateContext) IsExistsPredicateContext() {} + +func NewExistsPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExistsPredicateContext { + var p = new(ExistsPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_existsPredicate + + return p +} + +func (s *ExistsPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExistsPredicateContext) EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserEXISTS, 0) +} + +func (s *ExistsPredicateContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *ExistsPredicateContext) GraphPattern() IGraphPatternContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphPatternContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphPatternContext) +} + +func (s *ExistsPredicateContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *ExistsPredicateContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ExistsPredicateContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ExistsPredicateContext) MatchStatementBlock() IMatchStatementBlockContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IMatchStatementBlockContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IMatchStatementBlockContext) +} + +func (s *ExistsPredicateContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *ExistsPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExistsPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ExistsPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterExistsPredicate(s) + } +} + +func (s *ExistsPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitExistsPredicate(s) + } +} + +func (p *GQLParser) ExistsPredicate() (localctx IExistsPredicateContext) { + localctx = NewExistsPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 780, GQLParserRULE_existsPredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3667) + p.Match(GQLParserEXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3685) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 418, p.GetParserRuleContext()) { + case 1: + { + p.SetState(3668) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3669) + p.GraphPattern() + } + { + p.SetState(3670) + p.Match(GQLParserRIGHT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + { + p.SetState(3672) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3673) + p.GraphPattern() + } + { + p.SetState(3674) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 3: + { + p.SetState(3676) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3677) + p.MatchStatementBlock() + } + { + p.SetState(3678) + p.Match(GQLParserRIGHT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 4: + { + p.SetState(3680) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3681) + p.MatchStatementBlock() + } + { + p.SetState(3682) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 5: + { + p.SetState(3684) + p.NestedQuerySpecification() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INullPredicateContext is an interface to support dynamic dispatch. +type INullPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpressionPrimary() IValueExpressionPrimaryContext + NullPredicatePart2() INullPredicatePart2Context + + // IsNullPredicateContext differentiates from other interfaces. + IsNullPredicateContext() +} + +type NullPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNullPredicateContext() *NullPredicateContext { + var p = new(NullPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullPredicate + return p +} + +func InitEmptyNullPredicateContext(p *NullPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullPredicate +} + +func (*NullPredicateContext) IsNullPredicateContext() {} + +func NewNullPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullPredicateContext { + var p = new(NullPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nullPredicate + + return p +} + +func (s *NullPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *NullPredicateContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *NullPredicateContext) NullPredicatePart2() INullPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullPredicatePart2Context) +} + +func (s *NullPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NullPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NullPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNullPredicate(s) + } +} + +func (s *NullPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNullPredicate(s) + } +} + +func (p *GQLParser) NullPredicate() (localctx INullPredicateContext) { + localctx = NewNullPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 782, GQLParserRULE_nullPredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3687) + p.valueExpressionPrimary(0) + } + { + p.SetState(3688) + p.NullPredicatePart2() + } + +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 +} + +// INullPredicatePart2Context is an interface to support dynamic dispatch. +type INullPredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + NULL_KW() antlr.TerminalNode + NOT() antlr.TerminalNode + + // IsNullPredicatePart2Context differentiates from other interfaces. + IsNullPredicatePart2Context() +} + +type NullPredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNullPredicatePart2Context() *NullPredicatePart2Context { + var p = new(NullPredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullPredicatePart2 + return p +} + +func InitEmptyNullPredicatePart2Context(p *NullPredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullPredicatePart2 +} + +func (*NullPredicatePart2Context) IsNullPredicatePart2Context() {} + +func NewNullPredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullPredicatePart2Context { + var p = new(NullPredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nullPredicatePart2 + + return p +} + +func (s *NullPredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *NullPredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *NullPredicatePart2Context) NULL_KW() antlr.TerminalNode { + return s.GetToken(GQLParserNULL_KW, 0) +} + +func (s *NullPredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *NullPredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NullPredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NullPredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNullPredicatePart2(s) + } +} + +func (s *NullPredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNullPredicatePart2(s) + } +} + +func (p *GQLParser) NullPredicatePart2() (localctx INullPredicatePart2Context) { + localctx = NewNullPredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 784, GQLParserRULE_nullPredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3690) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3692) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3691) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3694) + p.Match(GQLParserNULL_KW) + 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 +} + +// IValueTypePredicateContext is an interface to support dynamic dispatch. +type IValueTypePredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpressionPrimary() IValueExpressionPrimaryContext + ValueTypePredicatePart2() IValueTypePredicatePart2Context + + // IsValueTypePredicateContext differentiates from other interfaces. + IsValueTypePredicateContext() +} + +type ValueTypePredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueTypePredicateContext() *ValueTypePredicateContext { + var p = new(ValueTypePredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueTypePredicate + return p +} + +func InitEmptyValueTypePredicateContext(p *ValueTypePredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueTypePredicate +} + +func (*ValueTypePredicateContext) IsValueTypePredicateContext() {} + +func NewValueTypePredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueTypePredicateContext { + var p = new(ValueTypePredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueTypePredicate + + return p +} + +func (s *ValueTypePredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueTypePredicateContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *ValueTypePredicateContext) ValueTypePredicatePart2() IValueTypePredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypePredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypePredicatePart2Context) +} + +func (s *ValueTypePredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueTypePredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueTypePredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueTypePredicate(s) + } +} + +func (s *ValueTypePredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueTypePredicate(s) + } +} + +func (p *GQLParser) ValueTypePredicate() (localctx IValueTypePredicateContext) { + localctx = NewValueTypePredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 786, GQLParserRULE_valueTypePredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3696) + p.valueExpressionPrimary(0) + } + { + p.SetState(3697) + p.ValueTypePredicatePart2() + } + +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 +} + +// IValueTypePredicatePart2Context is an interface to support dynamic dispatch. +type IValueTypePredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + Typed() ITypedContext + ValueType() IValueTypeContext + NOT() antlr.TerminalNode + + // IsValueTypePredicatePart2Context differentiates from other interfaces. + IsValueTypePredicatePart2Context() +} + +type ValueTypePredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueTypePredicatePart2Context() *ValueTypePredicatePart2Context { + var p = new(ValueTypePredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueTypePredicatePart2 + return p +} + +func InitEmptyValueTypePredicatePart2Context(p *ValueTypePredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueTypePredicatePart2 +} + +func (*ValueTypePredicatePart2Context) IsValueTypePredicatePart2Context() {} + +func NewValueTypePredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueTypePredicatePart2Context { + var p = new(ValueTypePredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueTypePredicatePart2 + + return p +} + +func (s *ValueTypePredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *ValueTypePredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *ValueTypePredicatePart2Context) Typed() ITypedContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITypedContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITypedContext) +} + +func (s *ValueTypePredicatePart2Context) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *ValueTypePredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *ValueTypePredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueTypePredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueTypePredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueTypePredicatePart2(s) + } +} + +func (s *ValueTypePredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueTypePredicatePart2(s) + } +} + +func (p *GQLParser) ValueTypePredicatePart2() (localctx IValueTypePredicatePart2Context) { + localctx = NewValueTypePredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 788, GQLParserRULE_valueTypePredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3699) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3701) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3700) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3703) + p.Typed() + } + { + p.SetState(3704) + p.valueType(0) + } + +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 +} + +// INormalizedPredicatePart2Context is an interface to support dynamic dispatch. +type INormalizedPredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + NORMALIZED() antlr.TerminalNode + NOT() antlr.TerminalNode + NormalForm() INormalFormContext + + // IsNormalizedPredicatePart2Context differentiates from other interfaces. + IsNormalizedPredicatePart2Context() +} + +type NormalizedPredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNormalizedPredicatePart2Context() *NormalizedPredicatePart2Context { + var p = new(NormalizedPredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalizedPredicatePart2 + return p +} + +func InitEmptyNormalizedPredicatePart2Context(p *NormalizedPredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalizedPredicatePart2 +} + +func (*NormalizedPredicatePart2Context) IsNormalizedPredicatePart2Context() {} + +func NewNormalizedPredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NormalizedPredicatePart2Context { + var p = new(NormalizedPredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_normalizedPredicatePart2 + + return p +} + +func (s *NormalizedPredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *NormalizedPredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *NormalizedPredicatePart2Context) NORMALIZED() antlr.TerminalNode { + return s.GetToken(GQLParserNORMALIZED, 0) +} + +func (s *NormalizedPredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *NormalizedPredicatePart2Context) NormalForm() INormalFormContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INormalFormContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INormalFormContext) +} + +func (s *NormalizedPredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NormalizedPredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NormalizedPredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNormalizedPredicatePart2(s) + } +} + +func (s *NormalizedPredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNormalizedPredicatePart2(s) + } +} + +func (p *GQLParser) NormalizedPredicatePart2() (localctx INormalizedPredicatePart2Context) { + localctx = NewNormalizedPredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 790, GQLParserRULE_normalizedPredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3706) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3708) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3707) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + p.SetState(3711) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if (int64((_la-296)) & ^0x3f) == 0 && ((int64(1)<<(_la-296))&15) != 0 { + { + p.SetState(3710) + p.NormalForm() + } + + } + { + p.SetState(3713) + p.Match(GQLParserNORMALIZED) + 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 +} + +// IDirectedPredicateContext is an interface to support dynamic dispatch. +type IDirectedPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableReference() IElementVariableReferenceContext + DirectedPredicatePart2() IDirectedPredicatePart2Context + + // IsDirectedPredicateContext differentiates from other interfaces. + IsDirectedPredicateContext() +} + +type DirectedPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDirectedPredicateContext() *DirectedPredicateContext { + var p = new(DirectedPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directedPredicate + return p +} + +func InitEmptyDirectedPredicateContext(p *DirectedPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directedPredicate +} + +func (*DirectedPredicateContext) IsDirectedPredicateContext() {} + +func NewDirectedPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DirectedPredicateContext { + var p = new(DirectedPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_directedPredicate + + return p +} + +func (s *DirectedPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *DirectedPredicateContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *DirectedPredicateContext) DirectedPredicatePart2() IDirectedPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDirectedPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDirectedPredicatePart2Context) +} + +func (s *DirectedPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DirectedPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DirectedPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDirectedPredicate(s) + } +} + +func (s *DirectedPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDirectedPredicate(s) + } +} + +func (p *GQLParser) DirectedPredicate() (localctx IDirectedPredicateContext) { + localctx = NewDirectedPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 792, GQLParserRULE_directedPredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3715) + p.ElementVariableReference() + } + { + p.SetState(3716) + p.DirectedPredicatePart2() + } + +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 +} + +// IDirectedPredicatePart2Context is an interface to support dynamic dispatch. +type IDirectedPredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + DIRECTED() antlr.TerminalNode + NOT() antlr.TerminalNode + + // IsDirectedPredicatePart2Context differentiates from other interfaces. + IsDirectedPredicatePart2Context() +} + +type DirectedPredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDirectedPredicatePart2Context() *DirectedPredicatePart2Context { + var p = new(DirectedPredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directedPredicatePart2 + return p +} + +func InitEmptyDirectedPredicatePart2Context(p *DirectedPredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directedPredicatePart2 +} + +func (*DirectedPredicatePart2Context) IsDirectedPredicatePart2Context() {} + +func NewDirectedPredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DirectedPredicatePart2Context { + var p = new(DirectedPredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_directedPredicatePart2 + + return p +} + +func (s *DirectedPredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *DirectedPredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *DirectedPredicatePart2Context) DIRECTED() antlr.TerminalNode { + return s.GetToken(GQLParserDIRECTED, 0) +} + +func (s *DirectedPredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *DirectedPredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DirectedPredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DirectedPredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDirectedPredicatePart2(s) + } +} + +func (s *DirectedPredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDirectedPredicatePart2(s) + } +} + +func (p *GQLParser) DirectedPredicatePart2() (localctx IDirectedPredicatePart2Context) { + localctx = NewDirectedPredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 794, GQLParserRULE_directedPredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3718) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3720) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3719) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3722) + p.Match(GQLParserDIRECTED) + 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 +} + +// ILabeledPredicateContext is an interface to support dynamic dispatch. +type ILabeledPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableReference() IElementVariableReferenceContext + LabeledPredicatePart2() ILabeledPredicatePart2Context + + // IsLabeledPredicateContext differentiates from other interfaces. + IsLabeledPredicateContext() +} + +type LabeledPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabeledPredicateContext() *LabeledPredicateContext { + var p = new(LabeledPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labeledPredicate + return p +} + +func InitEmptyLabeledPredicateContext(p *LabeledPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labeledPredicate +} + +func (*LabeledPredicateContext) IsLabeledPredicateContext() {} + +func NewLabeledPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabeledPredicateContext { + var p = new(LabeledPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labeledPredicate + + return p +} + +func (s *LabeledPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabeledPredicateContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *LabeledPredicateContext) LabeledPredicatePart2() ILabeledPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabeledPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabeledPredicatePart2Context) +} + +func (s *LabeledPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabeledPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabeledPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabeledPredicate(s) + } +} + +func (s *LabeledPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabeledPredicate(s) + } +} + +func (p *GQLParser) LabeledPredicate() (localctx ILabeledPredicateContext) { + localctx = NewLabeledPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 796, GQLParserRULE_labeledPredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3724) + p.ElementVariableReference() + } + { + p.SetState(3725) + p.LabeledPredicatePart2() + } + +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 +} + +// ILabeledPredicatePart2Context is an interface to support dynamic dispatch. +type ILabeledPredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IsLabeledOrColon() IIsLabeledOrColonContext + LabelExpression() ILabelExpressionContext + + // IsLabeledPredicatePart2Context differentiates from other interfaces. + IsLabeledPredicatePart2Context() +} + +type LabeledPredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabeledPredicatePart2Context() *LabeledPredicatePart2Context { + var p = new(LabeledPredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labeledPredicatePart2 + return p +} + +func InitEmptyLabeledPredicatePart2Context(p *LabeledPredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labeledPredicatePart2 +} + +func (*LabeledPredicatePart2Context) IsLabeledPredicatePart2Context() {} + +func NewLabeledPredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabeledPredicatePart2Context { + var p = new(LabeledPredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labeledPredicatePart2 + + return p +} + +func (s *LabeledPredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *LabeledPredicatePart2Context) IsLabeledOrColon() IIsLabeledOrColonContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIsLabeledOrColonContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIsLabeledOrColonContext) +} + +func (s *LabeledPredicatePart2Context) LabelExpression() ILabelExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabelExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabelExpressionContext) +} + +func (s *LabeledPredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabeledPredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabeledPredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabeledPredicatePart2(s) + } +} + +func (s *LabeledPredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabeledPredicatePart2(s) + } +} + +func (p *GQLParser) LabeledPredicatePart2() (localctx ILabeledPredicatePart2Context) { + localctx = NewLabeledPredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 798, GQLParserRULE_labeledPredicatePart2) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3727) + p.IsLabeledOrColon() + } + { + p.SetState(3728) + p.labelExpression(0) + } + +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 +} + +// IIsLabeledOrColonContext is an interface to support dynamic dispatch. +type IIsLabeledOrColonContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + LABELED() antlr.TerminalNode + NOT() antlr.TerminalNode + COLON() antlr.TerminalNode + + // IsIsLabeledOrColonContext differentiates from other interfaces. + IsIsLabeledOrColonContext() +} + +type IsLabeledOrColonContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIsLabeledOrColonContext() *IsLabeledOrColonContext { + var p = new(IsLabeledOrColonContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isLabeledOrColon + return p +} + +func InitEmptyIsLabeledOrColonContext(p *IsLabeledOrColonContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_isLabeledOrColon +} + +func (*IsLabeledOrColonContext) IsIsLabeledOrColonContext() {} + +func NewIsLabeledOrColonContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IsLabeledOrColonContext { + var p = new(IsLabeledOrColonContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_isLabeledOrColon + + return p +} + +func (s *IsLabeledOrColonContext) GetParser() antlr.Parser { return s.parser } + +func (s *IsLabeledOrColonContext) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *IsLabeledOrColonContext) LABELED() antlr.TerminalNode { + return s.GetToken(GQLParserLABELED, 0) +} + +func (s *IsLabeledOrColonContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *IsLabeledOrColonContext) COLON() antlr.TerminalNode { + return s.GetToken(GQLParserCOLON, 0) +} + +func (s *IsLabeledOrColonContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IsLabeledOrColonContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *IsLabeledOrColonContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIsLabeledOrColon(s) + } +} + +func (s *IsLabeledOrColonContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIsLabeledOrColon(s) + } +} + +func (p *GQLParser) IsLabeledOrColon() (localctx IIsLabeledOrColonContext) { + localctx = NewIsLabeledOrColonContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 800, GQLParserRULE_isLabeledOrColon) + var _la int + + p.SetState(3736) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserIS: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3730) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3732) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3731) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3734) + p.Match(GQLParserLABELED) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserCOLON: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3735) + p.Match(GQLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISourceDestinationPredicateContext is an interface to support dynamic dispatch. +type ISourceDestinationPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeReference() INodeReferenceContext + SourcePredicatePart2() ISourcePredicatePart2Context + DestinationPredicatePart2() IDestinationPredicatePart2Context + + // IsSourceDestinationPredicateContext differentiates from other interfaces. + IsSourceDestinationPredicateContext() +} + +type SourceDestinationPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySourceDestinationPredicateContext() *SourceDestinationPredicateContext { + var p = new(SourceDestinationPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceDestinationPredicate + return p +} + +func InitEmptySourceDestinationPredicateContext(p *SourceDestinationPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourceDestinationPredicate +} + +func (*SourceDestinationPredicateContext) IsSourceDestinationPredicateContext() {} + +func NewSourceDestinationPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SourceDestinationPredicateContext { + var p = new(SourceDestinationPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sourceDestinationPredicate + + return p +} + +func (s *SourceDestinationPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *SourceDestinationPredicateContext) NodeReference() INodeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeReferenceContext) +} + +func (s *SourceDestinationPredicateContext) SourcePredicatePart2() ISourcePredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourcePredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourcePredicatePart2Context) +} + +func (s *SourceDestinationPredicateContext) DestinationPredicatePart2() IDestinationPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationPredicatePart2Context) +} + +func (s *SourceDestinationPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SourceDestinationPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SourceDestinationPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSourceDestinationPredicate(s) + } +} + +func (s *SourceDestinationPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSourceDestinationPredicate(s) + } +} + +func (p *GQLParser) SourceDestinationPredicate() (localctx ISourceDestinationPredicateContext) { + localctx = NewSourceDestinationPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 802, GQLParserRULE_sourceDestinationPredicate) + p.SetState(3744) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 426, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3738) + p.NodeReference() + } + { + p.SetState(3739) + p.SourcePredicatePart2() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3741) + p.NodeReference() + } + { + p.SetState(3742) + p.DestinationPredicatePart2() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INodeReferenceContext is an interface to support dynamic dispatch. +type INodeReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableReference() IElementVariableReferenceContext + + // IsNodeReferenceContext differentiates from other interfaces. + IsNodeReferenceContext() +} + +type NodeReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeReferenceContext() *NodeReferenceContext { + var p = new(NodeReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReference + return p +} + +func InitEmptyNodeReferenceContext(p *NodeReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReference +} + +func (*NodeReferenceContext) IsNodeReferenceContext() {} + +func NewNodeReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeReferenceContext { + var p = new(NodeReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeReference + + return p +} + +func (s *NodeReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeReferenceContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *NodeReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeReference(s) + } +} + +func (s *NodeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeReference(s) + } +} + +func (p *GQLParser) NodeReference() (localctx INodeReferenceContext) { + localctx = NewNodeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 804, GQLParserRULE_nodeReference) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3746) + p.ElementVariableReference() + } + +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 +} + +// ISourcePredicatePart2Context is an interface to support dynamic dispatch. +type ISourcePredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + SOURCE() antlr.TerminalNode + OF() antlr.TerminalNode + EdgeReference() IEdgeReferenceContext + NOT() antlr.TerminalNode + + // IsSourcePredicatePart2Context differentiates from other interfaces. + IsSourcePredicatePart2Context() +} + +type SourcePredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySourcePredicatePart2Context() *SourcePredicatePart2Context { + var p = new(SourcePredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourcePredicatePart2 + return p +} + +func InitEmptySourcePredicatePart2Context(p *SourcePredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_sourcePredicatePart2 +} + +func (*SourcePredicatePart2Context) IsSourcePredicatePart2Context() {} + +func NewSourcePredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SourcePredicatePart2Context { + var p = new(SourcePredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_sourcePredicatePart2 + + return p +} + +func (s *SourcePredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *SourcePredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *SourcePredicatePart2Context) SOURCE() antlr.TerminalNode { + return s.GetToken(GQLParserSOURCE, 0) +} + +func (s *SourcePredicatePart2Context) OF() antlr.TerminalNode { + return s.GetToken(GQLParserOF, 0) +} + +func (s *SourcePredicatePart2Context) EdgeReference() IEdgeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeReferenceContext) +} + +func (s *SourcePredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *SourcePredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SourcePredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SourcePredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSourcePredicatePart2(s) + } +} + +func (s *SourcePredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSourcePredicatePart2(s) + } +} + +func (p *GQLParser) SourcePredicatePart2() (localctx ISourcePredicatePart2Context) { + localctx = NewSourcePredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 806, GQLParserRULE_sourcePredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3748) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3750) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3749) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3752) + p.Match(GQLParserSOURCE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3753) + p.Match(GQLParserOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3754) + p.EdgeReference() + } + +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 +} + +// IDestinationPredicatePart2Context is an interface to support dynamic dispatch. +type IDestinationPredicatePart2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + IS() antlr.TerminalNode + DESTINATION() antlr.TerminalNode + OF() antlr.TerminalNode + EdgeReference() IEdgeReferenceContext + NOT() antlr.TerminalNode + + // IsDestinationPredicatePart2Context differentiates from other interfaces. + IsDestinationPredicatePart2Context() +} + +type DestinationPredicatePart2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDestinationPredicatePart2Context() *DestinationPredicatePart2Context { + var p = new(DestinationPredicatePart2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationPredicatePart2 + return p +} + +func InitEmptyDestinationPredicatePart2Context(p *DestinationPredicatePart2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_destinationPredicatePart2 +} + +func (*DestinationPredicatePart2Context) IsDestinationPredicatePart2Context() {} + +func NewDestinationPredicatePart2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DestinationPredicatePart2Context { + var p = new(DestinationPredicatePart2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_destinationPredicatePart2 + + return p +} + +func (s *DestinationPredicatePart2Context) GetParser() antlr.Parser { return s.parser } + +func (s *DestinationPredicatePart2Context) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *DestinationPredicatePart2Context) DESTINATION() antlr.TerminalNode { + return s.GetToken(GQLParserDESTINATION, 0) +} + +func (s *DestinationPredicatePart2Context) OF() antlr.TerminalNode { + return s.GetToken(GQLParserOF, 0) +} + +func (s *DestinationPredicatePart2Context) EdgeReference() IEdgeReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeReferenceContext) +} + +func (s *DestinationPredicatePart2Context) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *DestinationPredicatePart2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DestinationPredicatePart2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DestinationPredicatePart2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDestinationPredicatePart2(s) + } +} + +func (s *DestinationPredicatePart2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDestinationPredicatePart2(s) + } +} + +func (p *GQLParser) DestinationPredicatePart2() (localctx IDestinationPredicatePart2Context) { + localctx = NewDestinationPredicatePart2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 808, GQLParserRULE_destinationPredicatePart2) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3756) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3758) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3757) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3760) + p.Match(GQLParserDESTINATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3761) + p.Match(GQLParserOF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3762) + p.EdgeReference() + } + +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 +} + +// IEdgeReferenceContext is an interface to support dynamic dispatch. +type IEdgeReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ElementVariableReference() IElementVariableReferenceContext + + // IsEdgeReferenceContext differentiates from other interfaces. + IsEdgeReferenceContext() +} + +type EdgeReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeReferenceContext() *EdgeReferenceContext { + var p = new(EdgeReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReference + return p +} + +func InitEmptyEdgeReferenceContext(p *EdgeReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReference +} + +func (*EdgeReferenceContext) IsEdgeReferenceContext() {} + +func NewEdgeReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeReferenceContext { + var p = new(EdgeReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeReference + + return p +} + +func (s *EdgeReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeReferenceContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *EdgeReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeReference(s) + } +} + +func (s *EdgeReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeReference(s) + } +} + +func (p *GQLParser) EdgeReference() (localctx IEdgeReferenceContext) { + localctx = NewEdgeReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 810, GQLParserRULE_edgeReference) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3764) + p.ElementVariableReference() + } + +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 +} + +// IAll_differentPredicateContext is an interface to support dynamic dispatch. +type IAll_differentPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ALL_DIFFERENT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + AllElementVariableReference() []IElementVariableReferenceContext + ElementVariableReference(i int) IElementVariableReferenceContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + + // IsAll_differentPredicateContext differentiates from other interfaces. + IsAll_differentPredicateContext() +} + +type All_differentPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAll_differentPredicateContext() *All_differentPredicateContext { + var p = new(All_differentPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_all_differentPredicate + return p +} + +func InitEmptyAll_differentPredicateContext(p *All_differentPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_all_differentPredicate +} + +func (*All_differentPredicateContext) IsAll_differentPredicateContext() {} + +func NewAll_differentPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *All_differentPredicateContext { + var p = new(All_differentPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_all_differentPredicate + + return p +} + +func (s *All_differentPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *All_differentPredicateContext) ALL_DIFFERENT() antlr.TerminalNode { + return s.GetToken(GQLParserALL_DIFFERENT, 0) +} + +func (s *All_differentPredicateContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *All_differentPredicateContext) AllElementVariableReference() []IElementVariableReferenceContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + len++ + } + } + + tst := make([]IElementVariableReferenceContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IElementVariableReferenceContext); ok { + tst[i] = t.(IElementVariableReferenceContext) + i++ + } + } + + return tst +} + +func (s *All_differentPredicateContext) ElementVariableReference(i int) IElementVariableReferenceContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *All_differentPredicateContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *All_differentPredicateContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *All_differentPredicateContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *All_differentPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *All_differentPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *All_differentPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAll_differentPredicate(s) + } +} + +func (s *All_differentPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAll_differentPredicate(s) + } +} + +func (p *GQLParser) All_differentPredicate() (localctx IAll_differentPredicateContext) { + localctx = NewAll_differentPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 812, GQLParserRULE_all_differentPredicate) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3766) + p.Match(GQLParserALL_DIFFERENT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3767) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3768) + p.ElementVariableReference() + } + { + p.SetState(3769) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3770) + p.ElementVariableReference() + } + p.SetState(3775) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(3771) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3772) + p.ElementVariableReference() + } + + p.SetState(3777) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(3778) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ISamePredicateContext is an interface to support dynamic dispatch. +type ISamePredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SAME() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + AllElementVariableReference() []IElementVariableReferenceContext + ElementVariableReference(i int) IElementVariableReferenceContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + + // IsSamePredicateContext differentiates from other interfaces. + IsSamePredicateContext() +} + +type SamePredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySamePredicateContext() *SamePredicateContext { + var p = new(SamePredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_samePredicate + return p +} + +func InitEmptySamePredicateContext(p *SamePredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_samePredicate +} + +func (*SamePredicateContext) IsSamePredicateContext() {} + +func NewSamePredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SamePredicateContext { + var p = new(SamePredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_samePredicate + + return p +} + +func (s *SamePredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *SamePredicateContext) SAME() antlr.TerminalNode { + return s.GetToken(GQLParserSAME, 0) +} + +func (s *SamePredicateContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SamePredicateContext) AllElementVariableReference() []IElementVariableReferenceContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + len++ + } + } + + tst := make([]IElementVariableReferenceContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IElementVariableReferenceContext); ok { + tst[i] = t.(IElementVariableReferenceContext) + i++ + } + } + + return tst +} + +func (s *SamePredicateContext) ElementVariableReference(i int) IElementVariableReferenceContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *SamePredicateContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *SamePredicateContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *SamePredicateContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SamePredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SamePredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SamePredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSamePredicate(s) + } +} + +func (s *SamePredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSamePredicate(s) + } +} + +func (p *GQLParser) SamePredicate() (localctx ISamePredicateContext) { + localctx = NewSamePredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 814, GQLParserRULE_samePredicate) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3780) + p.Match(GQLParserSAME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3781) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3782) + p.ElementVariableReference() + } + { + p.SetState(3783) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3784) + p.ElementVariableReference() + } + p.SetState(3789) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(3785) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3786) + p.ElementVariableReference() + } + + p.SetState(3791) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(3792) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IProperty_existsPredicateContext is an interface to support dynamic dispatch. +type IProperty_existsPredicateContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PROPERTY_EXISTS() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ElementVariableReference() IElementVariableReferenceContext + COMMA() antlr.TerminalNode + PropertyName() IPropertyNameContext + RIGHT_PAREN() antlr.TerminalNode + + // IsProperty_existsPredicateContext differentiates from other interfaces. + IsProperty_existsPredicateContext() +} + +type Property_existsPredicateContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProperty_existsPredicateContext() *Property_existsPredicateContext { + var p = new(Property_existsPredicateContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_property_existsPredicate + return p +} + +func InitEmptyProperty_existsPredicateContext(p *Property_existsPredicateContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_property_existsPredicate +} + +func (*Property_existsPredicateContext) IsProperty_existsPredicateContext() {} + +func NewProperty_existsPredicateContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Property_existsPredicateContext { + var p = new(Property_existsPredicateContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_property_existsPredicate + + return p +} + +func (s *Property_existsPredicateContext) GetParser() antlr.Parser { return s.parser } + +func (s *Property_existsPredicateContext) PROPERTY_EXISTS() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY_EXISTS, 0) +} + +func (s *Property_existsPredicateContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *Property_existsPredicateContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *Property_existsPredicateContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *Property_existsPredicateContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *Property_existsPredicateContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *Property_existsPredicateContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Property_existsPredicateContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Property_existsPredicateContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProperty_existsPredicate(s) + } +} + +func (s *Property_existsPredicateContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProperty_existsPredicate(s) + } +} + +func (p *GQLParser) Property_existsPredicate() (localctx IProperty_existsPredicateContext) { + localctx = NewProperty_existsPredicateContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 816, GQLParserRULE_property_existsPredicate) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3794) + p.Match(GQLParserPROPERTY_EXISTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3795) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3796) + p.ElementVariableReference() + } + { + p.SetState(3797) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3798) + p.PropertyName() + } + { + p.SetState(3799) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IValueExpressionContext is an interface to support dynamic dispatch. +type IValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + // IsValueExpressionContext differentiates from other interfaces. + IsValueExpressionContext() +} + +type ValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueExpressionContext() *ValueExpressionContext { + var p = new(ValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueExpression + return p +} + +func InitEmptyValueExpressionContext(p *ValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueExpression +} + +func (*ValueExpressionContext) IsValueExpressionContext() {} + +func NewValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueExpressionContext { + var p = new(ValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueExpression + + return p +} + +func (s *ValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueExpressionContext) CopyAll(ctx *ValueExpressionContext) { + s.CopyFrom(&ctx.BaseParserRuleContext) +} + +func (s *ValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +type ConjunctiveExprAltContext struct { + ValueExpressionContext +} + +func NewConjunctiveExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ConjunctiveExprAltContext { + var p = new(ConjunctiveExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *ConjunctiveExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ConjunctiveExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *ConjunctiveExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ConjunctiveExprAltContext) AND() antlr.TerminalNode { + return s.GetToken(GQLParserAND, 0) +} + +func (s *ConjunctiveExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterConjunctiveExprAlt(s) + } +} + +func (s *ConjunctiveExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitConjunctiveExprAlt(s) + } +} + +type PropertyGraphExprAltContext struct { + ValueExpressionContext +} + +func NewPropertyGraphExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PropertyGraphExprAltContext { + var p = new(PropertyGraphExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *PropertyGraphExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyGraphExprAltContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *PropertyGraphExprAltContext) GraphExpression() IGraphExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGraphExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGraphExpressionContext) +} + +func (s *PropertyGraphExprAltContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *PropertyGraphExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyGraphExprAlt(s) + } +} + +func (s *PropertyGraphExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyGraphExprAlt(s) + } +} + +type MultDivExprAltContext struct { + ValueExpressionContext + operator antlr.Token +} + +func NewMultDivExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *MultDivExprAltContext { + var p = new(MultDivExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *MultDivExprAltContext) GetOperator() antlr.Token { return s.operator } + +func (s *MultDivExprAltContext) SetOperator(v antlr.Token) { s.operator = v } + +func (s *MultDivExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *MultDivExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *MultDivExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *MultDivExprAltContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *MultDivExprAltContext) SOLIDUS() antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, 0) +} + +func (s *MultDivExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterMultDivExprAlt(s) + } +} + +func (s *MultDivExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitMultDivExprAlt(s) + } +} + +type BindingTableExprAltContext struct { + ValueExpressionContext +} + +func NewBindingTableExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *BindingTableExprAltContext { + var p = new(BindingTableExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *BindingTableExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableExprAltContext) TABLE() antlr.TerminalNode { + return s.GetToken(GQLParserTABLE, 0) +} + +func (s *BindingTableExprAltContext) BindingTableExpression() IBindingTableExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingTableExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingTableExpressionContext) +} + +func (s *BindingTableExprAltContext) BINDING() antlr.TerminalNode { + return s.GetToken(GQLParserBINDING, 0) +} + +func (s *BindingTableExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableExprAlt(s) + } +} + +func (s *BindingTableExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableExprAlt(s) + } +} + +type SignedExprAltContext struct { + ValueExpressionContext + sign antlr.Token +} + +func NewSignedExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *SignedExprAltContext { + var p = new(SignedExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *SignedExprAltContext) GetSign() antlr.Token { return s.sign } + +func (s *SignedExprAltContext) SetSign(v antlr.Token) { s.sign = v } + +func (s *SignedExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SignedExprAltContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *SignedExprAltContext) PLUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserPLUS_SIGN, 0) +} + +func (s *SignedExprAltContext) MINUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SIGN, 0) +} + +func (s *SignedExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSignedExprAlt(s) + } +} + +func (s *SignedExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSignedExprAlt(s) + } +} + +type IsNotExprAltContext struct { + ValueExpressionContext +} + +func NewIsNotExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *IsNotExprAltContext { + var p = new(IsNotExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *IsNotExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IsNotExprAltContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *IsNotExprAltContext) IS() antlr.TerminalNode { + return s.GetToken(GQLParserIS, 0) +} + +func (s *IsNotExprAltContext) TruthValue() ITruthValueContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITruthValueContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITruthValueContext) +} + +func (s *IsNotExprAltContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *IsNotExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIsNotExprAlt(s) + } +} + +func (s *IsNotExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIsNotExprAlt(s) + } +} + +type NormalizedPredicateExprAltContext struct { + ValueExpressionContext +} + +func NewNormalizedPredicateExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NormalizedPredicateExprAltContext { + var p = new(NormalizedPredicateExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *NormalizedPredicateExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NormalizedPredicateExprAltContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *NormalizedPredicateExprAltContext) NormalizedPredicatePart2() INormalizedPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INormalizedPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INormalizedPredicatePart2Context) +} + +func (s *NormalizedPredicateExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNormalizedPredicateExprAlt(s) + } +} + +func (s *NormalizedPredicateExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNormalizedPredicateExprAlt(s) + } +} + +type NotExprAltContext struct { + ValueExpressionContext +} + +func NewNotExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *NotExprAltContext { + var p = new(NotExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *NotExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NotExprAltContext) NOT() antlr.TerminalNode { + return s.GetToken(GQLParserNOT, 0) +} + +func (s *NotExprAltContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *NotExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNotExprAlt(s) + } +} + +func (s *NotExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNotExprAlt(s) + } +} + +type ValueFunctionExprAltContext struct { + ValueExpressionContext +} + +func NewValueFunctionExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ValueFunctionExprAltContext { + var p = new(ValueFunctionExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *ValueFunctionExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueFunctionExprAltContext) ValueFunction() IValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueFunctionContext) +} + +func (s *ValueFunctionExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueFunctionExprAlt(s) + } +} + +func (s *ValueFunctionExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueFunctionExprAlt(s) + } +} + +type ConcatenationExprAltContext struct { + ValueExpressionContext +} + +func NewConcatenationExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ConcatenationExprAltContext { + var p = new(ConcatenationExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *ConcatenationExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ConcatenationExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *ConcatenationExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ConcatenationExprAltContext) CONCATENATION_OPERATOR() antlr.TerminalNode { + return s.GetToken(GQLParserCONCATENATION_OPERATOR, 0) +} + +func (s *ConcatenationExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterConcatenationExprAlt(s) + } +} + +func (s *ConcatenationExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitConcatenationExprAlt(s) + } +} + +type DisjunctiveExprAltContext struct { + ValueExpressionContext + operator antlr.Token +} + +func NewDisjunctiveExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *DisjunctiveExprAltContext { + var p = new(DisjunctiveExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *DisjunctiveExprAltContext) GetOperator() antlr.Token { return s.operator } + +func (s *DisjunctiveExprAltContext) SetOperator(v antlr.Token) { s.operator = v } + +func (s *DisjunctiveExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DisjunctiveExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *DisjunctiveExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *DisjunctiveExprAltContext) OR() antlr.TerminalNode { + return s.GetToken(GQLParserOR, 0) +} + +func (s *DisjunctiveExprAltContext) XOR() antlr.TerminalNode { + return s.GetToken(GQLParserXOR, 0) +} + +func (s *DisjunctiveExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDisjunctiveExprAlt(s) + } +} + +func (s *DisjunctiveExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDisjunctiveExprAlt(s) + } +} + +type ComparisonExprAltContext struct { + ValueExpressionContext +} + +func NewComparisonExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *ComparisonExprAltContext { + var p = new(ComparisonExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *ComparisonExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ComparisonExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *ComparisonExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ComparisonExprAltContext) CompOp() ICompOpContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompOpContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompOpContext) +} + +func (s *ComparisonExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterComparisonExprAlt(s) + } +} + +func (s *ComparisonExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitComparisonExprAlt(s) + } +} + +type PrimaryExprAltContext struct { + ValueExpressionContext +} + +func NewPrimaryExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PrimaryExprAltContext { + var p = new(PrimaryExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *PrimaryExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PrimaryExprAltContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *PrimaryExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPrimaryExprAlt(s) + } +} + +func (s *PrimaryExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPrimaryExprAlt(s) + } +} + +type AddSubtractExprAltContext struct { + ValueExpressionContext + operator antlr.Token +} + +func NewAddSubtractExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *AddSubtractExprAltContext { + var p = new(AddSubtractExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *AddSubtractExprAltContext) GetOperator() antlr.Token { return s.operator } + +func (s *AddSubtractExprAltContext) SetOperator(v antlr.Token) { s.operator = v } + +func (s *AddSubtractExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AddSubtractExprAltContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *AddSubtractExprAltContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *AddSubtractExprAltContext) PLUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserPLUS_SIGN, 0) +} + +func (s *AddSubtractExprAltContext) MINUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SIGN, 0) +} + +func (s *AddSubtractExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAddSubtractExprAlt(s) + } +} + +func (s *AddSubtractExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAddSubtractExprAlt(s) + } +} + +type PredicateExprAltContext struct { + ValueExpressionContext +} + +func NewPredicateExprAltContext(parser antlr.Parser, ctx antlr.ParserRuleContext) *PredicateExprAltContext { + var p = new(PredicateExprAltContext) + + InitEmptyValueExpressionContext(&p.ValueExpressionContext) + p.parser = parser + p.CopyAll(ctx.(*ValueExpressionContext)) + + return p +} + +func (s *PredicateExprAltContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PredicateExprAltContext) Predicate() IPredicateContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPredicateContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPredicateContext) +} + +func (s *PredicateExprAltContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPredicateExprAlt(s) + } +} + +func (s *PredicateExprAltContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPredicateExprAlt(s) + } +} + +func (p *GQLParser) ValueExpression() (localctx IValueExpressionContext) { + return p.valueExpression(0) +} + +func (p *GQLParser) valueExpression(_p int) (localctx IValueExpressionContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewValueExpressionContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IValueExpressionContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 818 + p.EnterRecursionRule(localctx, 818, GQLParserRULE_valueExpression, _p) + var _la int + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3819) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 433, p.GetParserRuleContext()) { + case 1: + localctx = NewSignedExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + + { + p.SetState(3802) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*SignedExprAltContext).sign = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserMINUS_SIGN || _la == GQLParserPLUS_SIGN) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*SignedExprAltContext).sign = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3803) + p.valueExpression(15) + } + + case 2: + localctx = NewPredicateExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3804) + p.Predicate() + } + + case 3: + localctx = NewNotExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3805) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3806) + p.valueExpression(8) + } + + case 4: + localctx = NewPropertyGraphExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + p.SetState(3808) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserPROPERTY { + { + p.SetState(3807) + p.Match(GQLParserPROPERTY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3810) + p.Match(GQLParserGRAPH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3811) + p.GraphExpression() + } + + case 5: + localctx = NewBindingTableExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + p.SetState(3813) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserBINDING { + { + p.SetState(3812) + p.Match(GQLParserBINDING) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3815) + p.Match(GQLParserTABLE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3816) + p.BindingTableExpression() + } + + case 6: + localctx = NewValueFunctionExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3817) + p.ValueFunction() + } + + case 7: + localctx = NewPrimaryExprAltContext(p, localctx) + p.SetParserRuleContext(localctx) + _prevctx = localctx + { + p.SetState(3818) + p.valueExpressionPrimary(0) + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(3850) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 436, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(3848) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 435, p.GetParserRuleContext()) { + case 1: + localctx = NewMultDivExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3821) + + if !(p.Precpred(p.GetParserRuleContext(), 14)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) + goto errorExit + } + { + p.SetState(3822) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*MultDivExprAltContext).operator = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserASTERISK || _la == GQLParserSOLIDUS) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*MultDivExprAltContext).operator = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3823) + p.valueExpression(15) + } + + case 2: + localctx = NewAddSubtractExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3824) + + if !(p.Precpred(p.GetParserRuleContext(), 13)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) + goto errorExit + } + { + p.SetState(3825) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*AddSubtractExprAltContext).operator = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserMINUS_SIGN || _la == GQLParserPLUS_SIGN) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*AddSubtractExprAltContext).operator = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3826) + p.valueExpression(14) + } + + case 3: + localctx = NewConcatenationExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3827) + + if !(p.Precpred(p.GetParserRuleContext(), 12)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 12)", "")) + goto errorExit + } + { + p.SetState(3828) + p.Match(GQLParserCONCATENATION_OPERATOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3829) + p.valueExpression(13) + } + + case 4: + localctx = NewComparisonExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3830) + + if !(p.Precpred(p.GetParserRuleContext(), 11)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 11)", "")) + goto errorExit + } + { + p.SetState(3831) + p.CompOp() + } + { + p.SetState(3832) + p.valueExpression(12) + } + + case 5: + localctx = NewConjunctiveExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3834) + + if !(p.Precpred(p.GetParserRuleContext(), 6)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) + goto errorExit + } + { + p.SetState(3835) + p.Match(GQLParserAND) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3836) + p.valueExpression(7) + } + + case 6: + localctx = NewDisjunctiveExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3837) + + if !(p.Precpred(p.GetParserRuleContext(), 5)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) + goto errorExit + } + { + p.SetState(3838) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*DisjunctiveExprAltContext).operator = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserOR || _la == GQLParserXOR) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*DisjunctiveExprAltContext).operator = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3839) + p.valueExpression(6) + } + + case 7: + localctx = NewNormalizedPredicateExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3840) + + if !(p.Precpred(p.GetParserRuleContext(), 9)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) + goto errorExit + } + { + p.SetState(3841) + p.NormalizedPredicatePart2() + } + + case 8: + localctx = NewIsNotExprAltContext(p, NewValueExpressionContext(p, _parentctx, _parentState)) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpression) + p.SetState(3842) + + if !(p.Precpred(p.GetParserRuleContext(), 7)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) + goto errorExit + } + { + p.SetState(3843) + p.Match(GQLParserIS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(3845) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserNOT { + { + p.SetState(3844) + p.Match(GQLParserNOT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(3847) + p.TruthValue() + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + + } + p.SetState(3852) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 436, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IValueFunctionContext is an interface to support dynamic dispatch. +type IValueFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueFunction() INumericValueFunctionContext + DatetimeSubtraction() IDatetimeSubtractionContext + DatetimeValueFunction() IDatetimeValueFunctionContext + DurationValueFunction() IDurationValueFunctionContext + CharacterOrByteStringFunction() ICharacterOrByteStringFunctionContext + ListValueFunction() IListValueFunctionContext + + // IsValueFunctionContext differentiates from other interfaces. + IsValueFunctionContext() +} + +type ValueFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueFunctionContext() *ValueFunctionContext { + var p = new(ValueFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueFunction + return p +} + +func InitEmptyValueFunctionContext(p *ValueFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueFunction +} + +func (*ValueFunctionContext) IsValueFunctionContext() {} + +func NewValueFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueFunctionContext { + var p = new(ValueFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueFunction + + return p +} + +func (s *ValueFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueFunctionContext) NumericValueFunction() INumericValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueFunctionContext) +} + +func (s *ValueFunctionContext) DatetimeSubtraction() IDatetimeSubtractionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeSubtractionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeSubtractionContext) +} + +func (s *ValueFunctionContext) DatetimeValueFunction() IDatetimeValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeValueFunctionContext) +} + +func (s *ValueFunctionContext) DurationValueFunction() IDurationValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationValueFunctionContext) +} + +func (s *ValueFunctionContext) CharacterOrByteStringFunction() ICharacterOrByteStringFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterOrByteStringFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterOrByteStringFunctionContext) +} + +func (s *ValueFunctionContext) ListValueFunction() IListValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueFunctionContext) +} + +func (s *ValueFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueFunction(s) + } +} + +func (s *ValueFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueFunction(s) + } +} + +func (p *GQLParser) ValueFunction() (localctx IValueFunctionContext) { + localctx = NewValueFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 820, GQLParserRULE_valueFunction) + p.SetState(3859) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 437, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3853) + p.NumericValueFunction() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3854) + p.DatetimeSubtraction() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3855) + p.DatetimeValueFunction() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3856) + p.DurationValueFunction() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3857) + p.CharacterOrByteStringFunction() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3858) + p.ListValueFunction() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IBooleanValueExpressionContext is an interface to support dynamic dispatch. +type IBooleanValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsBooleanValueExpressionContext differentiates from other interfaces. + IsBooleanValueExpressionContext() +} + +type BooleanValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBooleanValueExpressionContext() *BooleanValueExpressionContext { + var p = new(BooleanValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_booleanValueExpression + return p +} + +func InitEmptyBooleanValueExpressionContext(p *BooleanValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_booleanValueExpression +} + +func (*BooleanValueExpressionContext) IsBooleanValueExpressionContext() {} + +func NewBooleanValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BooleanValueExpressionContext { + var p = new(BooleanValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_booleanValueExpression + + return p +} + +func (s *BooleanValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *BooleanValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *BooleanValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BooleanValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BooleanValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBooleanValueExpression(s) + } +} + +func (s *BooleanValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBooleanValueExpression(s) + } +} + +func (p *GQLParser) BooleanValueExpression() (localctx IBooleanValueExpressionContext) { + localctx = NewBooleanValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 822, GQLParserRULE_booleanValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3861) + p.valueExpression(0) + } + +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 +} + +// ICharacterOrByteStringFunctionContext is an interface to support dynamic dispatch. +type ICharacterOrByteStringFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SubCharacterOrByteString() ISubCharacterOrByteStringContext + TrimSingleCharacterOrByteString() ITrimSingleCharacterOrByteStringContext + FoldCharacterString() IFoldCharacterStringContext + TrimMultiCharacterCharacterString() ITrimMultiCharacterCharacterStringContext + NormalizeCharacterString() INormalizeCharacterStringContext + + // IsCharacterOrByteStringFunctionContext differentiates from other interfaces. + IsCharacterOrByteStringFunctionContext() +} + +type CharacterOrByteStringFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCharacterOrByteStringFunctionContext() *CharacterOrByteStringFunctionContext { + var p = new(CharacterOrByteStringFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterOrByteStringFunction + return p +} + +func InitEmptyCharacterOrByteStringFunctionContext(p *CharacterOrByteStringFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterOrByteStringFunction +} + +func (*CharacterOrByteStringFunctionContext) IsCharacterOrByteStringFunctionContext() {} + +func NewCharacterOrByteStringFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharacterOrByteStringFunctionContext { + var p = new(CharacterOrByteStringFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_characterOrByteStringFunction + + return p +} + +func (s *CharacterOrByteStringFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CharacterOrByteStringFunctionContext) SubCharacterOrByteString() ISubCharacterOrByteStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISubCharacterOrByteStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISubCharacterOrByteStringContext) +} + +func (s *CharacterOrByteStringFunctionContext) TrimSingleCharacterOrByteString() ITrimSingleCharacterOrByteStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimSingleCharacterOrByteStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimSingleCharacterOrByteStringContext) +} + +func (s *CharacterOrByteStringFunctionContext) FoldCharacterString() IFoldCharacterStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFoldCharacterStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFoldCharacterStringContext) +} + +func (s *CharacterOrByteStringFunctionContext) TrimMultiCharacterCharacterString() ITrimMultiCharacterCharacterStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimMultiCharacterCharacterStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimMultiCharacterCharacterStringContext) +} + +func (s *CharacterOrByteStringFunctionContext) NormalizeCharacterString() INormalizeCharacterStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INormalizeCharacterStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INormalizeCharacterStringContext) +} + +func (s *CharacterOrByteStringFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CharacterOrByteStringFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CharacterOrByteStringFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCharacterOrByteStringFunction(s) + } +} + +func (s *CharacterOrByteStringFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCharacterOrByteStringFunction(s) + } +} + +func (p *GQLParser) CharacterOrByteStringFunction() (localctx ICharacterOrByteStringFunctionContext) { + localctx = NewCharacterOrByteStringFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 824, GQLParserRULE_characterOrByteStringFunction) + p.SetState(3868) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT, GQLParserRIGHT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3863) + p.SubCharacterOrByteString() + } + + case GQLParserTRIM: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3864) + p.TrimSingleCharacterOrByteString() + } + + case GQLParserLOWER, GQLParserUPPER: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3865) + p.FoldCharacterString() + } + + case GQLParserBTRIM, GQLParserLTRIM, GQLParserRTRIM: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3866) + p.TrimMultiCharacterCharacterString() + } + + case GQLParserNORMALIZE: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3867) + p.NormalizeCharacterString() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ISubCharacterOrByteStringContext is an interface to support dynamic dispatch. +type ISubCharacterOrByteStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + COMMA() antlr.TerminalNode + StringLength() IStringLengthContext + RIGHT_PAREN() antlr.TerminalNode + LEFT() antlr.TerminalNode + RIGHT() antlr.TerminalNode + + // IsSubCharacterOrByteStringContext differentiates from other interfaces. + IsSubCharacterOrByteStringContext() +} + +type SubCharacterOrByteStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySubCharacterOrByteStringContext() *SubCharacterOrByteStringContext { + var p = new(SubCharacterOrByteStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subCharacterOrByteString + return p +} + +func InitEmptySubCharacterOrByteStringContext(p *SubCharacterOrByteStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subCharacterOrByteString +} + +func (*SubCharacterOrByteStringContext) IsSubCharacterOrByteStringContext() {} + +func NewSubCharacterOrByteStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SubCharacterOrByteStringContext { + var p = new(SubCharacterOrByteStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_subCharacterOrByteString + + return p +} + +func (s *SubCharacterOrByteStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *SubCharacterOrByteStringContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SubCharacterOrByteStringContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *SubCharacterOrByteStringContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *SubCharacterOrByteStringContext) StringLength() IStringLengthContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IStringLengthContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IStringLengthContext) +} + +func (s *SubCharacterOrByteStringContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SubCharacterOrByteStringContext) LEFT() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT, 0) +} + +func (s *SubCharacterOrByteStringContext) RIGHT() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT, 0) +} + +func (s *SubCharacterOrByteStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SubCharacterOrByteStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SubCharacterOrByteStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSubCharacterOrByteString(s) + } +} + +func (s *SubCharacterOrByteStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSubCharacterOrByteString(s) + } +} + +func (p *GQLParser) SubCharacterOrByteString() (localctx ISubCharacterOrByteStringContext) { + localctx = NewSubCharacterOrByteStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 826, GQLParserRULE_subCharacterOrByteString) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3870) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserLEFT || _la == GQLParserRIGHT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3871) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3872) + p.valueExpression(0) + } + { + p.SetState(3873) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3874) + p.StringLength() + } + { + p.SetState(3875) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ITrimSingleCharacterOrByteStringContext is an interface to support dynamic dispatch. +type ITrimSingleCharacterOrByteStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TRIM() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + TrimOperands() ITrimOperandsContext + RIGHT_PAREN() antlr.TerminalNode + + // IsTrimSingleCharacterOrByteStringContext differentiates from other interfaces. + IsTrimSingleCharacterOrByteStringContext() +} + +type TrimSingleCharacterOrByteStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimSingleCharacterOrByteStringContext() *TrimSingleCharacterOrByteStringContext { + var p = new(TrimSingleCharacterOrByteStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimSingleCharacterOrByteString + return p +} + +func InitEmptyTrimSingleCharacterOrByteStringContext(p *TrimSingleCharacterOrByteStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimSingleCharacterOrByteString +} + +func (*TrimSingleCharacterOrByteStringContext) IsTrimSingleCharacterOrByteStringContext() {} + +func NewTrimSingleCharacterOrByteStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimSingleCharacterOrByteStringContext { + var p = new(TrimSingleCharacterOrByteStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimSingleCharacterOrByteString + + return p +} + +func (s *TrimSingleCharacterOrByteStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimSingleCharacterOrByteStringContext) TRIM() antlr.TerminalNode { + return s.GetToken(GQLParserTRIM, 0) +} + +func (s *TrimSingleCharacterOrByteStringContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TrimSingleCharacterOrByteStringContext) TrimOperands() ITrimOperandsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimOperandsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimOperandsContext) +} + +func (s *TrimSingleCharacterOrByteStringContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TrimSingleCharacterOrByteStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimSingleCharacterOrByteStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimSingleCharacterOrByteStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimSingleCharacterOrByteString(s) + } +} + +func (s *TrimSingleCharacterOrByteStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimSingleCharacterOrByteString(s) + } +} + +func (p *GQLParser) TrimSingleCharacterOrByteString() (localctx ITrimSingleCharacterOrByteStringContext) { + localctx = NewTrimSingleCharacterOrByteStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 828, GQLParserRULE_trimSingleCharacterOrByteString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3877) + p.Match(GQLParserTRIM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3878) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3879) + p.TrimOperands() + } + { + p.SetState(3880) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IFoldCharacterStringContext is an interface to support dynamic dispatch. +type IFoldCharacterStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + UPPER() antlr.TerminalNode + LOWER() antlr.TerminalNode + + // IsFoldCharacterStringContext differentiates from other interfaces. + IsFoldCharacterStringContext() +} + +type FoldCharacterStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFoldCharacterStringContext() *FoldCharacterStringContext { + var p = new(FoldCharacterStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_foldCharacterString + return p +} + +func InitEmptyFoldCharacterStringContext(p *FoldCharacterStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_foldCharacterString +} + +func (*FoldCharacterStringContext) IsFoldCharacterStringContext() {} + +func NewFoldCharacterStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FoldCharacterStringContext { + var p = new(FoldCharacterStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_foldCharacterString + + return p +} + +func (s *FoldCharacterStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *FoldCharacterStringContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *FoldCharacterStringContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *FoldCharacterStringContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *FoldCharacterStringContext) UPPER() antlr.TerminalNode { + return s.GetToken(GQLParserUPPER, 0) +} + +func (s *FoldCharacterStringContext) LOWER() antlr.TerminalNode { + return s.GetToken(GQLParserLOWER, 0) +} + +func (s *FoldCharacterStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FoldCharacterStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FoldCharacterStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFoldCharacterString(s) + } +} + +func (s *FoldCharacterStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFoldCharacterString(s) + } +} + +func (p *GQLParser) FoldCharacterString() (localctx IFoldCharacterStringContext) { + localctx = NewFoldCharacterStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 830, GQLParserRULE_foldCharacterString) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3882) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserLOWER || _la == GQLParserUPPER) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3883) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3884) + p.valueExpression(0) + } + { + p.SetState(3885) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ITrimMultiCharacterCharacterStringContext is an interface to support dynamic dispatch. +type ITrimMultiCharacterCharacterStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + AllValueExpression() []IValueExpressionContext + ValueExpression(i int) IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + BTRIM() antlr.TerminalNode + LTRIM() antlr.TerminalNode + RTRIM() antlr.TerminalNode + COMMA() antlr.TerminalNode + + // IsTrimMultiCharacterCharacterStringContext differentiates from other interfaces. + IsTrimMultiCharacterCharacterStringContext() +} + +type TrimMultiCharacterCharacterStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimMultiCharacterCharacterStringContext() *TrimMultiCharacterCharacterStringContext { + var p = new(TrimMultiCharacterCharacterStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimMultiCharacterCharacterString + return p +} + +func InitEmptyTrimMultiCharacterCharacterStringContext(p *TrimMultiCharacterCharacterStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimMultiCharacterCharacterString +} + +func (*TrimMultiCharacterCharacterStringContext) IsTrimMultiCharacterCharacterStringContext() {} + +func NewTrimMultiCharacterCharacterStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimMultiCharacterCharacterStringContext { + var p = new(TrimMultiCharacterCharacterStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimMultiCharacterCharacterString + + return p +} + +func (s *TrimMultiCharacterCharacterStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimMultiCharacterCharacterStringContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *TrimMultiCharacterCharacterStringContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *TrimMultiCharacterCharacterStringContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) BTRIM() antlr.TerminalNode { + return s.GetToken(GQLParserBTRIM, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) LTRIM() antlr.TerminalNode { + return s.GetToken(GQLParserLTRIM, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) RTRIM() antlr.TerminalNode { + return s.GetToken(GQLParserRTRIM, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *TrimMultiCharacterCharacterStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimMultiCharacterCharacterStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimMultiCharacterCharacterStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimMultiCharacterCharacterString(s) + } +} + +func (s *TrimMultiCharacterCharacterStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimMultiCharacterCharacterString(s) + } +} + +func (p *GQLParser) TrimMultiCharacterCharacterString() (localctx ITrimMultiCharacterCharacterStringContext) { + localctx = NewTrimMultiCharacterCharacterStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 832, GQLParserRULE_trimMultiCharacterCharacterString) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3887) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserBTRIM || _la == GQLParserLTRIM || _la == GQLParserRTRIM) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(3888) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3889) + p.valueExpression(0) + } + p.SetState(3892) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMA { + { + p.SetState(3890) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3891) + p.valueExpression(0) + } + + } + { + p.SetState(3894) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INormalizeCharacterStringContext is an interface to support dynamic dispatch. +type INormalizeCharacterStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NORMALIZE() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + COMMA() antlr.TerminalNode + NormalForm() INormalFormContext + + // IsNormalizeCharacterStringContext differentiates from other interfaces. + IsNormalizeCharacterStringContext() +} + +type NormalizeCharacterStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNormalizeCharacterStringContext() *NormalizeCharacterStringContext { + var p = new(NormalizeCharacterStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalizeCharacterString + return p +} + +func InitEmptyNormalizeCharacterStringContext(p *NormalizeCharacterStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalizeCharacterString +} + +func (*NormalizeCharacterStringContext) IsNormalizeCharacterStringContext() {} + +func NewNormalizeCharacterStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NormalizeCharacterStringContext { + var p = new(NormalizeCharacterStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_normalizeCharacterString + + return p +} + +func (s *NormalizeCharacterStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *NormalizeCharacterStringContext) NORMALIZE() antlr.TerminalNode { + return s.GetToken(GQLParserNORMALIZE, 0) +} + +func (s *NormalizeCharacterStringContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *NormalizeCharacterStringContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *NormalizeCharacterStringContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *NormalizeCharacterStringContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *NormalizeCharacterStringContext) NormalForm() INormalFormContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INormalFormContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INormalFormContext) +} + +func (s *NormalizeCharacterStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NormalizeCharacterStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NormalizeCharacterStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNormalizeCharacterString(s) + } +} + +func (s *NormalizeCharacterStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNormalizeCharacterString(s) + } +} + +func (p *GQLParser) NormalizeCharacterString() (localctx INormalizeCharacterStringContext) { + localctx = NewNormalizeCharacterStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 834, GQLParserRULE_normalizeCharacterString) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3896) + p.Match(GQLParserNORMALIZE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3897) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3898) + p.valueExpression(0) + } + p.SetState(3901) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserCOMMA { + { + p.SetState(3899) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3900) + p.NormalForm() + } + + } + { + p.SetState(3903) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INodeReferenceValueExpressionContext is an interface to support dynamic dispatch. +type INodeReferenceValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpressionPrimary() IValueExpressionPrimaryContext + + // IsNodeReferenceValueExpressionContext differentiates from other interfaces. + IsNodeReferenceValueExpressionContext() +} + +type NodeReferenceValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeReferenceValueExpressionContext() *NodeReferenceValueExpressionContext { + var p = new(NodeReferenceValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReferenceValueExpression + return p +} + +func InitEmptyNodeReferenceValueExpressionContext(p *NodeReferenceValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeReferenceValueExpression +} + +func (*NodeReferenceValueExpressionContext) IsNodeReferenceValueExpressionContext() {} + +func NewNodeReferenceValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeReferenceValueExpressionContext { + var p = new(NodeReferenceValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeReferenceValueExpression + + return p +} + +func (s *NodeReferenceValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeReferenceValueExpressionContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *NodeReferenceValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeReferenceValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeReferenceValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeReferenceValueExpression(s) + } +} + +func (s *NodeReferenceValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeReferenceValueExpression(s) + } +} + +func (p *GQLParser) NodeReferenceValueExpression() (localctx INodeReferenceValueExpressionContext) { + localctx = NewNodeReferenceValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 836, GQLParserRULE_nodeReferenceValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3905) + p.valueExpressionPrimary(0) + } + +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 +} + +// IEdgeReferenceValueExpressionContext is an interface to support dynamic dispatch. +type IEdgeReferenceValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpressionPrimary() IValueExpressionPrimaryContext + + // IsEdgeReferenceValueExpressionContext differentiates from other interfaces. + IsEdgeReferenceValueExpressionContext() +} + +type EdgeReferenceValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeReferenceValueExpressionContext() *EdgeReferenceValueExpressionContext { + var p = new(EdgeReferenceValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReferenceValueExpression + return p +} + +func InitEmptyEdgeReferenceValueExpressionContext(p *EdgeReferenceValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeReferenceValueExpression +} + +func (*EdgeReferenceValueExpressionContext) IsEdgeReferenceValueExpressionContext() {} + +func NewEdgeReferenceValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeReferenceValueExpressionContext { + var p = new(EdgeReferenceValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeReferenceValueExpression + + return p +} + +func (s *EdgeReferenceValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeReferenceValueExpressionContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *EdgeReferenceValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeReferenceValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeReferenceValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeReferenceValueExpression(s) + } +} + +func (s *EdgeReferenceValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeReferenceValueExpression(s) + } +} + +func (p *GQLParser) EdgeReferenceValueExpression() (localctx IEdgeReferenceValueExpressionContext) { + localctx = NewEdgeReferenceValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 838, GQLParserRULE_edgeReferenceValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3907) + p.valueExpressionPrimary(0) + } + +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 +} + +// IAggregatingValueExpressionContext is an interface to support dynamic dispatch. +type IAggregatingValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsAggregatingValueExpressionContext differentiates from other interfaces. + IsAggregatingValueExpressionContext() +} + +type AggregatingValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAggregatingValueExpressionContext() *AggregatingValueExpressionContext { + var p = new(AggregatingValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_aggregatingValueExpression + return p +} + +func InitEmptyAggregatingValueExpressionContext(p *AggregatingValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_aggregatingValueExpression +} + +func (*AggregatingValueExpressionContext) IsAggregatingValueExpressionContext() {} + +func NewAggregatingValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AggregatingValueExpressionContext { + var p = new(AggregatingValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_aggregatingValueExpression + + return p +} + +func (s *AggregatingValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *AggregatingValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *AggregatingValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AggregatingValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AggregatingValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAggregatingValueExpression(s) + } +} + +func (s *AggregatingValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAggregatingValueExpression(s) + } +} + +func (p *GQLParser) AggregatingValueExpression() (localctx IAggregatingValueExpressionContext) { + localctx = NewAggregatingValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 840, GQLParserRULE_aggregatingValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3909) + p.valueExpression(0) + } + +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 +} + +// IValueExpressionPrimaryContext is an interface to support dynamic dispatch. +type IValueExpressionPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ParenthesizedValueExpression() IParenthesizedValueExpressionContext + AggregateFunction() IAggregateFunctionContext + UnsignedValueSpecification() IUnsignedValueSpecificationContext + PathValueConstructor() IPathValueConstructorContext + ValueQueryExpression() IValueQueryExpressionContext + CaseExpression() ICaseExpressionContext + CastSpecification() ICastSpecificationContext + Element_idFunction() IElement_idFunctionContext + LetValueExpression() ILetValueExpressionContext + BindingVariableReference() IBindingVariableReferenceContext + ValueExpressionPrimary() IValueExpressionPrimaryContext + PERIOD() antlr.TerminalNode + PropertyName() IPropertyNameContext + + // IsValueExpressionPrimaryContext differentiates from other interfaces. + IsValueExpressionPrimaryContext() +} + +type ValueExpressionPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueExpressionPrimaryContext() *ValueExpressionPrimaryContext { + var p = new(ValueExpressionPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueExpressionPrimary + return p +} + +func InitEmptyValueExpressionPrimaryContext(p *ValueExpressionPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueExpressionPrimary +} + +func (*ValueExpressionPrimaryContext) IsValueExpressionPrimaryContext() {} + +func NewValueExpressionPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueExpressionPrimaryContext { + var p = new(ValueExpressionPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueExpressionPrimary + + return p +} + +func (s *ValueExpressionPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueExpressionPrimaryContext) ParenthesizedValueExpression() IParenthesizedValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IParenthesizedValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IParenthesizedValueExpressionContext) +} + +func (s *ValueExpressionPrimaryContext) AggregateFunction() IAggregateFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregateFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregateFunctionContext) +} + +func (s *ValueExpressionPrimaryContext) UnsignedValueSpecification() IUnsignedValueSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedValueSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedValueSpecificationContext) +} + +func (s *ValueExpressionPrimaryContext) PathValueConstructor() IPathValueConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueConstructorContext) +} + +func (s *ValueExpressionPrimaryContext) ValueQueryExpression() IValueQueryExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueQueryExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueQueryExpressionContext) +} + +func (s *ValueExpressionPrimaryContext) CaseExpression() ICaseExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICaseExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICaseExpressionContext) +} + +func (s *ValueExpressionPrimaryContext) CastSpecification() ICastSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICastSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICastSpecificationContext) +} + +func (s *ValueExpressionPrimaryContext) Element_idFunction() IElement_idFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElement_idFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElement_idFunctionContext) +} + +func (s *ValueExpressionPrimaryContext) LetValueExpression() ILetValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILetValueExpressionContext) +} + +func (s *ValueExpressionPrimaryContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *ValueExpressionPrimaryContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *ValueExpressionPrimaryContext) PERIOD() antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, 0) +} + +func (s *ValueExpressionPrimaryContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *ValueExpressionPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueExpressionPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueExpressionPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueExpressionPrimary(s) + } +} + +func (s *ValueExpressionPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueExpressionPrimary(s) + } +} + +func (p *GQLParser) ValueExpressionPrimary() (localctx IValueExpressionPrimaryContext) { + return p.valueExpressionPrimary(0) +} + +func (p *GQLParser) valueExpressionPrimary(_p int) (localctx IValueExpressionPrimaryContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewValueExpressionPrimaryContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IValueExpressionPrimaryContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 842 + p.EnterRecursionRule(localctx, 842, GQLParserRULE_valueExpressionPrimary, _p) + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(3922) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLEFT_PAREN: + { + p.SetState(3912) + p.ParenthesizedValueExpression() + } + + case GQLParserAVG, GQLParserCOLLECT_LIST, GQLParserCOUNT, GQLParserMAX, GQLParserMIN, GQLParserPERCENTILE_CONT, GQLParserPERCENTILE_DISC, GQLParserSTDDEV_POP, GQLParserSTDDEV_SAMP, GQLParserSUM: + { + p.SetState(3913) + p.AggregateFunction() + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserARRAY, GQLParserDATE, GQLParserDATETIME, GQLParserDURATION, GQLParserLIST, GQLParserNULL_KW, GQLParserRECORD, GQLParserSESSION_USER, GQLParserTIME, GQLParserTIMESTAMP, GQLParserGENERAL_PARAMETER_REFERENCE, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET: + { + p.SetState(3914) + p.UnsignedValueSpecification() + } + + case GQLParserPATH: + { + p.SetState(3915) + p.PathValueConstructor() + } + + case GQLParserVALUE: + { + p.SetState(3916) + p.ValueQueryExpression() + } + + case GQLParserCASE, GQLParserCOALESCE, GQLParserNULLIF: + { + p.SetState(3917) + p.CaseExpression() + } + + case GQLParserCAST: + { + p.SetState(3918) + p.CastSpecification() + } + + case GQLParserELEMENT_ID: + { + p.SetState(3919) + p.Element_idFunction() + } + + case GQLParserLET: + { + p.SetState(3920) + p.LetValueExpression() + } + + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + { + p.SetState(3921) + p.BindingVariableReference() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(3929) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 442, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + localctx = NewValueExpressionPrimaryContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_valueExpressionPrimary) + p.SetState(3924) + + if !(p.Precpred(p.GetParserRuleContext(), 7)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) + goto errorExit + } + { + p.SetState(3925) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3926) + p.PropertyName() + } + + } + p.SetState(3931) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 442, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// IParenthesizedValueExpressionContext is an interface to support dynamic dispatch. +type IParenthesizedValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsParenthesizedValueExpressionContext differentiates from other interfaces. + IsParenthesizedValueExpressionContext() +} + +type ParenthesizedValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyParenthesizedValueExpressionContext() *ParenthesizedValueExpressionContext { + var p = new(ParenthesizedValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedValueExpression + return p +} + +func InitEmptyParenthesizedValueExpressionContext(p *ParenthesizedValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_parenthesizedValueExpression +} + +func (*ParenthesizedValueExpressionContext) IsParenthesizedValueExpressionContext() {} + +func NewParenthesizedValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParenthesizedValueExpressionContext { + var p = new(ParenthesizedValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_parenthesizedValueExpression + + return p +} + +func (s *ParenthesizedValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ParenthesizedValueExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ParenthesizedValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ParenthesizedValueExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ParenthesizedValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ParenthesizedValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ParenthesizedValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterParenthesizedValueExpression(s) + } +} + +func (s *ParenthesizedValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitParenthesizedValueExpression(s) + } +} + +func (p *GQLParser) ParenthesizedValueExpression() (localctx IParenthesizedValueExpressionContext) { + localctx = NewParenthesizedValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 844, GQLParserRULE_parenthesizedValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3932) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3933) + p.valueExpression(0) + } + { + p.SetState(3934) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INonParenthesizedValueExpressionPrimaryContext is an interface to support dynamic dispatch. +type INonParenthesizedValueExpressionPrimaryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NonParenthesizedValueExpressionPrimarySpecialCase() INonParenthesizedValueExpressionPrimarySpecialCaseContext + BindingVariableReference() IBindingVariableReferenceContext + + // IsNonParenthesizedValueExpressionPrimaryContext differentiates from other interfaces. + IsNonParenthesizedValueExpressionPrimaryContext() +} + +type NonParenthesizedValueExpressionPrimaryContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNonParenthesizedValueExpressionPrimaryContext() *NonParenthesizedValueExpressionPrimaryContext { + var p = new(NonParenthesizedValueExpressionPrimaryContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimary + return p +} + +func InitEmptyNonParenthesizedValueExpressionPrimaryContext(p *NonParenthesizedValueExpressionPrimaryContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimary +} + +func (*NonParenthesizedValueExpressionPrimaryContext) IsNonParenthesizedValueExpressionPrimaryContext() { +} + +func NewNonParenthesizedValueExpressionPrimaryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NonParenthesizedValueExpressionPrimaryContext { + var p = new(NonParenthesizedValueExpressionPrimaryContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimary + + return p +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) GetParser() antlr.Parser { return s.parser } + +func (s *NonParenthesizedValueExpressionPrimaryContext) NonParenthesizedValueExpressionPrimarySpecialCase() INonParenthesizedValueExpressionPrimarySpecialCaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonParenthesizedValueExpressionPrimarySpecialCaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonParenthesizedValueExpressionPrimarySpecialCaseContext) +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) BindingVariableReference() IBindingVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableReferenceContext) +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNonParenthesizedValueExpressionPrimary(s) + } +} + +func (s *NonParenthesizedValueExpressionPrimaryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNonParenthesizedValueExpressionPrimary(s) + } +} + +func (p *GQLParser) NonParenthesizedValueExpressionPrimary() (localctx INonParenthesizedValueExpressionPrimaryContext) { + localctx = NewNonParenthesizedValueExpressionPrimaryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 846, GQLParserRULE_nonParenthesizedValueExpressionPrimary) + p.SetState(3938) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 443, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3936) + p.NonParenthesizedValueExpressionPrimarySpecialCase() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3937) + p.BindingVariableReference() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// INonParenthesizedValueExpressionPrimarySpecialCaseContext is an interface to support dynamic dispatch. +type INonParenthesizedValueExpressionPrimarySpecialCaseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AggregateFunction() IAggregateFunctionContext + UnsignedValueSpecification() IUnsignedValueSpecificationContext + PathValueConstructor() IPathValueConstructorContext + ValueExpressionPrimary() IValueExpressionPrimaryContext + PERIOD() antlr.TerminalNode + PropertyName() IPropertyNameContext + ValueQueryExpression() IValueQueryExpressionContext + CaseExpression() ICaseExpressionContext + CastSpecification() ICastSpecificationContext + Element_idFunction() IElement_idFunctionContext + LetValueExpression() ILetValueExpressionContext + + // IsNonParenthesizedValueExpressionPrimarySpecialCaseContext differentiates from other interfaces. + IsNonParenthesizedValueExpressionPrimarySpecialCaseContext() +} + +type NonParenthesizedValueExpressionPrimarySpecialCaseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNonParenthesizedValueExpressionPrimarySpecialCaseContext() *NonParenthesizedValueExpressionPrimarySpecialCaseContext { + var p = new(NonParenthesizedValueExpressionPrimarySpecialCaseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimarySpecialCase + return p +} + +func InitEmptyNonParenthesizedValueExpressionPrimarySpecialCaseContext(p *NonParenthesizedValueExpressionPrimarySpecialCaseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimarySpecialCase +} + +func (*NonParenthesizedValueExpressionPrimarySpecialCaseContext) IsNonParenthesizedValueExpressionPrimarySpecialCaseContext() { +} + +func NewNonParenthesizedValueExpressionPrimarySpecialCaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NonParenthesizedValueExpressionPrimarySpecialCaseContext { + var p = new(NonParenthesizedValueExpressionPrimarySpecialCaseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nonParenthesizedValueExpressionPrimarySpecialCase + + return p +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) GetParser() antlr.Parser { + return s.parser +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) AggregateFunction() IAggregateFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAggregateFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAggregateFunctionContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) UnsignedValueSpecification() IUnsignedValueSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedValueSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedValueSpecificationContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) PathValueConstructor() IPathValueConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueConstructorContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) PERIOD() antlr.TerminalNode { + return s.GetToken(GQLParserPERIOD, 0) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) PropertyName() IPropertyNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPropertyNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPropertyNameContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) ValueQueryExpression() IValueQueryExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueQueryExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueQueryExpressionContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) CaseExpression() ICaseExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICaseExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICaseExpressionContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) CastSpecification() ICastSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICastSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICastSpecificationContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) Element_idFunction() IElement_idFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElement_idFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElement_idFunctionContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) LetValueExpression() ILetValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILetValueExpressionContext) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNonParenthesizedValueExpressionPrimarySpecialCase(s) + } +} + +func (s *NonParenthesizedValueExpressionPrimarySpecialCaseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNonParenthesizedValueExpressionPrimarySpecialCase(s) + } +} + +func (p *GQLParser) NonParenthesizedValueExpressionPrimarySpecialCase() (localctx INonParenthesizedValueExpressionPrimarySpecialCaseContext) { + localctx = NewNonParenthesizedValueExpressionPrimarySpecialCaseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 848, GQLParserRULE_nonParenthesizedValueExpressionPrimarySpecialCase) + p.SetState(3952) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 444, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3940) + p.AggregateFunction() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3941) + p.UnsignedValueSpecification() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(3942) + p.PathValueConstructor() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(3943) + p.valueExpressionPrimary(0) + } + { + p.SetState(3944) + p.Match(GQLParserPERIOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3945) + p.PropertyName() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(3947) + p.ValueQueryExpression() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(3948) + p.CaseExpression() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(3949) + p.CastSpecification() + } + + case 8: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(3950) + p.Element_idFunction() + } + + case 9: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(3951) + p.LetValueExpression() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IUnsignedValueSpecificationContext is an interface to support dynamic dispatch. +type IUnsignedValueSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedLiteral() IUnsignedLiteralContext + GeneralValueSpecification() IGeneralValueSpecificationContext + + // IsUnsignedValueSpecificationContext differentiates from other interfaces. + IsUnsignedValueSpecificationContext() +} + +type UnsignedValueSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedValueSpecificationContext() *UnsignedValueSpecificationContext { + var p = new(UnsignedValueSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedValueSpecification + return p +} + +func InitEmptyUnsignedValueSpecificationContext(p *UnsignedValueSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedValueSpecification +} + +func (*UnsignedValueSpecificationContext) IsUnsignedValueSpecificationContext() {} + +func NewUnsignedValueSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedValueSpecificationContext { + var p = new(UnsignedValueSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedValueSpecification + + return p +} + +func (s *UnsignedValueSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedValueSpecificationContext) UnsignedLiteral() IUnsignedLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedLiteralContext) +} + +func (s *UnsignedValueSpecificationContext) GeneralValueSpecification() IGeneralValueSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralValueSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralValueSpecificationContext) +} + +func (s *UnsignedValueSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedValueSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedValueSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedValueSpecification(s) + } +} + +func (s *UnsignedValueSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedValueSpecification(s) + } +} + +func (p *GQLParser) UnsignedValueSpecification() (localctx IUnsignedValueSpecificationContext) { + localctx = NewUnsignedValueSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 850, GQLParserRULE_unsignedValueSpecification) + p.SetState(3956) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserARRAY, GQLParserDATE, GQLParserDATETIME, GQLParserDURATION, GQLParserLIST, GQLParserNULL_KW, GQLParserRECORD, GQLParserTIME, GQLParserTIMESTAMP, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3954) + p.UnsignedLiteral() + } + + case GQLParserSESSION_USER, GQLParserGENERAL_PARAMETER_REFERENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3955) + p.GeneralValueSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// INonNegativeIntegerSpecificationContext is an interface to support dynamic dispatch. +type INonNegativeIntegerSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedInteger() IUnsignedIntegerContext + DynamicParameterSpecification() IDynamicParameterSpecificationContext + + // IsNonNegativeIntegerSpecificationContext differentiates from other interfaces. + IsNonNegativeIntegerSpecificationContext() +} + +type NonNegativeIntegerSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNonNegativeIntegerSpecificationContext() *NonNegativeIntegerSpecificationContext { + var p = new(NonNegativeIntegerSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonNegativeIntegerSpecification + return p +} + +func InitEmptyNonNegativeIntegerSpecificationContext(p *NonNegativeIntegerSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonNegativeIntegerSpecification +} + +func (*NonNegativeIntegerSpecificationContext) IsNonNegativeIntegerSpecificationContext() {} + +func NewNonNegativeIntegerSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NonNegativeIntegerSpecificationContext { + var p = new(NonNegativeIntegerSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nonNegativeIntegerSpecification + + return p +} + +func (s *NonNegativeIntegerSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *NonNegativeIntegerSpecificationContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *NonNegativeIntegerSpecificationContext) DynamicParameterSpecification() IDynamicParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDynamicParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDynamicParameterSpecificationContext) +} + +func (s *NonNegativeIntegerSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NonNegativeIntegerSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NonNegativeIntegerSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNonNegativeIntegerSpecification(s) + } +} + +func (s *NonNegativeIntegerSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNonNegativeIntegerSpecification(s) + } +} + +func (p *GQLParser) NonNegativeIntegerSpecification() (localctx INonNegativeIntegerSpecificationContext) { + localctx = NewNonNegativeIntegerSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 852, GQLParserRULE_nonNegativeIntegerSpecification) + p.SetState(3960) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3958) + p.UnsignedInteger() + } + + case GQLParserGENERAL_PARAMETER_REFERENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3959) + p.DynamicParameterSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IGeneralValueSpecificationContext is an interface to support dynamic dispatch. +type IGeneralValueSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DynamicParameterSpecification() IDynamicParameterSpecificationContext + SESSION_USER() antlr.TerminalNode + + // IsGeneralValueSpecificationContext differentiates from other interfaces. + IsGeneralValueSpecificationContext() +} + +type GeneralValueSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralValueSpecificationContext() *GeneralValueSpecificationContext { + var p = new(GeneralValueSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalValueSpecification + return p +} + +func InitEmptyGeneralValueSpecificationContext(p *GeneralValueSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalValueSpecification +} + +func (*GeneralValueSpecificationContext) IsGeneralValueSpecificationContext() {} + +func NewGeneralValueSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralValueSpecificationContext { + var p = new(GeneralValueSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalValueSpecification + + return p +} + +func (s *GeneralValueSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralValueSpecificationContext) DynamicParameterSpecification() IDynamicParameterSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDynamicParameterSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDynamicParameterSpecificationContext) +} + +func (s *GeneralValueSpecificationContext) SESSION_USER() antlr.TerminalNode { + return s.GetToken(GQLParserSESSION_USER, 0) +} + +func (s *GeneralValueSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralValueSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralValueSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralValueSpecification(s) + } +} + +func (s *GeneralValueSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralValueSpecification(s) + } +} + +func (p *GQLParser) GeneralValueSpecification() (localctx IGeneralValueSpecificationContext) { + localctx = NewGeneralValueSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 854, GQLParserRULE_generalValueSpecification) + p.SetState(3964) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserGENERAL_PARAMETER_REFERENCE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3962) + p.DynamicParameterSpecification() + } + + case GQLParserSESSION_USER: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3963) + p.Match(GQLParserSESSION_USER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDynamicParameterSpecificationContext is an interface to support dynamic dispatch. +type IDynamicParameterSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GENERAL_PARAMETER_REFERENCE() antlr.TerminalNode + + // IsDynamicParameterSpecificationContext differentiates from other interfaces. + IsDynamicParameterSpecificationContext() +} + +type DynamicParameterSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDynamicParameterSpecificationContext() *DynamicParameterSpecificationContext { + var p = new(DynamicParameterSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dynamicParameterSpecification + return p +} + +func InitEmptyDynamicParameterSpecificationContext(p *DynamicParameterSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dynamicParameterSpecification +} + +func (*DynamicParameterSpecificationContext) IsDynamicParameterSpecificationContext() {} + +func NewDynamicParameterSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DynamicParameterSpecificationContext { + var p = new(DynamicParameterSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dynamicParameterSpecification + + return p +} + +func (s *DynamicParameterSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *DynamicParameterSpecificationContext) GENERAL_PARAMETER_REFERENCE() antlr.TerminalNode { + return s.GetToken(GQLParserGENERAL_PARAMETER_REFERENCE, 0) +} + +func (s *DynamicParameterSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DynamicParameterSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DynamicParameterSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDynamicParameterSpecification(s) + } +} + +func (s *DynamicParameterSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDynamicParameterSpecification(s) + } +} + +func (p *GQLParser) DynamicParameterSpecification() (localctx IDynamicParameterSpecificationContext) { + localctx = NewDynamicParameterSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 856, GQLParserRULE_dynamicParameterSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3966) + p.Match(GQLParserGENERAL_PARAMETER_REFERENCE) + 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 +} + +// ILetValueExpressionContext is an interface to support dynamic dispatch. +type ILetValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LET() antlr.TerminalNode + LetVariableDefinitionList() ILetVariableDefinitionListContext + IN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + END() antlr.TerminalNode + + // IsLetValueExpressionContext differentiates from other interfaces. + IsLetValueExpressionContext() +} + +type LetValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLetValueExpressionContext() *LetValueExpressionContext { + var p = new(LetValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letValueExpression + return p +} + +func InitEmptyLetValueExpressionContext(p *LetValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_letValueExpression +} + +func (*LetValueExpressionContext) IsLetValueExpressionContext() {} + +func NewLetValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LetValueExpressionContext { + var p = new(LetValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_letValueExpression + + return p +} + +func (s *LetValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LetValueExpressionContext) LET() antlr.TerminalNode { + return s.GetToken(GQLParserLET, 0) +} + +func (s *LetValueExpressionContext) LetVariableDefinitionList() ILetVariableDefinitionListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILetVariableDefinitionListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILetVariableDefinitionListContext) +} + +func (s *LetValueExpressionContext) IN() antlr.TerminalNode { + return s.GetToken(GQLParserIN, 0) +} + +func (s *LetValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *LetValueExpressionContext) END() antlr.TerminalNode { + return s.GetToken(GQLParserEND, 0) +} + +func (s *LetValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LetValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LetValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLetValueExpression(s) + } +} + +func (s *LetValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLetValueExpression(s) + } +} + +func (p *GQLParser) LetValueExpression() (localctx ILetValueExpressionContext) { + localctx = NewLetValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 858, GQLParserRULE_letValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3968) + p.Match(GQLParserLET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3969) + p.LetVariableDefinitionList() + } + { + p.SetState(3970) + p.Match(GQLParserIN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3971) + p.valueExpression(0) + } + { + p.SetState(3972) + p.Match(GQLParserEND) + 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 +} + +// IValueQueryExpressionContext is an interface to support dynamic dispatch. +type IValueQueryExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + VALUE() antlr.TerminalNode + NestedQuerySpecification() INestedQuerySpecificationContext + + // IsValueQueryExpressionContext differentiates from other interfaces. + IsValueQueryExpressionContext() +} + +type ValueQueryExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyValueQueryExpressionContext() *ValueQueryExpressionContext { + var p = new(ValueQueryExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueQueryExpression + return p +} + +func InitEmptyValueQueryExpressionContext(p *ValueQueryExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_valueQueryExpression +} + +func (*ValueQueryExpressionContext) IsValueQueryExpressionContext() {} + +func NewValueQueryExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ValueQueryExpressionContext { + var p = new(ValueQueryExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_valueQueryExpression + + return p +} + +func (s *ValueQueryExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ValueQueryExpressionContext) VALUE() antlr.TerminalNode { + return s.GetToken(GQLParserVALUE, 0) +} + +func (s *ValueQueryExpressionContext) NestedQuerySpecification() INestedQuerySpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INestedQuerySpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INestedQuerySpecificationContext) +} + +func (s *ValueQueryExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ValueQueryExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ValueQueryExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterValueQueryExpression(s) + } +} + +func (s *ValueQueryExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitValueQueryExpression(s) + } +} + +func (p *GQLParser) ValueQueryExpression() (localctx IValueQueryExpressionContext) { + localctx = NewValueQueryExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 860, GQLParserRULE_valueQueryExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3974) + p.Match(GQLParserVALUE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3975) + p.NestedQuerySpecification() + } + +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 +} + +// ICaseExpressionContext is an interface to support dynamic dispatch. +type ICaseExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CaseAbbreviation() ICaseAbbreviationContext + CaseSpecification() ICaseSpecificationContext + + // IsCaseExpressionContext differentiates from other interfaces. + IsCaseExpressionContext() +} + +type CaseExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCaseExpressionContext() *CaseExpressionContext { + var p = new(CaseExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseExpression + return p +} + +func InitEmptyCaseExpressionContext(p *CaseExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseExpression +} + +func (*CaseExpressionContext) IsCaseExpressionContext() {} + +func NewCaseExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseExpressionContext { + var p = new(CaseExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_caseExpression + + return p +} + +func (s *CaseExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CaseExpressionContext) CaseAbbreviation() ICaseAbbreviationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICaseAbbreviationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICaseAbbreviationContext) +} + +func (s *CaseExpressionContext) CaseSpecification() ICaseSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICaseSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICaseSpecificationContext) +} + +func (s *CaseExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CaseExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CaseExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCaseExpression(s) + } +} + +func (s *CaseExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCaseExpression(s) + } +} + +func (p *GQLParser) CaseExpression() (localctx ICaseExpressionContext) { + localctx = NewCaseExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 862, GQLParserRULE_caseExpression) + p.SetState(3979) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCOALESCE, GQLParserNULLIF: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3977) + p.CaseAbbreviation() + } + + case GQLParserCASE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3978) + p.CaseSpecification() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ICaseAbbreviationContext is an interface to support dynamic dispatch. +type ICaseAbbreviationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NULLIF() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + AllValueExpression() []IValueExpressionContext + ValueExpression(i int) IValueExpressionContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + COALESCE() antlr.TerminalNode + + // IsCaseAbbreviationContext differentiates from other interfaces. + IsCaseAbbreviationContext() +} + +type CaseAbbreviationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCaseAbbreviationContext() *CaseAbbreviationContext { + var p = new(CaseAbbreviationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseAbbreviation + return p +} + +func InitEmptyCaseAbbreviationContext(p *CaseAbbreviationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseAbbreviation +} + +func (*CaseAbbreviationContext) IsCaseAbbreviationContext() {} + +func NewCaseAbbreviationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseAbbreviationContext { + var p = new(CaseAbbreviationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_caseAbbreviation + + return p +} + +func (s *CaseAbbreviationContext) GetParser() antlr.Parser { return s.parser } + +func (s *CaseAbbreviationContext) NULLIF() antlr.TerminalNode { + return s.GetToken(GQLParserNULLIF, 0) +} + +func (s *CaseAbbreviationContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CaseAbbreviationContext) AllValueExpression() []IValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IValueExpressionContext); ok { + len++ + } + } + + tst := make([]IValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IValueExpressionContext); ok { + tst[i] = t.(IValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *CaseAbbreviationContext) ValueExpression(i int) IValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *CaseAbbreviationContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *CaseAbbreviationContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *CaseAbbreviationContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CaseAbbreviationContext) COALESCE() antlr.TerminalNode { + return s.GetToken(GQLParserCOALESCE, 0) +} + +func (s *CaseAbbreviationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CaseAbbreviationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CaseAbbreviationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCaseAbbreviation(s) + } +} + +func (s *CaseAbbreviationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCaseAbbreviation(s) + } +} + +func (p *GQLParser) CaseAbbreviation() (localctx ICaseAbbreviationContext) { + localctx = NewCaseAbbreviationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 864, GQLParserRULE_caseAbbreviation) + var _la int + + p.SetState(3999) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserNULLIF: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(3981) + p.Match(GQLParserNULLIF) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3982) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3983) + p.valueExpression(0) + } + { + p.SetState(3984) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3985) + p.valueExpression(0) + } + { + p.SetState(3986) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserCOALESCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(3988) + p.Match(GQLParserCOALESCE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3989) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3990) + p.valueExpression(0) + } + p.SetState(3993) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserCOMMA { + { + p.SetState(3991) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(3992) + p.valueExpression(0) + } + + p.SetState(3995) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(3997) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ICaseSpecificationContext is an interface to support dynamic dispatch. +type ICaseSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SimpleCase() ISimpleCaseContext + SearchedCase() ISearchedCaseContext + + // IsCaseSpecificationContext differentiates from other interfaces. + IsCaseSpecificationContext() +} + +type CaseSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCaseSpecificationContext() *CaseSpecificationContext { + var p = new(CaseSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseSpecification + return p +} + +func InitEmptyCaseSpecificationContext(p *CaseSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseSpecification +} + +func (*CaseSpecificationContext) IsCaseSpecificationContext() {} + +func NewCaseSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseSpecificationContext { + var p = new(CaseSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_caseSpecification + + return p +} + +func (s *CaseSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *CaseSpecificationContext) SimpleCase() ISimpleCaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleCaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISimpleCaseContext) +} + +func (s *CaseSpecificationContext) SearchedCase() ISearchedCaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchedCaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchedCaseContext) +} + +func (s *CaseSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CaseSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CaseSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCaseSpecification(s) + } +} + +func (s *CaseSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCaseSpecification(s) + } +} + +func (p *GQLParser) CaseSpecification() (localctx ICaseSpecificationContext) { + localctx = NewCaseSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 866, GQLParserRULE_caseSpecification) + p.SetState(4003) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 451, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4001) + p.SimpleCase() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4002) + p.SearchedCase() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ISimpleCaseContext is an interface to support dynamic dispatch. +type ISimpleCaseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CASE() antlr.TerminalNode + CaseOperand() ICaseOperandContext + END() antlr.TerminalNode + AllSimpleWhenClause() []ISimpleWhenClauseContext + SimpleWhenClause(i int) ISimpleWhenClauseContext + ElseClause() IElseClauseContext + + // IsSimpleCaseContext differentiates from other interfaces. + IsSimpleCaseContext() +} + +type SimpleCaseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleCaseContext() *SimpleCaseContext { + var p = new(SimpleCaseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleCase + return p +} + +func InitEmptySimpleCaseContext(p *SimpleCaseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleCase +} + +func (*SimpleCaseContext) IsSimpleCaseContext() {} + +func NewSimpleCaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleCaseContext { + var p = new(SimpleCaseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleCase + + return p +} + +func (s *SimpleCaseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleCaseContext) CASE() antlr.TerminalNode { + return s.GetToken(GQLParserCASE, 0) +} + +func (s *SimpleCaseContext) CaseOperand() ICaseOperandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICaseOperandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICaseOperandContext) +} + +func (s *SimpleCaseContext) END() antlr.TerminalNode { + return s.GetToken(GQLParserEND, 0) +} + +func (s *SimpleCaseContext) AllSimpleWhenClause() []ISimpleWhenClauseContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISimpleWhenClauseContext); ok { + len++ + } + } + + tst := make([]ISimpleWhenClauseContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISimpleWhenClauseContext); ok { + tst[i] = t.(ISimpleWhenClauseContext) + i++ + } + } + + return tst +} + +func (s *SimpleCaseContext) SimpleWhenClause(i int) ISimpleWhenClauseContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimpleWhenClauseContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISimpleWhenClauseContext) +} + +func (s *SimpleCaseContext) ElseClause() IElseClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElseClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElseClauseContext) +} + +func (s *SimpleCaseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleCaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleCaseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleCase(s) + } +} + +func (s *SimpleCaseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleCase(s) + } +} + +func (p *GQLParser) SimpleCase() (localctx ISimpleCaseContext) { + localctx = NewSimpleCaseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 868, GQLParserRULE_simpleCase) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4005) + p.Match(GQLParserCASE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4006) + p.CaseOperand() + } + p.SetState(4008) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserWHEN { + { + p.SetState(4007) + p.SimpleWhenClause() + } + + p.SetState(4010) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + p.SetState(4013) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserELSE { + { + p.SetState(4012) + p.ElseClause() + } + + } + { + p.SetState(4015) + p.Match(GQLParserEND) + 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 +} + +// ISearchedCaseContext is an interface to support dynamic dispatch. +type ISearchedCaseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CASE() antlr.TerminalNode + END() antlr.TerminalNode + AllSearchedWhenClause() []ISearchedWhenClauseContext + SearchedWhenClause(i int) ISearchedWhenClauseContext + ElseClause() IElseClauseContext + + // IsSearchedCaseContext differentiates from other interfaces. + IsSearchedCaseContext() +} + +type SearchedCaseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySearchedCaseContext() *SearchedCaseContext { + var p = new(SearchedCaseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchedCase + return p +} + +func InitEmptySearchedCaseContext(p *SearchedCaseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchedCase +} + +func (*SearchedCaseContext) IsSearchedCaseContext() {} + +func NewSearchedCaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SearchedCaseContext { + var p = new(SearchedCaseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_searchedCase + + return p +} + +func (s *SearchedCaseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SearchedCaseContext) CASE() antlr.TerminalNode { + return s.GetToken(GQLParserCASE, 0) +} + +func (s *SearchedCaseContext) END() antlr.TerminalNode { + return s.GetToken(GQLParserEND, 0) +} + +func (s *SearchedCaseContext) AllSearchedWhenClause() []ISearchedWhenClauseContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISearchedWhenClauseContext); ok { + len++ + } + } + + tst := make([]ISearchedWhenClauseContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISearchedWhenClauseContext); ok { + tst[i] = t.(ISearchedWhenClauseContext) + i++ + } + } + + return tst +} + +func (s *SearchedCaseContext) SearchedWhenClause(i int) ISearchedWhenClauseContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchedWhenClauseContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISearchedWhenClauseContext) +} + +func (s *SearchedCaseContext) ElseClause() IElseClauseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElseClauseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElseClauseContext) +} + +func (s *SearchedCaseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SearchedCaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SearchedCaseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSearchedCase(s) + } +} + +func (s *SearchedCaseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSearchedCase(s) + } +} + +func (p *GQLParser) SearchedCase() (localctx ISearchedCaseContext) { + localctx = NewSearchedCaseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 870, GQLParserRULE_searchedCase) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4017) + p.Match(GQLParserCASE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4019) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == GQLParserWHEN { + { + p.SetState(4018) + p.SearchedWhenClause() + } + + p.SetState(4021) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + p.SetState(4024) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserELSE { + { + p.SetState(4023) + p.ElseClause() + } + + } + { + p.SetState(4026) + p.Match(GQLParserEND) + 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 +} + +// ISimpleWhenClauseContext is an interface to support dynamic dispatch. +type ISimpleWhenClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHEN() antlr.TerminalNode + WhenOperandList() IWhenOperandListContext + THEN() antlr.TerminalNode + Result() IResultContext + + // IsSimpleWhenClauseContext differentiates from other interfaces. + IsSimpleWhenClauseContext() +} + +type SimpleWhenClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimpleWhenClauseContext() *SimpleWhenClauseContext { + var p = new(SimpleWhenClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleWhenClause + return p +} + +func InitEmptySimpleWhenClauseContext(p *SimpleWhenClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_simpleWhenClause +} + +func (*SimpleWhenClauseContext) IsSimpleWhenClauseContext() {} + +func NewSimpleWhenClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SimpleWhenClauseContext { + var p = new(SimpleWhenClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_simpleWhenClause + + return p +} + +func (s *SimpleWhenClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SimpleWhenClauseContext) WHEN() antlr.TerminalNode { + return s.GetToken(GQLParserWHEN, 0) +} + +func (s *SimpleWhenClauseContext) WhenOperandList() IWhenOperandListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhenOperandListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhenOperandListContext) +} + +func (s *SimpleWhenClauseContext) THEN() antlr.TerminalNode { + return s.GetToken(GQLParserTHEN, 0) +} + +func (s *SimpleWhenClauseContext) Result() IResultContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultContext) +} + +func (s *SimpleWhenClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SimpleWhenClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SimpleWhenClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSimpleWhenClause(s) + } +} + +func (s *SimpleWhenClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSimpleWhenClause(s) + } +} + +func (p *GQLParser) SimpleWhenClause() (localctx ISimpleWhenClauseContext) { + localctx = NewSimpleWhenClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 872, GQLParserRULE_simpleWhenClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4028) + p.Match(GQLParserWHEN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4029) + p.WhenOperandList() + } + { + p.SetState(4030) + p.Match(GQLParserTHEN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4031) + p.Result() + } + +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 +} + +// ISearchedWhenClauseContext is an interface to support dynamic dispatch. +type ISearchedWhenClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + WHEN() antlr.TerminalNode + SearchCondition() ISearchConditionContext + THEN() antlr.TerminalNode + Result() IResultContext + + // IsSearchedWhenClauseContext differentiates from other interfaces. + IsSearchedWhenClauseContext() +} + +type SearchedWhenClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySearchedWhenClauseContext() *SearchedWhenClauseContext { + var p = new(SearchedWhenClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchedWhenClause + return p +} + +func InitEmptySearchedWhenClauseContext(p *SearchedWhenClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_searchedWhenClause +} + +func (*SearchedWhenClauseContext) IsSearchedWhenClauseContext() {} + +func NewSearchedWhenClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SearchedWhenClauseContext { + var p = new(SearchedWhenClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_searchedWhenClause + + return p +} + +func (s *SearchedWhenClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *SearchedWhenClauseContext) WHEN() antlr.TerminalNode { + return s.GetToken(GQLParserWHEN, 0) +} + +func (s *SearchedWhenClauseContext) SearchCondition() ISearchConditionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISearchConditionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISearchConditionContext) +} + +func (s *SearchedWhenClauseContext) THEN() antlr.TerminalNode { + return s.GetToken(GQLParserTHEN, 0) +} + +func (s *SearchedWhenClauseContext) Result() IResultContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultContext) +} + +func (s *SearchedWhenClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SearchedWhenClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SearchedWhenClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSearchedWhenClause(s) + } +} + +func (s *SearchedWhenClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSearchedWhenClause(s) + } +} + +func (p *GQLParser) SearchedWhenClause() (localctx ISearchedWhenClauseContext) { + localctx = NewSearchedWhenClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 874, GQLParserRULE_searchedWhenClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4033) + p.Match(GQLParserWHEN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4034) + p.SearchCondition() + } + { + p.SetState(4035) + p.Match(GQLParserTHEN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4036) + p.Result() + } + +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 +} + +// IElseClauseContext is an interface to support dynamic dispatch. +type IElseClauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ELSE() antlr.TerminalNode + Result() IResultContext + + // IsElseClauseContext differentiates from other interfaces. + IsElseClauseContext() +} + +type ElseClauseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElseClauseContext() *ElseClauseContext { + var p = new(ElseClauseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elseClause + return p +} + +func InitEmptyElseClauseContext(p *ElseClauseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elseClause +} + +func (*ElseClauseContext) IsElseClauseContext() {} + +func NewElseClauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElseClauseContext { + var p = new(ElseClauseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elseClause + + return p +} + +func (s *ElseClauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElseClauseContext) ELSE() antlr.TerminalNode { + return s.GetToken(GQLParserELSE, 0) +} + +func (s *ElseClauseContext) Result() IResultContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultContext) +} + +func (s *ElseClauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElseClauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElseClauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElseClause(s) + } +} + +func (s *ElseClauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElseClause(s) + } +} + +func (p *GQLParser) ElseClause() (localctx IElseClauseContext) { + localctx = NewElseClauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 876, GQLParserRULE_elseClause) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4038) + p.Match(GQLParserELSE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4039) + p.Result() + } + +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 +} + +// ICaseOperandContext is an interface to support dynamic dispatch. +type ICaseOperandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NonParenthesizedValueExpressionPrimary() INonParenthesizedValueExpressionPrimaryContext + ElementVariableReference() IElementVariableReferenceContext + + // IsCaseOperandContext differentiates from other interfaces. + IsCaseOperandContext() +} + +type CaseOperandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCaseOperandContext() *CaseOperandContext { + var p = new(CaseOperandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseOperand + return p +} + +func InitEmptyCaseOperandContext(p *CaseOperandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_caseOperand +} + +func (*CaseOperandContext) IsCaseOperandContext() {} + +func NewCaseOperandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CaseOperandContext { + var p = new(CaseOperandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_caseOperand + + return p +} + +func (s *CaseOperandContext) GetParser() antlr.Parser { return s.parser } + +func (s *CaseOperandContext) NonParenthesizedValueExpressionPrimary() INonParenthesizedValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonParenthesizedValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonParenthesizedValueExpressionPrimaryContext) +} + +func (s *CaseOperandContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *CaseOperandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CaseOperandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CaseOperandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCaseOperand(s) + } +} + +func (s *CaseOperandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCaseOperand(s) + } +} + +func (p *GQLParser) CaseOperand() (localctx ICaseOperandContext) { + localctx = NewCaseOperandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 878, GQLParserRULE_caseOperand) + p.SetState(4043) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 456, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4041) + p.NonParenthesizedValueExpressionPrimary() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4042) + p.ElementVariableReference() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IWhenOperandListContext is an interface to support dynamic dispatch. +type IWhenOperandListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllWhenOperand() []IWhenOperandContext + WhenOperand(i int) IWhenOperandContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsWhenOperandListContext differentiates from other interfaces. + IsWhenOperandListContext() +} + +type WhenOperandListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWhenOperandListContext() *WhenOperandListContext { + var p = new(WhenOperandListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whenOperandList + return p +} + +func InitEmptyWhenOperandListContext(p *WhenOperandListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whenOperandList +} + +func (*WhenOperandListContext) IsWhenOperandListContext() {} + +func NewWhenOperandListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhenOperandListContext { + var p = new(WhenOperandListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_whenOperandList + + return p +} + +func (s *WhenOperandListContext) GetParser() antlr.Parser { return s.parser } + +func (s *WhenOperandListContext) AllWhenOperand() []IWhenOperandContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IWhenOperandContext); ok { + len++ + } + } + + tst := make([]IWhenOperandContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IWhenOperandContext); ok { + tst[i] = t.(IWhenOperandContext) + i++ + } + } + + return tst +} + +func (s *WhenOperandListContext) WhenOperand(i int) IWhenOperandContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhenOperandContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IWhenOperandContext) +} + +func (s *WhenOperandListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *WhenOperandListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *WhenOperandListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhenOperandListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WhenOperandListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterWhenOperandList(s) + } +} + +func (s *WhenOperandListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitWhenOperandList(s) + } +} + +func (p *GQLParser) WhenOperandList() (localctx IWhenOperandListContext) { + localctx = NewWhenOperandListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 880, GQLParserRULE_whenOperandList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4045) + p.WhenOperand() + } + p.SetState(4050) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(4046) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4047) + p.WhenOperand() + } + + p.SetState(4052) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IWhenOperandContext is an interface to support dynamic dispatch. +type IWhenOperandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NonParenthesizedValueExpressionPrimary() INonParenthesizedValueExpressionPrimaryContext + CompOp() ICompOpContext + ValueExpression() IValueExpressionContext + NullPredicatePart2() INullPredicatePart2Context + ValueTypePredicatePart2() IValueTypePredicatePart2Context + NormalizedPredicatePart2() INormalizedPredicatePart2Context + DirectedPredicatePart2() IDirectedPredicatePart2Context + LabeledPredicatePart2() ILabeledPredicatePart2Context + SourcePredicatePart2() ISourcePredicatePart2Context + DestinationPredicatePart2() IDestinationPredicatePart2Context + + // IsWhenOperandContext differentiates from other interfaces. + IsWhenOperandContext() +} + +type WhenOperandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWhenOperandContext() *WhenOperandContext { + var p = new(WhenOperandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whenOperand + return p +} + +func InitEmptyWhenOperandContext(p *WhenOperandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_whenOperand +} + +func (*WhenOperandContext) IsWhenOperandContext() {} + +func NewWhenOperandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhenOperandContext { + var p = new(WhenOperandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_whenOperand + + return p +} + +func (s *WhenOperandContext) GetParser() antlr.Parser { return s.parser } + +func (s *WhenOperandContext) NonParenthesizedValueExpressionPrimary() INonParenthesizedValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonParenthesizedValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonParenthesizedValueExpressionPrimaryContext) +} + +func (s *WhenOperandContext) CompOp() ICompOpContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompOpContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICompOpContext) +} + +func (s *WhenOperandContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *WhenOperandContext) NullPredicatePart2() INullPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullPredicatePart2Context) +} + +func (s *WhenOperandContext) ValueTypePredicatePart2() IValueTypePredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypePredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypePredicatePart2Context) +} + +func (s *WhenOperandContext) NormalizedPredicatePart2() INormalizedPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INormalizedPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INormalizedPredicatePart2Context) +} + +func (s *WhenOperandContext) DirectedPredicatePart2() IDirectedPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDirectedPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDirectedPredicatePart2Context) +} + +func (s *WhenOperandContext) LabeledPredicatePart2() ILabeledPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILabeledPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILabeledPredicatePart2Context) +} + +func (s *WhenOperandContext) SourcePredicatePart2() ISourcePredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISourcePredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISourcePredicatePart2Context) +} + +func (s *WhenOperandContext) DestinationPredicatePart2() IDestinationPredicatePart2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDestinationPredicatePart2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDestinationPredicatePart2Context) +} + +func (s *WhenOperandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhenOperandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WhenOperandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterWhenOperand(s) + } +} + +func (s *WhenOperandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitWhenOperand(s) + } +} + +func (p *GQLParser) WhenOperand() (localctx IWhenOperandContext) { + localctx = NewWhenOperandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 882, GQLParserRULE_whenOperand) + p.SetState(4064) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 458, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4053) + p.NonParenthesizedValueExpressionPrimary() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4054) + p.CompOp() + } + { + p.SetState(4055) + p.valueExpression(0) + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4057) + p.NullPredicatePart2() + } + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(4058) + p.ValueTypePredicatePart2() + } + + case 5: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(4059) + p.NormalizedPredicatePart2() + } + + case 6: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(4060) + p.DirectedPredicatePart2() + } + + case 7: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(4061) + p.LabeledPredicatePart2() + } + + case 8: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(4062) + p.SourcePredicatePart2() + } + + case 9: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(4063) + p.DestinationPredicatePart2() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IResultContext is an interface to support dynamic dispatch. +type IResultContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ResultExpression() IResultExpressionContext + NullLiteral() INullLiteralContext + + // IsResultContext differentiates from other interfaces. + IsResultContext() +} + +type ResultContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResultContext() *ResultContext { + var p = new(ResultContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_result + return p +} + +func InitEmptyResultContext(p *ResultContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_result +} + +func (*ResultContext) IsResultContext() {} + +func NewResultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResultContext { + var p = new(ResultContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_result + + return p +} + +func (s *ResultContext) GetParser() antlr.Parser { return s.parser } + +func (s *ResultContext) ResultExpression() IResultExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultExpressionContext) +} + +func (s *ResultContext) NullLiteral() INullLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullLiteralContext) +} + +func (s *ResultContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ResultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ResultContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterResult(s) + } +} + +func (s *ResultContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitResult(s) + } +} + +func (p *GQLParser) Result() (localctx IResultContext) { + localctx = NewResultContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 884, GQLParserRULE_result) + p.SetState(4068) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 459, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4066) + p.ResultExpression() + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4067) + p.NullLiteral() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IResultExpressionContext is an interface to support dynamic dispatch. +type IResultExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsResultExpressionContext differentiates from other interfaces. + IsResultExpressionContext() +} + +type ResultExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResultExpressionContext() *ResultExpressionContext { + var p = new(ResultExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_resultExpression + return p +} + +func InitEmptyResultExpressionContext(p *ResultExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_resultExpression +} + +func (*ResultExpressionContext) IsResultExpressionContext() {} + +func NewResultExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResultExpressionContext { + var p = new(ResultExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_resultExpression + + return p +} + +func (s *ResultExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ResultExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ResultExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ResultExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ResultExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterResultExpression(s) + } +} + +func (s *ResultExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitResultExpression(s) + } +} + +func (p *GQLParser) ResultExpression() (localctx IResultExpressionContext) { + localctx = NewResultExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 886, GQLParserRULE_resultExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4070) + p.valueExpression(0) + } + +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 +} + +// ICastSpecificationContext is an interface to support dynamic dispatch. +type ICastSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CAST() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + CastOperand() ICastOperandContext + AS() antlr.TerminalNode + CastTarget() ICastTargetContext + RIGHT_PAREN() antlr.TerminalNode + + // IsCastSpecificationContext differentiates from other interfaces. + IsCastSpecificationContext() +} + +type CastSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCastSpecificationContext() *CastSpecificationContext { + var p = new(CastSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castSpecification + return p +} + +func InitEmptyCastSpecificationContext(p *CastSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castSpecification +} + +func (*CastSpecificationContext) IsCastSpecificationContext() {} + +func NewCastSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CastSpecificationContext { + var p = new(CastSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_castSpecification + + return p +} + +func (s *CastSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *CastSpecificationContext) CAST() antlr.TerminalNode { + return s.GetToken(GQLParserCAST, 0) +} + +func (s *CastSpecificationContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CastSpecificationContext) CastOperand() ICastOperandContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICastOperandContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICastOperandContext) +} + +func (s *CastSpecificationContext) AS() antlr.TerminalNode { + return s.GetToken(GQLParserAS, 0) +} + +func (s *CastSpecificationContext) CastTarget() ICastTargetContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICastTargetContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICastTargetContext) +} + +func (s *CastSpecificationContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CastSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CastSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CastSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCastSpecification(s) + } +} + +func (s *CastSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCastSpecification(s) + } +} + +func (p *GQLParser) CastSpecification() (localctx ICastSpecificationContext) { + localctx = NewCastSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 888, GQLParserRULE_castSpecification) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4072) + p.Match(GQLParserCAST) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4073) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4074) + p.CastOperand() + } + { + p.SetState(4075) + p.Match(GQLParserAS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4076) + p.CastTarget() + } + { + p.SetState(4077) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ICastOperandContext is an interface to support dynamic dispatch. +type ICastOperandContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + NullLiteral() INullLiteralContext + + // IsCastOperandContext differentiates from other interfaces. + IsCastOperandContext() +} + +type CastOperandContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCastOperandContext() *CastOperandContext { + var p = new(CastOperandContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castOperand + return p +} + +func InitEmptyCastOperandContext(p *CastOperandContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castOperand +} + +func (*CastOperandContext) IsCastOperandContext() {} + +func NewCastOperandContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CastOperandContext { + var p = new(CastOperandContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_castOperand + + return p +} + +func (s *CastOperandContext) GetParser() antlr.Parser { return s.parser } + +func (s *CastOperandContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *CastOperandContext) NullLiteral() INullLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullLiteralContext) +} + +func (s *CastOperandContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CastOperandContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CastOperandContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCastOperand(s) + } +} + +func (s *CastOperandContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCastOperand(s) + } +} + +func (p *GQLParser) CastOperand() (localctx ICastOperandContext) { + localctx = NewCastOperandContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 890, GQLParserRULE_castOperand) + p.SetState(4081) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 460, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4079) + p.valueExpression(0) + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4080) + p.NullLiteral() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// ICastTargetContext is an interface to support dynamic dispatch. +type ICastTargetContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueType() IValueTypeContext + + // IsCastTargetContext differentiates from other interfaces. + IsCastTargetContext() +} + +type CastTargetContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCastTargetContext() *CastTargetContext { + var p = new(CastTargetContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castTarget + return p +} + +func InitEmptyCastTargetContext(p *CastTargetContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_castTarget +} + +func (*CastTargetContext) IsCastTargetContext() {} + +func NewCastTargetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CastTargetContext { + var p = new(CastTargetContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_castTarget + + return p +} + +func (s *CastTargetContext) GetParser() antlr.Parser { return s.parser } + +func (s *CastTargetContext) ValueType() IValueTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueTypeContext) +} + +func (s *CastTargetContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CastTargetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CastTargetContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCastTarget(s) + } +} + +func (s *CastTargetContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCastTarget(s) + } +} + +func (p *GQLParser) CastTarget() (localctx ICastTargetContext) { + localctx = NewCastTargetContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 892, GQLParserRULE_castTarget) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4083) + p.valueType(0) + } + +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 +} + +// IAggregateFunctionContext is an interface to support dynamic dispatch. +type IAggregateFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + COUNT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ASTERISK() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + GeneralSetFunction() IGeneralSetFunctionContext + BinarySetFunction() IBinarySetFunctionContext + + // IsAggregateFunctionContext differentiates from other interfaces. + IsAggregateFunctionContext() +} + +type AggregateFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAggregateFunctionContext() *AggregateFunctionContext { + var p = new(AggregateFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_aggregateFunction + return p +} + +func InitEmptyAggregateFunctionContext(p *AggregateFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_aggregateFunction +} + +func (*AggregateFunctionContext) IsAggregateFunctionContext() {} + +func NewAggregateFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AggregateFunctionContext { + var p = new(AggregateFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_aggregateFunction + + return p +} + +func (s *AggregateFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *AggregateFunctionContext) COUNT() antlr.TerminalNode { + return s.GetToken(GQLParserCOUNT, 0) +} + +func (s *AggregateFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *AggregateFunctionContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *AggregateFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *AggregateFunctionContext) GeneralSetFunction() IGeneralSetFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralSetFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralSetFunctionContext) +} + +func (s *AggregateFunctionContext) BinarySetFunction() IBinarySetFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBinarySetFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBinarySetFunctionContext) +} + +func (s *AggregateFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AggregateFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AggregateFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAggregateFunction(s) + } +} + +func (s *AggregateFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAggregateFunction(s) + } +} + +func (p *GQLParser) AggregateFunction() (localctx IAggregateFunctionContext) { + localctx = NewAggregateFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 894, GQLParserRULE_aggregateFunction) + p.SetState(4091) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 461, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4085) + p.Match(GQLParserCOUNT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4086) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4087) + p.Match(GQLParserASTERISK) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4088) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4089) + p.GeneralSetFunction() + } + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4090) + p.BinarySetFunction() + } + + case antlr.ATNInvalidAltNumber: + 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 +} + +// IGeneralSetFunctionContext is an interface to support dynamic dispatch. +type IGeneralSetFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + GeneralSetFunctionType() IGeneralSetFunctionTypeContext + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + SetQuantifier() ISetQuantifierContext + + // IsGeneralSetFunctionContext differentiates from other interfaces. + IsGeneralSetFunctionContext() +} + +type GeneralSetFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralSetFunctionContext() *GeneralSetFunctionContext { + var p = new(GeneralSetFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalSetFunction + return p +} + +func InitEmptyGeneralSetFunctionContext(p *GeneralSetFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalSetFunction +} + +func (*GeneralSetFunctionContext) IsGeneralSetFunctionContext() {} + +func NewGeneralSetFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralSetFunctionContext { + var p = new(GeneralSetFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalSetFunction + + return p +} + +func (s *GeneralSetFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralSetFunctionContext) GeneralSetFunctionType() IGeneralSetFunctionTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralSetFunctionTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralSetFunctionTypeContext) +} + +func (s *GeneralSetFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *GeneralSetFunctionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *GeneralSetFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *GeneralSetFunctionContext) SetQuantifier() ISetQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetQuantifierContext) +} + +func (s *GeneralSetFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralSetFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralSetFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralSetFunction(s) + } +} + +func (s *GeneralSetFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralSetFunction(s) + } +} + +func (p *GQLParser) GeneralSetFunction() (localctx IGeneralSetFunctionContext) { + localctx = NewGeneralSetFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 896, GQLParserRULE_generalSetFunction) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4093) + p.GeneralSetFunctionType() + } + { + p.SetState(4094) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4096) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(4095) + p.SetQuantifier() + } + + } + { + p.SetState(4098) + p.valueExpression(0) + } + { + p.SetState(4099) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IBinarySetFunctionContext is an interface to support dynamic dispatch. +type IBinarySetFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BinarySetFunctionType() IBinarySetFunctionTypeContext + LEFT_PAREN() antlr.TerminalNode + DependentValueExpression() IDependentValueExpressionContext + COMMA() antlr.TerminalNode + IndependentValueExpression() IIndependentValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsBinarySetFunctionContext differentiates from other interfaces. + IsBinarySetFunctionContext() +} + +type BinarySetFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBinarySetFunctionContext() *BinarySetFunctionContext { + var p = new(BinarySetFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binarySetFunction + return p +} + +func InitEmptyBinarySetFunctionContext(p *BinarySetFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binarySetFunction +} + +func (*BinarySetFunctionContext) IsBinarySetFunctionContext() {} + +func NewBinarySetFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BinarySetFunctionContext { + var p = new(BinarySetFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_binarySetFunction + + return p +} + +func (s *BinarySetFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *BinarySetFunctionContext) BinarySetFunctionType() IBinarySetFunctionTypeContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBinarySetFunctionTypeContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBinarySetFunctionTypeContext) +} + +func (s *BinarySetFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *BinarySetFunctionContext) DependentValueExpression() IDependentValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDependentValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDependentValueExpressionContext) +} + +func (s *BinarySetFunctionContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *BinarySetFunctionContext) IndependentValueExpression() IIndependentValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndependentValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIndependentValueExpressionContext) +} + +func (s *BinarySetFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *BinarySetFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BinarySetFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BinarySetFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBinarySetFunction(s) + } +} + +func (s *BinarySetFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBinarySetFunction(s) + } +} + +func (p *GQLParser) BinarySetFunction() (localctx IBinarySetFunctionContext) { + localctx = NewBinarySetFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 898, GQLParserRULE_binarySetFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4101) + p.BinarySetFunctionType() + } + { + p.SetState(4102) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4103) + p.DependentValueExpression() + } + { + p.SetState(4104) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4105) + p.IndependentValueExpression() + } + { + p.SetState(4106) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IGeneralSetFunctionTypeContext is an interface to support dynamic dispatch. +type IGeneralSetFunctionTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AVG() antlr.TerminalNode + COUNT() antlr.TerminalNode + MAX() antlr.TerminalNode + MIN() antlr.TerminalNode + SUM() antlr.TerminalNode + COLLECT_LIST() antlr.TerminalNode + STDDEV_SAMP() antlr.TerminalNode + STDDEV_POP() antlr.TerminalNode + + // IsGeneralSetFunctionTypeContext differentiates from other interfaces. + IsGeneralSetFunctionTypeContext() +} + +type GeneralSetFunctionTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralSetFunctionTypeContext() *GeneralSetFunctionTypeContext { + var p = new(GeneralSetFunctionTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalSetFunctionType + return p +} + +func InitEmptyGeneralSetFunctionTypeContext(p *GeneralSetFunctionTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalSetFunctionType +} + +func (*GeneralSetFunctionTypeContext) IsGeneralSetFunctionTypeContext() {} + +func NewGeneralSetFunctionTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralSetFunctionTypeContext { + var p = new(GeneralSetFunctionTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalSetFunctionType + + return p +} + +func (s *GeneralSetFunctionTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralSetFunctionTypeContext) AVG() antlr.TerminalNode { + return s.GetToken(GQLParserAVG, 0) +} + +func (s *GeneralSetFunctionTypeContext) COUNT() antlr.TerminalNode { + return s.GetToken(GQLParserCOUNT, 0) +} + +func (s *GeneralSetFunctionTypeContext) MAX() antlr.TerminalNode { + return s.GetToken(GQLParserMAX, 0) +} + +func (s *GeneralSetFunctionTypeContext) MIN() antlr.TerminalNode { + return s.GetToken(GQLParserMIN, 0) +} + +func (s *GeneralSetFunctionTypeContext) SUM() antlr.TerminalNode { + return s.GetToken(GQLParserSUM, 0) +} + +func (s *GeneralSetFunctionTypeContext) COLLECT_LIST() antlr.TerminalNode { + return s.GetToken(GQLParserCOLLECT_LIST, 0) +} + +func (s *GeneralSetFunctionTypeContext) STDDEV_SAMP() antlr.TerminalNode { + return s.GetToken(GQLParserSTDDEV_SAMP, 0) +} + +func (s *GeneralSetFunctionTypeContext) STDDEV_POP() antlr.TerminalNode { + return s.GetToken(GQLParserSTDDEV_POP, 0) +} + +func (s *GeneralSetFunctionTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralSetFunctionTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralSetFunctionTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralSetFunctionType(s) + } +} + +func (s *GeneralSetFunctionTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralSetFunctionType(s) + } +} + +func (p *GQLParser) GeneralSetFunctionType() (localctx IGeneralSetFunctionTypeContext) { + localctx = NewGeneralSetFunctionTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 900, GQLParserRULE_generalSetFunctionType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4108) + _la = p.GetTokenStream().LA(1) + + if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&4683743621055250432) != 0) || ((int64((_la-144)) & ^0x3f) == 0 && ((int64(1)<<(_la-144))&792633534417207299) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// ISetQuantifierContext is an interface to support dynamic dispatch. +type ISetQuantifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DISTINCT() antlr.TerminalNode + ALL() antlr.TerminalNode + + // IsSetQuantifierContext differentiates from other interfaces. + IsSetQuantifierContext() +} + +type SetQuantifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySetQuantifierContext() *SetQuantifierContext { + var p = new(SetQuantifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setQuantifier + return p +} + +func InitEmptySetQuantifierContext(p *SetQuantifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_setQuantifier +} + +func (*SetQuantifierContext) IsSetQuantifierContext() {} + +func NewSetQuantifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SetQuantifierContext { + var p = new(SetQuantifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_setQuantifier + + return p +} + +func (s *SetQuantifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *SetQuantifierContext) DISTINCT() antlr.TerminalNode { + return s.GetToken(GQLParserDISTINCT, 0) +} + +func (s *SetQuantifierContext) ALL() antlr.TerminalNode { + return s.GetToken(GQLParserALL, 0) +} + +func (s *SetQuantifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SetQuantifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SetQuantifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSetQuantifier(s) + } +} + +func (s *SetQuantifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSetQuantifier(s) + } +} + +func (p *GQLParser) SetQuantifier() (localctx ISetQuantifierContext) { + localctx = NewSetQuantifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 902, GQLParserRULE_setQuantifier) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4110) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserALL || _la == GQLParserDISTINCT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IBinarySetFunctionTypeContext is an interface to support dynamic dispatch. +type IBinarySetFunctionTypeContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PERCENTILE_CONT() antlr.TerminalNode + PERCENTILE_DISC() antlr.TerminalNode + + // IsBinarySetFunctionTypeContext differentiates from other interfaces. + IsBinarySetFunctionTypeContext() +} + +type BinarySetFunctionTypeContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBinarySetFunctionTypeContext() *BinarySetFunctionTypeContext { + var p = new(BinarySetFunctionTypeContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binarySetFunctionType + return p +} + +func InitEmptyBinarySetFunctionTypeContext(p *BinarySetFunctionTypeContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_binarySetFunctionType +} + +func (*BinarySetFunctionTypeContext) IsBinarySetFunctionTypeContext() {} + +func NewBinarySetFunctionTypeContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BinarySetFunctionTypeContext { + var p = new(BinarySetFunctionTypeContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_binarySetFunctionType + + return p +} + +func (s *BinarySetFunctionTypeContext) GetParser() antlr.Parser { return s.parser } + +func (s *BinarySetFunctionTypeContext) PERCENTILE_CONT() antlr.TerminalNode { + return s.GetToken(GQLParserPERCENTILE_CONT, 0) +} + +func (s *BinarySetFunctionTypeContext) PERCENTILE_DISC() antlr.TerminalNode { + return s.GetToken(GQLParserPERCENTILE_DISC, 0) +} + +func (s *BinarySetFunctionTypeContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BinarySetFunctionTypeContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BinarySetFunctionTypeContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBinarySetFunctionType(s) + } +} + +func (s *BinarySetFunctionTypeContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBinarySetFunctionType(s) + } +} + +func (p *GQLParser) BinarySetFunctionType() (localctx IBinarySetFunctionTypeContext) { + localctx = NewBinarySetFunctionTypeContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 904, GQLParserRULE_binarySetFunctionType) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4112) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserPERCENTILE_CONT || _la == GQLParserPERCENTILE_DISC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IDependentValueExpressionContext is an interface to support dynamic dispatch. +type IDependentValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + SetQuantifier() ISetQuantifierContext + + // IsDependentValueExpressionContext differentiates from other interfaces. + IsDependentValueExpressionContext() +} + +type DependentValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDependentValueExpressionContext() *DependentValueExpressionContext { + var p = new(DependentValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dependentValueExpression + return p +} + +func InitEmptyDependentValueExpressionContext(p *DependentValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dependentValueExpression +} + +func (*DependentValueExpressionContext) IsDependentValueExpressionContext() {} + +func NewDependentValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DependentValueExpressionContext { + var p = new(DependentValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dependentValueExpression + + return p +} + +func (s *DependentValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DependentValueExpressionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *DependentValueExpressionContext) SetQuantifier() ISetQuantifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISetQuantifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISetQuantifierContext) +} + +func (s *DependentValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DependentValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DependentValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDependentValueExpression(s) + } +} + +func (s *DependentValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDependentValueExpression(s) + } +} + +func (p *GQLParser) DependentValueExpression() (localctx IDependentValueExpressionContext) { + localctx = NewDependentValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 906, GQLParserRULE_dependentValueExpression) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(4115) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserALL || _la == GQLParserDISTINCT { + { + p.SetState(4114) + p.SetQuantifier() + } + + } + { + p.SetState(4117) + p.numericValueExpression(0) + } + +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 +} + +// IIndependentValueExpressionContext is an interface to support dynamic dispatch. +type IIndependentValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsIndependentValueExpressionContext differentiates from other interfaces. + IsIndependentValueExpressionContext() +} + +type IndependentValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIndependentValueExpressionContext() *IndependentValueExpressionContext { + var p = new(IndependentValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_independentValueExpression + return p +} + +func InitEmptyIndependentValueExpressionContext(p *IndependentValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_independentValueExpression +} + +func (*IndependentValueExpressionContext) IsIndependentValueExpressionContext() {} + +func NewIndependentValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IndependentValueExpressionContext { + var p = new(IndependentValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_independentValueExpression + + return p +} + +func (s *IndependentValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *IndependentValueExpressionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *IndependentValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IndependentValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *IndependentValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIndependentValueExpression(s) + } +} + +func (s *IndependentValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIndependentValueExpression(s) + } +} + +func (p *GQLParser) IndependentValueExpression() (localctx IIndependentValueExpressionContext) { + localctx = NewIndependentValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 908, GQLParserRULE_independentValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4119) + p.numericValueExpression(0) + } + +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 +} + +// IElement_idFunctionContext is an interface to support dynamic dispatch. +type IElement_idFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ELEMENT_ID() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ElementVariableReference() IElementVariableReferenceContext + RIGHT_PAREN() antlr.TerminalNode + + // IsElement_idFunctionContext differentiates from other interfaces. + IsElement_idFunctionContext() +} + +type Element_idFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElement_idFunctionContext() *Element_idFunctionContext { + var p = new(Element_idFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_element_idFunction + return p +} + +func InitEmptyElement_idFunctionContext(p *Element_idFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_element_idFunction +} + +func (*Element_idFunctionContext) IsElement_idFunctionContext() {} + +func NewElement_idFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Element_idFunctionContext { + var p = new(Element_idFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_element_idFunction + + return p +} + +func (s *Element_idFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Element_idFunctionContext) ELEMENT_ID() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENT_ID, 0) +} + +func (s *Element_idFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *Element_idFunctionContext) ElementVariableReference() IElementVariableReferenceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementVariableReferenceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementVariableReferenceContext) +} + +func (s *Element_idFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *Element_idFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Element_idFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *Element_idFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElement_idFunction(s) + } +} + +func (s *Element_idFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElement_idFunction(s) + } +} + +func (p *GQLParser) Element_idFunction() (localctx IElement_idFunctionContext) { + localctx = NewElement_idFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 910, GQLParserRULE_element_idFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4121) + p.Match(GQLParserELEMENT_ID) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4122) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4123) + p.ElementVariableReference() + } + { + p.SetState(4124) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IBindingVariableReferenceContext is an interface to support dynamic dispatch. +type IBindingVariableReferenceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariable() IBindingVariableContext + + // IsBindingVariableReferenceContext differentiates from other interfaces. + IsBindingVariableReferenceContext() +} + +type BindingVariableReferenceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingVariableReferenceContext() *BindingVariableReferenceContext { + var p = new(BindingVariableReferenceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableReference + return p +} + +func InitEmptyBindingVariableReferenceContext(p *BindingVariableReferenceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariableReference +} + +func (*BindingVariableReferenceContext) IsBindingVariableReferenceContext() {} + +func NewBindingVariableReferenceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingVariableReferenceContext { + var p = new(BindingVariableReferenceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingVariableReference + + return p +} + +func (s *BindingVariableReferenceContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingVariableReferenceContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *BindingVariableReferenceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingVariableReferenceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingVariableReferenceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingVariableReference(s) + } +} + +func (s *BindingVariableReferenceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingVariableReference(s) + } +} + +func (p *GQLParser) BindingVariableReference() (localctx IBindingVariableReferenceContext) { + localctx = NewBindingVariableReferenceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 912, GQLParserRULE_bindingVariableReference) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4126) + p.BindingVariable() + } + +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 +} + +// IPathValueExpressionContext is an interface to support dynamic dispatch. +type IPathValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsPathValueExpressionContext differentiates from other interfaces. + IsPathValueExpressionContext() +} + +type PathValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathValueExpressionContext() *PathValueExpressionContext { + var p = new(PathValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueExpression + return p +} + +func InitEmptyPathValueExpressionContext(p *PathValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueExpression +} + +func (*PathValueExpressionContext) IsPathValueExpressionContext() {} + +func NewPathValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathValueExpressionContext { + var p = new(PathValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathValueExpression + + return p +} + +func (s *PathValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *PathValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathValueExpression(s) + } +} + +func (s *PathValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathValueExpression(s) + } +} + +func (p *GQLParser) PathValueExpression() (localctx IPathValueExpressionContext) { + localctx = NewPathValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 914, GQLParserRULE_pathValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4128) + p.valueExpression(0) + } + +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 +} + +// IPathValueConstructorContext is an interface to support dynamic dispatch. +type IPathValueConstructorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathValueConstructorByEnumeration() IPathValueConstructorByEnumerationContext + + // IsPathValueConstructorContext differentiates from other interfaces. + IsPathValueConstructorContext() +} + +type PathValueConstructorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathValueConstructorContext() *PathValueConstructorContext { + var p = new(PathValueConstructorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueConstructor + return p +} + +func InitEmptyPathValueConstructorContext(p *PathValueConstructorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueConstructor +} + +func (*PathValueConstructorContext) IsPathValueConstructorContext() {} + +func NewPathValueConstructorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathValueConstructorContext { + var p = new(PathValueConstructorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathValueConstructor + + return p +} + +func (s *PathValueConstructorContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathValueConstructorContext) PathValueConstructorByEnumeration() IPathValueConstructorByEnumerationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueConstructorByEnumerationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueConstructorByEnumerationContext) +} + +func (s *PathValueConstructorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathValueConstructorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathValueConstructorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathValueConstructor(s) + } +} + +func (s *PathValueConstructorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathValueConstructor(s) + } +} + +func (p *GQLParser) PathValueConstructor() (localctx IPathValueConstructorContext) { + localctx = NewPathValueConstructorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 916, GQLParserRULE_pathValueConstructor) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4130) + p.PathValueConstructorByEnumeration() + } + +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 +} + +// IPathValueConstructorByEnumerationContext is an interface to support dynamic dispatch. +type IPathValueConstructorByEnumerationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PATH() antlr.TerminalNode + LEFT_BRACKET() antlr.TerminalNode + PathElementList() IPathElementListContext + RIGHT_BRACKET() antlr.TerminalNode + + // IsPathValueConstructorByEnumerationContext differentiates from other interfaces. + IsPathValueConstructorByEnumerationContext() +} + +type PathValueConstructorByEnumerationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathValueConstructorByEnumerationContext() *PathValueConstructorByEnumerationContext { + var p = new(PathValueConstructorByEnumerationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueConstructorByEnumeration + return p +} + +func InitEmptyPathValueConstructorByEnumerationContext(p *PathValueConstructorByEnumerationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathValueConstructorByEnumeration +} + +func (*PathValueConstructorByEnumerationContext) IsPathValueConstructorByEnumerationContext() {} + +func NewPathValueConstructorByEnumerationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathValueConstructorByEnumerationContext { + var p = new(PathValueConstructorByEnumerationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathValueConstructorByEnumeration + + return p +} + +func (s *PathValueConstructorByEnumerationContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathValueConstructorByEnumerationContext) PATH() antlr.TerminalNode { + return s.GetToken(GQLParserPATH, 0) +} + +func (s *PathValueConstructorByEnumerationContext) LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACKET, 0) +} + +func (s *PathValueConstructorByEnumerationContext) PathElementList() IPathElementListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathElementListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathElementListContext) +} + +func (s *PathValueConstructorByEnumerationContext) RIGHT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET, 0) +} + +func (s *PathValueConstructorByEnumerationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathValueConstructorByEnumerationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathValueConstructorByEnumerationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathValueConstructorByEnumeration(s) + } +} + +func (s *PathValueConstructorByEnumerationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathValueConstructorByEnumeration(s) + } +} + +func (p *GQLParser) PathValueConstructorByEnumeration() (localctx IPathValueConstructorByEnumerationContext) { + localctx = NewPathValueConstructorByEnumerationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 918, GQLParserRULE_pathValueConstructorByEnumeration) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4132) + p.Match(GQLParserPATH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4133) + p.Match(GQLParserLEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4134) + p.PathElementList() + } + { + p.SetState(4135) + p.Match(GQLParserRIGHT_BRACKET) + 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 +} + +// IPathElementListContext is an interface to support dynamic dispatch. +type IPathElementListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PathElementListStart() IPathElementListStartContext + AllPathElementListStep() []IPathElementListStepContext + PathElementListStep(i int) IPathElementListStepContext + + // IsPathElementListContext differentiates from other interfaces. + IsPathElementListContext() +} + +type PathElementListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathElementListContext() *PathElementListContext { + var p = new(PathElementListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementList + return p +} + +func InitEmptyPathElementListContext(p *PathElementListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementList +} + +func (*PathElementListContext) IsPathElementListContext() {} + +func NewPathElementListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathElementListContext { + var p = new(PathElementListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathElementList + + return p +} + +func (s *PathElementListContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathElementListContext) PathElementListStart() IPathElementListStartContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathElementListStartContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathElementListStartContext) +} + +func (s *PathElementListContext) AllPathElementListStep() []IPathElementListStepContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IPathElementListStepContext); ok { + len++ + } + } + + tst := make([]IPathElementListStepContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IPathElementListStepContext); ok { + tst[i] = t.(IPathElementListStepContext) + i++ + } + } + + return tst +} + +func (s *PathElementListContext) PathElementListStep(i int) IPathElementListStepContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathElementListStepContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IPathElementListStepContext) +} + +func (s *PathElementListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathElementListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathElementListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathElementList(s) + } +} + +func (s *PathElementListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathElementList(s) + } +} + +func (p *GQLParser) PathElementList() (localctx IPathElementListContext) { + localctx = NewPathElementListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 920, GQLParserRULE_pathElementList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4137) + p.PathElementListStart() + } + p.SetState(4141) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(4138) + p.PathElementListStep() + } + + p.SetState(4143) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IPathElementListStartContext is an interface to support dynamic dispatch. +type IPathElementListStartContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NodeReferenceValueExpression() INodeReferenceValueExpressionContext + + // IsPathElementListStartContext differentiates from other interfaces. + IsPathElementListStartContext() +} + +type PathElementListStartContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathElementListStartContext() *PathElementListStartContext { + var p = new(PathElementListStartContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementListStart + return p +} + +func InitEmptyPathElementListStartContext(p *PathElementListStartContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementListStart +} + +func (*PathElementListStartContext) IsPathElementListStartContext() {} + +func NewPathElementListStartContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathElementListStartContext { + var p = new(PathElementListStartContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathElementListStart + + return p +} + +func (s *PathElementListStartContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathElementListStartContext) NodeReferenceValueExpression() INodeReferenceValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeReferenceValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeReferenceValueExpressionContext) +} + +func (s *PathElementListStartContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathElementListStartContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathElementListStartContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathElementListStart(s) + } +} + +func (s *PathElementListStartContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathElementListStart(s) + } +} + +func (p *GQLParser) PathElementListStart() (localctx IPathElementListStartContext) { + localctx = NewPathElementListStartContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 922, GQLParserRULE_pathElementListStart) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4144) + p.NodeReferenceValueExpression() + } + +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 +} + +// IPathElementListStepContext is an interface to support dynamic dispatch. +type IPathElementListStepContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + EdgeReferenceValueExpression() IEdgeReferenceValueExpressionContext + NodeReferenceValueExpression() INodeReferenceValueExpressionContext + + // IsPathElementListStepContext differentiates from other interfaces. + IsPathElementListStepContext() +} + +type PathElementListStepContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathElementListStepContext() *PathElementListStepContext { + var p = new(PathElementListStepContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementListStep + return p +} + +func InitEmptyPathElementListStepContext(p *PathElementListStepContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathElementListStep +} + +func (*PathElementListStepContext) IsPathElementListStepContext() {} + +func NewPathElementListStepContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathElementListStepContext { + var p = new(PathElementListStepContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathElementListStep + + return p +} + +func (s *PathElementListStepContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathElementListStepContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *PathElementListStepContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *PathElementListStepContext) EdgeReferenceValueExpression() IEdgeReferenceValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IEdgeReferenceValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IEdgeReferenceValueExpressionContext) +} + +func (s *PathElementListStepContext) NodeReferenceValueExpression() INodeReferenceValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INodeReferenceValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INodeReferenceValueExpressionContext) +} + +func (s *PathElementListStepContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathElementListStepContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathElementListStepContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathElementListStep(s) + } +} + +func (s *PathElementListStepContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathElementListStep(s) + } +} + +func (p *GQLParser) PathElementListStep() (localctx IPathElementListStepContext) { + localctx = NewPathElementListStepContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 924, GQLParserRULE_pathElementListStep) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4146) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4147) + p.EdgeReferenceValueExpression() + } + { + p.SetState(4148) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4149) + p.NodeReferenceValueExpression() + } + +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 +} + +// IListValueExpressionContext is an interface to support dynamic dispatch. +type IListValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsListValueExpressionContext differentiates from other interfaces. + IsListValueExpressionContext() +} + +type ListValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueExpressionContext() *ListValueExpressionContext { + var p = new(ListValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueExpression + return p +} + +func InitEmptyListValueExpressionContext(p *ListValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueExpression +} + +func (*ListValueExpressionContext) IsListValueExpressionContext() {} + +func NewListValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueExpressionContext { + var p = new(ListValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueExpression + + return p +} + +func (s *ListValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ListValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueExpression(s) + } +} + +func (s *ListValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueExpression(s) + } +} + +func (p *GQLParser) ListValueExpression() (localctx IListValueExpressionContext) { + localctx = NewListValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 926, GQLParserRULE_listValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4151) + p.valueExpression(0) + } + +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 +} + +// IListValueFunctionContext is an interface to support dynamic dispatch. +type IListValueFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TrimListFunction() ITrimListFunctionContext + ElementsFunction() IElementsFunctionContext + + // IsListValueFunctionContext differentiates from other interfaces. + IsListValueFunctionContext() +} + +type ListValueFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueFunctionContext() *ListValueFunctionContext { + var p = new(ListValueFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueFunction + return p +} + +func InitEmptyListValueFunctionContext(p *ListValueFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueFunction +} + +func (*ListValueFunctionContext) IsListValueFunctionContext() {} + +func NewListValueFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueFunctionContext { + var p = new(ListValueFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueFunction + + return p +} + +func (s *ListValueFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueFunctionContext) TrimListFunction() ITrimListFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimListFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimListFunctionContext) +} + +func (s *ListValueFunctionContext) ElementsFunction() IElementsFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IElementsFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IElementsFunctionContext) +} + +func (s *ListValueFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueFunction(s) + } +} + +func (s *ListValueFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueFunction(s) + } +} + +func (p *GQLParser) ListValueFunction() (localctx IListValueFunctionContext) { + localctx = NewListValueFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 928, GQLParserRULE_listValueFunction) + p.SetState(4155) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserTRIM: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4153) + p.TrimListFunction() + } + + case GQLParserELEMENTS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4154) + p.ElementsFunction() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITrimListFunctionContext is an interface to support dynamic dispatch. +type ITrimListFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TRIM() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ListValueExpression() IListValueExpressionContext + COMMA() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsTrimListFunctionContext differentiates from other interfaces. + IsTrimListFunctionContext() +} + +type TrimListFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimListFunctionContext() *TrimListFunctionContext { + var p = new(TrimListFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimListFunction + return p +} + +func InitEmptyTrimListFunctionContext(p *TrimListFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimListFunction +} + +func (*TrimListFunctionContext) IsTrimListFunctionContext() {} + +func NewTrimListFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimListFunctionContext { + var p = new(TrimListFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimListFunction + + return p +} + +func (s *TrimListFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimListFunctionContext) TRIM() antlr.TerminalNode { + return s.GetToken(GQLParserTRIM, 0) +} + +func (s *TrimListFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TrimListFunctionContext) ListValueExpression() IListValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueExpressionContext) +} + +func (s *TrimListFunctionContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *TrimListFunctionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *TrimListFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TrimListFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimListFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimListFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimListFunction(s) + } +} + +func (s *TrimListFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimListFunction(s) + } +} + +func (p *GQLParser) TrimListFunction() (localctx ITrimListFunctionContext) { + localctx = NewTrimListFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 930, GQLParserRULE_trimListFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4157) + p.Match(GQLParserTRIM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4158) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4159) + p.ListValueExpression() + } + { + p.SetState(4160) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4161) + p.numericValueExpression(0) + } + { + p.SetState(4162) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IElementsFunctionContext is an interface to support dynamic dispatch. +type IElementsFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ELEMENTS() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + PathValueExpression() IPathValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsElementsFunctionContext differentiates from other interfaces. + IsElementsFunctionContext() +} + +type ElementsFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementsFunctionContext() *ElementsFunctionContext { + var p = new(ElementsFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementsFunction + return p +} + +func InitEmptyElementsFunctionContext(p *ElementsFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementsFunction +} + +func (*ElementsFunctionContext) IsElementsFunctionContext() {} + +func NewElementsFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementsFunctionContext { + var p = new(ElementsFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementsFunction + + return p +} + +func (s *ElementsFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementsFunctionContext) ELEMENTS() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENTS, 0) +} + +func (s *ElementsFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ElementsFunctionContext) PathValueExpression() IPathValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueExpressionContext) +} + +func (s *ElementsFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ElementsFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementsFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementsFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementsFunction(s) + } +} + +func (s *ElementsFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementsFunction(s) + } +} + +func (p *GQLParser) ElementsFunction() (localctx IElementsFunctionContext) { + localctx = NewElementsFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 932, GQLParserRULE_elementsFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4164) + p.Match(GQLParserELEMENTS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4165) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4166) + p.PathValueExpression() + } + { + p.SetState(4167) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IListValueConstructorContext is an interface to support dynamic dispatch. +type IListValueConstructorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ListValueConstructorByEnumeration() IListValueConstructorByEnumerationContext + + // IsListValueConstructorContext differentiates from other interfaces. + IsListValueConstructorContext() +} + +type ListValueConstructorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueConstructorContext() *ListValueConstructorContext { + var p = new(ListValueConstructorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueConstructor + return p +} + +func InitEmptyListValueConstructorContext(p *ListValueConstructorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueConstructor +} + +func (*ListValueConstructorContext) IsListValueConstructorContext() {} + +func NewListValueConstructorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueConstructorContext { + var p = new(ListValueConstructorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueConstructor + + return p +} + +func (s *ListValueConstructorContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueConstructorContext) ListValueConstructorByEnumeration() IListValueConstructorByEnumerationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueConstructorByEnumerationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueConstructorByEnumerationContext) +} + +func (s *ListValueConstructorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueConstructorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueConstructorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueConstructor(s) + } +} + +func (s *ListValueConstructorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueConstructor(s) + } +} + +func (p *GQLParser) ListValueConstructor() (localctx IListValueConstructorContext) { + localctx = NewListValueConstructorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 934, GQLParserRULE_listValueConstructor) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4169) + p.ListValueConstructorByEnumeration() + } + +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 +} + +// IListValueConstructorByEnumerationContext is an interface to support dynamic dispatch. +type IListValueConstructorByEnumerationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACKET() antlr.TerminalNode + RIGHT_BRACKET() antlr.TerminalNode + ListValueTypeName() IListValueTypeNameContext + ListElementList() IListElementListContext + + // IsListValueConstructorByEnumerationContext differentiates from other interfaces. + IsListValueConstructorByEnumerationContext() +} + +type ListValueConstructorByEnumerationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListValueConstructorByEnumerationContext() *ListValueConstructorByEnumerationContext { + var p = new(ListValueConstructorByEnumerationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueConstructorByEnumeration + return p +} + +func InitEmptyListValueConstructorByEnumerationContext(p *ListValueConstructorByEnumerationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listValueConstructorByEnumeration +} + +func (*ListValueConstructorByEnumerationContext) IsListValueConstructorByEnumerationContext() {} + +func NewListValueConstructorByEnumerationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListValueConstructorByEnumerationContext { + var p = new(ListValueConstructorByEnumerationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listValueConstructorByEnumeration + + return p +} + +func (s *ListValueConstructorByEnumerationContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListValueConstructorByEnumerationContext) LEFT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACKET, 0) +} + +func (s *ListValueConstructorByEnumerationContext) RIGHT_BRACKET() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACKET, 0) +} + +func (s *ListValueConstructorByEnumerationContext) ListValueTypeName() IListValueTypeNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueTypeNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueTypeNameContext) +} + +func (s *ListValueConstructorByEnumerationContext) ListElementList() IListElementListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListElementListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListElementListContext) +} + +func (s *ListValueConstructorByEnumerationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListValueConstructorByEnumerationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListValueConstructorByEnumerationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListValueConstructorByEnumeration(s) + } +} + +func (s *ListValueConstructorByEnumerationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListValueConstructorByEnumeration(s) + } +} + +func (p *GQLParser) ListValueConstructorByEnumeration() (localctx IListValueConstructorByEnumerationContext) { + localctx = NewListValueConstructorByEnumerationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 936, GQLParserRULE_listValueConstructorByEnumeration) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(4172) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserARRAY || _la == GQLParserLIST { + { + p.SetState(4171) + p.ListValueTypeName() + } + + } + { + p.SetState(4174) + p.Match(GQLParserLEFT_BRACKET) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4176) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8762849302180528028) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&34464073969) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-8011702113698201677) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&26393111092643) != 0) || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&844424930131967) != 0) || ((int64((_la-368)) & ^0x3f) == 0 && ((int64(1)<<(_la-368))&151) != 0) { + { + p.SetState(4175) + p.ListElementList() + } + + } + { + p.SetState(4178) + p.Match(GQLParserRIGHT_BRACKET) + 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 +} + +// IListElementListContext is an interface to support dynamic dispatch. +type IListElementListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllListElement() []IListElementContext + ListElement(i int) IListElementContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsListElementListContext differentiates from other interfaces. + IsListElementListContext() +} + +type ListElementListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListElementListContext() *ListElementListContext { + var p = new(ListElementListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listElementList + return p +} + +func InitEmptyListElementListContext(p *ListElementListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listElementList +} + +func (*ListElementListContext) IsListElementListContext() {} + +func NewListElementListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListElementListContext { + var p = new(ListElementListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listElementList + + return p +} + +func (s *ListElementListContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListElementListContext) AllListElement() []IListElementContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IListElementContext); ok { + len++ + } + } + + tst := make([]IListElementContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IListElementContext); ok { + tst[i] = t.(IListElementContext) + i++ + } + } + + return tst +} + +func (s *ListElementListContext) ListElement(i int) IListElementContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListElementContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IListElementContext) +} + +func (s *ListElementListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *ListElementListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *ListElementListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListElementListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListElementListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListElementList(s) + } +} + +func (s *ListElementListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListElementList(s) + } +} + +func (p *GQLParser) ListElementList() (localctx IListElementListContext) { + localctx = NewListElementListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 938, GQLParserRULE_listElementList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4180) + p.ListElement() + } + p.SetState(4185) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(4181) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4182) + p.ListElement() + } + + p.SetState(4187) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IListElementContext is an interface to support dynamic dispatch. +type IListElementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsListElementContext differentiates from other interfaces. + IsListElementContext() +} + +type ListElementContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListElementContext() *ListElementContext { + var p = new(ListElementContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listElement + return p +} + +func InitEmptyListElementContext(p *ListElementContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listElement +} + +func (*ListElementContext) IsListElementContext() {} + +func NewListElementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListElementContext { + var p = new(ListElementContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listElement + + return p +} + +func (s *ListElementContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListElementContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ListElementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListElementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListElementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListElement(s) + } +} + +func (s *ListElementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListElement(s) + } +} + +func (p *GQLParser) ListElement() (localctx IListElementContext) { + localctx = NewListElementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 940, GQLParserRULE_listElement) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4188) + p.valueExpression(0) + } + +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 +} + +// IRecordConstructorContext is an interface to support dynamic dispatch. +type IRecordConstructorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FieldsSpecification() IFieldsSpecificationContext + RECORD() antlr.TerminalNode + + // IsRecordConstructorContext differentiates from other interfaces. + IsRecordConstructorContext() +} + +type RecordConstructorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRecordConstructorContext() *RecordConstructorContext { + var p = new(RecordConstructorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordConstructor + return p +} + +func InitEmptyRecordConstructorContext(p *RecordConstructorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordConstructor +} + +func (*RecordConstructorContext) IsRecordConstructorContext() {} + +func NewRecordConstructorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RecordConstructorContext { + var p = new(RecordConstructorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_recordConstructor + + return p +} + +func (s *RecordConstructorContext) GetParser() antlr.Parser { return s.parser } + +func (s *RecordConstructorContext) FieldsSpecification() IFieldsSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldsSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldsSpecificationContext) +} + +func (s *RecordConstructorContext) RECORD() antlr.TerminalNode { + return s.GetToken(GQLParserRECORD, 0) +} + +func (s *RecordConstructorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RecordConstructorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RecordConstructorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRecordConstructor(s) + } +} + +func (s *RecordConstructorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRecordConstructor(s) + } +} + +func (p *GQLParser) RecordConstructor() (localctx IRecordConstructorContext) { + localctx = NewRecordConstructorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 942, GQLParserRULE_recordConstructor) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(4191) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserRECORD { + { + p.SetState(4190) + p.Match(GQLParserRECORD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } + { + p.SetState(4193) + p.FieldsSpecification() + } + +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 +} + +// IFieldsSpecificationContext is an interface to support dynamic dispatch. +type IFieldsSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_BRACE() antlr.TerminalNode + RIGHT_BRACE() antlr.TerminalNode + FieldList() IFieldListContext + + // IsFieldsSpecificationContext differentiates from other interfaces. + IsFieldsSpecificationContext() +} + +type FieldsSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldsSpecificationContext() *FieldsSpecificationContext { + var p = new(FieldsSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldsSpecification + return p +} + +func InitEmptyFieldsSpecificationContext(p *FieldsSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldsSpecification +} + +func (*FieldsSpecificationContext) IsFieldsSpecificationContext() {} + +func NewFieldsSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldsSpecificationContext { + var p = new(FieldsSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldsSpecification + + return p +} + +func (s *FieldsSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldsSpecificationContext) LEFT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_BRACE, 0) +} + +func (s *FieldsSpecificationContext) RIGHT_BRACE() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_BRACE, 0) +} + +func (s *FieldsSpecificationContext) FieldList() IFieldListContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldListContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldListContext) +} + +func (s *FieldsSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldsSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldsSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldsSpecification(s) + } +} + +func (s *FieldsSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldsSpecification(s) + } +} + +func (p *GQLParser) FieldsSpecification() (localctx IFieldsSpecificationContext) { + localctx = NewFieldsSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 944, GQLParserRULE_fieldsSpecification) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4195) + p.Match(GQLParserLEFT_BRACE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4197) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&281474976710655) != 0) { + { + p.SetState(4196) + p.FieldList() + } + + } + { + p.SetState(4199) + p.Match(GQLParserRIGHT_BRACE) + 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 +} + +// IFieldListContext is an interface to support dynamic dispatch. +type IFieldListContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + AllField() []IFieldContext + Field(i int) IFieldContext + AllCOMMA() []antlr.TerminalNode + COMMA(i int) antlr.TerminalNode + + // IsFieldListContext differentiates from other interfaces. + IsFieldListContext() +} + +type FieldListContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldListContext() *FieldListContext { + var p = new(FieldListContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldList + return p +} + +func InitEmptyFieldListContext(p *FieldListContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldList +} + +func (*FieldListContext) IsFieldListContext() {} + +func NewFieldListContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldListContext { + var p = new(FieldListContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldList + + return p +} + +func (s *FieldListContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldListContext) AllField() []IFieldContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFieldContext); ok { + len++ + } + } + + tst := make([]IFieldContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFieldContext); ok { + tst[i] = t.(IFieldContext) + i++ + } + } + + return tst +} + +func (s *FieldListContext) Field(i int) IFieldContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFieldContext) +} + +func (s *FieldListContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(GQLParserCOMMA) +} + +func (s *FieldListContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, i) +} + +func (s *FieldListContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldListContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldListContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldList(s) + } +} + +func (s *FieldListContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldList(s) + } +} + +func (p *GQLParser) FieldList() (localctx IFieldListContext) { + localctx = NewFieldListContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 946, GQLParserRULE_fieldList) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4201) + p.Field() + } + p.SetState(4206) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + for _la == GQLParserCOMMA { + { + p.SetState(4202) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4203) + p.Field() + } + + p.SetState(4208) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + } + +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 +} + +// IFieldContext is an interface to support dynamic dispatch. +type IFieldContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FieldName() IFieldNameContext + COLON() antlr.TerminalNode + ValueExpression() IValueExpressionContext + + // IsFieldContext differentiates from other interfaces. + IsFieldContext() +} + +type FieldContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldContext() *FieldContext { + var p = new(FieldContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_field + return p +} + +func InitEmptyFieldContext(p *FieldContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_field +} + +func (*FieldContext) IsFieldContext() {} + +func NewFieldContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldContext { + var p = new(FieldContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_field + + return p +} + +func (s *FieldContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldContext) FieldName() IFieldNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFieldNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFieldNameContext) +} + +func (s *FieldContext) COLON() antlr.TerminalNode { + return s.GetToken(GQLParserCOLON, 0) +} + +func (s *FieldContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *FieldContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterField(s) + } +} + +func (s *FieldContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitField(s) + } +} + +func (p *GQLParser) Field() (localctx IFieldContext) { + localctx = NewFieldContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 948, GQLParserRULE_field) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4209) + p.FieldName() + } + { + p.SetState(4210) + p.Match(GQLParserCOLON) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4211) + p.valueExpression(0) + } + +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 +} + +// ITruthValueContext is an interface to support dynamic dispatch. +type ITruthValueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BOOLEAN_LITERAL() antlr.TerminalNode + + // IsTruthValueContext differentiates from other interfaces. + IsTruthValueContext() +} + +type TruthValueContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTruthValueContext() *TruthValueContext { + var p = new(TruthValueContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_truthValue + return p +} + +func InitEmptyTruthValueContext(p *TruthValueContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_truthValue +} + +func (*TruthValueContext) IsTruthValueContext() {} + +func NewTruthValueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TruthValueContext { + var p = new(TruthValueContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_truthValue + + return p +} + +func (s *TruthValueContext) GetParser() antlr.Parser { return s.parser } + +func (s *TruthValueContext) BOOLEAN_LITERAL() antlr.TerminalNode { + return s.GetToken(GQLParserBOOLEAN_LITERAL, 0) +} + +func (s *TruthValueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TruthValueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TruthValueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTruthValue(s) + } +} + +func (s *TruthValueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTruthValue(s) + } +} + +func (p *GQLParser) TruthValue() (localctx ITruthValueContext) { + localctx = NewTruthValueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 950, GQLParserRULE_truthValue) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4213) + p.Match(GQLParserBOOLEAN_LITERAL) + 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 +} + +// INumericValueExpressionContext is an interface to support dynamic dispatch. +type INumericValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // GetSign returns the sign token. + GetSign() antlr.Token + + // GetOperator returns the operator token. + GetOperator() antlr.Token + + // SetSign sets the sign token. + SetSign(antlr.Token) + + // SetOperator sets the operator token. + SetOperator(antlr.Token) + + // Getter signatures + AllNumericValueExpression() []INumericValueExpressionContext + NumericValueExpression(i int) INumericValueExpressionContext + PLUS_SIGN() antlr.TerminalNode + MINUS_SIGN() antlr.TerminalNode + ValueExpressionPrimary() IValueExpressionPrimaryContext + NumericValueFunction() INumericValueFunctionContext + ASTERISK() antlr.TerminalNode + SOLIDUS() antlr.TerminalNode + + // IsNumericValueExpressionContext differentiates from other interfaces. + IsNumericValueExpressionContext() +} + +type NumericValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser + sign antlr.Token + operator antlr.Token +} + +func NewEmptyNumericValueExpressionContext() *NumericValueExpressionContext { + var p = new(NumericValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpression + return p +} + +func InitEmptyNumericValueExpressionContext(p *NumericValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpression +} + +func (*NumericValueExpressionContext) IsNumericValueExpressionContext() {} + +func NewNumericValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueExpressionContext { + var p = new(NumericValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueExpression + + return p +} + +func (s *NumericValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueExpressionContext) GetSign() antlr.Token { return s.sign } + +func (s *NumericValueExpressionContext) GetOperator() antlr.Token { return s.operator } + +func (s *NumericValueExpressionContext) SetSign(v antlr.Token) { s.sign = v } + +func (s *NumericValueExpressionContext) SetOperator(v antlr.Token) { s.operator = v } + +func (s *NumericValueExpressionContext) AllNumericValueExpression() []INumericValueExpressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(INumericValueExpressionContext); ok { + len++ + } + } + + tst := make([]INumericValueExpressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(INumericValueExpressionContext); ok { + tst[i] = t.(INumericValueExpressionContext) + i++ + } + } + + return tst +} + +func (s *NumericValueExpressionContext) NumericValueExpression(i int) INumericValueExpressionContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NumericValueExpressionContext) PLUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserPLUS_SIGN, 0) +} + +func (s *NumericValueExpressionContext) MINUS_SIGN() antlr.TerminalNode { + return s.GetToken(GQLParserMINUS_SIGN, 0) +} + +func (s *NumericValueExpressionContext) ValueExpressionPrimary() IValueExpressionPrimaryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionPrimaryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionPrimaryContext) +} + +func (s *NumericValueExpressionContext) NumericValueFunction() INumericValueFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueFunctionContext) +} + +func (s *NumericValueExpressionContext) ASTERISK() antlr.TerminalNode { + return s.GetToken(GQLParserASTERISK, 0) +} + +func (s *NumericValueExpressionContext) SOLIDUS() antlr.TerminalNode { + return s.GetToken(GQLParserSOLIDUS, 0) +} + +func (s *NumericValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueExpression(s) + } +} + +func (s *NumericValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueExpression(s) + } +} + +func (p *GQLParser) NumericValueExpression() (localctx INumericValueExpressionContext) { + return p.numericValueExpression(0) +} + +func (p *GQLParser) numericValueExpression(_p int) (localctx INumericValueExpressionContext) { + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + + _parentState := p.GetState() + localctx = NewNumericValueExpressionContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx INumericValueExpressionContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 952 + p.EnterRecursionRule(localctx, 952, GQLParserRULE_numericValueExpression, _p) + var _la int + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(4220) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserMINUS_SIGN, GQLParserPLUS_SIGN: + { + p.SetState(4216) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*NumericValueExpressionContext).sign = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserMINUS_SIGN || _la == GQLParserPLUS_SIGN) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*NumericValueExpressionContext).sign = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4217) + p.numericValueExpression(5) + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER, GQLParserARRAY, GQLParserAVG, GQLParserCASE, GQLParserCAST, GQLParserCOALESCE, GQLParserCOLLECT_LIST, GQLParserCOUNT, GQLParserDATE, GQLParserDATETIME, GQLParserDURATION, GQLParserELEMENT_ID, GQLParserLET, GQLParserLIST, GQLParserMAX, GQLParserMIN, GQLParserNULL_KW, GQLParserNULLIF, GQLParserPATH, GQLParserPERCENTILE_CONT, GQLParserPERCENTILE_DISC, GQLParserRECORD, GQLParserSESSION_USER, GQLParserSTDDEV_POP, GQLParserSTDDEV_SAMP, GQLParserSUM, GQLParserTIME, GQLParserTIMESTAMP, GQLParserVALUE, GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER, GQLParserGENERAL_PARAMETER_REFERENCE, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET, GQLParserLEFT_PAREN: + { + p.SetState(4218) + p.valueExpressionPrimary(0) + } + + case GQLParserABS, GQLParserACOS, GQLParserASIN, GQLParserATAN, GQLParserBYTE_LENGTH, GQLParserCARDINALITY, GQLParserCEIL, GQLParserCEILING, GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH, GQLParserCOS, GQLParserCOSH, GQLParserCOT, GQLParserDEGREES, GQLParserEXP, GQLParserFLOOR, GQLParserLN, GQLParserLOG_KW, GQLParserLOG10, GQLParserMOD, GQLParserOCTET_LENGTH, GQLParserPATH_LENGTH, GQLParserPOWER, GQLParserRADIANS, GQLParserSIN, GQLParserSINH, GQLParserSIZE, GQLParserSQRT, GQLParserTAN, GQLParserTANH: + { + p.SetState(4219) + p.NumericValueFunction() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + goto errorExit + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(4230) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 474, p.GetParserRuleContext()) + if p.HasError() { + goto errorExit + } + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(4228) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 473, p.GetParserRuleContext()) { + case 1: + localctx = NewNumericValueExpressionContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_numericValueExpression) + p.SetState(4222) + + if !(p.Precpred(p.GetParserRuleContext(), 4)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) + goto errorExit + } + { + p.SetState(4223) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*NumericValueExpressionContext).operator = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserASTERISK || _la == GQLParserSOLIDUS) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*NumericValueExpressionContext).operator = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4224) + p.numericValueExpression(5) + } + + case 2: + localctx = NewNumericValueExpressionContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, GQLParserRULE_numericValueExpression) + p.SetState(4225) + + if !(p.Precpred(p.GetParserRuleContext(), 3)) { + p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 3)", "")) + goto errorExit + } + { + p.SetState(4226) + + var _lt = p.GetTokenStream().LT(1) + + localctx.(*NumericValueExpressionContext).operator = _lt + + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserMINUS_SIGN || _la == GQLParserPLUS_SIGN) { + var _ri = p.GetErrorHandler().RecoverInline(p) + + localctx.(*NumericValueExpressionContext).operator = _ri + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4227) + p.numericValueExpression(4) + } + + case antlr.ATNInvalidAltNumber: + goto errorExit + } + + } + p.SetState(4232) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 474, p.GetParserRuleContext()) + if p.HasError() { + 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.UnrollRecursionContexts(_parentctx) + return localctx + goto errorExit // Trick to prevent compiler error if the label is not used +} + +// INumericValueFunctionContext is an interface to support dynamic dispatch. +type INumericValueFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LengthExpression() ILengthExpressionContext + CardinalityExpression() ICardinalityExpressionContext + AbsoluteValueExpression() IAbsoluteValueExpressionContext + ModulusExpression() IModulusExpressionContext + TrigonometricFunction() ITrigonometricFunctionContext + GeneralLogarithmFunction() IGeneralLogarithmFunctionContext + CommonLogarithm() ICommonLogarithmContext + NaturalLogarithm() INaturalLogarithmContext + ExponentialFunction() IExponentialFunctionContext + PowerFunction() IPowerFunctionContext + SquareRoot() ISquareRootContext + FloorFunction() IFloorFunctionContext + CeilingFunction() ICeilingFunctionContext + + // IsNumericValueFunctionContext differentiates from other interfaces. + IsNumericValueFunctionContext() +} + +type NumericValueFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericValueFunctionContext() *NumericValueFunctionContext { + var p = new(NumericValueFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueFunction + return p +} + +func InitEmptyNumericValueFunctionContext(p *NumericValueFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueFunction +} + +func (*NumericValueFunctionContext) IsNumericValueFunctionContext() {} + +func NewNumericValueFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueFunctionContext { + var p = new(NumericValueFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueFunction + + return p +} + +func (s *NumericValueFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueFunctionContext) LengthExpression() ILengthExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILengthExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILengthExpressionContext) +} + +func (s *NumericValueFunctionContext) CardinalityExpression() ICardinalityExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICardinalityExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICardinalityExpressionContext) +} + +func (s *NumericValueFunctionContext) AbsoluteValueExpression() IAbsoluteValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbsoluteValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbsoluteValueExpressionContext) +} + +func (s *NumericValueFunctionContext) ModulusExpression() IModulusExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IModulusExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IModulusExpressionContext) +} + +func (s *NumericValueFunctionContext) TrigonometricFunction() ITrigonometricFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigonometricFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigonometricFunctionContext) +} + +func (s *NumericValueFunctionContext) GeneralLogarithmFunction() IGeneralLogarithmFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralLogarithmFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralLogarithmFunctionContext) +} + +func (s *NumericValueFunctionContext) CommonLogarithm() ICommonLogarithmContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommonLogarithmContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICommonLogarithmContext) +} + +func (s *NumericValueFunctionContext) NaturalLogarithm() INaturalLogarithmContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INaturalLogarithmContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INaturalLogarithmContext) +} + +func (s *NumericValueFunctionContext) ExponentialFunction() IExponentialFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExponentialFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExponentialFunctionContext) +} + +func (s *NumericValueFunctionContext) PowerFunction() IPowerFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPowerFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPowerFunctionContext) +} + +func (s *NumericValueFunctionContext) SquareRoot() ISquareRootContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISquareRootContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISquareRootContext) +} + +func (s *NumericValueFunctionContext) FloorFunction() IFloorFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFloorFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IFloorFunctionContext) +} + +func (s *NumericValueFunctionContext) CeilingFunction() ICeilingFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICeilingFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICeilingFunctionContext) +} + +func (s *NumericValueFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueFunction(s) + } +} + +func (s *NumericValueFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueFunction(s) + } +} + +func (p *GQLParser) NumericValueFunction() (localctx INumericValueFunctionContext) { + localctx = NewNumericValueFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 954, GQLParserRULE_numericValueFunction) + p.SetState(4246) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBYTE_LENGTH, GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH, GQLParserOCTET_LENGTH, GQLParserPATH_LENGTH: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4233) + p.LengthExpression() + } + + case GQLParserCARDINALITY, GQLParserSIZE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4234) + p.CardinalityExpression() + } + + case GQLParserABS: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4235) + p.AbsoluteValueExpression() + } + + case GQLParserMOD: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(4236) + p.ModulusExpression() + } + + case GQLParserACOS, GQLParserASIN, GQLParserATAN, GQLParserCOS, GQLParserCOSH, GQLParserCOT, GQLParserDEGREES, GQLParserRADIANS, GQLParserSIN, GQLParserSINH, GQLParserTAN, GQLParserTANH: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(4237) + p.TrigonometricFunction() + } + + case GQLParserLOG_KW: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(4238) + p.GeneralLogarithmFunction() + } + + case GQLParserLOG10: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(4239) + p.CommonLogarithm() + } + + case GQLParserLN: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(4240) + p.NaturalLogarithm() + } + + case GQLParserEXP: + p.EnterOuterAlt(localctx, 9) + { + p.SetState(4241) + p.ExponentialFunction() + } + + case GQLParserPOWER: + p.EnterOuterAlt(localctx, 10) + { + p.SetState(4242) + p.PowerFunction() + } + + case GQLParserSQRT: + p.EnterOuterAlt(localctx, 11) + { + p.SetState(4243) + p.SquareRoot() + } + + case GQLParserFLOOR: + p.EnterOuterAlt(localctx, 12) + { + p.SetState(4244) + p.FloorFunction() + } + + case GQLParserCEIL, GQLParserCEILING: + p.EnterOuterAlt(localctx, 13) + { + p.SetState(4245) + p.CeilingFunction() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILengthExpressionContext is an interface to support dynamic dispatch. +type ILengthExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharLengthExpression() ICharLengthExpressionContext + ByteLengthExpression() IByteLengthExpressionContext + PathLengthExpression() IPathLengthExpressionContext + + // IsLengthExpressionContext differentiates from other interfaces. + IsLengthExpressionContext() +} + +type LengthExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLengthExpressionContext() *LengthExpressionContext { + var p = new(LengthExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_lengthExpression + return p +} + +func InitEmptyLengthExpressionContext(p *LengthExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_lengthExpression +} + +func (*LengthExpressionContext) IsLengthExpressionContext() {} + +func NewLengthExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LengthExpressionContext { + var p = new(LengthExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_lengthExpression + + return p +} + +func (s *LengthExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LengthExpressionContext) CharLengthExpression() ICharLengthExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharLengthExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharLengthExpressionContext) +} + +func (s *LengthExpressionContext) ByteLengthExpression() IByteLengthExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IByteLengthExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IByteLengthExpressionContext) +} + +func (s *LengthExpressionContext) PathLengthExpression() IPathLengthExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathLengthExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathLengthExpressionContext) +} + +func (s *LengthExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LengthExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LengthExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLengthExpression(s) + } +} + +func (s *LengthExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLengthExpression(s) + } +} + +func (p *GQLParser) LengthExpression() (localctx ILengthExpressionContext) { + localctx = NewLengthExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 956, GQLParserRULE_lengthExpression) + p.SetState(4251) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCHAR_LENGTH, GQLParserCHARACTER_LENGTH: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4248) + p.CharLengthExpression() + } + + case GQLParserBYTE_LENGTH, GQLParserOCTET_LENGTH: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4249) + p.ByteLengthExpression() + } + + case GQLParserPATH_LENGTH: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4250) + p.PathLengthExpression() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ICardinalityExpressionContext is an interface to support dynamic dispatch. +type ICardinalityExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CARDINALITY() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + CardinalityExpressionArgument() ICardinalityExpressionArgumentContext + RIGHT_PAREN() antlr.TerminalNode + SIZE() antlr.TerminalNode + ListValueExpression() IListValueExpressionContext + + // IsCardinalityExpressionContext differentiates from other interfaces. + IsCardinalityExpressionContext() +} + +type CardinalityExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCardinalityExpressionContext() *CardinalityExpressionContext { + var p = new(CardinalityExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_cardinalityExpression + return p +} + +func InitEmptyCardinalityExpressionContext(p *CardinalityExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_cardinalityExpression +} + +func (*CardinalityExpressionContext) IsCardinalityExpressionContext() {} + +func NewCardinalityExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CardinalityExpressionContext { + var p = new(CardinalityExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_cardinalityExpression + + return p +} + +func (s *CardinalityExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CardinalityExpressionContext) CARDINALITY() antlr.TerminalNode { + return s.GetToken(GQLParserCARDINALITY, 0) +} + +func (s *CardinalityExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CardinalityExpressionContext) CardinalityExpressionArgument() ICardinalityExpressionArgumentContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICardinalityExpressionArgumentContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICardinalityExpressionArgumentContext) +} + +func (s *CardinalityExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CardinalityExpressionContext) SIZE() antlr.TerminalNode { + return s.GetToken(GQLParserSIZE, 0) +} + +func (s *CardinalityExpressionContext) ListValueExpression() IListValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueExpressionContext) +} + +func (s *CardinalityExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CardinalityExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CardinalityExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCardinalityExpression(s) + } +} + +func (s *CardinalityExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCardinalityExpression(s) + } +} + +func (p *GQLParser) CardinalityExpression() (localctx ICardinalityExpressionContext) { + localctx = NewCardinalityExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 958, GQLParserRULE_cardinalityExpression) + p.SetState(4263) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCARDINALITY: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4253) + p.Match(GQLParserCARDINALITY) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4254) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4255) + p.CardinalityExpressionArgument() + } + { + p.SetState(4256) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserSIZE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4258) + p.Match(GQLParserSIZE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4259) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4260) + p.ListValueExpression() + } + { + p.SetState(4261) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ICardinalityExpressionArgumentContext is an interface to support dynamic dispatch. +type ICardinalityExpressionArgumentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsCardinalityExpressionArgumentContext differentiates from other interfaces. + IsCardinalityExpressionArgumentContext() +} + +type CardinalityExpressionArgumentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCardinalityExpressionArgumentContext() *CardinalityExpressionArgumentContext { + var p = new(CardinalityExpressionArgumentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_cardinalityExpressionArgument + return p +} + +func InitEmptyCardinalityExpressionArgumentContext(p *CardinalityExpressionArgumentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_cardinalityExpressionArgument +} + +func (*CardinalityExpressionArgumentContext) IsCardinalityExpressionArgumentContext() {} + +func NewCardinalityExpressionArgumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CardinalityExpressionArgumentContext { + var p = new(CardinalityExpressionArgumentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_cardinalityExpressionArgument + + return p +} + +func (s *CardinalityExpressionArgumentContext) GetParser() antlr.Parser { return s.parser } + +func (s *CardinalityExpressionArgumentContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *CardinalityExpressionArgumentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CardinalityExpressionArgumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CardinalityExpressionArgumentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCardinalityExpressionArgument(s) + } +} + +func (s *CardinalityExpressionArgumentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCardinalityExpressionArgument(s) + } +} + +func (p *GQLParser) CardinalityExpressionArgument() (localctx ICardinalityExpressionArgumentContext) { + localctx = NewCardinalityExpressionArgumentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 960, GQLParserRULE_cardinalityExpressionArgument) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4265) + p.valueExpression(0) + } + +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 +} + +// ICharLengthExpressionContext is an interface to support dynamic dispatch. +type ICharLengthExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + CharacterStringValueExpression() ICharacterStringValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + CHAR_LENGTH() antlr.TerminalNode + CHARACTER_LENGTH() antlr.TerminalNode + + // IsCharLengthExpressionContext differentiates from other interfaces. + IsCharLengthExpressionContext() +} + +type CharLengthExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCharLengthExpressionContext() *CharLengthExpressionContext { + var p = new(CharLengthExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_charLengthExpression + return p +} + +func InitEmptyCharLengthExpressionContext(p *CharLengthExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_charLengthExpression +} + +func (*CharLengthExpressionContext) IsCharLengthExpressionContext() {} + +func NewCharLengthExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharLengthExpressionContext { + var p = new(CharLengthExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_charLengthExpression + + return p +} + +func (s *CharLengthExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CharLengthExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CharLengthExpressionContext) CharacterStringValueExpression() ICharacterStringValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringValueExpressionContext) +} + +func (s *CharLengthExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CharLengthExpressionContext) CHAR_LENGTH() antlr.TerminalNode { + return s.GetToken(GQLParserCHAR_LENGTH, 0) +} + +func (s *CharLengthExpressionContext) CHARACTER_LENGTH() antlr.TerminalNode { + return s.GetToken(GQLParserCHARACTER_LENGTH, 0) +} + +func (s *CharLengthExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CharLengthExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CharLengthExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCharLengthExpression(s) + } +} + +func (s *CharLengthExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCharLengthExpression(s) + } +} + +func (p *GQLParser) CharLengthExpression() (localctx ICharLengthExpressionContext) { + localctx = NewCharLengthExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 962, GQLParserRULE_charLengthExpression) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4267) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserCHAR_LENGTH || _la == GQLParserCHARACTER_LENGTH) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4268) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4269) + p.CharacterStringValueExpression() + } + { + p.SetState(4270) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IByteLengthExpressionContext is an interface to support dynamic dispatch. +type IByteLengthExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + ByteStringValueExpression() IByteStringValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + BYTE_LENGTH() antlr.TerminalNode + OCTET_LENGTH() antlr.TerminalNode + + // IsByteLengthExpressionContext differentiates from other interfaces. + IsByteLengthExpressionContext() +} + +type ByteLengthExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyByteLengthExpressionContext() *ByteLengthExpressionContext { + var p = new(ByteLengthExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteLengthExpression + return p +} + +func InitEmptyByteLengthExpressionContext(p *ByteLengthExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteLengthExpression +} + +func (*ByteLengthExpressionContext) IsByteLengthExpressionContext() {} + +func NewByteLengthExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ByteLengthExpressionContext { + var p = new(ByteLengthExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_byteLengthExpression + + return p +} + +func (s *ByteLengthExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ByteLengthExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ByteLengthExpressionContext) ByteStringValueExpression() IByteStringValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IByteStringValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IByteStringValueExpressionContext) +} + +func (s *ByteLengthExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ByteLengthExpressionContext) BYTE_LENGTH() antlr.TerminalNode { + return s.GetToken(GQLParserBYTE_LENGTH, 0) +} + +func (s *ByteLengthExpressionContext) OCTET_LENGTH() antlr.TerminalNode { + return s.GetToken(GQLParserOCTET_LENGTH, 0) +} + +func (s *ByteLengthExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ByteLengthExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ByteLengthExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterByteLengthExpression(s) + } +} + +func (s *ByteLengthExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitByteLengthExpression(s) + } +} + +func (p *GQLParser) ByteLengthExpression() (localctx IByteLengthExpressionContext) { + localctx = NewByteLengthExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 964, GQLParserRULE_byteLengthExpression) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4272) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserBYTE_LENGTH || _la == GQLParserOCTET_LENGTH) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4273) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4274) + p.ByteStringValueExpression() + } + { + p.SetState(4275) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IPathLengthExpressionContext is an interface to support dynamic dispatch. +type IPathLengthExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + PATH_LENGTH() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + PathValueExpression() IPathValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsPathLengthExpressionContext differentiates from other interfaces. + IsPathLengthExpressionContext() +} + +type PathLengthExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathLengthExpressionContext() *PathLengthExpressionContext { + var p = new(PathLengthExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathLengthExpression + return p +} + +func InitEmptyPathLengthExpressionContext(p *PathLengthExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathLengthExpression +} + +func (*PathLengthExpressionContext) IsPathLengthExpressionContext() {} + +func NewPathLengthExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathLengthExpressionContext { + var p = new(PathLengthExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathLengthExpression + + return p +} + +func (s *PathLengthExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathLengthExpressionContext) PATH_LENGTH() antlr.TerminalNode { + return s.GetToken(GQLParserPATH_LENGTH, 0) +} + +func (s *PathLengthExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *PathLengthExpressionContext) PathValueExpression() IPathValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPathValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IPathValueExpressionContext) +} + +func (s *PathLengthExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *PathLengthExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathLengthExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathLengthExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathLengthExpression(s) + } +} + +func (s *PathLengthExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathLengthExpression(s) + } +} + +func (p *GQLParser) PathLengthExpression() (localctx IPathLengthExpressionContext) { + localctx = NewPathLengthExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 966, GQLParserRULE_pathLengthExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4277) + p.Match(GQLParserPATH_LENGTH) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4278) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4279) + p.PathValueExpression() + } + { + p.SetState(4280) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IAbsoluteValueExpressionContext is an interface to support dynamic dispatch. +type IAbsoluteValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ABS() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + ValueExpression() IValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsAbsoluteValueExpressionContext differentiates from other interfaces. + IsAbsoluteValueExpressionContext() +} + +type AbsoluteValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAbsoluteValueExpressionContext() *AbsoluteValueExpressionContext { + var p = new(AbsoluteValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteValueExpression + return p +} + +func InitEmptyAbsoluteValueExpressionContext(p *AbsoluteValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_absoluteValueExpression +} + +func (*AbsoluteValueExpressionContext) IsAbsoluteValueExpressionContext() {} + +func NewAbsoluteValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AbsoluteValueExpressionContext { + var p = new(AbsoluteValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_absoluteValueExpression + + return p +} + +func (s *AbsoluteValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *AbsoluteValueExpressionContext) ABS() antlr.TerminalNode { + return s.GetToken(GQLParserABS, 0) +} + +func (s *AbsoluteValueExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *AbsoluteValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *AbsoluteValueExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *AbsoluteValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AbsoluteValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AbsoluteValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterAbsoluteValueExpression(s) + } +} + +func (s *AbsoluteValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitAbsoluteValueExpression(s) + } +} + +func (p *GQLParser) AbsoluteValueExpression() (localctx IAbsoluteValueExpressionContext) { + localctx = NewAbsoluteValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 968, GQLParserRULE_absoluteValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4282) + p.Match(GQLParserABS) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4283) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4284) + p.valueExpression(0) + } + { + p.SetState(4285) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IModulusExpressionContext is an interface to support dynamic dispatch. +type IModulusExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + MOD() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpressionDividend() INumericValueExpressionDividendContext + COMMA() antlr.TerminalNode + NumericValueExpressionDivisor() INumericValueExpressionDivisorContext + RIGHT_PAREN() antlr.TerminalNode + + // IsModulusExpressionContext differentiates from other interfaces. + IsModulusExpressionContext() +} + +type ModulusExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyModulusExpressionContext() *ModulusExpressionContext { + var p = new(ModulusExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_modulusExpression + return p +} + +func InitEmptyModulusExpressionContext(p *ModulusExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_modulusExpression +} + +func (*ModulusExpressionContext) IsModulusExpressionContext() {} + +func NewModulusExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ModulusExpressionContext { + var p = new(ModulusExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_modulusExpression + + return p +} + +func (s *ModulusExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ModulusExpressionContext) MOD() antlr.TerminalNode { + return s.GetToken(GQLParserMOD, 0) +} + +func (s *ModulusExpressionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ModulusExpressionContext) NumericValueExpressionDividend() INumericValueExpressionDividendContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionDividendContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionDividendContext) +} + +func (s *ModulusExpressionContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *ModulusExpressionContext) NumericValueExpressionDivisor() INumericValueExpressionDivisorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionDivisorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionDivisorContext) +} + +func (s *ModulusExpressionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ModulusExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ModulusExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ModulusExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterModulusExpression(s) + } +} + +func (s *ModulusExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitModulusExpression(s) + } +} + +func (p *GQLParser) ModulusExpression() (localctx IModulusExpressionContext) { + localctx = NewModulusExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 970, GQLParserRULE_modulusExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4287) + p.Match(GQLParserMOD) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4288) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4289) + p.NumericValueExpressionDividend() + } + { + p.SetState(4290) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4291) + p.NumericValueExpressionDivisor() + } + { + p.SetState(4292) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INumericValueExpressionDividendContext is an interface to support dynamic dispatch. +type INumericValueExpressionDividendContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsNumericValueExpressionDividendContext differentiates from other interfaces. + IsNumericValueExpressionDividendContext() +} + +type NumericValueExpressionDividendContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericValueExpressionDividendContext() *NumericValueExpressionDividendContext { + var p = new(NumericValueExpressionDividendContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionDividend + return p +} + +func InitEmptyNumericValueExpressionDividendContext(p *NumericValueExpressionDividendContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionDividend +} + +func (*NumericValueExpressionDividendContext) IsNumericValueExpressionDividendContext() {} + +func NewNumericValueExpressionDividendContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueExpressionDividendContext { + var p = new(NumericValueExpressionDividendContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueExpressionDividend + + return p +} + +func (s *NumericValueExpressionDividendContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueExpressionDividendContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NumericValueExpressionDividendContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueExpressionDividendContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueExpressionDividendContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueExpressionDividend(s) + } +} + +func (s *NumericValueExpressionDividendContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueExpressionDividend(s) + } +} + +func (p *GQLParser) NumericValueExpressionDividend() (localctx INumericValueExpressionDividendContext) { + localctx = NewNumericValueExpressionDividendContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 972, GQLParserRULE_numericValueExpressionDividend) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4294) + p.numericValueExpression(0) + } + +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 +} + +// INumericValueExpressionDivisorContext is an interface to support dynamic dispatch. +type INumericValueExpressionDivisorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsNumericValueExpressionDivisorContext differentiates from other interfaces. + IsNumericValueExpressionDivisorContext() +} + +type NumericValueExpressionDivisorContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericValueExpressionDivisorContext() *NumericValueExpressionDivisorContext { + var p = new(NumericValueExpressionDivisorContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionDivisor + return p +} + +func InitEmptyNumericValueExpressionDivisorContext(p *NumericValueExpressionDivisorContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionDivisor +} + +func (*NumericValueExpressionDivisorContext) IsNumericValueExpressionDivisorContext() {} + +func NewNumericValueExpressionDivisorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueExpressionDivisorContext { + var p = new(NumericValueExpressionDivisorContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueExpressionDivisor + + return p +} + +func (s *NumericValueExpressionDivisorContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueExpressionDivisorContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NumericValueExpressionDivisorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueExpressionDivisorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueExpressionDivisorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueExpressionDivisor(s) + } +} + +func (s *NumericValueExpressionDivisorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueExpressionDivisor(s) + } +} + +func (p *GQLParser) NumericValueExpressionDivisor() (localctx INumericValueExpressionDivisorContext) { + localctx = NewNumericValueExpressionDivisorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 974, GQLParserRULE_numericValueExpressionDivisor) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4296) + p.numericValueExpression(0) + } + +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 +} + +// ITrigonometricFunctionContext is an interface to support dynamic dispatch. +type ITrigonometricFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TrigonometricFunctionName() ITrigonometricFunctionNameContext + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsTrigonometricFunctionContext differentiates from other interfaces. + IsTrigonometricFunctionContext() +} + +type TrigonometricFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrigonometricFunctionContext() *TrigonometricFunctionContext { + var p = new(TrigonometricFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trigonometricFunction + return p +} + +func InitEmptyTrigonometricFunctionContext(p *TrigonometricFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trigonometricFunction +} + +func (*TrigonometricFunctionContext) IsTrigonometricFunctionContext() {} + +func NewTrigonometricFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrigonometricFunctionContext { + var p = new(TrigonometricFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trigonometricFunction + + return p +} + +func (s *TrigonometricFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrigonometricFunctionContext) TrigonometricFunctionName() ITrigonometricFunctionNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigonometricFunctionNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigonometricFunctionNameContext) +} + +func (s *TrigonometricFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TrigonometricFunctionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *TrigonometricFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TrigonometricFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrigonometricFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrigonometricFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrigonometricFunction(s) + } +} + +func (s *TrigonometricFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrigonometricFunction(s) + } +} + +func (p *GQLParser) TrigonometricFunction() (localctx ITrigonometricFunctionContext) { + localctx = NewTrigonometricFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 976, GQLParserRULE_trigonometricFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4298) + p.TrigonometricFunctionName() + } + { + p.SetState(4299) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4300) + p.numericValueExpression(0) + } + { + p.SetState(4301) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ITrigonometricFunctionNameContext is an interface to support dynamic dispatch. +type ITrigonometricFunctionNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SIN() antlr.TerminalNode + COS() antlr.TerminalNode + TAN() antlr.TerminalNode + COT() antlr.TerminalNode + SINH() antlr.TerminalNode + COSH() antlr.TerminalNode + TANH() antlr.TerminalNode + ASIN() antlr.TerminalNode + ACOS() antlr.TerminalNode + ATAN() antlr.TerminalNode + DEGREES() antlr.TerminalNode + RADIANS() antlr.TerminalNode + + // IsTrigonometricFunctionNameContext differentiates from other interfaces. + IsTrigonometricFunctionNameContext() +} + +type TrigonometricFunctionNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrigonometricFunctionNameContext() *TrigonometricFunctionNameContext { + var p = new(TrigonometricFunctionNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trigonometricFunctionName + return p +} + +func InitEmptyTrigonometricFunctionNameContext(p *TrigonometricFunctionNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trigonometricFunctionName +} + +func (*TrigonometricFunctionNameContext) IsTrigonometricFunctionNameContext() {} + +func NewTrigonometricFunctionNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrigonometricFunctionNameContext { + var p = new(TrigonometricFunctionNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trigonometricFunctionName + + return p +} + +func (s *TrigonometricFunctionNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrigonometricFunctionNameContext) SIN() antlr.TerminalNode { + return s.GetToken(GQLParserSIN, 0) +} + +func (s *TrigonometricFunctionNameContext) COS() antlr.TerminalNode { + return s.GetToken(GQLParserCOS, 0) +} + +func (s *TrigonometricFunctionNameContext) TAN() antlr.TerminalNode { + return s.GetToken(GQLParserTAN, 0) +} + +func (s *TrigonometricFunctionNameContext) COT() antlr.TerminalNode { + return s.GetToken(GQLParserCOT, 0) +} + +func (s *TrigonometricFunctionNameContext) SINH() antlr.TerminalNode { + return s.GetToken(GQLParserSINH, 0) +} + +func (s *TrigonometricFunctionNameContext) COSH() antlr.TerminalNode { + return s.GetToken(GQLParserCOSH, 0) +} + +func (s *TrigonometricFunctionNameContext) TANH() antlr.TerminalNode { + return s.GetToken(GQLParserTANH, 0) +} + +func (s *TrigonometricFunctionNameContext) ASIN() antlr.TerminalNode { + return s.GetToken(GQLParserASIN, 0) +} + +func (s *TrigonometricFunctionNameContext) ACOS() antlr.TerminalNode { + return s.GetToken(GQLParserACOS, 0) +} + +func (s *TrigonometricFunctionNameContext) ATAN() antlr.TerminalNode { + return s.GetToken(GQLParserATAN, 0) +} + +func (s *TrigonometricFunctionNameContext) DEGREES() antlr.TerminalNode { + return s.GetToken(GQLParserDEGREES, 0) +} + +func (s *TrigonometricFunctionNameContext) RADIANS() antlr.TerminalNode { + return s.GetToken(GQLParserRADIANS, 0) +} + +func (s *TrigonometricFunctionNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrigonometricFunctionNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrigonometricFunctionNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrigonometricFunctionName(s) + } +} + +func (s *TrigonometricFunctionNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrigonometricFunctionName(s) + } +} + +func (p *GQLParser) TrigonometricFunctionName() (localctx ITrigonometricFunctionNameContext) { + localctx = NewTrigonometricFunctionNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 978, GQLParserRULE_trigonometricFunctionName) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4303) + _la = p.GetTokenStream().LA(1) + + if !(((int64((_la-21)) & ^0x3f) == 0 && ((int64(1)<<(_la-21))&18016322654833153) != 0) || ((int64((_la-174)) & ^0x3f) == 0 && ((int64(1)<<(_la-174))&3222011905) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IGeneralLogarithmFunctionContext is an interface to support dynamic dispatch. +type IGeneralLogarithmFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOG_KW() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + GeneralLogarithmBase() IGeneralLogarithmBaseContext + COMMA() antlr.TerminalNode + GeneralLogarithmArgument() IGeneralLogarithmArgumentContext + RIGHT_PAREN() antlr.TerminalNode + + // IsGeneralLogarithmFunctionContext differentiates from other interfaces. + IsGeneralLogarithmFunctionContext() +} + +type GeneralLogarithmFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralLogarithmFunctionContext() *GeneralLogarithmFunctionContext { + var p = new(GeneralLogarithmFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmFunction + return p +} + +func InitEmptyGeneralLogarithmFunctionContext(p *GeneralLogarithmFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmFunction +} + +func (*GeneralLogarithmFunctionContext) IsGeneralLogarithmFunctionContext() {} + +func NewGeneralLogarithmFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralLogarithmFunctionContext { + var p = new(GeneralLogarithmFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalLogarithmFunction + + return p +} + +func (s *GeneralLogarithmFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralLogarithmFunctionContext) LOG_KW() antlr.TerminalNode { + return s.GetToken(GQLParserLOG_KW, 0) +} + +func (s *GeneralLogarithmFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *GeneralLogarithmFunctionContext) GeneralLogarithmBase() IGeneralLogarithmBaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralLogarithmBaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralLogarithmBaseContext) +} + +func (s *GeneralLogarithmFunctionContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *GeneralLogarithmFunctionContext) GeneralLogarithmArgument() IGeneralLogarithmArgumentContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralLogarithmArgumentContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralLogarithmArgumentContext) +} + +func (s *GeneralLogarithmFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *GeneralLogarithmFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralLogarithmFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralLogarithmFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralLogarithmFunction(s) + } +} + +func (s *GeneralLogarithmFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralLogarithmFunction(s) + } +} + +func (p *GQLParser) GeneralLogarithmFunction() (localctx IGeneralLogarithmFunctionContext) { + localctx = NewGeneralLogarithmFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 980, GQLParserRULE_generalLogarithmFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4305) + p.Match(GQLParserLOG_KW) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4306) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4307) + p.GeneralLogarithmBase() + } + { + p.SetState(4308) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4309) + p.GeneralLogarithmArgument() + } + { + p.SetState(4310) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IGeneralLogarithmBaseContext is an interface to support dynamic dispatch. +type IGeneralLogarithmBaseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsGeneralLogarithmBaseContext differentiates from other interfaces. + IsGeneralLogarithmBaseContext() +} + +type GeneralLogarithmBaseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralLogarithmBaseContext() *GeneralLogarithmBaseContext { + var p = new(GeneralLogarithmBaseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmBase + return p +} + +func InitEmptyGeneralLogarithmBaseContext(p *GeneralLogarithmBaseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmBase +} + +func (*GeneralLogarithmBaseContext) IsGeneralLogarithmBaseContext() {} + +func NewGeneralLogarithmBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralLogarithmBaseContext { + var p = new(GeneralLogarithmBaseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalLogarithmBase + + return p +} + +func (s *GeneralLogarithmBaseContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralLogarithmBaseContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *GeneralLogarithmBaseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralLogarithmBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralLogarithmBaseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralLogarithmBase(s) + } +} + +func (s *GeneralLogarithmBaseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralLogarithmBase(s) + } +} + +func (p *GQLParser) GeneralLogarithmBase() (localctx IGeneralLogarithmBaseContext) { + localctx = NewGeneralLogarithmBaseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 982, GQLParserRULE_generalLogarithmBase) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4312) + p.numericValueExpression(0) + } + +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 +} + +// IGeneralLogarithmArgumentContext is an interface to support dynamic dispatch. +type IGeneralLogarithmArgumentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsGeneralLogarithmArgumentContext differentiates from other interfaces. + IsGeneralLogarithmArgumentContext() +} + +type GeneralLogarithmArgumentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralLogarithmArgumentContext() *GeneralLogarithmArgumentContext { + var p = new(GeneralLogarithmArgumentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmArgument + return p +} + +func InitEmptyGeneralLogarithmArgumentContext(p *GeneralLogarithmArgumentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLogarithmArgument +} + +func (*GeneralLogarithmArgumentContext) IsGeneralLogarithmArgumentContext() {} + +func NewGeneralLogarithmArgumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralLogarithmArgumentContext { + var p = new(GeneralLogarithmArgumentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalLogarithmArgument + + return p +} + +func (s *GeneralLogarithmArgumentContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralLogarithmArgumentContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *GeneralLogarithmArgumentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralLogarithmArgumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralLogarithmArgumentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralLogarithmArgument(s) + } +} + +func (s *GeneralLogarithmArgumentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralLogarithmArgument(s) + } +} + +func (p *GQLParser) GeneralLogarithmArgument() (localctx IGeneralLogarithmArgumentContext) { + localctx = NewGeneralLogarithmArgumentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 984, GQLParserRULE_generalLogarithmArgument) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4314) + p.numericValueExpression(0) + } + +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 +} + +// ICommonLogarithmContext is an interface to support dynamic dispatch. +type ICommonLogarithmContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOG10() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsCommonLogarithmContext differentiates from other interfaces. + IsCommonLogarithmContext() +} + +type CommonLogarithmContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommonLogarithmContext() *CommonLogarithmContext { + var p = new(CommonLogarithmContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_commonLogarithm + return p +} + +func InitEmptyCommonLogarithmContext(p *CommonLogarithmContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_commonLogarithm +} + +func (*CommonLogarithmContext) IsCommonLogarithmContext() {} + +func NewCommonLogarithmContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CommonLogarithmContext { + var p = new(CommonLogarithmContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_commonLogarithm + + return p +} + +func (s *CommonLogarithmContext) GetParser() antlr.Parser { return s.parser } + +func (s *CommonLogarithmContext) LOG10() antlr.TerminalNode { + return s.GetToken(GQLParserLOG10, 0) +} + +func (s *CommonLogarithmContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CommonLogarithmContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *CommonLogarithmContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CommonLogarithmContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CommonLogarithmContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CommonLogarithmContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCommonLogarithm(s) + } +} + +func (s *CommonLogarithmContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCommonLogarithm(s) + } +} + +func (p *GQLParser) CommonLogarithm() (localctx ICommonLogarithmContext) { + localctx = NewCommonLogarithmContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 986, GQLParserRULE_commonLogarithm) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4316) + p.Match(GQLParserLOG10) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4317) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4318) + p.numericValueExpression(0) + } + { + p.SetState(4319) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INaturalLogarithmContext is an interface to support dynamic dispatch. +type INaturalLogarithmContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LN() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsNaturalLogarithmContext differentiates from other interfaces. + IsNaturalLogarithmContext() +} + +type NaturalLogarithmContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNaturalLogarithmContext() *NaturalLogarithmContext { + var p = new(NaturalLogarithmContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_naturalLogarithm + return p +} + +func InitEmptyNaturalLogarithmContext(p *NaturalLogarithmContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_naturalLogarithm +} + +func (*NaturalLogarithmContext) IsNaturalLogarithmContext() {} + +func NewNaturalLogarithmContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NaturalLogarithmContext { + var p = new(NaturalLogarithmContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_naturalLogarithm + + return p +} + +func (s *NaturalLogarithmContext) GetParser() antlr.Parser { return s.parser } + +func (s *NaturalLogarithmContext) LN() antlr.TerminalNode { + return s.GetToken(GQLParserLN, 0) +} + +func (s *NaturalLogarithmContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *NaturalLogarithmContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NaturalLogarithmContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *NaturalLogarithmContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NaturalLogarithmContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NaturalLogarithmContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNaturalLogarithm(s) + } +} + +func (s *NaturalLogarithmContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNaturalLogarithm(s) + } +} + +func (p *GQLParser) NaturalLogarithm() (localctx INaturalLogarithmContext) { + localctx = NewNaturalLogarithmContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 988, GQLParserRULE_naturalLogarithm) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4321) + p.Match(GQLParserLN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4322) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4323) + p.numericValueExpression(0) + } + { + p.SetState(4324) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IExponentialFunctionContext is an interface to support dynamic dispatch. +type IExponentialFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EXP() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsExponentialFunctionContext differentiates from other interfaces. + IsExponentialFunctionContext() +} + +type ExponentialFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExponentialFunctionContext() *ExponentialFunctionContext { + var p = new(ExponentialFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exponentialFunction + return p +} + +func InitEmptyExponentialFunctionContext(p *ExponentialFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exponentialFunction +} + +func (*ExponentialFunctionContext) IsExponentialFunctionContext() {} + +func NewExponentialFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExponentialFunctionContext { + var p = new(ExponentialFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_exponentialFunction + + return p +} + +func (s *ExponentialFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExponentialFunctionContext) EXP() antlr.TerminalNode { + return s.GetToken(GQLParserEXP, 0) +} + +func (s *ExponentialFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *ExponentialFunctionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *ExponentialFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *ExponentialFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExponentialFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ExponentialFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterExponentialFunction(s) + } +} + +func (s *ExponentialFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitExponentialFunction(s) + } +} + +func (p *GQLParser) ExponentialFunction() (localctx IExponentialFunctionContext) { + localctx = NewExponentialFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 990, GQLParserRULE_exponentialFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4326) + p.Match(GQLParserEXP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4327) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4328) + p.numericValueExpression(0) + } + { + p.SetState(4329) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IPowerFunctionContext is an interface to support dynamic dispatch. +type IPowerFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + POWER() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpressionBase() INumericValueExpressionBaseContext + COMMA() antlr.TerminalNode + NumericValueExpressionExponent() INumericValueExpressionExponentContext + RIGHT_PAREN() antlr.TerminalNode + + // IsPowerFunctionContext differentiates from other interfaces. + IsPowerFunctionContext() +} + +type PowerFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPowerFunctionContext() *PowerFunctionContext { + var p = new(PowerFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_powerFunction + return p +} + +func InitEmptyPowerFunctionContext(p *PowerFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_powerFunction +} + +func (*PowerFunctionContext) IsPowerFunctionContext() {} + +func NewPowerFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PowerFunctionContext { + var p = new(PowerFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_powerFunction + + return p +} + +func (s *PowerFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *PowerFunctionContext) POWER() antlr.TerminalNode { + return s.GetToken(GQLParserPOWER, 0) +} + +func (s *PowerFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *PowerFunctionContext) NumericValueExpressionBase() INumericValueExpressionBaseContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionBaseContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionBaseContext) +} + +func (s *PowerFunctionContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *PowerFunctionContext) NumericValueExpressionExponent() INumericValueExpressionExponentContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionExponentContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionExponentContext) +} + +func (s *PowerFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *PowerFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PowerFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PowerFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPowerFunction(s) + } +} + +func (s *PowerFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPowerFunction(s) + } +} + +func (p *GQLParser) PowerFunction() (localctx IPowerFunctionContext) { + localctx = NewPowerFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 992, GQLParserRULE_powerFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4331) + p.Match(GQLParserPOWER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4332) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4333) + p.NumericValueExpressionBase() + } + { + p.SetState(4334) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4335) + p.NumericValueExpressionExponent() + } + { + p.SetState(4336) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// INumericValueExpressionBaseContext is an interface to support dynamic dispatch. +type INumericValueExpressionBaseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsNumericValueExpressionBaseContext differentiates from other interfaces. + IsNumericValueExpressionBaseContext() +} + +type NumericValueExpressionBaseContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericValueExpressionBaseContext() *NumericValueExpressionBaseContext { + var p = new(NumericValueExpressionBaseContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionBase + return p +} + +func InitEmptyNumericValueExpressionBaseContext(p *NumericValueExpressionBaseContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionBase +} + +func (*NumericValueExpressionBaseContext) IsNumericValueExpressionBaseContext() {} + +func NewNumericValueExpressionBaseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueExpressionBaseContext { + var p = new(NumericValueExpressionBaseContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueExpressionBase + + return p +} + +func (s *NumericValueExpressionBaseContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueExpressionBaseContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NumericValueExpressionBaseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueExpressionBaseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueExpressionBaseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueExpressionBase(s) + } +} + +func (s *NumericValueExpressionBaseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueExpressionBase(s) + } +} + +func (p *GQLParser) NumericValueExpressionBase() (localctx INumericValueExpressionBaseContext) { + localctx = NewNumericValueExpressionBaseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 994, GQLParserRULE_numericValueExpressionBase) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4338) + p.numericValueExpression(0) + } + +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 +} + +// INumericValueExpressionExponentContext is an interface to support dynamic dispatch. +type INumericValueExpressionExponentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsNumericValueExpressionExponentContext differentiates from other interfaces. + IsNumericValueExpressionExponentContext() +} + +type NumericValueExpressionExponentContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNumericValueExpressionExponentContext() *NumericValueExpressionExponentContext { + var p = new(NumericValueExpressionExponentContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionExponent + return p +} + +func InitEmptyNumericValueExpressionExponentContext(p *NumericValueExpressionExponentContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_numericValueExpressionExponent +} + +func (*NumericValueExpressionExponentContext) IsNumericValueExpressionExponentContext() {} + +func NewNumericValueExpressionExponentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NumericValueExpressionExponentContext { + var p = new(NumericValueExpressionExponentContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_numericValueExpressionExponent + + return p +} + +func (s *NumericValueExpressionExponentContext) GetParser() antlr.Parser { return s.parser } + +func (s *NumericValueExpressionExponentContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *NumericValueExpressionExponentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NumericValueExpressionExponentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NumericValueExpressionExponentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNumericValueExpressionExponent(s) + } +} + +func (s *NumericValueExpressionExponentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNumericValueExpressionExponent(s) + } +} + +func (p *GQLParser) NumericValueExpressionExponent() (localctx INumericValueExpressionExponentContext) { + localctx = NewNumericValueExpressionExponentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 996, GQLParserRULE_numericValueExpressionExponent) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4340) + p.numericValueExpression(0) + } + +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 +} + +// ISquareRootContext is an interface to support dynamic dispatch. +type ISquareRootContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SQRT() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsSquareRootContext differentiates from other interfaces. + IsSquareRootContext() +} + +type SquareRootContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySquareRootContext() *SquareRootContext { + var p = new(SquareRootContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_squareRoot + return p +} + +func InitEmptySquareRootContext(p *SquareRootContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_squareRoot +} + +func (*SquareRootContext) IsSquareRootContext() {} + +func NewSquareRootContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SquareRootContext { + var p = new(SquareRootContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_squareRoot + + return p +} + +func (s *SquareRootContext) GetParser() antlr.Parser { return s.parser } + +func (s *SquareRootContext) SQRT() antlr.TerminalNode { + return s.GetToken(GQLParserSQRT, 0) +} + +func (s *SquareRootContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *SquareRootContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *SquareRootContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *SquareRootContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SquareRootContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SquareRootContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSquareRoot(s) + } +} + +func (s *SquareRootContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSquareRoot(s) + } +} + +func (p *GQLParser) SquareRoot() (localctx ISquareRootContext) { + localctx = NewSquareRootContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 998, GQLParserRULE_squareRoot) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4342) + p.Match(GQLParserSQRT) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4343) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4344) + p.numericValueExpression(0) + } + { + p.SetState(4345) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IFloorFunctionContext is an interface to support dynamic dispatch. +type IFloorFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + FLOOR() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + + // IsFloorFunctionContext differentiates from other interfaces. + IsFloorFunctionContext() +} + +type FloorFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFloorFunctionContext() *FloorFunctionContext { + var p = new(FloorFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_floorFunction + return p +} + +func InitEmptyFloorFunctionContext(p *FloorFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_floorFunction +} + +func (*FloorFunctionContext) IsFloorFunctionContext() {} + +func NewFloorFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FloorFunctionContext { + var p = new(FloorFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_floorFunction + + return p +} + +func (s *FloorFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *FloorFunctionContext) FLOOR() antlr.TerminalNode { + return s.GetToken(GQLParserFLOOR, 0) +} + +func (s *FloorFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *FloorFunctionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *FloorFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *FloorFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FloorFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FloorFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFloorFunction(s) + } +} + +func (s *FloorFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFloorFunction(s) + } +} + +func (p *GQLParser) FloorFunction() (localctx IFloorFunctionContext) { + localctx = NewFloorFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1000, GQLParserRULE_floorFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4347) + p.Match(GQLParserFLOOR) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4348) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4349) + p.numericValueExpression(0) + } + { + p.SetState(4350) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ICeilingFunctionContext is an interface to support dynamic dispatch. +type ICeilingFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEFT_PAREN() antlr.TerminalNode + NumericValueExpression() INumericValueExpressionContext + RIGHT_PAREN() antlr.TerminalNode + CEIL() antlr.TerminalNode + CEILING() antlr.TerminalNode + + // IsCeilingFunctionContext differentiates from other interfaces. + IsCeilingFunctionContext() +} + +type CeilingFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCeilingFunctionContext() *CeilingFunctionContext { + var p = new(CeilingFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ceilingFunction + return p +} + +func InitEmptyCeilingFunctionContext(p *CeilingFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_ceilingFunction +} + +func (*CeilingFunctionContext) IsCeilingFunctionContext() {} + +func NewCeilingFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CeilingFunctionContext { + var p = new(CeilingFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_ceilingFunction + + return p +} + +func (s *CeilingFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CeilingFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *CeilingFunctionContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *CeilingFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *CeilingFunctionContext) CEIL() antlr.TerminalNode { + return s.GetToken(GQLParserCEIL, 0) +} + +func (s *CeilingFunctionContext) CEILING() antlr.TerminalNode { + return s.GetToken(GQLParserCEILING, 0) +} + +func (s *CeilingFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CeilingFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CeilingFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCeilingFunction(s) + } +} + +func (s *CeilingFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCeilingFunction(s) + } +} + +func (p *GQLParser) CeilingFunction() (localctx ICeilingFunctionContext) { + localctx = NewCeilingFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1002, GQLParserRULE_ceilingFunction) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4352) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserCEIL || _la == GQLParserCEILING) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4353) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4354) + p.numericValueExpression(0) + } + { + p.SetState(4355) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// ICharacterStringValueExpressionContext is an interface to support dynamic dispatch. +type ICharacterStringValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsCharacterStringValueExpressionContext differentiates from other interfaces. + IsCharacterStringValueExpressionContext() +} + +type CharacterStringValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCharacterStringValueExpressionContext() *CharacterStringValueExpressionContext { + var p = new(CharacterStringValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringValueExpression + return p +} + +func InitEmptyCharacterStringValueExpressionContext(p *CharacterStringValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringValueExpression +} + +func (*CharacterStringValueExpressionContext) IsCharacterStringValueExpressionContext() {} + +func NewCharacterStringValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharacterStringValueExpressionContext { + var p = new(CharacterStringValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_characterStringValueExpression + + return p +} + +func (s *CharacterStringValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *CharacterStringValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *CharacterStringValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CharacterStringValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CharacterStringValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCharacterStringValueExpression(s) + } +} + +func (s *CharacterStringValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCharacterStringValueExpression(s) + } +} + +func (p *GQLParser) CharacterStringValueExpression() (localctx ICharacterStringValueExpressionContext) { + localctx = NewCharacterStringValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1004, GQLParserRULE_characterStringValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4357) + p.valueExpression(0) + } + +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 +} + +// IByteStringValueExpressionContext is an interface to support dynamic dispatch. +type IByteStringValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsByteStringValueExpressionContext differentiates from other interfaces. + IsByteStringValueExpressionContext() +} + +type ByteStringValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyByteStringValueExpressionContext() *ByteStringValueExpressionContext { + var p = new(ByteStringValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteStringValueExpression + return p +} + +func InitEmptyByteStringValueExpressionContext(p *ByteStringValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_byteStringValueExpression +} + +func (*ByteStringValueExpressionContext) IsByteStringValueExpressionContext() {} + +func NewByteStringValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ByteStringValueExpressionContext { + var p = new(ByteStringValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_byteStringValueExpression + + return p +} + +func (s *ByteStringValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *ByteStringValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *ByteStringValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ByteStringValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ByteStringValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterByteStringValueExpression(s) + } +} + +func (s *ByteStringValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitByteStringValueExpression(s) + } +} + +func (p *GQLParser) ByteStringValueExpression() (localctx IByteStringValueExpressionContext) { + localctx = NewByteStringValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1006, GQLParserRULE_byteStringValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4359) + p.valueExpression(0) + } + +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 +} + +// ITrimOperandsContext is an interface to support dynamic dispatch. +type ITrimOperandsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TrimCharacterOrByteStringSource() ITrimCharacterOrByteStringSourceContext + FROM() antlr.TerminalNode + TrimSpecification() ITrimSpecificationContext + TrimCharacterOrByteString() ITrimCharacterOrByteStringContext + + // IsTrimOperandsContext differentiates from other interfaces. + IsTrimOperandsContext() +} + +type TrimOperandsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimOperandsContext() *TrimOperandsContext { + var p = new(TrimOperandsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimOperands + return p +} + +func InitEmptyTrimOperandsContext(p *TrimOperandsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimOperands +} + +func (*TrimOperandsContext) IsTrimOperandsContext() {} + +func NewTrimOperandsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimOperandsContext { + var p = new(TrimOperandsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimOperands + + return p +} + +func (s *TrimOperandsContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimOperandsContext) TrimCharacterOrByteStringSource() ITrimCharacterOrByteStringSourceContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimCharacterOrByteStringSourceContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimCharacterOrByteStringSourceContext) +} + +func (s *TrimOperandsContext) FROM() antlr.TerminalNode { + return s.GetToken(GQLParserFROM, 0) +} + +func (s *TrimOperandsContext) TrimSpecification() ITrimSpecificationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimSpecificationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimSpecificationContext) +} + +func (s *TrimOperandsContext) TrimCharacterOrByteString() ITrimCharacterOrByteStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrimCharacterOrByteStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITrimCharacterOrByteStringContext) +} + +func (s *TrimOperandsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimOperandsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimOperandsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimOperands(s) + } +} + +func (s *TrimOperandsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimOperands(s) + } +} + +func (p *GQLParser) TrimOperands() (localctx ITrimOperandsContext) { + localctx = NewTrimOperandsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1008, GQLParserRULE_trimOperands) + var _la int + + p.EnterOuterAlt(localctx, 1) + p.SetState(4368) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 480, p.GetParserRuleContext()) == 1 { + p.SetState(4362) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserBOTH || _la == GQLParserLEADING || _la == GQLParserTRAILING { + { + p.SetState(4361) + p.TrimSpecification() + } + + } + p.SetState(4365) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&8762849302180528028) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&34464073969) != 0) || ((int64((_la-129)) & ^0x3f) == 0 && ((int64(1)<<(_la-129))&-8011702113698201677) != 0) || ((int64((_la-193)) & ^0x3f) == 0 && ((int64(1)<<(_la-193))&26393111092643) != 0) || ((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&844424930131967) != 0) || ((int64((_la-368)) & ^0x3f) == 0 && ((int64(1)<<(_la-368))&151) != 0) { + { + p.SetState(4364) + p.TrimCharacterOrByteString() + } + + } + { + p.SetState(4367) + p.Match(GQLParserFROM) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + goto errorExit + } + { + p.SetState(4370) + p.TrimCharacterOrByteStringSource() + } + +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 +} + +// ITrimCharacterOrByteStringSourceContext is an interface to support dynamic dispatch. +type ITrimCharacterOrByteStringSourceContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsTrimCharacterOrByteStringSourceContext differentiates from other interfaces. + IsTrimCharacterOrByteStringSourceContext() +} + +type TrimCharacterOrByteStringSourceContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimCharacterOrByteStringSourceContext() *TrimCharacterOrByteStringSourceContext { + var p = new(TrimCharacterOrByteStringSourceContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimCharacterOrByteStringSource + return p +} + +func InitEmptyTrimCharacterOrByteStringSourceContext(p *TrimCharacterOrByteStringSourceContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimCharacterOrByteStringSource +} + +func (*TrimCharacterOrByteStringSourceContext) IsTrimCharacterOrByteStringSourceContext() {} + +func NewTrimCharacterOrByteStringSourceContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimCharacterOrByteStringSourceContext { + var p = new(TrimCharacterOrByteStringSourceContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimCharacterOrByteStringSource + + return p +} + +func (s *TrimCharacterOrByteStringSourceContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimCharacterOrByteStringSourceContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *TrimCharacterOrByteStringSourceContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimCharacterOrByteStringSourceContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimCharacterOrByteStringSourceContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimCharacterOrByteStringSource(s) + } +} + +func (s *TrimCharacterOrByteStringSourceContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimCharacterOrByteStringSource(s) + } +} + +func (p *GQLParser) TrimCharacterOrByteStringSource() (localctx ITrimCharacterOrByteStringSourceContext) { + localctx = NewTrimCharacterOrByteStringSourceContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1010, GQLParserRULE_trimCharacterOrByteStringSource) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4372) + p.valueExpression(0) + } + +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 +} + +// ITrimSpecificationContext is an interface to support dynamic dispatch. +type ITrimSpecificationContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LEADING() antlr.TerminalNode + TRAILING() antlr.TerminalNode + BOTH() antlr.TerminalNode + + // IsTrimSpecificationContext differentiates from other interfaces. + IsTrimSpecificationContext() +} + +type TrimSpecificationContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimSpecificationContext() *TrimSpecificationContext { + var p = new(TrimSpecificationContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimSpecification + return p +} + +func InitEmptyTrimSpecificationContext(p *TrimSpecificationContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimSpecification +} + +func (*TrimSpecificationContext) IsTrimSpecificationContext() {} + +func NewTrimSpecificationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimSpecificationContext { + var p = new(TrimSpecificationContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimSpecification + + return p +} + +func (s *TrimSpecificationContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimSpecificationContext) LEADING() antlr.TerminalNode { + return s.GetToken(GQLParserLEADING, 0) +} + +func (s *TrimSpecificationContext) TRAILING() antlr.TerminalNode { + return s.GetToken(GQLParserTRAILING, 0) +} + +func (s *TrimSpecificationContext) BOTH() antlr.TerminalNode { + return s.GetToken(GQLParserBOTH, 0) +} + +func (s *TrimSpecificationContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimSpecificationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimSpecificationContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimSpecification(s) + } +} + +func (s *TrimSpecificationContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimSpecification(s) + } +} + +func (p *GQLParser) TrimSpecification() (localctx ITrimSpecificationContext) { + localctx = NewTrimSpecificationContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1012, GQLParserRULE_trimSpecification) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4374) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserBOTH || _la == GQLParserLEADING || _la == GQLParserTRAILING) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// ITrimCharacterOrByteStringContext is an interface to support dynamic dispatch. +type ITrimCharacterOrByteStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsTrimCharacterOrByteStringContext differentiates from other interfaces. + IsTrimCharacterOrByteStringContext() +} + +type TrimCharacterOrByteStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrimCharacterOrByteStringContext() *TrimCharacterOrByteStringContext { + var p = new(TrimCharacterOrByteStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimCharacterOrByteString + return p +} + +func InitEmptyTrimCharacterOrByteStringContext(p *TrimCharacterOrByteStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_trimCharacterOrByteString +} + +func (*TrimCharacterOrByteStringContext) IsTrimCharacterOrByteStringContext() {} + +func NewTrimCharacterOrByteStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TrimCharacterOrByteStringContext { + var p = new(TrimCharacterOrByteStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_trimCharacterOrByteString + + return p +} + +func (s *TrimCharacterOrByteStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *TrimCharacterOrByteStringContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *TrimCharacterOrByteStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TrimCharacterOrByteStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TrimCharacterOrByteStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTrimCharacterOrByteString(s) + } +} + +func (s *TrimCharacterOrByteStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTrimCharacterOrByteString(s) + } +} + +func (p *GQLParser) TrimCharacterOrByteString() (localctx ITrimCharacterOrByteStringContext) { + localctx = NewTrimCharacterOrByteStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1014, GQLParserRULE_trimCharacterOrByteString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4376) + p.valueExpression(0) + } + +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 +} + +// INormalFormContext is an interface to support dynamic dispatch. +type INormalFormContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NFC() antlr.TerminalNode + NFD() antlr.TerminalNode + NFKC() antlr.TerminalNode + NFKD() antlr.TerminalNode + + // IsNormalFormContext differentiates from other interfaces. + IsNormalFormContext() +} + +type NormalFormContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNormalFormContext() *NormalFormContext { + var p = new(NormalFormContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalForm + return p +} + +func InitEmptyNormalFormContext(p *NormalFormContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_normalForm +} + +func (*NormalFormContext) IsNormalFormContext() {} + +func NewNormalFormContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NormalFormContext { + var p = new(NormalFormContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_normalForm + + return p +} + +func (s *NormalFormContext) GetParser() antlr.Parser { return s.parser } + +func (s *NormalFormContext) NFC() antlr.TerminalNode { + return s.GetToken(GQLParserNFC, 0) +} + +func (s *NormalFormContext) NFD() antlr.TerminalNode { + return s.GetToken(GQLParserNFD, 0) +} + +func (s *NormalFormContext) NFKC() antlr.TerminalNode { + return s.GetToken(GQLParserNFKC, 0) +} + +func (s *NormalFormContext) NFKD() antlr.TerminalNode { + return s.GetToken(GQLParserNFKD, 0) +} + +func (s *NormalFormContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NormalFormContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NormalFormContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNormalForm(s) + } +} + +func (s *NormalFormContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNormalForm(s) + } +} + +func (p *GQLParser) NormalForm() (localctx INormalFormContext) { + localctx = NewNormalFormContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1016, GQLParserRULE_normalForm) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4378) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-296)) & ^0x3f) == 0 && ((int64(1)<<(_la-296))&15) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IStringLengthContext is an interface to support dynamic dispatch. +type IStringLengthContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NumericValueExpression() INumericValueExpressionContext + + // IsStringLengthContext differentiates from other interfaces. + IsStringLengthContext() +} + +type StringLengthContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyStringLengthContext() *StringLengthContext { + var p = new(StringLengthContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_stringLength + return p +} + +func InitEmptyStringLengthContext(p *StringLengthContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_stringLength +} + +func (*StringLengthContext) IsStringLengthContext() {} + +func NewStringLengthContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *StringLengthContext { + var p = new(StringLengthContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_stringLength + + return p +} + +func (s *StringLengthContext) GetParser() antlr.Parser { return s.parser } + +func (s *StringLengthContext) NumericValueExpression() INumericValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INumericValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INumericValueExpressionContext) +} + +func (s *StringLengthContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *StringLengthContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *StringLengthContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterStringLength(s) + } +} + +func (s *StringLengthContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitStringLength(s) + } +} + +func (p *GQLParser) StringLength() (localctx IStringLengthContext) { + localctx = NewStringLengthContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1018, GQLParserRULE_stringLength) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4380) + p.numericValueExpression(0) + } + +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 +} + +// IDatetimeValueExpressionContext is an interface to support dynamic dispatch. +type IDatetimeValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsDatetimeValueExpressionContext differentiates from other interfaces. + IsDatetimeValueExpressionContext() +} + +type DatetimeValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeValueExpressionContext() *DatetimeValueExpressionContext { + var p = new(DatetimeValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression + return p +} + +func InitEmptyDatetimeValueExpressionContext(p *DatetimeValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression +} + +func (*DatetimeValueExpressionContext) IsDatetimeValueExpressionContext() {} + +func NewDatetimeValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeValueExpressionContext { + var p = new(DatetimeValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeValueExpression + + return p +} + +func (s *DatetimeValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *DatetimeValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeValueExpression(s) + } +} + +func (s *DatetimeValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeValueExpression(s) + } +} + +func (p *GQLParser) DatetimeValueExpression() (localctx IDatetimeValueExpressionContext) { + localctx = NewDatetimeValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1020, GQLParserRULE_datetimeValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4382) + p.valueExpression(0) + } + +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 +} + +// IDatetimeValueFunctionContext is an interface to support dynamic dispatch. +type IDatetimeValueFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DateFunction() IDateFunctionContext + TimeFunction() ITimeFunctionContext + DatetimeFunction() IDatetimeFunctionContext + LocaltimeFunction() ILocaltimeFunctionContext + LocaldatetimeFunction() ILocaldatetimeFunctionContext + + // IsDatetimeValueFunctionContext differentiates from other interfaces. + IsDatetimeValueFunctionContext() +} + +type DatetimeValueFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeValueFunctionContext() *DatetimeValueFunctionContext { + var p = new(DatetimeValueFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueFunction + return p +} + +func InitEmptyDatetimeValueFunctionContext(p *DatetimeValueFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueFunction +} + +func (*DatetimeValueFunctionContext) IsDatetimeValueFunctionContext() {} + +func NewDatetimeValueFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeValueFunctionContext { + var p = new(DatetimeValueFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeValueFunction + + return p +} + +func (s *DatetimeValueFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeValueFunctionContext) DateFunction() IDateFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateFunctionContext) +} + +func (s *DatetimeValueFunctionContext) TimeFunction() ITimeFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeFunctionContext) +} + +func (s *DatetimeValueFunctionContext) DatetimeFunction() IDatetimeFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeFunctionContext) +} + +func (s *DatetimeValueFunctionContext) LocaltimeFunction() ILocaltimeFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocaltimeFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocaltimeFunctionContext) +} + +func (s *DatetimeValueFunctionContext) LocaldatetimeFunction() ILocaldatetimeFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILocaldatetimeFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ILocaldatetimeFunctionContext) +} + +func (s *DatetimeValueFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeValueFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeValueFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeValueFunction(s) + } +} + +func (s *DatetimeValueFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeValueFunction(s) + } +} + +func (p *GQLParser) DatetimeValueFunction() (localctx IDatetimeValueFunctionContext) { + localctx = NewDatetimeValueFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1022, GQLParserRULE_datetimeValueFunction) + p.SetState(4389) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_DATE, GQLParserDATE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4384) + p.DateFunction() + } + + case GQLParserCURRENT_TIME, GQLParserZONED_TIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4385) + p.TimeFunction() + } + + case GQLParserCURRENT_TIMESTAMP, GQLParserZONED_DATETIME: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4386) + p.DatetimeFunction() + } + + case GQLParserLOCAL_TIME: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(4387) + p.LocaltimeFunction() + } + + case GQLParserLOCAL_DATETIME, GQLParserLOCAL_TIMESTAMP: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(4388) + p.LocaldatetimeFunction() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDateFunctionContext is an interface to support dynamic dispatch. +type IDateFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CURRENT_DATE() antlr.TerminalNode + DATE() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + DateFunctionParameters() IDateFunctionParametersContext + + // IsDateFunctionContext differentiates from other interfaces. + IsDateFunctionContext() +} + +type DateFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDateFunctionContext() *DateFunctionContext { + var p = new(DateFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateFunction + return p +} + +func InitEmptyDateFunctionContext(p *DateFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateFunction +} + +func (*DateFunctionContext) IsDateFunctionContext() {} + +func NewDateFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DateFunctionContext { + var p = new(DateFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dateFunction + + return p +} + +func (s *DateFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DateFunctionContext) CURRENT_DATE() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_DATE, 0) +} + +func (s *DateFunctionContext) DATE() antlr.TerminalNode { + return s.GetToken(GQLParserDATE, 0) +} + +func (s *DateFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DateFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DateFunctionContext) DateFunctionParameters() IDateFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateFunctionParametersContext) +} + +func (s *DateFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DateFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DateFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDateFunction(s) + } +} + +func (s *DateFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDateFunction(s) + } +} + +func (p *GQLParser) DateFunction() (localctx IDateFunctionContext) { + localctx = NewDateFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1024, GQLParserRULE_dateFunction) + var _la int + + p.SetState(4398) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_DATE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4391) + p.Match(GQLParserCURRENT_DATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserDATE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4392) + p.Match(GQLParserDATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4393) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4395) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserRECORD || _la == GQLParserLEFT_BRACE { + { + p.SetState(4394) + p.DateFunctionParameters() + } + + } + { + p.SetState(4397) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITimeFunctionContext is an interface to support dynamic dispatch. +type ITimeFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CURRENT_TIME() antlr.TerminalNode + ZONED_TIME() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + TimeFunctionParameters() ITimeFunctionParametersContext + + // IsTimeFunctionContext differentiates from other interfaces. + IsTimeFunctionContext() +} + +type TimeFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeFunctionContext() *TimeFunctionContext { + var p = new(TimeFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeFunction + return p +} + +func InitEmptyTimeFunctionContext(p *TimeFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeFunction +} + +func (*TimeFunctionContext) IsTimeFunctionContext() {} + +func NewTimeFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeFunctionContext { + var p = new(TimeFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeFunction + + return p +} + +func (s *TimeFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeFunctionContext) CURRENT_TIME() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_TIME, 0) +} + +func (s *TimeFunctionContext) ZONED_TIME() antlr.TerminalNode { + return s.GetToken(GQLParserZONED_TIME, 0) +} + +func (s *TimeFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *TimeFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *TimeFunctionContext) TimeFunctionParameters() ITimeFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeFunctionParametersContext) +} + +func (s *TimeFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeFunction(s) + } +} + +func (s *TimeFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeFunction(s) + } +} + +func (p *GQLParser) TimeFunction() (localctx ITimeFunctionContext) { + localctx = NewTimeFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1026, GQLParserRULE_timeFunction) + var _la int + + p.SetState(4407) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_TIME: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4400) + p.Match(GQLParserCURRENT_TIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserZONED_TIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4401) + p.Match(GQLParserZONED_TIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4402) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4404) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserRECORD || _la == GQLParserLEFT_BRACE { + { + p.SetState(4403) + p.TimeFunctionParameters() + } + + } + { + p.SetState(4406) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILocaltimeFunctionContext is an interface to support dynamic dispatch. +type ILocaltimeFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOCAL_TIME() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + TimeFunctionParameters() ITimeFunctionParametersContext + + // IsLocaltimeFunctionContext differentiates from other interfaces. + IsLocaltimeFunctionContext() +} + +type LocaltimeFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLocaltimeFunctionContext() *LocaltimeFunctionContext { + var p = new(LocaltimeFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localtimeFunction + return p +} + +func InitEmptyLocaltimeFunctionContext(p *LocaltimeFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localtimeFunction +} + +func (*LocaltimeFunctionContext) IsLocaltimeFunctionContext() {} + +func NewLocaltimeFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LocaltimeFunctionContext { + var p = new(LocaltimeFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_localtimeFunction + + return p +} + +func (s *LocaltimeFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LocaltimeFunctionContext) LOCAL_TIME() antlr.TerminalNode { + return s.GetToken(GQLParserLOCAL_TIME, 0) +} + +func (s *LocaltimeFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *LocaltimeFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *LocaltimeFunctionContext) TimeFunctionParameters() ITimeFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeFunctionParametersContext) +} + +func (s *LocaltimeFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LocaltimeFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LocaltimeFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLocaltimeFunction(s) + } +} + +func (s *LocaltimeFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLocaltimeFunction(s) + } +} + +func (p *GQLParser) LocaltimeFunction() (localctx ILocaltimeFunctionContext) { + localctx = NewLocaltimeFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1028, GQLParserRULE_localtimeFunction) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4409) + p.Match(GQLParserLOCAL_TIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4415) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 487, p.GetParserRuleContext()) == 1 { + { + p.SetState(4410) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4412) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserRECORD || _la == GQLParserLEFT_BRACE { + { + p.SetState(4411) + p.TimeFunctionParameters() + } + + } + { + p.SetState(4414) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + } else if p.HasError() { // JIM + 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 +} + +// IDatetimeFunctionContext is an interface to support dynamic dispatch. +type IDatetimeFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CURRENT_TIMESTAMP() antlr.TerminalNode + ZONED_DATETIME() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + DatetimeFunctionParameters() IDatetimeFunctionParametersContext + + // IsDatetimeFunctionContext differentiates from other interfaces. + IsDatetimeFunctionContext() +} + +type DatetimeFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeFunctionContext() *DatetimeFunctionContext { + var p = new(DatetimeFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeFunction + return p +} + +func InitEmptyDatetimeFunctionContext(p *DatetimeFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeFunction +} + +func (*DatetimeFunctionContext) IsDatetimeFunctionContext() {} + +func NewDatetimeFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeFunctionContext { + var p = new(DatetimeFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeFunction + + return p +} + +func (s *DatetimeFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeFunctionContext) CURRENT_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(GQLParserCURRENT_TIMESTAMP, 0) +} + +func (s *DatetimeFunctionContext) ZONED_DATETIME() antlr.TerminalNode { + return s.GetToken(GQLParserZONED_DATETIME, 0) +} + +func (s *DatetimeFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DatetimeFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DatetimeFunctionContext) DatetimeFunctionParameters() IDatetimeFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeFunctionParametersContext) +} + +func (s *DatetimeFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeFunction(s) + } +} + +func (s *DatetimeFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeFunction(s) + } +} + +func (p *GQLParser) DatetimeFunction() (localctx IDatetimeFunctionContext) { + localctx = NewDatetimeFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1030, GQLParserRULE_datetimeFunction) + var _la int + + p.SetState(4424) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserCURRENT_TIMESTAMP: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4417) + p.Match(GQLParserCURRENT_TIMESTAMP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserZONED_DATETIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4418) + p.Match(GQLParserZONED_DATETIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4419) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4421) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserRECORD || _la == GQLParserLEFT_BRACE { + { + p.SetState(4420) + p.DatetimeFunctionParameters() + } + + } + { + p.SetState(4423) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ILocaldatetimeFunctionContext is an interface to support dynamic dispatch. +type ILocaldatetimeFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + LOCAL_TIMESTAMP() antlr.TerminalNode + LOCAL_DATETIME() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + RIGHT_PAREN() antlr.TerminalNode + DatetimeFunctionParameters() IDatetimeFunctionParametersContext + + // IsLocaldatetimeFunctionContext differentiates from other interfaces. + IsLocaldatetimeFunctionContext() +} + +type LocaldatetimeFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLocaldatetimeFunctionContext() *LocaldatetimeFunctionContext { + var p = new(LocaldatetimeFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localdatetimeFunction + return p +} + +func InitEmptyLocaldatetimeFunctionContext(p *LocaldatetimeFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_localdatetimeFunction +} + +func (*LocaldatetimeFunctionContext) IsLocaldatetimeFunctionContext() {} + +func NewLocaldatetimeFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LocaldatetimeFunctionContext { + var p = new(LocaldatetimeFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_localdatetimeFunction + + return p +} + +func (s *LocaldatetimeFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *LocaldatetimeFunctionContext) LOCAL_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(GQLParserLOCAL_TIMESTAMP, 0) +} + +func (s *LocaldatetimeFunctionContext) LOCAL_DATETIME() antlr.TerminalNode { + return s.GetToken(GQLParserLOCAL_DATETIME, 0) +} + +func (s *LocaldatetimeFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *LocaldatetimeFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *LocaldatetimeFunctionContext) DatetimeFunctionParameters() IDatetimeFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeFunctionParametersContext) +} + +func (s *LocaldatetimeFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LocaldatetimeFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LocaldatetimeFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLocaldatetimeFunction(s) + } +} + +func (s *LocaldatetimeFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLocaldatetimeFunction(s) + } +} + +func (p *GQLParser) LocaldatetimeFunction() (localctx ILocaldatetimeFunctionContext) { + localctx = NewLocaldatetimeFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1032, GQLParserRULE_localdatetimeFunction) + var _la int + + p.SetState(4433) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserLOCAL_TIMESTAMP: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4426) + p.Match(GQLParserLOCAL_TIMESTAMP) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserLOCAL_DATETIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4427) + p.Match(GQLParserLOCAL_DATETIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4428) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4430) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + _la = p.GetTokenStream().LA(1) + + if _la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserRECORD || _la == GQLParserLEFT_BRACE { + { + p.SetState(4429) + p.DatetimeFunctionParameters() + } + + } + { + p.SetState(4432) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDateFunctionParametersContext is an interface to support dynamic dispatch. +type IDateFunctionParametersContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DateString() IDateStringContext + RecordConstructor() IRecordConstructorContext + + // IsDateFunctionParametersContext differentiates from other interfaces. + IsDateFunctionParametersContext() +} + +type DateFunctionParametersContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDateFunctionParametersContext() *DateFunctionParametersContext { + var p = new(DateFunctionParametersContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateFunctionParameters + return p +} + +func InitEmptyDateFunctionParametersContext(p *DateFunctionParametersContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateFunctionParameters +} + +func (*DateFunctionParametersContext) IsDateFunctionParametersContext() {} + +func NewDateFunctionParametersContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DateFunctionParametersContext { + var p = new(DateFunctionParametersContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dateFunctionParameters + + return p +} + +func (s *DateFunctionParametersContext) GetParser() antlr.Parser { return s.parser } + +func (s *DateFunctionParametersContext) DateString() IDateStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateStringContext) +} + +func (s *DateFunctionParametersContext) RecordConstructor() IRecordConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordConstructorContext) +} + +func (s *DateFunctionParametersContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DateFunctionParametersContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DateFunctionParametersContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDateFunctionParameters(s) + } +} + +func (s *DateFunctionParametersContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDateFunctionParameters(s) + } +} + +func (p *GQLParser) DateFunctionParameters() (localctx IDateFunctionParametersContext) { + localctx = NewDateFunctionParametersContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1034, GQLParserRULE_dateFunctionParameters) + p.SetState(4437) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4435) + p.DateString() + } + + case GQLParserRECORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4436) + p.RecordConstructor() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITimeFunctionParametersContext is an interface to support dynamic dispatch. +type ITimeFunctionParametersContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TimeString() ITimeStringContext + RecordConstructor() IRecordConstructorContext + + // IsTimeFunctionParametersContext differentiates from other interfaces. + IsTimeFunctionParametersContext() +} + +type TimeFunctionParametersContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeFunctionParametersContext() *TimeFunctionParametersContext { + var p = new(TimeFunctionParametersContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeFunctionParameters + return p +} + +func InitEmptyTimeFunctionParametersContext(p *TimeFunctionParametersContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeFunctionParameters +} + +func (*TimeFunctionParametersContext) IsTimeFunctionParametersContext() {} + +func NewTimeFunctionParametersContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeFunctionParametersContext { + var p = new(TimeFunctionParametersContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeFunctionParameters + + return p +} + +func (s *TimeFunctionParametersContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeFunctionParametersContext) TimeString() ITimeStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeStringContext) +} + +func (s *TimeFunctionParametersContext) RecordConstructor() IRecordConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordConstructorContext) +} + +func (s *TimeFunctionParametersContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeFunctionParametersContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeFunctionParametersContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeFunctionParameters(s) + } +} + +func (s *TimeFunctionParametersContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeFunctionParameters(s) + } +} + +func (p *GQLParser) TimeFunctionParameters() (localctx ITimeFunctionParametersContext) { + localctx = NewTimeFunctionParametersContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1036, GQLParserRULE_timeFunctionParameters) + p.SetState(4441) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4439) + p.TimeString() + } + + case GQLParserRECORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4440) + p.RecordConstructor() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDatetimeFunctionParametersContext is an interface to support dynamic dispatch. +type IDatetimeFunctionParametersContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeString() IDatetimeStringContext + RecordConstructor() IRecordConstructorContext + + // IsDatetimeFunctionParametersContext differentiates from other interfaces. + IsDatetimeFunctionParametersContext() +} + +type DatetimeFunctionParametersContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeFunctionParametersContext() *DatetimeFunctionParametersContext { + var p = new(DatetimeFunctionParametersContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeFunctionParameters + return p +} + +func InitEmptyDatetimeFunctionParametersContext(p *DatetimeFunctionParametersContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeFunctionParameters +} + +func (*DatetimeFunctionParametersContext) IsDatetimeFunctionParametersContext() {} + +func NewDatetimeFunctionParametersContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeFunctionParametersContext { + var p = new(DatetimeFunctionParametersContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeFunctionParameters + + return p +} + +func (s *DatetimeFunctionParametersContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeFunctionParametersContext) DatetimeString() IDatetimeStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeStringContext) +} + +func (s *DatetimeFunctionParametersContext) RecordConstructor() IRecordConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordConstructorContext) +} + +func (s *DatetimeFunctionParametersContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeFunctionParametersContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeFunctionParametersContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeFunctionParameters(s) + } +} + +func (s *DatetimeFunctionParametersContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeFunctionParameters(s) + } +} + +func (p *GQLParser) DatetimeFunctionParameters() (localctx IDatetimeFunctionParametersContext) { + localctx = NewDatetimeFunctionParametersContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1038, GQLParserRULE_datetimeFunctionParameters) + p.SetState(4445) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4443) + p.DatetimeString() + } + + case GQLParserRECORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4444) + p.RecordConstructor() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDurationValueExpressionContext is an interface to support dynamic dispatch. +type IDurationValueExpressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ValueExpression() IValueExpressionContext + + // IsDurationValueExpressionContext differentiates from other interfaces. + IsDurationValueExpressionContext() +} + +type DurationValueExpressionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationValueExpressionContext() *DurationValueExpressionContext { + var p = new(DurationValueExpressionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationValueExpression + return p +} + +func InitEmptyDurationValueExpressionContext(p *DurationValueExpressionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationValueExpression +} + +func (*DurationValueExpressionContext) IsDurationValueExpressionContext() {} + +func NewDurationValueExpressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationValueExpressionContext { + var p = new(DurationValueExpressionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationValueExpression + + return p +} + +func (s *DurationValueExpressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationValueExpressionContext) ValueExpression() IValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IValueExpressionContext) +} + +func (s *DurationValueExpressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationValueExpressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationValueExpressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationValueExpression(s) + } +} + +func (s *DurationValueExpressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationValueExpression(s) + } +} + +func (p *GQLParser) DurationValueExpression() (localctx IDurationValueExpressionContext) { + localctx = NewDurationValueExpressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1040, GQLParserRULE_durationValueExpression) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4447) + p.valueExpression(0) + } + +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 +} + +// IDatetimeSubtractionContext is an interface to support dynamic dispatch. +type IDatetimeSubtractionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DURATION_BETWEEN() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + DatetimeSubtractionParameters() IDatetimeSubtractionParametersContext + RIGHT_PAREN() antlr.TerminalNode + TemporalDurationQualifier() ITemporalDurationQualifierContext + + // IsDatetimeSubtractionContext differentiates from other interfaces. + IsDatetimeSubtractionContext() +} + +type DatetimeSubtractionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeSubtractionContext() *DatetimeSubtractionContext { + var p = new(DatetimeSubtractionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeSubtraction + return p +} + +func InitEmptyDatetimeSubtractionContext(p *DatetimeSubtractionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeSubtraction +} + +func (*DatetimeSubtractionContext) IsDatetimeSubtractionContext() {} + +func NewDatetimeSubtractionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeSubtractionContext { + var p = new(DatetimeSubtractionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeSubtraction + + return p +} + +func (s *DatetimeSubtractionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeSubtractionContext) DURATION_BETWEEN() antlr.TerminalNode { + return s.GetToken(GQLParserDURATION_BETWEEN, 0) +} + +func (s *DatetimeSubtractionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DatetimeSubtractionContext) DatetimeSubtractionParameters() IDatetimeSubtractionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeSubtractionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeSubtractionParametersContext) +} + +func (s *DatetimeSubtractionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DatetimeSubtractionContext) TemporalDurationQualifier() ITemporalDurationQualifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalDurationQualifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalDurationQualifierContext) +} + +func (s *DatetimeSubtractionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeSubtractionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeSubtractionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeSubtraction(s) + } +} + +func (s *DatetimeSubtractionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeSubtraction(s) + } +} + +func (p *GQLParser) DatetimeSubtraction() (localctx IDatetimeSubtractionContext) { + localctx = NewDatetimeSubtractionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1042, GQLParserRULE_datetimeSubtraction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4449) + p.Match(GQLParserDURATION_BETWEEN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4450) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4451) + p.DatetimeSubtractionParameters() + } + { + p.SetState(4452) + p.Match(GQLParserRIGHT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + p.SetState(4454) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 495, p.GetParserRuleContext()) == 1 { + { + p.SetState(4453) + p.TemporalDurationQualifier() + } + + } else if p.HasError() { // JIM + 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 +} + +// IDatetimeSubtractionParametersContext is an interface to support dynamic dispatch. +type IDatetimeSubtractionParametersContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeValueExpression1() IDatetimeValueExpression1Context + COMMA() antlr.TerminalNode + DatetimeValueExpression2() IDatetimeValueExpression2Context + + // IsDatetimeSubtractionParametersContext differentiates from other interfaces. + IsDatetimeSubtractionParametersContext() +} + +type DatetimeSubtractionParametersContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeSubtractionParametersContext() *DatetimeSubtractionParametersContext { + var p = new(DatetimeSubtractionParametersContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeSubtractionParameters + return p +} + +func InitEmptyDatetimeSubtractionParametersContext(p *DatetimeSubtractionParametersContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeSubtractionParameters +} + +func (*DatetimeSubtractionParametersContext) IsDatetimeSubtractionParametersContext() {} + +func NewDatetimeSubtractionParametersContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeSubtractionParametersContext { + var p = new(DatetimeSubtractionParametersContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeSubtractionParameters + + return p +} + +func (s *DatetimeSubtractionParametersContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeSubtractionParametersContext) DatetimeValueExpression1() IDatetimeValueExpression1Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeValueExpression1Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeValueExpression1Context) +} + +func (s *DatetimeSubtractionParametersContext) COMMA() antlr.TerminalNode { + return s.GetToken(GQLParserCOMMA, 0) +} + +func (s *DatetimeSubtractionParametersContext) DatetimeValueExpression2() IDatetimeValueExpression2Context { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeValueExpression2Context); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeValueExpression2Context) +} + +func (s *DatetimeSubtractionParametersContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeSubtractionParametersContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeSubtractionParametersContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeSubtractionParameters(s) + } +} + +func (s *DatetimeSubtractionParametersContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeSubtractionParameters(s) + } +} + +func (p *GQLParser) DatetimeSubtractionParameters() (localctx IDatetimeSubtractionParametersContext) { + localctx = NewDatetimeSubtractionParametersContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1044, GQLParserRULE_datetimeSubtractionParameters) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4456) + p.DatetimeValueExpression1() + } + { + p.SetState(4457) + p.Match(GQLParserCOMMA) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4458) + p.DatetimeValueExpression2() + } + +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 +} + +// IDatetimeValueExpression1Context is an interface to support dynamic dispatch. +type IDatetimeValueExpression1Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeValueExpression() IDatetimeValueExpressionContext + + // IsDatetimeValueExpression1Context differentiates from other interfaces. + IsDatetimeValueExpression1Context() +} + +type DatetimeValueExpression1Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeValueExpression1Context() *DatetimeValueExpression1Context { + var p = new(DatetimeValueExpression1Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression1 + return p +} + +func InitEmptyDatetimeValueExpression1Context(p *DatetimeValueExpression1Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression1 +} + +func (*DatetimeValueExpression1Context) IsDatetimeValueExpression1Context() {} + +func NewDatetimeValueExpression1Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeValueExpression1Context { + var p = new(DatetimeValueExpression1Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeValueExpression1 + + return p +} + +func (s *DatetimeValueExpression1Context) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeValueExpression1Context) DatetimeValueExpression() IDatetimeValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeValueExpressionContext) +} + +func (s *DatetimeValueExpression1Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeValueExpression1Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeValueExpression1Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeValueExpression1(s) + } +} + +func (s *DatetimeValueExpression1Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeValueExpression1(s) + } +} + +func (p *GQLParser) DatetimeValueExpression1() (localctx IDatetimeValueExpression1Context) { + localctx = NewDatetimeValueExpression1Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1046, GQLParserRULE_datetimeValueExpression1) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4460) + p.DatetimeValueExpression() + } + +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 +} + +// IDatetimeValueExpression2Context is an interface to support dynamic dispatch. +type IDatetimeValueExpression2Context interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeValueExpression() IDatetimeValueExpressionContext + + // IsDatetimeValueExpression2Context differentiates from other interfaces. + IsDatetimeValueExpression2Context() +} + +type DatetimeValueExpression2Context struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeValueExpression2Context() *DatetimeValueExpression2Context { + var p = new(DatetimeValueExpression2Context) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression2 + return p +} + +func InitEmptyDatetimeValueExpression2Context(p *DatetimeValueExpression2Context) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeValueExpression2 +} + +func (*DatetimeValueExpression2Context) IsDatetimeValueExpression2Context() {} + +func NewDatetimeValueExpression2Context(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeValueExpression2Context { + var p = new(DatetimeValueExpression2Context) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeValueExpression2 + + return p +} + +func (s *DatetimeValueExpression2Context) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeValueExpression2Context) DatetimeValueExpression() IDatetimeValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeValueExpressionContext) +} + +func (s *DatetimeValueExpression2Context) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeValueExpression2Context) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeValueExpression2Context) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeValueExpression2(s) + } +} + +func (s *DatetimeValueExpression2Context) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeValueExpression2(s) + } +} + +func (p *GQLParser) DatetimeValueExpression2() (localctx IDatetimeValueExpression2Context) { + localctx = NewDatetimeValueExpression2Context(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1048, GQLParserRULE_datetimeValueExpression2) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4462) + p.DatetimeValueExpression() + } + +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 +} + +// IDurationValueFunctionContext is an interface to support dynamic dispatch. +type IDurationValueFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DurationFunction() IDurationFunctionContext + AbsoluteValueExpression() IAbsoluteValueExpressionContext + + // IsDurationValueFunctionContext differentiates from other interfaces. + IsDurationValueFunctionContext() +} + +type DurationValueFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationValueFunctionContext() *DurationValueFunctionContext { + var p = new(DurationValueFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationValueFunction + return p +} + +func InitEmptyDurationValueFunctionContext(p *DurationValueFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationValueFunction +} + +func (*DurationValueFunctionContext) IsDurationValueFunctionContext() {} + +func NewDurationValueFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationValueFunctionContext { + var p = new(DurationValueFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationValueFunction + + return p +} + +func (s *DurationValueFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationValueFunctionContext) DurationFunction() IDurationFunctionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationFunctionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationFunctionContext) +} + +func (s *DurationValueFunctionContext) AbsoluteValueExpression() IAbsoluteValueExpressionContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAbsoluteValueExpressionContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IAbsoluteValueExpressionContext) +} + +func (s *DurationValueFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationValueFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationValueFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationValueFunction(s) + } +} + +func (s *DurationValueFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationValueFunction(s) + } +} + +func (p *GQLParser) DurationValueFunction() (localctx IDurationValueFunctionContext) { + localctx = NewDurationValueFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1050, GQLParserRULE_durationValueFunction) + p.SetState(4466) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDURATION: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4464) + p.DurationFunction() + } + + case GQLParserABS: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4465) + p.AbsoluteValueExpression() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDurationFunctionContext is an interface to support dynamic dispatch. +type IDurationFunctionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DURATION() antlr.TerminalNode + LEFT_PAREN() antlr.TerminalNode + DurationFunctionParameters() IDurationFunctionParametersContext + RIGHT_PAREN() antlr.TerminalNode + + // IsDurationFunctionContext differentiates from other interfaces. + IsDurationFunctionContext() +} + +type DurationFunctionContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationFunctionContext() *DurationFunctionContext { + var p = new(DurationFunctionContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationFunction + return p +} + +func InitEmptyDurationFunctionContext(p *DurationFunctionContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationFunction +} + +func (*DurationFunctionContext) IsDurationFunctionContext() {} + +func NewDurationFunctionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationFunctionContext { + var p = new(DurationFunctionContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationFunction + + return p +} + +func (s *DurationFunctionContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationFunctionContext) DURATION() antlr.TerminalNode { + return s.GetToken(GQLParserDURATION, 0) +} + +func (s *DurationFunctionContext) LEFT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserLEFT_PAREN, 0) +} + +func (s *DurationFunctionContext) DurationFunctionParameters() IDurationFunctionParametersContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationFunctionParametersContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationFunctionParametersContext) +} + +func (s *DurationFunctionContext) RIGHT_PAREN() antlr.TerminalNode { + return s.GetToken(GQLParserRIGHT_PAREN, 0) +} + +func (s *DurationFunctionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationFunctionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationFunctionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationFunction(s) + } +} + +func (s *DurationFunctionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationFunction(s) + } +} + +func (p *GQLParser) DurationFunction() (localctx IDurationFunctionContext) { + localctx = NewDurationFunctionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1052, GQLParserRULE_durationFunction) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4468) + p.Match(GQLParserDURATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4469) + p.Match(GQLParserLEFT_PAREN) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4470) + p.DurationFunctionParameters() + } + { + p.SetState(4471) + p.Match(GQLParserRIGHT_PAREN) + 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 +} + +// IDurationFunctionParametersContext is an interface to support dynamic dispatch. +type IDurationFunctionParametersContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DurationString() IDurationStringContext + RecordConstructor() IRecordConstructorContext + + // IsDurationFunctionParametersContext differentiates from other interfaces. + IsDurationFunctionParametersContext() +} + +type DurationFunctionParametersContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationFunctionParametersContext() *DurationFunctionParametersContext { + var p = new(DurationFunctionParametersContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationFunctionParameters + return p +} + +func InitEmptyDurationFunctionParametersContext(p *DurationFunctionParametersContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationFunctionParameters +} + +func (*DurationFunctionParametersContext) IsDurationFunctionParametersContext() {} + +func NewDurationFunctionParametersContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationFunctionParametersContext { + var p = new(DurationFunctionParametersContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationFunctionParameters + + return p +} + +func (s *DurationFunctionParametersContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationFunctionParametersContext) DurationString() IDurationStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationStringContext) +} + +func (s *DurationFunctionParametersContext) RecordConstructor() IRecordConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordConstructorContext) +} + +func (s *DurationFunctionParametersContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationFunctionParametersContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationFunctionParametersContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationFunctionParameters(s) + } +} + +func (s *DurationFunctionParametersContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationFunctionParameters(s) + } +} + +func (p *GQLParser) DurationFunctionParameters() (localctx IDurationFunctionParametersContext) { + localctx = NewDurationFunctionParametersContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1054, GQLParserRULE_durationFunctionParameters) + p.SetState(4475) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4473) + p.DurationString() + } + + case GQLParserRECORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4474) + p.RecordConstructor() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IObjectNameContext is an interface to support dynamic dispatch. +type IObjectNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsObjectNameContext differentiates from other interfaces. + IsObjectNameContext() +} + +type ObjectNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyObjectNameContext() *ObjectNameContext { + var p = new(ObjectNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectName + return p +} + +func InitEmptyObjectNameContext(p *ObjectNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectName +} + +func (*ObjectNameContext) IsObjectNameContext() {} + +func NewObjectNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ObjectNameContext { + var p = new(ObjectNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_objectName + + return p +} + +func (s *ObjectNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *ObjectNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *ObjectNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ObjectNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ObjectNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterObjectName(s) + } +} + +func (s *ObjectNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitObjectName(s) + } +} + +func (p *GQLParser) ObjectName() (localctx IObjectNameContext) { + localctx = NewObjectNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1056, GQLParserRULE_objectName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4477) + p.Identifier() + } + +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 +} + +// IObjectNameOrBindingVariableContext is an interface to support dynamic dispatch. +type IObjectNameOrBindingVariableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsObjectNameOrBindingVariableContext differentiates from other interfaces. + IsObjectNameOrBindingVariableContext() +} + +type ObjectNameOrBindingVariableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyObjectNameOrBindingVariableContext() *ObjectNameOrBindingVariableContext { + var p = new(ObjectNameOrBindingVariableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectNameOrBindingVariable + return p +} + +func InitEmptyObjectNameOrBindingVariableContext(p *ObjectNameOrBindingVariableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_objectNameOrBindingVariable +} + +func (*ObjectNameOrBindingVariableContext) IsObjectNameOrBindingVariableContext() {} + +func NewObjectNameOrBindingVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ObjectNameOrBindingVariableContext { + var p = new(ObjectNameOrBindingVariableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_objectNameOrBindingVariable + + return p +} + +func (s *ObjectNameOrBindingVariableContext) GetParser() antlr.Parser { return s.parser } + +func (s *ObjectNameOrBindingVariableContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *ObjectNameOrBindingVariableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ObjectNameOrBindingVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ObjectNameOrBindingVariableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterObjectNameOrBindingVariable(s) + } +} + +func (s *ObjectNameOrBindingVariableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitObjectNameOrBindingVariable(s) + } +} + +func (p *GQLParser) ObjectNameOrBindingVariable() (localctx IObjectNameOrBindingVariableContext) { + localctx = NewObjectNameOrBindingVariableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1058, GQLParserRULE_objectNameOrBindingVariable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4479) + p.RegularIdentifier() + } + +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 +} + +// IDirectoryNameContext is an interface to support dynamic dispatch. +type IDirectoryNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsDirectoryNameContext differentiates from other interfaces. + IsDirectoryNameContext() +} + +type DirectoryNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDirectoryNameContext() *DirectoryNameContext { + var p = new(DirectoryNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directoryName + return p +} + +func InitEmptyDirectoryNameContext(p *DirectoryNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_directoryName +} + +func (*DirectoryNameContext) IsDirectoryNameContext() {} + +func NewDirectoryNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DirectoryNameContext { + var p = new(DirectoryNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_directoryName + + return p +} + +func (s *DirectoryNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *DirectoryNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *DirectoryNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DirectoryNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DirectoryNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDirectoryName(s) + } +} + +func (s *DirectoryNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDirectoryName(s) + } +} + +func (p *GQLParser) DirectoryName() (localctx IDirectoryNameContext) { + localctx = NewDirectoryNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1060, GQLParserRULE_directoryName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4481) + p.Identifier() + } + +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 +} + +// ISchemaNameContext is an interface to support dynamic dispatch. +type ISchemaNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsSchemaNameContext differentiates from other interfaces. + IsSchemaNameContext() +} + +type SchemaNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySchemaNameContext() *SchemaNameContext { + var p = new(SchemaNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_schemaName + return p +} + +func InitEmptySchemaNameContext(p *SchemaNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_schemaName +} + +func (*SchemaNameContext) IsSchemaNameContext() {} + +func NewSchemaNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SchemaNameContext { + var p = new(SchemaNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_schemaName + + return p +} + +func (s *SchemaNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *SchemaNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *SchemaNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SchemaNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SchemaNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSchemaName(s) + } +} + +func (s *SchemaNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSchemaName(s) + } +} + +func (p *GQLParser) SchemaName() (localctx ISchemaNameContext) { + localctx = NewSchemaNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1062, GQLParserRULE_schemaName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4483) + p.Identifier() + } + +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 +} + +// IGraphNameContext is an interface to support dynamic dispatch. +type IGraphNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + DelimitedGraphName() IDelimitedGraphNameContext + + // IsGraphNameContext differentiates from other interfaces. + IsGraphNameContext() +} + +type GraphNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphNameContext() *GraphNameContext { + var p = new(GraphNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphName + return p +} + +func InitEmptyGraphNameContext(p *GraphNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphName +} + +func (*GraphNameContext) IsGraphNameContext() {} + +func NewGraphNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphNameContext { + var p = new(GraphNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphName + + return p +} + +func (s *GraphNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphNameContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *GraphNameContext) DelimitedGraphName() IDelimitedGraphNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelimitedGraphNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDelimitedGraphNameContext) +} + +func (s *GraphNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphName(s) + } +} + +func (s *GraphNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphName(s) + } +} + +func (p *GQLParser) GraphName() (localctx IGraphNameContext) { + localctx = NewGraphNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1064, GQLParserRULE_graphName) + p.SetState(4487) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4485) + p.RegularIdentifier() + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4486) + p.DelimitedGraphName() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDelimitedGraphNameContext is an interface to support dynamic dispatch. +type IDelimitedGraphNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + + // IsDelimitedGraphNameContext differentiates from other interfaces. + IsDelimitedGraphNameContext() +} + +type DelimitedGraphNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelimitedGraphNameContext() *DelimitedGraphNameContext { + var p = new(DelimitedGraphNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_delimitedGraphName + return p +} + +func InitEmptyDelimitedGraphNameContext(p *DelimitedGraphNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_delimitedGraphName +} + +func (*DelimitedGraphNameContext) IsDelimitedGraphNameContext() {} + +func NewDelimitedGraphNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DelimitedGraphNameContext { + var p = new(DelimitedGraphNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_delimitedGraphName + + return p +} + +func (s *DelimitedGraphNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *DelimitedGraphNameContext) DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *DelimitedGraphNameContext) ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *DelimitedGraphNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DelimitedGraphNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DelimitedGraphNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDelimitedGraphName(s) + } +} + +func (s *DelimitedGraphNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDelimitedGraphName(s) + } +} + +func (p *GQLParser) DelimitedGraphName() (localctx IDelimitedGraphNameContext) { + localctx = NewDelimitedGraphNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1066, GQLParserRULE_delimitedGraphName) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4489) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IGraphTypeNameContext is an interface to support dynamic dispatch. +type IGraphTypeNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsGraphTypeNameContext differentiates from other interfaces. + IsGraphTypeNameContext() +} + +type GraphTypeNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGraphTypeNameContext() *GraphTypeNameContext { + var p = new(GraphTypeNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeName + return p +} + +func InitEmptyGraphTypeNameContext(p *GraphTypeNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_graphTypeName +} + +func (*GraphTypeNameContext) IsGraphTypeNameContext() {} + +func NewGraphTypeNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GraphTypeNameContext { + var p = new(GraphTypeNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_graphTypeName + + return p +} + +func (s *GraphTypeNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *GraphTypeNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *GraphTypeNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GraphTypeNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GraphTypeNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGraphTypeName(s) + } +} + +func (s *GraphTypeNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGraphTypeName(s) + } +} + +func (p *GQLParser) GraphTypeName() (localctx IGraphTypeNameContext) { + localctx = NewGraphTypeNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1068, GQLParserRULE_graphTypeName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4491) + p.Identifier() + } + +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 +} + +// INodeTypeNameContext is an interface to support dynamic dispatch. +type INodeTypeNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsNodeTypeNameContext differentiates from other interfaces. + IsNodeTypeNameContext() +} + +type NodeTypeNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeTypeNameContext() *NodeTypeNameContext { + var p = new(NodeTypeNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeName + return p +} + +func InitEmptyNodeTypeNameContext(p *NodeTypeNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeTypeName +} + +func (*NodeTypeNameContext) IsNodeTypeNameContext() {} + +func NewNodeTypeNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeTypeNameContext { + var p = new(NodeTypeNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeTypeName + + return p +} + +func (s *NodeTypeNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeTypeNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *NodeTypeNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeTypeNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeTypeNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeTypeName(s) + } +} + +func (s *NodeTypeNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeTypeName(s) + } +} + +func (p *GQLParser) NodeTypeName() (localctx INodeTypeNameContext) { + localctx = NewNodeTypeNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1070, GQLParserRULE_nodeTypeName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4493) + p.Identifier() + } + +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 +} + +// IEdgeTypeNameContext is an interface to support dynamic dispatch. +type IEdgeTypeNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsEdgeTypeNameContext differentiates from other interfaces. + IsEdgeTypeNameContext() +} + +type EdgeTypeNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeTypeNameContext() *EdgeTypeNameContext { + var p = new(EdgeTypeNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeName + return p +} + +func InitEmptyEdgeTypeNameContext(p *EdgeTypeNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeTypeName +} + +func (*EdgeTypeNameContext) IsEdgeTypeNameContext() {} + +func NewEdgeTypeNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeTypeNameContext { + var p = new(EdgeTypeNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeTypeName + + return p +} + +func (s *EdgeTypeNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeTypeNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *EdgeTypeNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeTypeNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeTypeNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeTypeName(s) + } +} + +func (s *EdgeTypeNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeTypeName(s) + } +} + +func (p *GQLParser) EdgeTypeName() (localctx IEdgeTypeNameContext) { + localctx = NewEdgeTypeNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1072, GQLParserRULE_edgeTypeName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4495) + p.Identifier() + } + +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 +} + +// IBindingTableNameContext is an interface to support dynamic dispatch. +type IBindingTableNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + DelimitedBindingTableName() IDelimitedBindingTableNameContext + + // IsBindingTableNameContext differentiates from other interfaces. + IsBindingTableNameContext() +} + +type BindingTableNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingTableNameContext() *BindingTableNameContext { + var p = new(BindingTableNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableName + return p +} + +func InitEmptyBindingTableNameContext(p *BindingTableNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingTableName +} + +func (*BindingTableNameContext) IsBindingTableNameContext() {} + +func NewBindingTableNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingTableNameContext { + var p = new(BindingTableNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingTableName + + return p +} + +func (s *BindingTableNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingTableNameContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *BindingTableNameContext) DelimitedBindingTableName() IDelimitedBindingTableNameContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelimitedBindingTableNameContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDelimitedBindingTableNameContext) +} + +func (s *BindingTableNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingTableNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingTableNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingTableName(s) + } +} + +func (s *BindingTableNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingTableName(s) + } +} + +func (p *GQLParser) BindingTableName() (localctx IBindingTableNameContext) { + localctx = NewBindingTableNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1074, GQLParserRULE_bindingTableName) + p.SetState(4499) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4497) + p.RegularIdentifier() + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4498) + p.DelimitedBindingTableName() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDelimitedBindingTableNameContext is an interface to support dynamic dispatch. +type IDelimitedBindingTableNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + + // IsDelimitedBindingTableNameContext differentiates from other interfaces. + IsDelimitedBindingTableNameContext() +} + +type DelimitedBindingTableNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelimitedBindingTableNameContext() *DelimitedBindingTableNameContext { + var p = new(DelimitedBindingTableNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_delimitedBindingTableName + return p +} + +func InitEmptyDelimitedBindingTableNameContext(p *DelimitedBindingTableNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_delimitedBindingTableName +} + +func (*DelimitedBindingTableNameContext) IsDelimitedBindingTableNameContext() {} + +func NewDelimitedBindingTableNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DelimitedBindingTableNameContext { + var p = new(DelimitedBindingTableNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_delimitedBindingTableName + + return p +} + +func (s *DelimitedBindingTableNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *DelimitedBindingTableNameContext) DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *DelimitedBindingTableNameContext) ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *DelimitedBindingTableNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DelimitedBindingTableNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DelimitedBindingTableNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDelimitedBindingTableName(s) + } +} + +func (s *DelimitedBindingTableNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDelimitedBindingTableName(s) + } +} + +func (p *GQLParser) DelimitedBindingTableName() (localctx IDelimitedBindingTableNameContext) { + localctx = NewDelimitedBindingTableNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1076, GQLParserRULE_delimitedBindingTableName) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4501) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IProcedureNameContext is an interface to support dynamic dispatch. +type IProcedureNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsProcedureNameContext differentiates from other interfaces. + IsProcedureNameContext() +} + +type ProcedureNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyProcedureNameContext() *ProcedureNameContext { + var p = new(ProcedureNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureName + return p +} + +func InitEmptyProcedureNameContext(p *ProcedureNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_procedureName +} + +func (*ProcedureNameContext) IsProcedureNameContext() {} + +func NewProcedureNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProcedureNameContext { + var p = new(ProcedureNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_procedureName + + return p +} + +func (s *ProcedureNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *ProcedureNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *ProcedureNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ProcedureNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ProcedureNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterProcedureName(s) + } +} + +func (s *ProcedureNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitProcedureName(s) + } +} + +func (p *GQLParser) ProcedureName() (localctx IProcedureNameContext) { + localctx = NewProcedureNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1078, GQLParserRULE_procedureName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4503) + p.Identifier() + } + +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 +} + +// ILabelNameContext is an interface to support dynamic dispatch. +type ILabelNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsLabelNameContext differentiates from other interfaces. + IsLabelNameContext() +} + +type LabelNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLabelNameContext() *LabelNameContext { + var p = new(LabelNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelName + return p +} + +func InitEmptyLabelNameContext(p *LabelNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_labelName +} + +func (*LabelNameContext) IsLabelNameContext() {} + +func NewLabelNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *LabelNameContext { + var p = new(LabelNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_labelName + + return p +} + +func (s *LabelNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *LabelNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *LabelNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *LabelNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *LabelNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterLabelName(s) + } +} + +func (s *LabelNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitLabelName(s) + } +} + +func (p *GQLParser) LabelName() (localctx ILabelNameContext) { + localctx = NewLabelNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1080, GQLParserRULE_labelName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4505) + p.Identifier() + } + +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 +} + +// IPropertyNameContext is an interface to support dynamic dispatch. +type IPropertyNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsPropertyNameContext differentiates from other interfaces. + IsPropertyNameContext() +} + +type PropertyNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPropertyNameContext() *PropertyNameContext { + var p = new(PropertyNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyName + return p +} + +func InitEmptyPropertyNameContext(p *PropertyNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_propertyName +} + +func (*PropertyNameContext) IsPropertyNameContext() {} + +func NewPropertyNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PropertyNameContext { + var p = new(PropertyNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_propertyName + + return p +} + +func (s *PropertyNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *PropertyNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *PropertyNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PropertyNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PropertyNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPropertyName(s) + } +} + +func (s *PropertyNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPropertyName(s) + } +} + +func (p *GQLParser) PropertyName() (localctx IPropertyNameContext) { + localctx = NewPropertyNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1082, GQLParserRULE_propertyName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4507) + p.Identifier() + } + +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 +} + +// IFieldNameContext is an interface to support dynamic dispatch. +type IFieldNameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + Identifier() IIdentifierContext + + // IsFieldNameContext differentiates from other interfaces. + IsFieldNameContext() +} + +type FieldNameContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFieldNameContext() *FieldNameContext { + var p = new(FieldNameContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldName + return p +} + +func InitEmptyFieldNameContext(p *FieldNameContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_fieldName +} + +func (*FieldNameContext) IsFieldNameContext() {} + +func NewFieldNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FieldNameContext { + var p = new(FieldNameContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_fieldName + + return p +} + +func (s *FieldNameContext) GetParser() antlr.Parser { return s.parser } + +func (s *FieldNameContext) Identifier() IIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IIdentifierContext) +} + +func (s *FieldNameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *FieldNameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *FieldNameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterFieldName(s) + } +} + +func (s *FieldNameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitFieldName(s) + } +} + +func (p *GQLParser) FieldName() (localctx IFieldNameContext) { + localctx = NewFieldNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1084, GQLParserRULE_fieldName) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4509) + p.Identifier() + } + +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 +} + +// IElementVariableContext is an interface to support dynamic dispatch. +type IElementVariableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariable() IBindingVariableContext + + // IsElementVariableContext differentiates from other interfaces. + IsElementVariableContext() +} + +type ElementVariableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyElementVariableContext() *ElementVariableContext { + var p = new(ElementVariableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariable + return p +} + +func InitEmptyElementVariableContext(p *ElementVariableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_elementVariable +} + +func (*ElementVariableContext) IsElementVariableContext() {} + +func NewElementVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ElementVariableContext { + var p = new(ElementVariableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_elementVariable + + return p +} + +func (s *ElementVariableContext) GetParser() antlr.Parser { return s.parser } + +func (s *ElementVariableContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *ElementVariableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ElementVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ElementVariableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterElementVariable(s) + } +} + +func (s *ElementVariableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitElementVariable(s) + } +} + +func (p *GQLParser) ElementVariable() (localctx IElementVariableContext) { + localctx = NewElementVariableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1086, GQLParserRULE_elementVariable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4511) + p.BindingVariable() + } + +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 +} + +// IPathVariableContext is an interface to support dynamic dispatch. +type IPathVariableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BindingVariable() IBindingVariableContext + + // IsPathVariableContext differentiates from other interfaces. + IsPathVariableContext() +} + +type PathVariableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPathVariableContext() *PathVariableContext { + var p = new(PathVariableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariable + return p +} + +func InitEmptyPathVariableContext(p *PathVariableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_pathVariable +} + +func (*PathVariableContext) IsPathVariableContext() {} + +func NewPathVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *PathVariableContext { + var p = new(PathVariableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_pathVariable + + return p +} + +func (s *PathVariableContext) GetParser() antlr.Parser { return s.parser } + +func (s *PathVariableContext) BindingVariable() IBindingVariableContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBindingVariableContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IBindingVariableContext) +} + +func (s *PathVariableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *PathVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *PathVariableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterPathVariable(s) + } +} + +func (s *PathVariableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitPathVariable(s) + } +} + +func (p *GQLParser) PathVariable() (localctx IPathVariableContext) { + localctx = NewPathVariableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1088, GQLParserRULE_pathVariable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4513) + p.BindingVariable() + } + +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 +} + +// ISubpathVariableContext is an interface to support dynamic dispatch. +type ISubpathVariableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsSubpathVariableContext differentiates from other interfaces. + IsSubpathVariableContext() +} + +type SubpathVariableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySubpathVariableContext() *SubpathVariableContext { + var p = new(SubpathVariableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subpathVariable + return p +} + +func InitEmptySubpathVariableContext(p *SubpathVariableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_subpathVariable +} + +func (*SubpathVariableContext) IsSubpathVariableContext() {} + +func NewSubpathVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SubpathVariableContext { + var p = new(SubpathVariableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_subpathVariable + + return p +} + +func (s *SubpathVariableContext) GetParser() antlr.Parser { return s.parser } + +func (s *SubpathVariableContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *SubpathVariableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SubpathVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SubpathVariableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterSubpathVariable(s) + } +} + +func (s *SubpathVariableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitSubpathVariable(s) + } +} + +func (p *GQLParser) SubpathVariable() (localctx ISubpathVariableContext) { + localctx = NewSubpathVariableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1090, GQLParserRULE_subpathVariable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4515) + p.RegularIdentifier() + } + +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 +} + +// IBindingVariableContext is an interface to support dynamic dispatch. +type IBindingVariableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + + // IsBindingVariableContext differentiates from other interfaces. + IsBindingVariableContext() +} + +type BindingVariableContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBindingVariableContext() *BindingVariableContext { + var p = new(BindingVariableContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariable + return p +} + +func InitEmptyBindingVariableContext(p *BindingVariableContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_bindingVariable +} + +func (*BindingVariableContext) IsBindingVariableContext() {} + +func NewBindingVariableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *BindingVariableContext { + var p = new(BindingVariableContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_bindingVariable + + return p +} + +func (s *BindingVariableContext) GetParser() antlr.Parser { return s.parser } + +func (s *BindingVariableContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *BindingVariableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *BindingVariableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *BindingVariableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterBindingVariable(s) + } +} + +func (s *BindingVariableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitBindingVariable(s) + } +} + +func (p *GQLParser) BindingVariable() (localctx IBindingVariableContext) { + localctx = NewBindingVariableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1092, GQLParserRULE_bindingVariable) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4517) + p.RegularIdentifier() + } + +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 +} + +// IUnsignedLiteralContext is an interface to support dynamic dispatch. +type IUnsignedLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UnsignedNumericLiteral() IUnsignedNumericLiteralContext + GeneralLiteral() IGeneralLiteralContext + + // IsUnsignedLiteralContext differentiates from other interfaces. + IsUnsignedLiteralContext() +} + +type UnsignedLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedLiteralContext() *UnsignedLiteralContext { + var p = new(UnsignedLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedLiteral + return p +} + +func InitEmptyUnsignedLiteralContext(p *UnsignedLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedLiteral +} + +func (*UnsignedLiteralContext) IsUnsignedLiteralContext() {} + +func NewUnsignedLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedLiteralContext { + var p = new(UnsignedLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedLiteral + + return p +} + +func (s *UnsignedLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedLiteralContext) UnsignedNumericLiteral() IUnsignedNumericLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedNumericLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedNumericLiteralContext) +} + +func (s *UnsignedLiteralContext) GeneralLiteral() IGeneralLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGeneralLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGeneralLiteralContext) +} + +func (s *UnsignedLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedLiteral(s) + } +} + +func (s *UnsignedLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedLiteral(s) + } +} + +func (p *GQLParser) UnsignedLiteral() (localctx IUnsignedLiteralContext) { + localctx = NewUnsignedLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1094, GQLParserRULE_unsignedLiteral) + p.SetState(4521) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4519) + p.UnsignedNumericLiteral() + } + + case GQLParserBOOLEAN_LITERAL, GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, GQLParserBYTE_STRING_LITERAL, GQLParserARRAY, GQLParserDATE, GQLParserDATETIME, GQLParserDURATION, GQLParserLIST, GQLParserNULL_KW, GQLParserRECORD, GQLParserTIME, GQLParserTIMESTAMP, GQLParserLEFT_BRACE, GQLParserLEFT_BRACKET: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4520) + p.GeneralLiteral() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IGeneralLiteralContext is an interface to support dynamic dispatch. +type IGeneralLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + BOOLEAN_LITERAL() antlr.TerminalNode + CharacterStringLiteral() ICharacterStringLiteralContext + BYTE_STRING_LITERAL() antlr.TerminalNode + TemporalLiteral() ITemporalLiteralContext + DurationLiteral() IDurationLiteralContext + NullLiteral() INullLiteralContext + ListLiteral() IListLiteralContext + RecordLiteral() IRecordLiteralContext + + // IsGeneralLiteralContext differentiates from other interfaces. + IsGeneralLiteralContext() +} + +type GeneralLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGeneralLiteralContext() *GeneralLiteralContext { + var p = new(GeneralLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLiteral + return p +} + +func InitEmptyGeneralLiteralContext(p *GeneralLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_generalLiteral +} + +func (*GeneralLiteralContext) IsGeneralLiteralContext() {} + +func NewGeneralLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GeneralLiteralContext { + var p = new(GeneralLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_generalLiteral + + return p +} + +func (s *GeneralLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *GeneralLiteralContext) BOOLEAN_LITERAL() antlr.TerminalNode { + return s.GetToken(GQLParserBOOLEAN_LITERAL, 0) +} + +func (s *GeneralLiteralContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *GeneralLiteralContext) BYTE_STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(GQLParserBYTE_STRING_LITERAL, 0) +} + +func (s *GeneralLiteralContext) TemporalLiteral() ITemporalLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITemporalLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITemporalLiteralContext) +} + +func (s *GeneralLiteralContext) DurationLiteral() IDurationLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationLiteralContext) +} + +func (s *GeneralLiteralContext) NullLiteral() INullLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INullLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INullLiteralContext) +} + +func (s *GeneralLiteralContext) ListLiteral() IListLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListLiteralContext) +} + +func (s *GeneralLiteralContext) RecordLiteral() IRecordLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordLiteralContext) +} + +func (s *GeneralLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GeneralLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GeneralLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterGeneralLiteral(s) + } +} + +func (s *GeneralLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitGeneralLiteral(s) + } +} + +func (p *GQLParser) GeneralLiteral() (localctx IGeneralLiteralContext) { + localctx = NewGeneralLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1096, GQLParserRULE_generalLiteral) + p.SetState(4531) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserBOOLEAN_LITERAL: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4523) + p.Match(GQLParserBOOLEAN_LITERAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4524) + p.CharacterStringLiteral() + } + + case GQLParserBYTE_STRING_LITERAL: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4525) + p.Match(GQLParserBYTE_STRING_LITERAL) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserDATE, GQLParserDATETIME, GQLParserTIME, GQLParserTIMESTAMP: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(4526) + p.TemporalLiteral() + } + + case GQLParserDURATION: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(4527) + p.DurationLiteral() + } + + case GQLParserNULL_KW: + p.EnterOuterAlt(localctx, 6) + { + p.SetState(4528) + p.NullLiteral() + } + + case GQLParserARRAY, GQLParserLIST, GQLParserLEFT_BRACKET: + p.EnterOuterAlt(localctx, 7) + { + p.SetState(4529) + p.ListLiteral() + } + + case GQLParserRECORD, GQLParserLEFT_BRACE: + p.EnterOuterAlt(localctx, 8) + { + p.SetState(4530) + p.RecordLiteral() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITemporalLiteralContext is an interface to support dynamic dispatch. +type ITemporalLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DateLiteral() IDateLiteralContext + TimeLiteral() ITimeLiteralContext + DatetimeLiteral() IDatetimeLiteralContext + + // IsTemporalLiteralContext differentiates from other interfaces. + IsTemporalLiteralContext() +} + +type TemporalLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTemporalLiteralContext() *TemporalLiteralContext { + var p = new(TemporalLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalLiteral + return p +} + +func InitEmptyTemporalLiteralContext(p *TemporalLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_temporalLiteral +} + +func (*TemporalLiteralContext) IsTemporalLiteralContext() {} + +func NewTemporalLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TemporalLiteralContext { + var p = new(TemporalLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_temporalLiteral + + return p +} + +func (s *TemporalLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *TemporalLiteralContext) DateLiteral() IDateLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateLiteralContext) +} + +func (s *TemporalLiteralContext) TimeLiteral() ITimeLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeLiteralContext) +} + +func (s *TemporalLiteralContext) DatetimeLiteral() IDatetimeLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeLiteralContext) +} + +func (s *TemporalLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TemporalLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TemporalLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTemporalLiteral(s) + } +} + +func (s *TemporalLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTemporalLiteral(s) + } +} + +func (p *GQLParser) TemporalLiteral() (localctx ITemporalLiteralContext) { + localctx = NewTemporalLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1098, GQLParserRULE_temporalLiteral) + p.SetState(4536) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserDATE: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4533) + p.DateLiteral() + } + + case GQLParserTIME: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4534) + p.TimeLiteral() + } + + case GQLParserDATETIME, GQLParserTIMESTAMP: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4535) + p.DatetimeLiteral() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IDateLiteralContext is an interface to support dynamic dispatch. +type IDateLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DATE() antlr.TerminalNode + DateString() IDateStringContext + + // IsDateLiteralContext differentiates from other interfaces. + IsDateLiteralContext() +} + +type DateLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDateLiteralContext() *DateLiteralContext { + var p = new(DateLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateLiteral + return p +} + +func InitEmptyDateLiteralContext(p *DateLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateLiteral +} + +func (*DateLiteralContext) IsDateLiteralContext() {} + +func NewDateLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DateLiteralContext { + var p = new(DateLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dateLiteral + + return p +} + +func (s *DateLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *DateLiteralContext) DATE() antlr.TerminalNode { + return s.GetToken(GQLParserDATE, 0) +} + +func (s *DateLiteralContext) DateString() IDateStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDateStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDateStringContext) +} + +func (s *DateLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DateLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DateLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDateLiteral(s) + } +} + +func (s *DateLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDateLiteral(s) + } +} + +func (p *GQLParser) DateLiteral() (localctx IDateLiteralContext) { + localctx = NewDateLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1100, GQLParserRULE_dateLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4538) + p.Match(GQLParserDATE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4539) + p.DateString() + } + +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 +} + +// ITimeLiteralContext is an interface to support dynamic dispatch. +type ITimeLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + TIME() antlr.TerminalNode + TimeString() ITimeStringContext + + // IsTimeLiteralContext differentiates from other interfaces. + IsTimeLiteralContext() +} + +type TimeLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeLiteralContext() *TimeLiteralContext { + var p = new(TimeLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeLiteral + return p +} + +func InitEmptyTimeLiteralContext(p *TimeLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeLiteral +} + +func (*TimeLiteralContext) IsTimeLiteralContext() {} + +func NewTimeLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeLiteralContext { + var p = new(TimeLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeLiteral + + return p +} + +func (s *TimeLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeLiteralContext) TIME() antlr.TerminalNode { + return s.GetToken(GQLParserTIME, 0) +} + +func (s *TimeLiteralContext) TimeString() ITimeStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITimeStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ITimeStringContext) +} + +func (s *TimeLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeLiteral(s) + } +} + +func (s *TimeLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeLiteral(s) + } +} + +func (p *GQLParser) TimeLiteral() (localctx ITimeLiteralContext) { + localctx = NewTimeLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1102, GQLParserRULE_timeLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4541) + p.Match(GQLParserTIME) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4542) + p.TimeString() + } + +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 +} + +// IDatetimeLiteralContext is an interface to support dynamic dispatch. +type IDatetimeLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DatetimeString() IDatetimeStringContext + DATETIME() antlr.TerminalNode + TIMESTAMP() antlr.TerminalNode + + // IsDatetimeLiteralContext differentiates from other interfaces. + IsDatetimeLiteralContext() +} + +type DatetimeLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeLiteralContext() *DatetimeLiteralContext { + var p = new(DatetimeLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeLiteral + return p +} + +func InitEmptyDatetimeLiteralContext(p *DatetimeLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeLiteral +} + +func (*DatetimeLiteralContext) IsDatetimeLiteralContext() {} + +func NewDatetimeLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeLiteralContext { + var p = new(DatetimeLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeLiteral + + return p +} + +func (s *DatetimeLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeLiteralContext) DatetimeString() IDatetimeStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatetimeStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDatetimeStringContext) +} + +func (s *DatetimeLiteralContext) DATETIME() antlr.TerminalNode { + return s.GetToken(GQLParserDATETIME, 0) +} + +func (s *DatetimeLiteralContext) TIMESTAMP() antlr.TerminalNode { + return s.GetToken(GQLParserTIMESTAMP, 0) +} + +func (s *DatetimeLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeLiteral(s) + } +} + +func (s *DatetimeLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeLiteral(s) + } +} + +func (p *GQLParser) DatetimeLiteral() (localctx IDatetimeLiteralContext) { + localctx = NewDatetimeLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1104, GQLParserRULE_datetimeLiteral) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4544) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserDATETIME || _la == GQLParserTIMESTAMP) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(4545) + p.DatetimeString() + } + +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 +} + +// IListLiteralContext is an interface to support dynamic dispatch. +type IListLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ListValueConstructorByEnumeration() IListValueConstructorByEnumerationContext + + // IsListLiteralContext differentiates from other interfaces. + IsListLiteralContext() +} + +type ListLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyListLiteralContext() *ListLiteralContext { + var p = new(ListLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listLiteral + return p +} + +func InitEmptyListLiteralContext(p *ListLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_listLiteral +} + +func (*ListLiteralContext) IsListLiteralContext() {} + +func NewListLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ListLiteralContext { + var p = new(ListLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_listLiteral + + return p +} + +func (s *ListLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *ListLiteralContext) ListValueConstructorByEnumeration() IListValueConstructorByEnumerationContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IListValueConstructorByEnumerationContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IListValueConstructorByEnumerationContext) +} + +func (s *ListLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ListLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ListLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterListLiteral(s) + } +} + +func (s *ListLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitListLiteral(s) + } +} + +func (p *GQLParser) ListLiteral() (localctx IListLiteralContext) { + localctx = NewListLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1106, GQLParserRULE_listLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4547) + p.ListValueConstructorByEnumeration() + } + +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 +} + +// IRecordLiteralContext is an interface to support dynamic dispatch. +type IRecordLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RecordConstructor() IRecordConstructorContext + + // IsRecordLiteralContext differentiates from other interfaces. + IsRecordLiteralContext() +} + +type RecordLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRecordLiteralContext() *RecordLiteralContext { + var p = new(RecordLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordLiteral + return p +} + +func InitEmptyRecordLiteralContext(p *RecordLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_recordLiteral +} + +func (*RecordLiteralContext) IsRecordLiteralContext() {} + +func NewRecordLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RecordLiteralContext { + var p = new(RecordLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_recordLiteral + + return p +} + +func (s *RecordLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *RecordLiteralContext) RecordConstructor() IRecordConstructorContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRecordConstructorContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRecordConstructorContext) +} + +func (s *RecordLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RecordLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RecordLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRecordLiteral(s) + } +} + +func (s *RecordLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRecordLiteral(s) + } +} + +func (p *GQLParser) RecordLiteral() (localctx IRecordLiteralContext) { + localctx = NewRecordLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1108, GQLParserRULE_recordLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4549) + p.RecordConstructor() + } + +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 +} + +// IIdentifierContext is an interface to support dynamic dispatch. +type IIdentifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + RegularIdentifier() IRegularIdentifierContext + DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + + // IsIdentifierContext differentiates from other interfaces. + IsIdentifierContext() +} + +type IdentifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIdentifierContext() *IdentifierContext { + var p = new(IdentifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_identifier + return p +} + +func InitEmptyIdentifierContext(p *IdentifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_identifier +} + +func (*IdentifierContext) IsIdentifierContext() {} + +func NewIdentifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *IdentifierContext { + var p = new(IdentifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_identifier + + return p +} + +func (s *IdentifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *IdentifierContext) RegularIdentifier() IRegularIdentifierContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRegularIdentifierContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IRegularIdentifierContext) +} + +func (s *IdentifierContext) DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *IdentifierContext) ACCENT_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *IdentifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *IdentifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *IdentifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterIdentifier(s) + } +} + +func (s *IdentifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitIdentifier(s) + } +} + +func (p *GQLParser) Identifier() (localctx IIdentifierContext) { + localctx = NewIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1110, GQLParserRULE_identifier) + p.SetState(4554) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE, GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4551) + p.RegularIdentifier() + } + + case GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4552) + p.Match(GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4553) + p.Match(GQLParserACCENT_QUOTED_CHARACTER_SEQUENCE) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IRegularIdentifierContext is an interface to support dynamic dispatch. +type IRegularIdentifierContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + REGULAR_IDENTIFIER() antlr.TerminalNode + NonReservedWords() INonReservedWordsContext + + // IsRegularIdentifierContext differentiates from other interfaces. + IsRegularIdentifierContext() +} + +type RegularIdentifierContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRegularIdentifierContext() *RegularIdentifierContext { + var p = new(RegularIdentifierContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_regularIdentifier + return p +} + +func InitEmptyRegularIdentifierContext(p *RegularIdentifierContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_regularIdentifier +} + +func (*RegularIdentifierContext) IsRegularIdentifierContext() {} + +func NewRegularIdentifierContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *RegularIdentifierContext { + var p = new(RegularIdentifierContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_regularIdentifier + + return p +} + +func (s *RegularIdentifierContext) GetParser() antlr.Parser { return s.parser } + +func (s *RegularIdentifierContext) REGULAR_IDENTIFIER() antlr.TerminalNode { + return s.GetToken(GQLParserREGULAR_IDENTIFIER, 0) +} + +func (s *RegularIdentifierContext) NonReservedWords() INonReservedWordsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INonReservedWordsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(INonReservedWordsContext) +} + +func (s *RegularIdentifierContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *RegularIdentifierContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *RegularIdentifierContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterRegularIdentifier(s) + } +} + +func (s *RegularIdentifierContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitRegularIdentifier(s) + } +} + +func (p *GQLParser) RegularIdentifier() (localctx IRegularIdentifierContext) { + localctx = NewRegularIdentifierContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1112, GQLParserRULE_regularIdentifier) + p.SetState(4558) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserREGULAR_IDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4556) + p.Match(GQLParserREGULAR_IDENTIFIER) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserACYCLIC, GQLParserBINDING, GQLParserBINDINGS, GQLParserCONNECTING, GQLParserDESTINATION, GQLParserDIFFERENT, GQLParserDIRECTED, GQLParserEDGE, GQLParserEDGES, GQLParserELEMENT, GQLParserELEMENTS, GQLParserFIRST, GQLParserGRAPH, GQLParserGROUPS, GQLParserKEEP, GQLParserLABEL, GQLParserLABELED, GQLParserLABELS, GQLParserLAST, GQLParserNFC, GQLParserNFD, GQLParserNFKC, GQLParserNFKD, GQLParserNO, GQLParserNODE, GQLParserNORMALIZED, GQLParserONLY, GQLParserORDINALITY, GQLParserPROPERTY, GQLParserREAD, GQLParserRELATIONSHIP, GQLParserRELATIONSHIPS, GQLParserREPEATABLE, GQLParserSHORTEST, GQLParserSIMPLE, GQLParserSOURCE, GQLParserTABLE, GQLParserTO, GQLParserTRAIL, GQLParserTRANSACTION, GQLParserTYPE, GQLParserUNDIRECTED, GQLParserVERTEX, GQLParserWALK, GQLParserWITHOUT, GQLParserWRITE, GQLParserZONE: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4557) + p.NonReservedWords() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// ITimeZoneStringContext is an interface to support dynamic dispatch. +type ITimeZoneStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharacterStringLiteral() ICharacterStringLiteralContext + + // IsTimeZoneStringContext differentiates from other interfaces. + IsTimeZoneStringContext() +} + +type TimeZoneStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeZoneStringContext() *TimeZoneStringContext { + var p = new(TimeZoneStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeZoneString + return p +} + +func InitEmptyTimeZoneStringContext(p *TimeZoneStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeZoneString +} + +func (*TimeZoneStringContext) IsTimeZoneStringContext() {} + +func NewTimeZoneStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeZoneStringContext { + var p = new(TimeZoneStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeZoneString + + return p +} + +func (s *TimeZoneStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeZoneStringContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *TimeZoneStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeZoneStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeZoneStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeZoneString(s) + } +} + +func (s *TimeZoneStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeZoneString(s) + } +} + +func (p *GQLParser) TimeZoneString() (localctx ITimeZoneStringContext) { + localctx = NewTimeZoneStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1114, GQLParserRULE_timeZoneString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4560) + p.CharacterStringLiteral() + } + +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 +} + +// ICharacterStringLiteralContext is an interface to support dynamic dispatch. +type ICharacterStringLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + SINGLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode + + // IsCharacterStringLiteralContext differentiates from other interfaces. + IsCharacterStringLiteralContext() +} + +type CharacterStringLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCharacterStringLiteralContext() *CharacterStringLiteralContext { + var p = new(CharacterStringLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringLiteral + return p +} + +func InitEmptyCharacterStringLiteralContext(p *CharacterStringLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_characterStringLiteral +} + +func (*CharacterStringLiteralContext) IsCharacterStringLiteralContext() {} + +func NewCharacterStringLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *CharacterStringLiteralContext { + var p = new(CharacterStringLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_characterStringLiteral + + return p +} + +func (s *CharacterStringLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *CharacterStringLiteralContext) SINGLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *CharacterStringLiteralContext) DOUBLE_QUOTED_CHARACTER_SEQUENCE() antlr.TerminalNode { + return s.GetToken(GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE, 0) +} + +func (s *CharacterStringLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *CharacterStringLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *CharacterStringLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterCharacterStringLiteral(s) + } +} + +func (s *CharacterStringLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitCharacterStringLiteral(s) + } +} + +func (p *GQLParser) CharacterStringLiteral() (localctx ICharacterStringLiteralContext) { + localctx = NewCharacterStringLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1116, GQLParserRULE_characterStringLiteral) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4562) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserSINGLE_QUOTED_CHARACTER_SEQUENCE || _la == GQLParserDOUBLE_QUOTED_CHARACTER_SEQUENCE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IUnsignedNumericLiteralContext is an interface to support dynamic dispatch. +type IUnsignedNumericLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ExactNumericLiteral() IExactNumericLiteralContext + ApproximateNumericLiteral() IApproximateNumericLiteralContext + + // IsUnsignedNumericLiteralContext differentiates from other interfaces. + IsUnsignedNumericLiteralContext() +} + +type UnsignedNumericLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedNumericLiteralContext() *UnsignedNumericLiteralContext { + var p = new(UnsignedNumericLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedNumericLiteral + return p +} + +func InitEmptyUnsignedNumericLiteralContext(p *UnsignedNumericLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedNumericLiteral +} + +func (*UnsignedNumericLiteralContext) IsUnsignedNumericLiteralContext() {} + +func NewUnsignedNumericLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedNumericLiteralContext { + var p = new(UnsignedNumericLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedNumericLiteral + + return p +} + +func (s *UnsignedNumericLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedNumericLiteralContext) ExactNumericLiteral() IExactNumericLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExactNumericLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExactNumericLiteralContext) +} + +func (s *UnsignedNumericLiteralContext) ApproximateNumericLiteral() IApproximateNumericLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IApproximateNumericLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IApproximateNumericLiteralContext) +} + +func (s *UnsignedNumericLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedNumericLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedNumericLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedNumericLiteral(s) + } +} + +func (s *UnsignedNumericLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedNumericLiteral(s) + } +} + +func (p *GQLParser) UnsignedNumericLiteral() (localctx IUnsignedNumericLiteralContext) { + localctx = NewUnsignedNumericLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1118, GQLParserRULE_unsignedNumericLiteral) + p.SetState(4566) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4564) + p.ExactNumericLiteral() + } + + case GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4565) + p.ApproximateNumericLiteral() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IExactNumericLiteralContext is an interface to support dynamic dispatch. +type IExactNumericLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode + UnsignedInteger() IUnsignedIntegerContext + + // IsExactNumericLiteralContext differentiates from other interfaces. + IsExactNumericLiteralContext() +} + +type ExactNumericLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExactNumericLiteralContext() *ExactNumericLiteralContext { + var p = new(ExactNumericLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exactNumericLiteral + return p +} + +func InitEmptyExactNumericLiteralContext(p *ExactNumericLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_exactNumericLiteral +} + +func (*ExactNumericLiteralContext) IsExactNumericLiteralContext() {} + +func NewExactNumericLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExactNumericLiteralContext { + var p = new(ExactNumericLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_exactNumericLiteral + + return p +} + +func (s *ExactNumericLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExactNumericLiteralContext) UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX, 0) +} + +func (s *ExactNumericLiteralContext) UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX, 0) +} + +func (s *ExactNumericLiteralContext) UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX, 0) +} + +func (s *ExactNumericLiteralContext) UNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX, 0) +} + +func (s *ExactNumericLiteralContext) UnsignedInteger() IUnsignedIntegerContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnsignedIntegerContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IUnsignedIntegerContext) +} + +func (s *ExactNumericLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExactNumericLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ExactNumericLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterExactNumericLiteral(s) + } +} + +func (s *ExactNumericLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitExactNumericLiteral(s) + } +} + +func (p *GQLParser) ExactNumericLiteral() (localctx IExactNumericLiteralContext) { + localctx = NewExactNumericLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1120, GQLParserRULE_exactNumericLiteral) + p.SetState(4573) + p.GetErrorHandler().Sync(p) + if p.HasError() { + goto errorExit + } + + switch p.GetTokenStream().LA(1) { + case GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4568) + p.Match(GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_EXACT_NUMBER_SUFFIX) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(4569) + p.Match(GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_EXACT_NUMBER_SUFFIX) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(4570) + p.Match(GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITHOUT_SUFFIX) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(4571) + p.Match(GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_EXACT_NUMBER_SUFFIX) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + + case GQLParserUNSIGNED_DECIMAL_INTEGER, GQLParserUNSIGNED_HEXADECIMAL_INTEGER, GQLParserUNSIGNED_OCTAL_INTEGER, GQLParserUNSIGNED_BINARY_INTEGER: + p.EnterOuterAlt(localctx, 5) + { + p.SetState(4572) + p.UnsignedInteger() + } + + default: + p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + 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 +} + +// IApproximateNumericLiteralContext is an interface to support dynamic dispatch. +type IApproximateNumericLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode + UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode + + // IsApproximateNumericLiteralContext differentiates from other interfaces. + IsApproximateNumericLiteralContext() +} + +type ApproximateNumericLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyApproximateNumericLiteralContext() *ApproximateNumericLiteralContext { + var p = new(ApproximateNumericLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_approximateNumericLiteral + return p +} + +func InitEmptyApproximateNumericLiteralContext(p *ApproximateNumericLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_approximateNumericLiteral +} + +func (*ApproximateNumericLiteralContext) IsApproximateNumericLiteralContext() {} + +func NewApproximateNumericLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ApproximateNumericLiteralContext { + var p = new(ApproximateNumericLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_approximateNumericLiteral + + return p +} + +func (s *ApproximateNumericLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *ApproximateNumericLiteralContext) UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, 0) +} + +func (s *ApproximateNumericLiteralContext) UNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_SCIENTIFIC_NOTATION_WITHOUT_SUFFIX, 0) +} + +func (s *ApproximateNumericLiteralContext) UNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_IN_COMMON_NOTATION_WITH_APPROXIMATE_NUMBER_SUFFIX, 0) +} + +func (s *ApproximateNumericLiteralContext) UNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_INTEGER_WITH_APPROXIMATE_NUMBER_SUFFIX, 0) +} + +func (s *ApproximateNumericLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ApproximateNumericLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ApproximateNumericLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterApproximateNumericLiteral(s) + } +} + +func (s *ApproximateNumericLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitApproximateNumericLiteral(s) + } +} + +func (p *GQLParser) ApproximateNumericLiteral() (localctx IApproximateNumericLiteralContext) { + localctx = NewApproximateNumericLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1122, GQLParserRULE_approximateNumericLiteral) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4575) + _la = p.GetTokenStream().LA(1) + + if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&42496) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IUnsignedIntegerContext is an interface to support dynamic dispatch. +type IUnsignedIntegerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UNSIGNED_DECIMAL_INTEGER() antlr.TerminalNode + UNSIGNED_HEXADECIMAL_INTEGER() antlr.TerminalNode + UNSIGNED_OCTAL_INTEGER() antlr.TerminalNode + UNSIGNED_BINARY_INTEGER() antlr.TerminalNode + + // IsUnsignedIntegerContext differentiates from other interfaces. + IsUnsignedIntegerContext() +} + +type UnsignedIntegerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedIntegerContext() *UnsignedIntegerContext { + var p = new(UnsignedIntegerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedInteger + return p +} + +func InitEmptyUnsignedIntegerContext(p *UnsignedIntegerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedInteger +} + +func (*UnsignedIntegerContext) IsUnsignedIntegerContext() {} + +func NewUnsignedIntegerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedIntegerContext { + var p = new(UnsignedIntegerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedInteger + + return p +} + +func (s *UnsignedIntegerContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedIntegerContext) UNSIGNED_DECIMAL_INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_INTEGER, 0) +} + +func (s *UnsignedIntegerContext) UNSIGNED_HEXADECIMAL_INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_HEXADECIMAL_INTEGER, 0) +} + +func (s *UnsignedIntegerContext) UNSIGNED_OCTAL_INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_OCTAL_INTEGER, 0) +} + +func (s *UnsignedIntegerContext) UNSIGNED_BINARY_INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_BINARY_INTEGER, 0) +} + +func (s *UnsignedIntegerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedIntegerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedIntegerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedInteger(s) + } +} + +func (s *UnsignedIntegerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedInteger(s) + } +} + +func (p *GQLParser) UnsignedInteger() (localctx IUnsignedIntegerContext) { + localctx = NewUnsignedIntegerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1124, GQLParserRULE_unsignedInteger) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4577) + _la = p.GetTokenStream().LA(1) + + if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&983040) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IUnsignedDecimalIntegerContext is an interface to support dynamic dispatch. +type IUnsignedDecimalIntegerContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + UNSIGNED_DECIMAL_INTEGER() antlr.TerminalNode + + // IsUnsignedDecimalIntegerContext differentiates from other interfaces. + IsUnsignedDecimalIntegerContext() +} + +type UnsignedDecimalIntegerContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnsignedDecimalIntegerContext() *UnsignedDecimalIntegerContext { + var p = new(UnsignedDecimalIntegerContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedDecimalInteger + return p +} + +func InitEmptyUnsignedDecimalIntegerContext(p *UnsignedDecimalIntegerContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_unsignedDecimalInteger +} + +func (*UnsignedDecimalIntegerContext) IsUnsignedDecimalIntegerContext() {} + +func NewUnsignedDecimalIntegerContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnsignedDecimalIntegerContext { + var p = new(UnsignedDecimalIntegerContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_unsignedDecimalInteger + + return p +} + +func (s *UnsignedDecimalIntegerContext) GetParser() antlr.Parser { return s.parser } + +func (s *UnsignedDecimalIntegerContext) UNSIGNED_DECIMAL_INTEGER() antlr.TerminalNode { + return s.GetToken(GQLParserUNSIGNED_DECIMAL_INTEGER, 0) +} + +func (s *UnsignedDecimalIntegerContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnsignedDecimalIntegerContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *UnsignedDecimalIntegerContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterUnsignedDecimalInteger(s) + } +} + +func (s *UnsignedDecimalIntegerContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitUnsignedDecimalInteger(s) + } +} + +func (p *GQLParser) UnsignedDecimalInteger() (localctx IUnsignedDecimalIntegerContext) { + localctx = NewUnsignedDecimalIntegerContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1126, GQLParserRULE_unsignedDecimalInteger) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4579) + p.Match(GQLParserUNSIGNED_DECIMAL_INTEGER) + 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 +} + +// INullLiteralContext is an interface to support dynamic dispatch. +type INullLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NULL_KW() antlr.TerminalNode + + // IsNullLiteralContext differentiates from other interfaces. + IsNullLiteralContext() +} + +type NullLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNullLiteralContext() *NullLiteralContext { + var p = new(NullLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullLiteral + return p +} + +func InitEmptyNullLiteralContext(p *NullLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nullLiteral +} + +func (*NullLiteralContext) IsNullLiteralContext() {} + +func NewNullLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NullLiteralContext { + var p = new(NullLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nullLiteral + + return p +} + +func (s *NullLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *NullLiteralContext) NULL_KW() antlr.TerminalNode { + return s.GetToken(GQLParserNULL_KW, 0) +} + +func (s *NullLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NullLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NullLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNullLiteral(s) + } +} + +func (s *NullLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNullLiteral(s) + } +} + +func (p *GQLParser) NullLiteral() (localctx INullLiteralContext) { + localctx = NewNullLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1128, GQLParserRULE_nullLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4581) + p.Match(GQLParserNULL_KW) + 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 +} + +// IDateStringContext is an interface to support dynamic dispatch. +type IDateStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharacterStringLiteral() ICharacterStringLiteralContext + + // IsDateStringContext differentiates from other interfaces. + IsDateStringContext() +} + +type DateStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDateStringContext() *DateStringContext { + var p = new(DateStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateString + return p +} + +func InitEmptyDateStringContext(p *DateStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_dateString +} + +func (*DateStringContext) IsDateStringContext() {} + +func NewDateStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DateStringContext { + var p = new(DateStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_dateString + + return p +} + +func (s *DateStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *DateStringContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *DateStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DateStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DateStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDateString(s) + } +} + +func (s *DateStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDateString(s) + } +} + +func (p *GQLParser) DateString() (localctx IDateStringContext) { + localctx = NewDateStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1130, GQLParserRULE_dateString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4583) + p.CharacterStringLiteral() + } + +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 +} + +// ITimeStringContext is an interface to support dynamic dispatch. +type ITimeStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharacterStringLiteral() ICharacterStringLiteralContext + + // IsTimeStringContext differentiates from other interfaces. + IsTimeStringContext() +} + +type TimeStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTimeStringContext() *TimeStringContext { + var p = new(TimeStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeString + return p +} + +func InitEmptyTimeStringContext(p *TimeStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_timeString +} + +func (*TimeStringContext) IsTimeStringContext() {} + +func NewTimeStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TimeStringContext { + var p = new(TimeStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_timeString + + return p +} + +func (s *TimeStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *TimeStringContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *TimeStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TimeStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TimeStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterTimeString(s) + } +} + +func (s *TimeStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitTimeString(s) + } +} + +func (p *GQLParser) TimeString() (localctx ITimeStringContext) { + localctx = NewTimeStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1132, GQLParserRULE_timeString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4585) + p.CharacterStringLiteral() + } + +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 +} + +// IDatetimeStringContext is an interface to support dynamic dispatch. +type IDatetimeStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharacterStringLiteral() ICharacterStringLiteralContext + + // IsDatetimeStringContext differentiates from other interfaces. + IsDatetimeStringContext() +} + +type DatetimeStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatetimeStringContext() *DatetimeStringContext { + var p = new(DatetimeStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeString + return p +} + +func InitEmptyDatetimeStringContext(p *DatetimeStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_datetimeString +} + +func (*DatetimeStringContext) IsDatetimeStringContext() {} + +func NewDatetimeStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DatetimeStringContext { + var p = new(DatetimeStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_datetimeString + + return p +} + +func (s *DatetimeStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *DatetimeStringContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *DatetimeStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DatetimeStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DatetimeStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDatetimeString(s) + } +} + +func (s *DatetimeStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDatetimeString(s) + } +} + +func (p *GQLParser) DatetimeString() (localctx IDatetimeStringContext) { + localctx = NewDatetimeStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1134, GQLParserRULE_datetimeString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4587) + p.CharacterStringLiteral() + } + +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 +} + +// IDurationLiteralContext is an interface to support dynamic dispatch. +type IDurationLiteralContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + DURATION() antlr.TerminalNode + DurationString() IDurationStringContext + + // IsDurationLiteralContext differentiates from other interfaces. + IsDurationLiteralContext() +} + +type DurationLiteralContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationLiteralContext() *DurationLiteralContext { + var p = new(DurationLiteralContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationLiteral + return p +} + +func InitEmptyDurationLiteralContext(p *DurationLiteralContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationLiteral +} + +func (*DurationLiteralContext) IsDurationLiteralContext() {} + +func NewDurationLiteralContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationLiteralContext { + var p = new(DurationLiteralContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationLiteral + + return p +} + +func (s *DurationLiteralContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationLiteralContext) DURATION() antlr.TerminalNode { + return s.GetToken(GQLParserDURATION, 0) +} + +func (s *DurationLiteralContext) DurationString() IDurationStringContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDurationStringContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IDurationStringContext) +} + +func (s *DurationLiteralContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationLiteralContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationLiteralContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationLiteral(s) + } +} + +func (s *DurationLiteralContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationLiteral(s) + } +} + +func (p *GQLParser) DurationLiteral() (localctx IDurationLiteralContext) { + localctx = NewDurationLiteralContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1136, GQLParserRULE_durationLiteral) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4589) + p.Match(GQLParserDURATION) + if p.HasError() { + // Recognition error - abort rule + goto errorExit + } + } + { + p.SetState(4590) + p.DurationString() + } + +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 +} + +// IDurationStringContext is an interface to support dynamic dispatch. +type IDurationStringContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + CharacterStringLiteral() ICharacterStringLiteralContext + + // IsDurationStringContext differentiates from other interfaces. + IsDurationStringContext() +} + +type DurationStringContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDurationStringContext() *DurationStringContext { + var p = new(DurationStringContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationString + return p +} + +func InitEmptyDurationStringContext(p *DurationStringContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_durationString +} + +func (*DurationStringContext) IsDurationStringContext() {} + +func NewDurationStringContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *DurationStringContext { + var p = new(DurationStringContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_durationString + + return p +} + +func (s *DurationStringContext) GetParser() antlr.Parser { return s.parser } + +func (s *DurationStringContext) CharacterStringLiteral() ICharacterStringLiteralContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICharacterStringLiteralContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ICharacterStringLiteralContext) +} + +func (s *DurationStringContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *DurationStringContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *DurationStringContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterDurationString(s) + } +} + +func (s *DurationStringContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitDurationString(s) + } +} + +func (p *GQLParser) DurationString() (localctx IDurationStringContext) { + localctx = NewDurationStringContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1138, GQLParserRULE_durationString) + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4592) + p.CharacterStringLiteral() + } + +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 +} + +// INodeSynonymContext is an interface to support dynamic dispatch. +type INodeSynonymContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + NODE() antlr.TerminalNode + VERTEX() antlr.TerminalNode + + // IsNodeSynonymContext differentiates from other interfaces. + IsNodeSynonymContext() +} + +type NodeSynonymContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNodeSynonymContext() *NodeSynonymContext { + var p = new(NodeSynonymContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeSynonym + return p +} + +func InitEmptyNodeSynonymContext(p *NodeSynonymContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nodeSynonym +} + +func (*NodeSynonymContext) IsNodeSynonymContext() {} + +func NewNodeSynonymContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NodeSynonymContext { + var p = new(NodeSynonymContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nodeSynonym + + return p +} + +func (s *NodeSynonymContext) GetParser() antlr.Parser { return s.parser } + +func (s *NodeSynonymContext) NODE() antlr.TerminalNode { + return s.GetToken(GQLParserNODE, 0) +} + +func (s *NodeSynonymContext) VERTEX() antlr.TerminalNode { + return s.GetToken(GQLParserVERTEX, 0) +} + +func (s *NodeSynonymContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NodeSynonymContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NodeSynonymContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNodeSynonym(s) + } +} + +func (s *NodeSynonymContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNodeSynonym(s) + } +} + +func (p *GQLParser) NodeSynonym() (localctx INodeSynonymContext) { + localctx = NewNodeSynonymContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1140, GQLParserRULE_nodeSynonym) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4594) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserNODE || _la == GQLParserVERTEX) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IEdgesSynonymContext is an interface to support dynamic dispatch. +type IEdgesSynonymContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EDGES() antlr.TerminalNode + RELATIONSHIPS() antlr.TerminalNode + + // IsEdgesSynonymContext differentiates from other interfaces. + IsEdgesSynonymContext() +} + +type EdgesSynonymContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgesSynonymContext() *EdgesSynonymContext { + var p = new(EdgesSynonymContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgesSynonym + return p +} + +func InitEmptyEdgesSynonymContext(p *EdgesSynonymContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgesSynonym +} + +func (*EdgesSynonymContext) IsEdgesSynonymContext() {} + +func NewEdgesSynonymContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgesSynonymContext { + var p = new(EdgesSynonymContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgesSynonym + + return p +} + +func (s *EdgesSynonymContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgesSynonymContext) EDGES() antlr.TerminalNode { + return s.GetToken(GQLParserEDGES, 0) +} + +func (s *EdgesSynonymContext) RELATIONSHIPS() antlr.TerminalNode { + return s.GetToken(GQLParserRELATIONSHIPS, 0) +} + +func (s *EdgesSynonymContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgesSynonymContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgesSynonymContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgesSynonym(s) + } +} + +func (s *EdgesSynonymContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgesSynonym(s) + } +} + +func (p *GQLParser) EdgesSynonym() (localctx IEdgesSynonymContext) { + localctx = NewEdgesSynonymContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1142, GQLParserRULE_edgesSynonym) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4596) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserEDGES || _la == GQLParserRELATIONSHIPS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// IEdgeSynonymContext is an interface to support dynamic dispatch. +type IEdgeSynonymContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + EDGE() antlr.TerminalNode + RELATIONSHIP() antlr.TerminalNode + + // IsEdgeSynonymContext differentiates from other interfaces. + IsEdgeSynonymContext() +} + +type EdgeSynonymContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyEdgeSynonymContext() *EdgeSynonymContext { + var p = new(EdgeSynonymContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeSynonym + return p +} + +func InitEmptyEdgeSynonymContext(p *EdgeSynonymContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_edgeSynonym +} + +func (*EdgeSynonymContext) IsEdgeSynonymContext() {} + +func NewEdgeSynonymContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *EdgeSynonymContext { + var p = new(EdgeSynonymContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_edgeSynonym + + return p +} + +func (s *EdgeSynonymContext) GetParser() antlr.Parser { return s.parser } + +func (s *EdgeSynonymContext) EDGE() antlr.TerminalNode { + return s.GetToken(GQLParserEDGE, 0) +} + +func (s *EdgeSynonymContext) RELATIONSHIP() antlr.TerminalNode { + return s.GetToken(GQLParserRELATIONSHIP, 0) +} + +func (s *EdgeSynonymContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *EdgeSynonymContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *EdgeSynonymContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterEdgeSynonym(s) + } +} + +func (s *EdgeSynonymContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitEdgeSynonym(s) + } +} + +func (p *GQLParser) EdgeSynonym() (localctx IEdgeSynonymContext) { + localctx = NewEdgeSynonymContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1144, GQLParserRULE_edgeSynonym) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4598) + _la = p.GetTokenStream().LA(1) + + if !(_la == GQLParserEDGE || _la == GQLParserRELATIONSHIP) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +// INonReservedWordsContext is an interface to support dynamic dispatch. +type INonReservedWordsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Getter signatures + ACYCLIC() antlr.TerminalNode + BINDING() antlr.TerminalNode + BINDINGS() antlr.TerminalNode + CONNECTING() antlr.TerminalNode + DESTINATION() antlr.TerminalNode + DIFFERENT() antlr.TerminalNode + DIRECTED() antlr.TerminalNode + EDGE() antlr.TerminalNode + EDGES() antlr.TerminalNode + ELEMENT() antlr.TerminalNode + ELEMENTS() antlr.TerminalNode + FIRST() antlr.TerminalNode + GRAPH() antlr.TerminalNode + GROUPS() antlr.TerminalNode + KEEP() antlr.TerminalNode + LABEL() antlr.TerminalNode + LABELED() antlr.TerminalNode + LABELS() antlr.TerminalNode + LAST() antlr.TerminalNode + NFC() antlr.TerminalNode + NFD() antlr.TerminalNode + NFKC() antlr.TerminalNode + NFKD() antlr.TerminalNode + NO() antlr.TerminalNode + NODE() antlr.TerminalNode + NORMALIZED() antlr.TerminalNode + ONLY() antlr.TerminalNode + ORDINALITY() antlr.TerminalNode + PROPERTY() antlr.TerminalNode + READ() antlr.TerminalNode + RELATIONSHIP() antlr.TerminalNode + RELATIONSHIPS() antlr.TerminalNode + REPEATABLE() antlr.TerminalNode + SHORTEST() antlr.TerminalNode + SIMPLE() antlr.TerminalNode + SOURCE() antlr.TerminalNode + TABLE() antlr.TerminalNode + TO() antlr.TerminalNode + TRAIL() antlr.TerminalNode + TRANSACTION() antlr.TerminalNode + TYPE() antlr.TerminalNode + UNDIRECTED() antlr.TerminalNode + VERTEX() antlr.TerminalNode + WALK() antlr.TerminalNode + WITHOUT() antlr.TerminalNode + WRITE() antlr.TerminalNode + ZONE() antlr.TerminalNode + + // IsNonReservedWordsContext differentiates from other interfaces. + IsNonReservedWordsContext() +} + +type NonReservedWordsContext struct { + antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNonReservedWordsContext() *NonReservedWordsContext { + var p = new(NonReservedWordsContext) + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonReservedWords + return p +} + +func InitEmptyNonReservedWordsContext(p *NonReservedWordsContext) { + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1) + p.RuleIndex = GQLParserRULE_nonReservedWords +} + +func (*NonReservedWordsContext) IsNonReservedWordsContext() {} + +func NewNonReservedWordsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NonReservedWordsContext { + var p = new(NonReservedWordsContext) + + antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState) + + p.parser = parser + p.RuleIndex = GQLParserRULE_nonReservedWords + + return p +} + +func (s *NonReservedWordsContext) GetParser() antlr.Parser { return s.parser } + +func (s *NonReservedWordsContext) ACYCLIC() antlr.TerminalNode { + return s.GetToken(GQLParserACYCLIC, 0) +} + +func (s *NonReservedWordsContext) BINDING() antlr.TerminalNode { + return s.GetToken(GQLParserBINDING, 0) +} + +func (s *NonReservedWordsContext) BINDINGS() antlr.TerminalNode { + return s.GetToken(GQLParserBINDINGS, 0) +} + +func (s *NonReservedWordsContext) CONNECTING() antlr.TerminalNode { + return s.GetToken(GQLParserCONNECTING, 0) +} + +func (s *NonReservedWordsContext) DESTINATION() antlr.TerminalNode { + return s.GetToken(GQLParserDESTINATION, 0) +} + +func (s *NonReservedWordsContext) DIFFERENT() antlr.TerminalNode { + return s.GetToken(GQLParserDIFFERENT, 0) +} + +func (s *NonReservedWordsContext) DIRECTED() antlr.TerminalNode { + return s.GetToken(GQLParserDIRECTED, 0) +} + +func (s *NonReservedWordsContext) EDGE() antlr.TerminalNode { + return s.GetToken(GQLParserEDGE, 0) +} + +func (s *NonReservedWordsContext) EDGES() antlr.TerminalNode { + return s.GetToken(GQLParserEDGES, 0) +} + +func (s *NonReservedWordsContext) ELEMENT() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENT, 0) +} + +func (s *NonReservedWordsContext) ELEMENTS() antlr.TerminalNode { + return s.GetToken(GQLParserELEMENTS, 0) +} + +func (s *NonReservedWordsContext) FIRST() antlr.TerminalNode { + return s.GetToken(GQLParserFIRST, 0) +} + +func (s *NonReservedWordsContext) GRAPH() antlr.TerminalNode { + return s.GetToken(GQLParserGRAPH, 0) +} + +func (s *NonReservedWordsContext) GROUPS() antlr.TerminalNode { + return s.GetToken(GQLParserGROUPS, 0) +} + +func (s *NonReservedWordsContext) KEEP() antlr.TerminalNode { + return s.GetToken(GQLParserKEEP, 0) +} + +func (s *NonReservedWordsContext) LABEL() antlr.TerminalNode { + return s.GetToken(GQLParserLABEL, 0) +} + +func (s *NonReservedWordsContext) LABELED() antlr.TerminalNode { + return s.GetToken(GQLParserLABELED, 0) +} + +func (s *NonReservedWordsContext) LABELS() antlr.TerminalNode { + return s.GetToken(GQLParserLABELS, 0) +} + +func (s *NonReservedWordsContext) LAST() antlr.TerminalNode { + return s.GetToken(GQLParserLAST, 0) +} + +func (s *NonReservedWordsContext) NFC() antlr.TerminalNode { + return s.GetToken(GQLParserNFC, 0) +} + +func (s *NonReservedWordsContext) NFD() antlr.TerminalNode { + return s.GetToken(GQLParserNFD, 0) +} + +func (s *NonReservedWordsContext) NFKC() antlr.TerminalNode { + return s.GetToken(GQLParserNFKC, 0) +} + +func (s *NonReservedWordsContext) NFKD() antlr.TerminalNode { + return s.GetToken(GQLParserNFKD, 0) +} + +func (s *NonReservedWordsContext) NO() antlr.TerminalNode { + return s.GetToken(GQLParserNO, 0) +} + +func (s *NonReservedWordsContext) NODE() antlr.TerminalNode { + return s.GetToken(GQLParserNODE, 0) +} + +func (s *NonReservedWordsContext) NORMALIZED() antlr.TerminalNode { + return s.GetToken(GQLParserNORMALIZED, 0) +} + +func (s *NonReservedWordsContext) ONLY() antlr.TerminalNode { + return s.GetToken(GQLParserONLY, 0) +} + +func (s *NonReservedWordsContext) ORDINALITY() antlr.TerminalNode { + return s.GetToken(GQLParserORDINALITY, 0) +} + +func (s *NonReservedWordsContext) PROPERTY() antlr.TerminalNode { + return s.GetToken(GQLParserPROPERTY, 0) +} + +func (s *NonReservedWordsContext) READ() antlr.TerminalNode { + return s.GetToken(GQLParserREAD, 0) +} + +func (s *NonReservedWordsContext) RELATIONSHIP() antlr.TerminalNode { + return s.GetToken(GQLParserRELATIONSHIP, 0) +} + +func (s *NonReservedWordsContext) RELATIONSHIPS() antlr.TerminalNode { + return s.GetToken(GQLParserRELATIONSHIPS, 0) +} + +func (s *NonReservedWordsContext) REPEATABLE() antlr.TerminalNode { + return s.GetToken(GQLParserREPEATABLE, 0) +} + +func (s *NonReservedWordsContext) SHORTEST() antlr.TerminalNode { + return s.GetToken(GQLParserSHORTEST, 0) +} + +func (s *NonReservedWordsContext) SIMPLE() antlr.TerminalNode { + return s.GetToken(GQLParserSIMPLE, 0) +} + +func (s *NonReservedWordsContext) SOURCE() antlr.TerminalNode { + return s.GetToken(GQLParserSOURCE, 0) +} + +func (s *NonReservedWordsContext) TABLE() antlr.TerminalNode { + return s.GetToken(GQLParserTABLE, 0) +} + +func (s *NonReservedWordsContext) TO() antlr.TerminalNode { + return s.GetToken(GQLParserTO, 0) +} + +func (s *NonReservedWordsContext) TRAIL() antlr.TerminalNode { + return s.GetToken(GQLParserTRAIL, 0) +} + +func (s *NonReservedWordsContext) TRANSACTION() antlr.TerminalNode { + return s.GetToken(GQLParserTRANSACTION, 0) +} + +func (s *NonReservedWordsContext) TYPE() antlr.TerminalNode { + return s.GetToken(GQLParserTYPE, 0) +} + +func (s *NonReservedWordsContext) UNDIRECTED() antlr.TerminalNode { + return s.GetToken(GQLParserUNDIRECTED, 0) +} + +func (s *NonReservedWordsContext) VERTEX() antlr.TerminalNode { + return s.GetToken(GQLParserVERTEX, 0) +} + +func (s *NonReservedWordsContext) WALK() antlr.TerminalNode { + return s.GetToken(GQLParserWALK, 0) +} + +func (s *NonReservedWordsContext) WITHOUT() antlr.TerminalNode { + return s.GetToken(GQLParserWITHOUT, 0) +} + +func (s *NonReservedWordsContext) WRITE() antlr.TerminalNode { + return s.GetToken(GQLParserWRITE, 0) +} + +func (s *NonReservedWordsContext) ZONE() antlr.TerminalNode { + return s.GetToken(GQLParserZONE, 0) +} + +func (s *NonReservedWordsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NonReservedWordsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *NonReservedWordsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.EnterNonReservedWords(s) + } +} + +func (s *NonReservedWordsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(GQLListener); ok { + listenerT.ExitNonReservedWords(s) + } +} + +func (p *GQLParser) NonReservedWords() (localctx INonReservedWordsContext) { + localctx = NewNonReservedWordsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 1146, GQLParserRULE_nonReservedWords) + var _la int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(4600) + _la = p.GetTokenStream().LA(1) + + if !((int64((_la-277)) & ^0x3f) == 0 && ((int64(1)<<(_la-277))&140737488355327) != 0) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + +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 +} + +func (p *GQLParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { + switch ruleIndex { + case 92: + var t *CompositeQueryExpressionContext = nil + if localctx != nil { + t = localctx.(*CompositeQueryExpressionContext) + } + return p.CompositeQueryExpression_Sempred(t, predIndex) + + case 214: + var t *LabelExpressionContext = nil + if localctx != nil { + t = localctx.(*LabelExpressionContext) + } + return p.LabelExpression_Sempred(t, predIndex) + + case 233: + var t *SimplifiedTermContext = nil + if localctx != nil { + t = localctx.(*SimplifiedTermContext) + } + return p.SimplifiedTerm_Sempred(t, predIndex) + + case 234: + var t *SimplifiedFactorLowContext = nil + if localctx != nil { + t = localctx.(*SimplifiedFactorLowContext) + } + return p.SimplifiedFactorLow_Sempred(t, predIndex) + + case 337: + var t *ValueTypeContext = nil + if localctx != nil { + t = localctx.(*ValueTypeContext) + } + return p.ValueType_Sempred(t, predIndex) + + case 409: + var t *ValueExpressionContext = nil + if localctx != nil { + t = localctx.(*ValueExpressionContext) + } + return p.ValueExpression_Sempred(t, predIndex) + + case 421: + var t *ValueExpressionPrimaryContext = nil + if localctx != nil { + t = localctx.(*ValueExpressionPrimaryContext) + } + return p.ValueExpressionPrimary_Sempred(t, predIndex) + + case 476: + var t *NumericValueExpressionContext = nil + if localctx != nil { + t = localctx.(*NumericValueExpressionContext) + } + return p.NumericValueExpression_Sempred(t, predIndex) + + default: + panic("No predicate with index: " + fmt.Sprint(ruleIndex)) + } +} + +func (p *GQLParser) CompositeQueryExpression_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 0: + return p.Precpred(p.GetParserRuleContext(), 2) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) LabelExpression_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 1: + return p.Precpred(p.GetParserRuleContext(), 5) + + case 2: + return p.Precpred(p.GetParserRuleContext(), 4) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) SimplifiedTerm_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 3: + return p.Precpred(p.GetParserRuleContext(), 1) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) SimplifiedFactorLow_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 4: + return p.Precpred(p.GetParserRuleContext(), 1) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) ValueType_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 5: + return p.Precpred(p.GetParserRuleContext(), 1) + + case 6: + return p.Precpred(p.GetParserRuleContext(), 7) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) ValueExpression_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 7: + return p.Precpred(p.GetParserRuleContext(), 14) + + case 8: + return p.Precpred(p.GetParserRuleContext(), 13) + + case 9: + return p.Precpred(p.GetParserRuleContext(), 12) + + case 10: + return p.Precpred(p.GetParserRuleContext(), 11) + + case 11: + return p.Precpred(p.GetParserRuleContext(), 6) + + case 12: + return p.Precpred(p.GetParserRuleContext(), 5) + + case 13: + return p.Precpred(p.GetParserRuleContext(), 9) + + case 14: + return p.Precpred(p.GetParserRuleContext(), 7) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) ValueExpressionPrimary_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 15: + return p.Precpred(p.GetParserRuleContext(), 7) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + +func (p *GQLParser) NumericValueExpression_Sempred(localctx antlr.RuleContext, predIndex int) bool { + switch predIndex { + case 16: + return p.Precpred(p.GetParserRuleContext(), 4) + + case 17: + return p.Precpred(p.GetParserRuleContext(), 3) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} diff --git a/endpoints/gql/test/gql_test.go b/endpoints/gql/test/gql_test.go new file mode 100644 index 00000000..394fb40f --- /dev/null +++ b/endpoints/gql/test/gql_test.go @@ -0,0 +1,161 @@ +package test + +import ( + "fmt" + "testing" + + "google.golang.org/protobuf/proto" + + "github.com/bmeg/grip/gql/compiler" + "github.com/bmeg/grip/gripql" +) + +func QueryCompare(a *gripql.Query, b *gripql.Query) bool { + + if len(a.Statements) != len(b.Statements) { + return false + } + for i := range a.Statements { + x := a.Statements[i] + y := b.Statements[i] + + if !proto.Equal(x, y) { + fmt.Printf("stmt[%d]: %#v != %#v\n", i, x, y) + return false + } + } + return true +} + +type testPair struct { + gql string + gripql *gripql.Query + expectErr bool +} + +var pairs = []testPair{ + { + "MATCH (n:Person {name: 'Bob'}) RETURN n", + gripql.NewQuery().V().HasLabel("Person").Has(gripql.Eq("name", "Bob")).As("n").Render("$n"), + false, + }, { + "MATCH (n)-[:FRIEND]->(friend) RETURN friend", + gripql.NewQuery().V().As("n").Out("FRIEND").As("friend").Render("$friend"), + false, + }, { + "MATCH (n)<-[:FRIEND]-(friend) RETURN friend", + gripql.NewQuery().V().As("n").In("FRIEND").As("friend").Render("$friend"), + false, + }, { + "MATCH (n)-[:FRIEND]-(friend) RETURN friend", + gripql.NewQuery().V().As("n").Both("FRIEND").As("friend").Render("$friend"), + false, + }, { + "MATCH (n:Person {name: 'Bob'}) RETURN n.name", + gripql.NewQuery().V().HasLabel("Person").Has(gripql.Eq("name", "Bob")).As("n").Render(map[string]any{"n.name": "$n.name"}), + false, + }, { + "MATCH (n:Person {name: 'Bob'}) RETURN n.name AS personName", + gripql.NewQuery().V().HasLabel("Person").Has(gripql.Eq("name", "Bob")).As("n").Render(map[string]any{"personName": "$n.name"}), + false, + }, { + "MATCH (n)-[:FRIEND]->(friend) RETURN n, friend.name AS friendName", + gripql.NewQuery().V().As("n").Out("FRIEND").As("friend").Render(map[string]any{"n": "$n", "friendName": "$friend.name"}), + false, + }, { + "MATCH (n:Person) WHERE n.name='Bob' RETURN n", + gripql.NewQuery().V().HasLabel("Person").As("n").Has(gripql.Eq("name", "Bob")).Render("$n"), + false, + }, { + "MATCH (n)-[:FRIEND]->(friend) WHERE friend.age>=30 RETURN friend", + gripql.NewQuery().V().As("n").Out("FRIEND").As("friend").Has(gripql.Gte("age", int64(30))).Render("$friend"), + false, + }, { + "MATCH (n:Person) RETURN n ORDER BY n.name", + gripql.NewQuery().V().HasLabel("Person").As("n").Sort([]*gripql.SortField{{Field: "name", Descending: false}}).Render("$n"), + false, + }, { + "MATCH (n:Person) RETURN n ORDER BY n.name DESC", + gripql.NewQuery().V().HasLabel("Person").As("n").Sort([]*gripql.SortField{{Field: "name", Descending: true}}).Render("$n"), + false, + }, { + "MATCH (n)-[:FRIEND]->(friend) RETURN friend ORDER BY friend.age DESC, friend.name ASC", + gripql.NewQuery().V().As("n").Out("FRIEND").As("friend").Sort([]*gripql.SortField{{Field: "age", Descending: true}, {Field: "name", Descending: false}}).Render("$friend"), + false, + }, { + "MATCH (n:Person) RETURN n SKIP 5", + gripql.NewQuery().V().HasLabel("Person").As("n").Render("$n").Skip(5), + false, + }, { + "MATCH (n:Person) RETURN n LIMIT 10", + gripql.NewQuery().V().HasLabel("Person").As("n").Render("$n").Limit(10), + false, + }, { + "MATCH (n:Person) RETURN n SKIP 5 LIMIT 10", + gripql.NewQuery().V().HasLabel("Person").As("n").Render("$n").Skip(5).Limit(10), + false, + }, { + "MATCH (n)-[:FRIEND]->(friend) WHERE n.name='John' RETURN friend", + nil, + true, + }, { + "MATCH (n)-[:FRIEND]->(friend) RETURN friend ORDER BY n.name", + nil, + true, + }, { + "MATCH (n:Person) RETURN n LIMIT foo", + nil, + true, + }, { + "MATCH (n:Person) RETURN count(n)", + nil, + true, + }, { + `MATCH (n {name: 'John'})-[:FRIEND]-(friend) + WITH n, count(friend) AS friendsCount + WHERE friendsCount > 3 + RETURN n, friendsCount`, + nil, + true, + }, { + `MATCH (n {name: 'John'})-[:FRIEND]-(friend) + WITH n, count(friend) AS friendsCount + SET n.friendsCount = friendsCount + RETURN n.friendsCount`, + nil, + true, + }, { + `MATCH (user:User {name: 'Adam'})-[r1:FRIEND]-()-[r2:FRIEND]-(friend_of_a_friend) + RETURN friend_of_a_friend.name AS fofName`, + gripql.NewQuery().V().HasLabel("User").Has(gripql.Eq("name", "Adam")).As("user").Both("FRIEND").Both("FRIEND").As("friend_of_a_friend").Render(map[string]any{"fofName": "$friend_of_a_friend.name"}), + false, + }, { + `MATCH (me)-[:KNOWS*1..2]-(remote_friend) + WHERE me.name = 'Filipa' + RETURN remote_friend.name`, + nil, + true, + }, +} + +func TestMatch1(t *testing.T) { + + for i := range pairs { + expected := pairs[i].gripql + gqlText := pairs[i].gql + compiled, err := compiler.RunParser(gqlText) + if pairs[i].expectErr { + if err == nil { + t.Errorf("Expected compile error for query: %s", gqlText) + } + continue + } + if err != nil { + t.Errorf("Unexpected compile error for query %q: %v", gqlText, err) + continue + } + if !QueryCompare(compiled, expected) { + t.Errorf("Compiled query %s results in\n %s !=\n %s", gqlText, compiled.String(), expected.String()) + } + } +} diff --git a/go.mod b/go.mod index 807fa9dd..47d82b09 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/bmeg/grip -go 1.24.2 +go 1.26.1 require ( github.com/IBM/sarama v1.45.1 @@ -13,7 +13,7 @@ require ( github.com/bmeg/jsonschema/v6 v6.0.4 github.com/bmeg/jsonschemagraph v0.0.4-0.20251017205345-236d2de9887c github.com/boltdb/bolt v1.3.1 - github.com/bytedance/sonic v1.14.0 + github.com/bytedance/sonic v1.15.0 github.com/casbin/casbin/v2 v2.97.0 github.com/cockroachdb/pebble v1.1.5 github.com/davecgh/go-spew v1.1.1 @@ -62,12 +62,14 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect github.com/DataDog/zstd v1.5.7 // indirect + github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bytedance/sonic/loader v0.3.0 // indirect + github.com/bytedance/gopkg v0.1.3 // indirect + github.com/bytedance/sonic/loader v0.5.0 // indirect github.com/casbin/govaluate v1.2.0 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudwego/base64x v0.1.5 // indirect + github.com/cloudwego/base64x v0.1.6 // indirect github.com/cockroachdb/errors v1.11.3 // indirect github.com/cockroachdb/fifo v0.0.0-20240616162244-4768e80dfb9a // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect @@ -105,7 +107,7 @@ require ( github.com/jcmturner/rpc/v2 v2.0.3 // indirect github.com/jessevdk/go-flags v1.6.1 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect diff --git a/go.sum b/go.sum index 372d7c13..6fb34f6e 100644 --- a/go.sum +++ b/go.sum @@ -31,6 +31,8 @@ github.com/akrylysov/pogreb v0.10.2 h1:e6PxmeyEhWyi2AKOBIJzAEi4HkiC+lKyCocRGlnDi github.com/akrylysov/pogreb v0.10.2/go.mod h1:pNs6QmpQ1UlTJKDezuRWmaqkgUE2TuU0YTWyqJZ7+lI= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves= github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= +github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -47,11 +49,17 @@ github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= +github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= github.com/bytedance/sonic v1.14.0 h1:/OfKt8HFw0kh2rj8N0F6C/qPGRESq0BbaNZgcNXXzQQ= github.com/bytedance/sonic v1.14.0/go.mod h1:WoEbx8WTcFJfzCe0hbmyTGrfjt8PzNEBdxlNUO24NhA= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.3.0 h1:dskwH8edlzNMctoruo8FPTJDF3vLtDT0sXZwvZJyqeA= github.com/bytedance/sonic/loader v0.3.0/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE= +github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/casbin/casbin/v2 v2.97.0 h1:FFHIzY+6fLIcoAB/DKcG5xvscUo9XqRpBniRYhlPWkg= github.com/casbin/casbin/v2 v2.97.0/go.mod h1:jX8uoN4veP85O/n2674r2qtfSXI6myvxW85f6TH50fw= github.com/casbin/govaluate v1.1.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= @@ -65,6 +73,8 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= +github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= @@ -253,6 +263,8 @@ github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02 github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= github.com/knakk/rdf v0.0.0-20190304171630-8521bf4c5042 h1:Vzdm5hdlLdpJOKK+hKtkV5u7xGZmNW6aUBjGcTfwx84= github.com/knakk/rdf v0.0.0-20190304171630-8521bf4c5042/go.mod h1:fYE0718xXI13XMYLc6iHtvXudfyCGMsZ9hxSM1Ommpg= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= @@ -384,6 +396,7 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -392,6 +405,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 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/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= diff --git a/server/server.go b/server/server.go index d35283ff..3169cf86 100644 --- a/server/server.go +++ b/server/server.go @@ -15,6 +15,7 @@ import ( "github.com/IBM/sarama" "github.com/bmeg/grip/config" + "github.com/bmeg/grip/endpoints/gql" "github.com/bmeg/grip/gdbi" "github.com/bmeg/grip/gripql" "github.com/bmeg/grip/jobstorage" @@ -310,7 +311,17 @@ func (server *GripServer) Serve(pctx context.Context) error { } } - // Setup web ui handler + gqlHandler, err := gql.NewHTTPHandler( + gripql.WrapClient(gripql.NewQueryDirectClient( + server, + gripql.DirectUnaryInterceptor(unaryAuthInt), + gripql.DirectStreamInterceptor(streamAuthInt), + ), nil, nil, nil)) + if err != nil { + return fmt.Errorf("setting up GQL handler: %v", err) + } + mux.Handle("/gql/", gqlHandler) + dashmux := http.NewServeMux() if server.conf.Server.ContentDir != "" { httpDir := http.Dir(server.conf.Server.ContentDir) diff --git a/test/main_test.go b/test/main_test.go index a725f5fb..20f10018 100644 --- a/test/main_test.go +++ b/test/main_test.go @@ -6,6 +6,8 @@ import ( "os" "os/exec" "sort" + "strconv" + "strings" "testing" "github.com/bmeg/grip/config" @@ -22,6 +24,7 @@ import ( "github.com/bmeg/grip/mongo" "github.com/bmeg/grip/psql" "github.com/bmeg/grip/util" + "github.com/jmoiron/sqlx" _ "github.com/lib/pq" // import so postgres will register as a sql driver ) @@ -62,6 +65,102 @@ func setupSQLGraph() error { return cmd.Run() } +func parsePostgresDSN(dsn string) map[string]string { + out := map[string]string{} + for _, part := range strings.Fields(dsn) { + pair := strings.SplitN(part, "=", 2) + if len(pair) == 2 { + out[strings.TrimSpace(pair[0])] = strings.TrimSpace(pair[1]) + } + } + return out +} + +func postgresCleanupConnection(conf config.DriverConfig) (string, []string, error) { + dbNames := []string{} + host := "localhost" + port := uint(5432) + user := "postgres" + password := "" + sslMode := "disable" + + if conf.PSQL != nil { + host = conf.PSQL.Host + port = conf.PSQL.Port + user = conf.PSQL.User + password = conf.PSQL.Password + sslMode = conf.PSQL.SSLMode + if conf.PSQL.DBName != "" { + dbNames = append(dbNames, conf.PSQL.DBName) + } + } + + if conf.ExistingSQL != nil { + params := parsePostgresDSN(conf.ExistingSQL.DataSourceName) + if v := params["host"]; v != "" { + host = v + } + if v := params["port"]; v != "" { + if p, err := strconv.ParseUint(v, 10, 32); err == nil { + port = uint(p) + } + } + if v := params["user"]; v != "" { + user = v + } + if v := params["password"]; v != "" { + password = v + } + if v := params["sslmode"]; v != "" { + sslMode = v + } + if v := params["dbname"]; v != "" { + dbNames = append(dbNames, v) + } + } + + if len(dbNames) == 0 { + return "", nil, nil + } + + uniq := map[string]bool{} + filtered := []string{} + for _, name := range dbNames { + if name == "" || uniq[name] { + continue + } + uniq[name] = true + filtered = append(filtered, name) + } + + connStr, err := util.BuildPostgresConnStr(host, port, user, password, "postgres", sslMode) + if err != nil { + return "", nil, err + } + return connStr, filtered, nil +} + +func cleanupPostgresDatabases(conf config.DriverConfig) error { + connStr, dbNames, err := postgresCleanupConnection(conf) + if err != nil || connStr == "" || len(dbNames) == 0 { + return err + } + + db, err := sqlx.Connect("postgres", connStr) + if err != nil { + return err + } + defer db.Close() + + for _, name := range dbNames { + safeName := strings.ReplaceAll(name, `"`, `""`) + _, _ = db.Exec("SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = $1 AND pid <> pg_backend_pid()", name) + _, _ = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS \"%s\"", safeName)) + } + + return nil +} + func TestMain(m *testing.M) { flag.StringVar(&configFile, "config", configFile, "config file to use for tests") flag.Parse() @@ -174,6 +273,18 @@ func TestMain(m *testing.M) { if err != nil { fmt.Printf("Init error: %s\n", err) } + defer func() { + if gdb != nil { + if err := gdb.Close(); err != nil { + fmt.Printf("cleanup warning: failed to close graph db: %v\n", err) + } + } + if dbconfig.PSQL != nil || dbconfig.ExistingSQL != nil { + if err := cleanupPostgresDatabases(dbconfig); err != nil { + fmt.Printf("cleanup warning: failed to clean postgres databases: %v\n", err) + } + } + }() err = gdb.AddGraph("test-graph") if err != nil { diff --git a/test/server/gql_endpoint_test.go b/test/server/gql_endpoint_test.go new file mode 100644 index 00000000..7f611b92 --- /dev/null +++ b/test/server/gql_endpoint_test.go @@ -0,0 +1,335 @@ +package server + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "os" + "strings" + "testing" + "time" + + "github.com/bmeg/grip/config" + "github.com/bmeg/grip/gripql" + "github.com/bmeg/grip/server" + "github.com/bmeg/grip/util/duration" + "github.com/bmeg/grip/util/rpc" + "google.golang.org/protobuf/types/known/structpb" +) + +type gqlQueryCase struct { + name string + query string + expectStatus int + expectRows int + expectContains []string + expectAbsent []string + expectMinLines int + validate func(t *testing.T, rows []map[string]any, body string) +} + +func TestGQLEndpointRunner(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + conf := config.DefaultConfig() + conf.AddBadgerDefault() + config.TestifyConfig(conf) + + t.Cleanup(func() { + _ = os.RemoveAll(conf.Server.WorkDir) + if conf.Default != "" { + if d, ok := conf.Drivers[conf.Default]; ok && d.Badger != nil { + _ = os.RemoveAll(*d.Badger) + } + } + }) + + srv, err := server.NewGripServer(conf, "./", nil) + if err != nil { + t.Fatalf("failed to create server: %v", err) + } + go srv.Serve(ctx) + + if err := waitForHTTP(conf.Server.HTTPPort, 10*time.Second); err != nil { + t.Fatalf("server did not become ready: %v", err) + } + + cli, err := gripql.Connect(rpc.Config{ServerAddress: conf.Server.RPCAddress(), Timeout: duration.Duration(5 * time.Second)}, true) + if err != nil { + t.Fatalf("failed to create GRPC client: %v", err) + } + + graph := "gql-test" + if err := seedGQLGraph(cli, graph); err != nil { + t.Fatalf("failed to seed graph: %v", err) + } + + cases := []gqlQueryCase{ + { + name: "match by property", + query: "MATCH (n:Person {name: 'Bob'}) RETURN n", + expectStatus: http.StatusOK, + expectRows: 1, + expectContains: []string{"Bob"}, + expectMinLines: 1, + }, + { + name: "edge traversal projection", + query: "MATCH (n:Person {name: 'Bob'})-[:FRIEND]->(friend) RETURN friend.name AS friendName", + expectStatus: http.StatusOK, + expectRows: 1, + expectContains: []string{"Alice"}, + expectAbsent: []string{"Carol"}, + expectMinLines: 1, + }, + { + name: "limit establishes deterministic row count", + query: "MATCH (n:Person) RETURN n LIMIT 2", + expectStatus: http.StatusOK, + expectRows: 2, + expectMinLines: 2, + }, + { + name: "multi hop traversal reaches friend of friend", + query: "MATCH (n:Person {name: 'Bob'})-[:FRIEND]->()-[:FRIEND]->(fof) RETURN fof.name AS fofName", + expectStatus: http.StatusOK, + expectRows: 1, + expectContains: []string{"Carol"}, + expectAbsent: []string{"Alice", "Bob"}, + expectMinLines: 1, + }, + { + name: "no matches returns empty body", + query: "MATCH (n:Person {name: 'Nobody'}) RETURN n", + expectStatus: http.StatusOK, + expectRows: 0, + expectAbsent: []string{"Bob", "Alice", "Carol"}, + expectMinLines: 0, + }, + { + name: "aggregation query currently unsupported", + query: "MATCH (n:Person) RETURN count(n)", + expectStatus: http.StatusInternalServerError, + expectRows: -1, + expectContains: []string{"failed to parse query"}, + expectMinLines: 1, + }, + } + + for _, tc := range cases { + tc := tc + t.Run(tc.name, func(t *testing.T) { + resp, body, err := postGQLQuery(conf.Server.HTTPPort, graph, tc.query) + if err != nil { + t.Fatalf("request failed: %v", err) + } + + expectedStatus := tc.expectStatus + if expectedStatus == 0 { + expectedStatus = http.StatusOK + } + if resp.StatusCode != expectedStatus { + t.Fatalf("unexpected status code %d: %s", resp.StatusCode, body) + } + + lines := splitNonEmptyLines(body) + if tc.expectRows >= 0 && len(lines) != tc.expectRows { + t.Fatalf("expected exactly %d result line(s), got %d; body: %s", tc.expectRows, len(lines), body) + } + if len(lines) < tc.expectMinLines { + t.Fatalf("expected at least %d result line(s), got %d; body: %s", tc.expectMinLines, len(lines), body) + } + + rows := []map[string]any{} + if resp.StatusCode == http.StatusOK { + rows, err = parseResponseRows(lines) + if err != nil { + t.Fatalf("response parse failure: %v", err) + } + } + + for _, expected := range tc.expectContains { + if !strings.Contains(body, expected) { + t.Fatalf("response body missing expected token %q; body: %s", expected, body) + } + } + + for _, unexpected := range tc.expectAbsent { + if strings.Contains(body, unexpected) { + t.Fatalf("response body unexpectedly contains %q; body: %s", unexpected, body) + } + } + + if tc.validate != nil { + tc.validate(t, rows, body) + } + }) + } +} + +func TestGQLEndpointRejectsMalformedJSON(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + conf := config.DefaultConfig() + conf.AddBadgerDefault() + config.TestifyConfig(conf) + + t.Cleanup(func() { + _ = os.RemoveAll(conf.Server.WorkDir) + if conf.Default != "" { + if d, ok := conf.Drivers[conf.Default]; ok && d.Badger != nil { + _ = os.RemoveAll(*d.Badger) + } + } + }) + + srv, err := server.NewGripServer(conf, "./", nil) + if err != nil { + t.Fatalf("failed to create server: %v", err) + } + go srv.Serve(ctx) + + if err := waitForHTTP(conf.Server.HTTPPort, 10*time.Second); err != nil { + t.Fatalf("server did not become ready: %v", err) + } + + url := fmt.Sprintf("http://localhost:%s/gql/%s", conf.Server.HTTPPort, "gql-test") + req, err := http.NewRequest("POST", url, bytes.NewBufferString("{\"query\":")) + if err != nil { + t.Fatalf("failed to build request: %v", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := (&http.Client{Timeout: 5 * time.Second}).Do(req) + if err != nil { + t.Fatalf("request failed: %v", err) + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + t.Fatalf("failed to read response body: %v", err) + } + + if resp.StatusCode != http.StatusBadRequest { + t.Fatalf("unexpected status code %d: %s", resp.StatusCode, string(body)) + } + + if !strings.Contains(string(body), "failed to parse request body as JSON") { + t.Fatalf("unexpected response body: %s", string(body)) + } +} + +func waitForHTTP(port string, timeout time.Duration) error { + deadline := time.Now().Add(timeout) + url := fmt.Sprintf("http://localhost:%s/v1/graph", port) + + for time.Now().Before(deadline) { + resp, err := http.Get(url) + if err == nil { + resp.Body.Close() + return nil + } + time.Sleep(100 * time.Millisecond) + } + + return fmt.Errorf("timed out waiting for %s", url) +} + +func seedGQLGraph(cli gripql.Client, graph string) error { + if err := cli.AddGraph(graph); err != nil { + return err + } + + bobData, err := structpb.NewStruct(map[string]any{"name": "Bob", "age": 41}) + if err != nil { + return err + } + aliceData, err := structpb.NewStruct(map[string]any{"name": "Alice", "age": 33}) + if err != nil { + return err + } + carolData, err := structpb.NewStruct(map[string]any{"name": "Carol", "age": 29}) + if err != nil { + return err + } + + if err := cli.AddVertex(graph, &gripql.Vertex{Id: "bob", Label: "Person", Data: bobData}); err != nil { + return err + } + if err := cli.AddVertex(graph, &gripql.Vertex{Id: "alice", Label: "Person", Data: aliceData}); err != nil { + return err + } + if err := cli.AddVertex(graph, &gripql.Vertex{Id: "carol", Label: "Person", Data: carolData}); err != nil { + return err + } + + if err := cli.AddEdge(graph, &gripql.Edge{Id: "e1", From: "bob", To: "alice", Label: "FRIEND"}); err != nil { + return err + } + if err := cli.AddEdge(graph, &gripql.Edge{Id: "e2", From: "alice", To: "carol", Label: "FRIEND"}); err != nil { + return err + } + + return nil +} + +func postGQLQuery(port, graph, query string) (*http.Response, string, error) { + url := fmt.Sprintf("http://localhost:%s/gql/%s", port, graph) + payload, err := json.Marshal(map[string]string{"query": query}) + if err != nil { + return nil, "", err + } + + req, err := http.NewRequest("POST", url, bytes.NewBuffer(payload)) + if err != nil { + return nil, "", err + } + req.Header.Set("Content-Type", "application/json") + + resp, err := (&http.Client{Timeout: 5 * time.Second}).Do(req) + if err != nil { + return nil, "", err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, "", err + } + + return resp, string(body), nil +} + +func splitNonEmptyLines(s string) []string { + lines := strings.Split(s, "\n") + out := make([]string, 0, len(lines)) + for _, line := range lines { + trimmed := strings.TrimSpace(line) + if trimmed != "" { + out = append(out, trimmed) + } + } + return out +} + +func parseResponseRows(lines []string) ([]map[string]any, error) { + rows := make([]map[string]any, 0, len(lines)) + for _, line := range lines { + if !json.Valid([]byte(line)) { + return nil, fmt.Errorf("response line is not valid JSON: %q", line) + } + + row := map[string]any{} + if err := json.Unmarshal([]byte(line), &row); err != nil { + return nil, fmt.Errorf("cannot parse response line %q: %w", line, err) + } + rows = append(rows, row) + } + return rows, nil +}