diff --git a/src/grammar/hive/HiveSqlParser.g4 b/src/grammar/hive/HiveSqlParser.g4 index a95a3e4..ec50fa3 100644 --- a/src/grammar/hive/HiveSqlParser.g4 +++ b/src/grammar/hive/HiveSqlParser.g4 @@ -4,9 +4,9 @@ ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - + http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the @@ -59,15 +59,11 @@ explainOption | KW_REOPTIMIZATION | KW_LOCKS | KW_AST - | KW_VECTORIZATION vectorizationOnly? vectorizatonDetail? + | KW_VECTORIZATION KW_ONLY? vectorizatonDetail? | KW_DEBUG | KW_DDL ; -vectorizationOnly - : KW_ONLY - ; - vectorizatonDetail : KW_SUMMARY | KW_OPERATOR @@ -82,24 +78,21 @@ execStatement | importStatement | replDumpStatement | replLoadStatement - | replStatusStatement + | KW_REPL KW_STATUS dbName=dbSchemaName (KW_WITH replConf=keyValueProperties)? | ddlStatement - | deleteStatement - | updateStatement + | KW_DELETE KW_FROM tableName whereClause? + | KW_UPDATE tableName setColumnsClause whereClause? | sqlTransactionStatement - | mergeStatement - | prepareStatement - | executeStatement + | KW_MERGE QUERY_HINT? KW_INTO tableName (KW_AS? id_)? KW_USING joinSourcePart KW_ON expression whenClauses + | KW_PREPARE id_ KW_FROM queryStatementExpression + | KW_EXECUTE id_ KW_USING constantList + | KW_SET configPropertiesItem (DOT configPropertiesItem)* EQUAL .*? ; loadStatement : KW_LOAD KW_DATA KW_LOCAL? KW_INPATH StringLiteral KW_OVERWRITE? KW_INTO KW_TABLE tableOrPartition inputFileFormat? ; -dropPartitionsIgnoreClause - : KW_IGNORE KW_PROTECTION - ; - replicationClause : KW_FOR KW_METADATA? KW_REPLICATION LPAREN StringLiteral RPAREN ; @@ -109,12 +102,12 @@ exportStatement ; importStatement - : KW_IMPORT (KW_EXTERNAL? KW_TABLE tableOrPartition)? KW_FROM path=StringLiteral tableLocation? + : KW_IMPORT (KW_EXTERNAL? KW_TABLE tableOrPartition)? KW_FROM path=StringLiteral locationPath? ; replDumpStatement : KW_REPL KW_DUMP dbPolicy=replDbPolicy (KW_REPLACE oldDbPolicy=replDbPolicy)? ( - KW_WITH replConf=replConfigs + KW_WITH replConf=keyValueProperties )? ; @@ -124,26 +117,14 @@ replDbPolicy replLoadStatement : KW_REPL KW_LOAD sourceDbPolicy=replDbPolicy (KW_INTO dbName=dbSchemaName)? ( - KW_WITH replConf=replConfigs + KW_WITH replConf=keyValueProperties )? ; -replConfigs - : LPAREN replConfigsList RPAREN - ; - -replConfigsList - : keyValueProperty (COMMA keyValueProperty)* - ; - replTableLevelPolicy : replTablesIncludeList=StringLiteral (DOT replTablesExcludeList=StringLiteral)? ; -replStatusStatement - : KW_REPL KW_STATUS dbName=dbSchemaName (KW_WITH replConf=replConfigs)? - ; - ddlStatement : createDatabaseStatement | switchDatabaseStatement @@ -186,9 +167,8 @@ ddlStatement | revokeRole | setRole | showCurrentRole - | abortTransactionStatement - | abortCompactionStatement - | killQueryStatement + | KW_ABORT (KW_TRANSACTIONS | KW_COMPACTIONS) Number+ + | KW_KILL KW_QUERY StringLiteral+ | resourcePlanDdlStatements | createDataConnectorStatement | dropDataConnectorStatement @@ -198,17 +178,13 @@ ifExists : KW_IF KW_EXISTS ; -restrictOrCascade - : KW_RESTRICT - | KW_CASCADE - ; - ifNotExists : KW_IF KW_NOT KW_EXISTS ; -force - : KW_FORCE +restrictOrCascade + : KW_RESTRICT + | KW_CASCADE ; rewriteEnabled @@ -223,35 +199,15 @@ storedAsDirs : KW_STORED KW_AS KW_DIRECTORIES ; -orReplace - : KW_OR KW_REPLACE - ; - createDatabaseStatement - : KW_CREATE KW_REMOTE? db_schema ifNotExists? name=dbSchemaNameCreate databaseComment? dbLocation? dbManagedLocation? ( - KW_WITH KW_DBPROPERTIES dbprops=dbProperties - )? + : KW_CREATE KW_REMOTE? db_schema ifNotExists? name=dbSchemaNameCreate databaseComment? locationPath? ( + KW_MANAGEDLOCATION locn=StringLiteral + )? (KW_WITH KW_DBPROPERTIES dbprops=keyValueProperties)? | KW_CREATE KW_REMOTE db_schema ifNotExists? name=dbSchemaNameCreate databaseComment? dbConnectorName ( - KW_WITH KW_DBPROPERTIES dbprops=dbProperties + KW_WITH KW_DBPROPERTIES dbprops=keyValueProperties )? ; -dbLocation - : KW_LOCATION locn=StringLiteral - ; - -dbManagedLocation - : KW_MANAGEDLOCATION locn=StringLiteral - ; - -dbProperties - : LPAREN dbPropertiesList RPAREN - ; - -dbPropertiesList - : keyValueProperty (COMMA keyValueProperty)* - ; - dbConnectorName : KW_USING dcName=dbSchemaName ; @@ -269,7 +225,7 @@ databaseComment ; truncateTableStatement - : KW_TRUNCATE KW_TABLE? tablePartitionPrefix (KW_COLUMNS LPAREN columnNameList RPAREN)? force? + : KW_TRUNCATE KW_TABLE? tableOrPartition (KW_COLUMNS LPAREN columnNameList RPAREN)? KW_FORCE? ; dropTableStatement @@ -347,9 +303,8 @@ showStatement | parttype=partTypeExpr? isExtended=KW_EXTENDED? ) | KW_SHOW KW_COMPACTIONS ( - compactionId - | db_schema dbName=dbSchemaName compactionPool? compactionType? compactionStatus? orderByClause? limitClause? - | parttype=partTypeExpr? compactionPool? compactionType? compactionStatus? orderByClause? limitClause? + KW_COMPACT_ID EQUAL compactId=Number + | ((db_schema dbName=dbSchemaName) | parttype=partTypeExpr?) compactionPool? compactionType? compactionStatus? orderByClause? limitClause? ) | KW_SHOW KW_TRANSACTIONS | KW_SHOW KW_CONF StringLiteral @@ -365,7 +320,7 @@ showTablesFilterExpr ; lockStatement - : KW_LOCK KW_TABLE tableName partitionSpec? lockMode + : KW_LOCK KW_TABLE tableOrPartition lockMode ; lockDatabase @@ -378,7 +333,7 @@ lockMode ; unlockStatement - : KW_UNLOCK KW_TABLE tableName partitionSpec? + : KW_UNLOCK KW_TABLE tableOrPartition ; unlockDatabase @@ -447,7 +402,7 @@ database or table type. Type is optional, default type is table */ privObject : db_schema dbSchemaName - | KW_TABLE? tableName partitionSpec? + | KW_TABLE? tableOrPartition | KW_URI path=StringLiteral | KW_SERVER id_ ; @@ -562,7 +517,7 @@ createIndexStatement KW_WITH KW_DEFERRED KW_REBUILD )? (KW_IDXPROPERTIES tableProperties)? (KW_IN KW_TABLE tableName)? ( KW_PARTITIONED KW_BY columnParenthesesList - )? (tableRowFormat? tableFileFormat)? (KW_LOCATION locn=StringLiteral)? tablePropertiesPrefixed? tableComment? + )? (tableRowFormat? tableFileFormat)? locationPath? tablePropertiesPrefixed? tableComment? ; dropIndexStatement @@ -570,7 +525,7 @@ dropIndexStatement ; createViewStatement - : KW_CREATE orReplace? KW_VIEW ifNotExists? name=viewNameCreate ( + : KW_CREATE (KW_OR KW_REPLACE)? KW_VIEW ifNotExists? name=viewNameCreate ( LPAREN columnNameCommentList RPAREN )? tableComment? viewPartition? tablePropertiesPrefixed? KW_AS selectStatementWithCTE ; @@ -606,7 +561,7 @@ dropViewStatement createMaterializedViewStatement : KW_CREATE KW_MATERIALIZED KW_VIEW ifNotExists? name=viewNameCreate rewriteDisabled? tableComment? viewPartition? viewOrganization? - tableRowFormat? tableFileFormat? tableLocation? tablePropertiesPrefixed? KW_AS selectStatementWithCTE + tableRowFormat? tableFileFormat? locationPath? tablePropertiesPrefixed? KW_AS selectStatementWithCTE ; dropMaterializedViewStatement @@ -664,7 +619,7 @@ tableLifecycle createTablePartitionSpec : KW_PARTITIONED KW_BY ( - LPAREN (opt1=createTablePartitionColumnTypeSpec | opt2=createTablePartitionColumnSpec) + LPAREN (opt1=createTablePartitionColumnTypeSpec | opt2=columnNameList) | KW_SPEC LPAREN spec=partitionTransformSpec ) RPAREN ; @@ -673,16 +628,8 @@ createTablePartitionColumnTypeSpec : columnNameTypeConstraint (COMMA columnNameTypeConstraint)* ; -createTablePartitionColumnSpec - : columnName (COMMA columnName)* - ; - partitionTransformSpec - : columnNameTransformConstraint (COMMA columnNameTransformConstraint)* - ; - -columnNameTransformConstraint - : partitionTransformType + : partitionTransformType (COMMA partitionTransformType)* ; partitionTransformType @@ -697,10 +644,6 @@ tableBuckets )? KW_INTO num=Number KW_BUCKETS ; -tableImplBuckets - : KW_CLUSTERED KW_INTO num=Number KW_BUCKETS - ; - tableSkewed : KW_SKEWED KW_BY LPAREN skewedCols=columnNameList RPAREN KW_ON LPAREN skewedValues=skewedValueElement RPAREN storedAsDirs? ; @@ -743,18 +686,22 @@ tableProperties ; tablePropertiesList + : keyValuePropertyList + | key=StringLiteral (COMMA key=StringLiteral)* + ; + +keyValueProperties + : LPAREN keyValuePropertyList RPAREN + ; + +keyValuePropertyList : keyValueProperty (COMMA keyValueProperty)* - | keyProperty (COMMA keyProperty)* ; keyValueProperty : key=StringLiteral EQUAL value=StringLiteral ; -keyProperty - : key=StringLiteral - ; - tableRowFormatFieldIdentifier : KW_FIELDS KW_TERMINATED KW_BY fldIdnt=StringLiteral ( KW_ESCAPED KW_BY fldEscape=StringLiteral @@ -790,10 +737,6 @@ tableFileFormat | KW_STORED KW_AS genericSpec=id_ ; -tableLocation - : KW_LOCATION locn=StringLiteral - ; - columnNameTypeList : columnNameType (COMMA columnNameType)* ; @@ -811,7 +754,7 @@ columnNameList ; columnName - : id_ (DOT id_)* + : poolPath | {this.shouldMatchEmpty()}? ; @@ -888,7 +831,7 @@ alterForeignKeyWithName ; skewedValueElement - : skewedColumnValues + : constantList | skewedColumnValuePairList ; @@ -897,20 +840,11 @@ skewedColumnValuePairList ; skewedColumnValuePair - : LPAREN colValues=skewedColumnValues RPAREN + : LPAREN colValues=constantList RPAREN ; -skewedColumnValues - : skewedColumnValue (COMMA skewedColumnValue)* - ; - -skewedColumnValue - : constant - ; - -skewedValueLocationElement - : skewedColumnValue - | skewedColumnValuePair +constantList + : constant (COMMA constant)* ; orderSpecification @@ -934,17 +868,12 @@ columnNameComment : colName=columnNameCreate (KW_COMMENT comment=StringLiteral)? ; -orderSpecificationRewrite - : KW_ASC - | KW_DESC - ; - columnRefOrder - : (columnName | expression) orderSpec=orderSpecificationRewrite? nullSpec=nullOrdering? + : (columnName | expression) orderSpec=orderSpecification? nullSpec=nullOrdering? ; columnNameType - : colName=columnNameCreate colType (KW_COMMENT comment=StringLiteral)? + : colName=columnNameCreate columnType (KW_COMMENT comment=StringLiteral)? ; columnNameTypeOrConstraint @@ -958,7 +887,7 @@ tableConstraint ; columnNameTypeConstraint - : colName=columnNameCreate colType columnConstraint? (KW_COMMENT comment=StringLiteral)? + : colName=columnNameCreate columnType columnConstraint? (KW_COMMENT comment=StringLiteral)? ; columnConstraint @@ -1014,15 +943,15 @@ constraintOptsAlter ; columnNameColonType - : colName=columnNameCreate COLON colType (KW_COMMENT comment=StringLiteral)? + : colName=columnNameCreate COLON columnType (KW_COMMENT comment=StringLiteral)? ; -colType +columnType : type ; -colTypeList - : colType (COMMA colType)* +columnTypeList + : columnType (COMMA columnType)* ; type @@ -1072,7 +1001,7 @@ mapType ; unionType - : KW_UNIONTYPE LESSTHAN colTypeList GREATERTHAN + : KW_UNIONTYPE LESSTHAN columnTypeList GREATERTHAN ; setOperator @@ -1125,7 +1054,7 @@ regularBody atomSelectStatement : s=selectClause f=fromClause? w=whereClause? g=groupByClause? h=havingClause? win=window_clause? q=qualifyClause? | LPAREN selectStatement RPAREN - | valuesSource + | valuesClause ; selectStatement @@ -1156,20 +1085,13 @@ limitClause : KW_LIMIT ((offset=Number COMMA)? num=Number | num=Number KW_OFFSET offset=Number) ; -/** -DELETE FROM WHERE ...; -*/ -deleteStatement - : KW_DELETE KW_FROM tableName whereClause? - ; - /*SET = (3 + col2)*/ columnAssignmentClause : columnName EQUAL precedencePlusExpressionOrDefault ; precedencePlusExpressionOrDefault - : defaultValue + : KW_DEFAULT | precedencePlusExpression ; @@ -1178,76 +1100,20 @@ setColumnsClause : KW_SET columnAssignmentClause (COMMA columnAssignmentClause)* ; -/* - UPDATE - SET col1 = val1, col2 = val2... WHERE ... -*/ -updateStatement - : KW_UPDATE tableName setColumnsClause whereClause? - ; - /* BEGIN user defined transaction boundaries; follows SQL 2003 standard exactly except for addition of -"setAutoCommitStatement" which is not in the standard doc but is supported by most SQL engines. +"KW_SET KW_AUTOCOMMIT (KW_TRUE | KW_FALSE)" which is not in the standard doc but is supported by most SQL engines. */ sqlTransactionStatement - : startTransactionStatement - | commitStatement - | rollbackStatement - | setAutoCommitStatement - ; - -startTransactionStatement : KW_START KW_TRANSACTION (transactionMode (COMMA transactionMode)*)? + | KW_COMMIT KW_WORK? + | KW_ROLLBACK KW_WORK? + | KW_SET KW_AUTOCOMMIT (KW_TRUE | KW_FALSE) ; transactionMode - : isolationLevel - | transactionAccessMode - ; - -transactionAccessMode - : KW_READ (KW_ONLY | KW_WRITE) - ; - -isolationLevel - : KW_ISOLATION KW_LEVEL levelOfIsolation - ; - -/*READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE may be supported later*/ -levelOfIsolation - : KW_SNAPSHOT - ; - -commitStatement - : KW_COMMIT KW_WORK? - ; - -rollbackStatement - : KW_ROLLBACK KW_WORK? - ; - -setAutoCommitStatement - : KW_SET KW_AUTOCOMMIT booleanValueTok - ; - -/* -END user defined transaction boundaries -*/ - -abortTransactionStatement - : KW_ABORT KW_TRANSACTIONS Number+ - ; - -abortCompactionStatement - : KW_ABORT KW_COMPACTIONS Number+ - ; - -/* -BEGIN SQL Merge statement -*/ -mergeStatement - : KW_MERGE QUERY_HINT? KW_INTO tableName (KW_AS? id_)? KW_USING joinSourcePart KW_ON expression whenClauses + : KW_ISOLATION KW_LEVEL KW_SNAPSHOT + | KW_READ (KW_ONLY | KW_WRITE) ; /* @@ -1261,37 +1127,20 @@ whenClauses ; whenNotMatchedClause - : KW_WHEN KW_NOT KW_MATCHED (KW_AND expression)? KW_THEN KW_INSERT targetCols=columnParenthesesList? KW_VALUES valueRowConstructor + : KW_WHEN KW_NOT KW_MATCHED (KW_AND expression)? KW_THEN KW_INSERT targetCols=columnParenthesesList? KW_VALUES expressionsInParenthesis ; whenMatchedAndClause - : KW_WHEN KW_MATCHED KW_AND expression KW_THEN updateOrDelete + : KW_WHEN KW_MATCHED KW_AND expression KW_THEN (KW_UPDATE setColumnsClause | KW_DELETE) ; whenMatchedThenClause - : KW_WHEN KW_MATCHED KW_THEN updateOrDelete - ; - -updateOrDelete - : KW_UPDATE setColumnsClause - | KW_DELETE - ; - -/* -END SQL Merge statement -*/ - -killQueryStatement - : KW_KILL KW_QUERY StringLiteral+ + : KW_WHEN KW_MATCHED KW_THEN (KW_UPDATE setColumnsClause | KW_DELETE) ; /* BEGIN SHOW COMPACTIONS statement */ -compactionId - : KW_COMPACT_ID EQUAL compactId=Number - ; - compactionPool : KW_POOL poolName=StringLiteral ; @@ -1304,286 +1153,105 @@ compactionStatus : KW_STATUS status=StringLiteral ; -/* -END SHOW COMPACTIONS statement -*/ - alterStatement : KW_ALTER ( KW_TABLE tableName alterTableStatementSuffix | KW_VIEW viewName KW_AS? alterViewStatementSuffix - | KW_MATERIALIZED KW_VIEW tableNameTree=viewName alterMaterializedViewStatementSuffix + | KW_MATERIALIZED KW_VIEW tableNameTree=viewName ( + mvRewriteFlag=rewriteEnabled + | mvRewriteFlag2=rewriteDisabled + | KW_REBUILD + ) | db_schema alterDatabaseStatementSuffix | KW_DATACONNECTOR alterDataConnectorStatementSuffix - | KW_INDEX alterIndexStatementSuffix + | KW_INDEX id_ KW_ON tableOrPartition KW_REBUILD ) ; alterTableStatementSuffix - : alterStatementSuffixRename - | alterStatementSuffixRecoverPartitions + : KW_RENAME KW_TO tableNameCreate + | KW_RECOVER KW_PARTITIONS | alterStatementSuffixDropPartitions - | alterStatementSuffixAddPartitions - | alterStatementSuffixTouch - | alterStatementSuffixArchive - | alterStatementSuffixUnArchive - | alterStatementSuffixProperties - | alterStatementSuffixSkewedby - | alterStatementSuffixExchangePartition - | alterStatementPartitionKeyType - | alterStatementSuffixDropConstraint - | alterStatementSuffixAddConstraint - | alterTblPartitionStatementSuffix + | KW_ADD ifNotExists? (partitionSpec locationPath?)+ + | KW_TOUCH partitionSpec* + | KW_ARCHIVE partitionSpec* + | KW_UNARCHIVE partitionSpec* + | KW_SET KW_TBLPROPERTIES tableProperties + | KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties + | tableSkewed + | KW_NOT (KW_SKEWED | storedAsDirs) + | KW_EXCHANGE partitionSpec KW_WITH KW_TABLE exchangename=tableName + | KW_PARTITION KW_COLUMN LPAREN columnNameType RPAREN + | KW_DROP KW_CONSTRAINT cName=id_ + | KW_ADD (fk=alterForeignKeyWithName | alterConstraintWithName) | partitionSpec? alterTblPartitionStatementSuffix - | alterStatementSuffixSetOwner - | alterStatementSuffixSetPartSpec + | KW_SET KW_OWNER principalName + | KW_SET KW_PARTITION KW_SPEC LPAREN spec=partitionTransformSpec RPAREN | alterStatementSuffixExecute ; alterTblPartitionStatementSuffix - : alterStatementSuffixFileFormat - | alterStatementSuffixLocation - | alterStatementSuffixMergeFiles - | alterStatementSuffixSerdeProperties - | alterStatementSuffixRenamePart - | alterStatementSuffixBucketNum - | alterTblPartitionStatementSuffixSkewedLocation - | alterStatementSuffixClusterbySortby - | alterStatementSuffixCompact - | alterStatementSuffixUpdateStatsCol - | alterStatementSuffixUpdateStats - | alterStatementSuffixRenameCol - | alterStatementSuffixAddCol - | alterStatementSuffixUpdateColumns - | alterStatementSuffixProtections - ; - -alterStatementPartitionKeyType - : KW_PARTITION KW_COLUMN LPAREN columnNameType RPAREN + : KW_SET KW_FILEFORMAT fileFormat + | KW_SET KW_LOCATION newLoc=StringLiteral + | KW_CONCATENATE + | KW_SET ( + KW_SERDE serdeName=StringLiteral (KW_WITH KW_SERDEPROPERTIES tableProperties)? + | KW_SERDEPROPERTIES tableProperties + ) + | KW_UNSET KW_SERDEPROPERTIES tableProperties + | KW_RENAME KW_TO partitionSpec + | KW_INTO num=Number KW_BUCKETS + | KW_SET KW_SKEWED KW_LOCATION LPAREN skewedLocationMap (COMMA skewedLocationMap)* RPAREN + | KW_NOT (KW_CLUSTERED | KW_SORTED) + | tableBuckets + | KW_COMPACT compactType=StringLiteral (KW_AND KW_WAIT)? ( + KW_CLUSTERED KW_INTO num=Number KW_BUCKETS + )? orderByClause? compactionPool? (KW_WITH KW_OVERWRITE KW_TBLPROPERTIES tableProperties)? + | KW_UPDATE KW_STATISTICS KW_FOR KW_COLUMN? colName=columnName KW_SET tableProperties ( + KW_COMMENT comment=StringLiteral + )? + | KW_UPDATE KW_STATISTICS KW_SET tableProperties + | KW_CHANGE KW_COLUMN? oldName=columnName newName=columnNameCreate columnType alterColumnConstraint? ( + KW_COMMENT comment=StringLiteral + )? (first=KW_FIRST | KW_AFTER afterCol=id_)? restrictOrCascade? + | (add=KW_ADD | replace=KW_REPLACE) KW_COLUMNS LPAREN columnNameTypeList RPAREN restrictOrCascade? + | KW_UPDATE KW_COLUMNS restrictOrCascade? + | enableSpecification ((KW_NO_DROP KW_CASCADE?) | KW_OFFLINE) ; alterViewStatementSuffix - : alterViewSuffixProperties - | alterStatementSuffixRename - | alterStatementSuffixAddPartitions + : KW_SET KW_TBLPROPERTIES tableProperties + | KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties + | KW_RENAME KW_TO tableNameCreate + | KW_ADD ifNotExists? (partitionSpec locationPath?)+ | alterStatementSuffixDropPartitions | selectStatementWithCTE ; -alterMaterializedViewStatementSuffix - : alterMaterializedViewSuffixRewrite - | alterMaterializedViewSuffixRebuild - ; - -alterMaterializedViewSuffixRewrite - : mvRewriteFlag=rewriteEnabled - | mvRewriteFlag2=rewriteDisabled - ; - -alterMaterializedViewSuffixRebuild - : KW_REBUILD - ; - alterDatabaseStatementSuffix - : alterDatabaseSuffixProperties - | alterDatabaseSuffixSetOwner - | alterDatabaseSuffixSetLocation + : name=dbSchemaName KW_SET KW_DBPROPERTIES keyValueProperties + | dbName=dbSchemaName KW_SET KW_OWNER principalAlterName + | dbName=dbSchemaName KW_SET (KW_LOCATION | KW_MANAGEDLOCATION) newLocation=StringLiteral ; -alterDatabaseSuffixProperties - : name=dbSchemaName KW_SET KW_DBPROPERTIES dbProperties +alterDataConnectorStatementSuffix + : name=dbSchemaName KW_SET KW_DCPROPERTIES keyValueProperties + | dcName=dbSchemaName KW_SET KW_OWNER principalAlterName + | dcName=dbSchemaName KW_SET KW_URL newUri=StringLiteral ; -alterDatabaseSuffixSetOwner - : dbName=dbSchemaName KW_SET KW_OWNER principalAlterName - ; - -alterDatabaseSuffixSetLocation - : dbName=dbSchemaName KW_SET (KW_LOCATION | KW_MANAGEDLOCATION) newLocation=StringLiteral - ; - -alterDatabaseSuffixSetManagedLocation - : dbName=dbSchemaName KW_SET KW_MANAGEDLOCATION newLocation=StringLiteral - ; - -alterStatementSuffixRename - : KW_RENAME KW_TO tableNameCreate - ; - -alterStatementSuffixAddCol - : (add=KW_ADD | replace=KW_REPLACE) KW_COLUMNS LPAREN columnNameTypeList RPAREN restrictOrCascade? - ; - -alterStatementSuffixAddConstraint - : KW_ADD (fk=alterForeignKeyWithName | alterConstraintWithName) - ; - -alterStatementSuffixUpdateColumns - : KW_UPDATE KW_COLUMNS restrictOrCascade? - ; - -alterStatementSuffixProtections - : enableSpecification KW_NO_DROP KW_CASCADE? - | enableSpecification KW_OFFLINE - ; - -alterStatementSuffixDropConstraint - : KW_DROP KW_CONSTRAINT cName=id_ - ; - -alterStatementSuffixRenameCol - : KW_CHANGE KW_COLUMN? oldName=columnName newName=columnNameCreate colType alterColumnConstraint? ( - KW_COMMENT comment=StringLiteral - )? alterStatementChangeColPosition? restrictOrCascade? - ; - -alterStatementSuffixUpdateStatsCol - : KW_UPDATE KW_STATISTICS KW_FOR KW_COLUMN? colName=columnName KW_SET tableProperties ( - KW_COMMENT comment=StringLiteral - )? - ; - -alterStatementSuffixUpdateStats - : KW_UPDATE KW_STATISTICS KW_SET tableProperties - ; - -alterStatementChangeColPosition - : first=KW_FIRST - | KW_AFTER afterCol=id_ - ; - -alterStatementSuffixAddPartitions - : KW_ADD ifNotExists? alterStatementSuffixAddPartitionsElement+ - ; - -alterStatementSuffixAddPartitionsElement - : partitionSpec partitionLocation? - ; - -alterStatementSuffixTouch - : KW_TOUCH partitionSpec* - ; - -alterStatementSuffixArchive - : KW_ARCHIVE partitionSpec* - ; - -alterStatementSuffixUnArchive - : KW_UNARCHIVE partitionSpec* - ; - -partitionLocation +locationPath : KW_LOCATION locn=StringLiteral ; -alterStatementSuffixRecoverPartitions - : KW_RECOVER KW_PARTITIONS - ; - alterStatementSuffixDropPartitions : KW_DROP ifExists? KW_PARTITION partitionSelectorSpec ( COMMA KW_PARTITION partitionSelectorSpec - )* dropPartitionsIgnoreClause? KW_PURGE? replicationClause? - ; - -alterStatementSuffixProperties - : KW_SET KW_TBLPROPERTIES tableProperties - | KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties - ; - -alterViewSuffixProperties - : KW_SET KW_TBLPROPERTIES tableProperties - | KW_UNSET KW_TBLPROPERTIES ifExists? tableProperties - ; - -alterStatementSuffixSerdeProperties - : KW_SET ( - KW_SERDE serdeName=StringLiteral (KW_WITH KW_SERDEPROPERTIES tableProperties)? - | KW_SERDEPROPERTIES tableProperties - ) - | KW_UNSET KW_SERDEPROPERTIES tableProperties - ; - -tablePartitionPrefix - : tableName partitionSpec? - ; - -alterStatementSuffixFileFormat - : KW_SET KW_FILEFORMAT fileFormat - ; - -alterStatementSuffixClusterbySortby - : KW_NOT (KW_CLUSTERED | KW_SORTED) - | tableBuckets - ; - -alterTblPartitionStatementSuffixSkewedLocation - : KW_SET KW_SKEWED KW_LOCATION skewedLocations - ; - -skewedLocations - : LPAREN skewedLocationsList RPAREN - ; - -skewedLocationsList - : skewedLocationMap (COMMA skewedLocationMap)* + )* (KW_IGNORE KW_PROTECTION)? KW_PURGE? replicationClause? ; skewedLocationMap - : key=skewedValueLocationElement EQUAL value=StringLiteral - ; - -alterStatementSuffixLocation - : KW_SET KW_LOCATION newLoc=StringLiteral - ; - -alterStatementSuffixSkewedby - : tableSkewed - | KW_NOT (KW_SKEWED | storedAsDirs) - ; - -alterStatementSuffixExchangePartition - : KW_EXCHANGE partitionSpec KW_WITH KW_TABLE exchangename=tableName - ; - -alterStatementSuffixRenamePart - : KW_RENAME KW_TO partitionSpec - ; - -alterStatementSuffixStatsPart - : KW_UPDATE KW_STATISTICS KW_FOR KW_COLUMN? colName=columnName KW_SET tableProperties ( - KW_COMMENT comment=StringLiteral - )? - ; - -alterStatementSuffixMergeFiles - : KW_CONCATENATE - ; - -alterStatementSuffixBucketNum - : KW_INTO num=Number KW_BUCKETS - ; - -blocking - : KW_AND KW_WAIT - ; - -compactPool - : KW_POOL poolName=StringLiteral - ; - -alterStatementSuffixCompact - : KW_COMPACT compactType=StringLiteral blocking? tableImplBuckets? orderByClause? compactPool? ( - KW_WITH KW_OVERWRITE KW_TBLPROPERTIES tableProperties - )? - ; - -alterStatementSuffixSetOwner - : KW_SET KW_OWNER principalName - ; - -alterStatementSuffixSetPartSpec - : KW_SET KW_PARTITION KW_SPEC LPAREN spec=partitionTransformSpec RPAREN + : (constant | skewedColumnValuePair) EQUAL value=StringLiteral ; alterStatementSuffixExecute @@ -1594,10 +1262,6 @@ alterStatementSuffixExecute ) RPAREN ; -alterIndexStatementSuffix - : id_ KW_ON tableName partitionSpec? KW_REBUILD - ; - fileFormat : KW_INPUTFORMAT inFmt=StringLiteral KW_OUTPUTFORMAT outFmt=StringLiteral KW_SERDE serdeCls=StringLiteral ( KW_INPUTDRIVER inDriver=StringLiteral KW_OUTPUTDRIVER outDriver=StringLiteral @@ -1605,24 +1269,6 @@ fileFormat | genericSpec=id_ ; -alterDataConnectorStatementSuffix - : alterDataConnectorSuffixProperties - | alterDataConnectorSuffixSetOwner - | alterDataConnectorSuffixSetUrl - ; - -alterDataConnectorSuffixProperties - : name=dbSchemaName KW_SET KW_DCPROPERTIES dcProperties - ; - -alterDataConnectorSuffixSetOwner - : dcName=dbSchemaName KW_SET KW_OWNER principalAlterName - ; - -alterDataConnectorSuffixSetUrl - : dcName=dbSchemaName KW_SET KW_URL newUri=StringLiteral - ; - likeTableOrFile : KW_LIKE KW_FILE | KW_LIKE KW_FILE format=id_ uri=StringLiteral @@ -1634,41 +1280,25 @@ Rules for parsing createtable */ createTableStatement : KW_CREATE temp=KW_TEMPORARY? trans=KW_TRANSACTIONAL? ext=KW_EXTERNAL? KW_TABLE ifNotExists? name=tableNameCreate ( - likeTableOrFile createTablePartitionSpec? tableRowFormat? tableFileFormat? tableLocation? tablePropertiesPrefixed? tableLifecycle? + likeTableOrFile createTablePartitionSpec? tableRowFormat? tableFileFormat? locationPath? tablePropertiesPrefixed? tableLifecycle? | (LPAREN columnNameTypeOrConstraintList RPAREN)? tableComment? createTablePartitionSpec? tableBuckets? tableSkewed? tableRowFormat? - tableFileFormat? tableLocation? tablePropertiesPrefixed? tableLifecycle? ( + tableFileFormat? locationPath? tablePropertiesPrefixed? tableLifecycle? ( KW_AS selectStatementWithCTE )? ) | KW_CREATE mgd=KW_MANAGED KW_TABLE ifNotExists? name=tableNameCreate ( - likeTableOrFile tableRowFormat? tableFileFormat? tableLocation? tablePropertiesPrefixed? tableLifecycle? + likeTableOrFile tableRowFormat? tableFileFormat? locationPath? tablePropertiesPrefixed? tableLifecycle? | (LPAREN columnNameTypeOrConstraintList RPAREN)? tableComment? createTablePartitionSpec? tableBuckets? tableSkewed? tableRowFormat? - tableFileFormat? tableLocation? tablePropertiesPrefixed? tableLifecycle? ( + tableFileFormat? locationPath? tablePropertiesPrefixed? tableLifecycle? ( KW_AS selectStatementWithCTE )? ) ; createDataConnectorStatement - : KW_CREATE KW_DATACONNECTOR ifNotExists? name=id_ dataConnectorType? dataConnectorUrl? dataConnectorComment? ( - KW_WITH KW_DCPROPERTIES dcprops=dcProperties - )? - ; - -dataConnectorComment - : KW_COMMENT comment=StringLiteral - ; - -dataConnectorUrl - : KW_URL url=StringLiteral - ; - -dataConnectorType - : KW_TYPE dcType=StringLiteral - ; - -dcProperties - : LPAREN dbPropertiesList RPAREN + : KW_CREATE KW_DATACONNECTOR ifNotExists? name=id_ (KW_TYPE dcType=StringLiteral)? ( + KW_URL url=StringLiteral + )? (KW_COMMENT comment=StringLiteral)? (KW_WITH KW_DCPROPERTIES dcprops=keyValueProperties)? ; dropDataConnectorStatement @@ -1679,10 +1309,6 @@ tableAllColumns : (id_ DOT)* STAR ; -defaultValue - : KW_DEFAULT - ; - expressionList : expression (COMMA expression)* ; @@ -1700,7 +1326,7 @@ fromClause ; fromSource - : uniqueJoinToken uniqueJoinSource (COMMA uniqueJoinSource)+ + : KW_UNIQUEJOIN uniqueJoinSource (COMMA uniqueJoinSource)+ | joinSource ; @@ -1723,15 +1349,7 @@ joinSourcePart ; uniqueJoinSource - : KW_PRESERVE? uniqueJoinTableSource uniqueJoinExpr - ; - -uniqueJoinExpr - : LPAREN expressionList RPAREN - ; - -uniqueJoinToken - : KW_UNIQUEJOIN + : KW_PRESERVE? tabname=tableOrView ts=tableSample? (KW_AS? alias=id_)? LPAREN expressionList RPAREN ; joinToken @@ -1756,19 +1374,11 @@ tableAlias : id_ ; -tableBucketSample +tableSample : KW_TABLESAMPLE LPAREN KW_BUCKET numerator=Number KW_OUT KW_OF denominator=Number ( KW_ON expr+=expression (COMMA expr+=expression)* )? RPAREN - ; - -splitSample - : KW_TABLESAMPLE LPAREN (Number (KW_PERCENT | KW_ROWS) | ByteLengthLiteral) RPAREN - ; - -tableSample - : tableBucketSample - | splitSample + | KW_TABLESAMPLE LPAREN (Number (KW_PERCENT | KW_ROWS) | ByteLengthLiteral) RPAREN ; tableSource @@ -1784,10 +1394,6 @@ asOfClause ) ; -uniqueJoinTableSource - : tabname=tableOrView ts=tableSample? (KW_AS? alias=id_)? - ; - dbSchemaName : id_ ; @@ -1827,7 +1433,7 @@ subQuerySource Rules for parsing PTF clauses */ partitioningSpec - : partitionByClause orderByClause? + : KW_PARTITION KW_BY expressions orderByClause? | orderByClause | distributeByClause sortByClause? | sortByClause @@ -1851,18 +1457,7 @@ Rules for parsing whereClause where a=b and ... */ whereClause - : KW_WHERE searchCondition - ; - -searchCondition - : expression - ; - -/** -Row Constructor -*/ -valuesSource - : valuesClause + : KW_WHERE expression ; /** @@ -1876,20 +1471,10 @@ VALUES(1,2,3) means 1 row, 3 columns */ valuesClause - : KW_VALUES valuesTableConstructor - ; - -valuesTableConstructor - : valueRowConstructor (COMMA valueRowConstructor)* - | firstValueRowConstructor (COMMA valueRowConstructor)* - ; - -valueRowConstructor - : expressionsInParenthesis - ; - -firstValueRowConstructor - : LPAREN firstExpressionsWithAlias RPAREN + : KW_VALUES ( + expressionsInParenthesis (COMMA expressionsInParenthesis)* + | LPAREN firstExpressionsWithAlias RPAREN (COMMA expressionsInParenthesis)* + ) ; /* @@ -1905,19 +1490,13 @@ Rules for parsing selectClause select a,b,c ... */ selectClause - : KW_SELECT QUERY_HINT? (all_distinct? selectList | KW_TRANSFORM selectTrfmClause) + : KW_SELECT QUERY_HINT? ( + (KW_ALL | KW_DISTINCT)? selectItem (COMMA selectItem)* + | KW_TRANSFORM selectTrfmClause + ) | trfmClause ; -all_distinct - : KW_ALL - | KW_DISTINCT - ; - -selectList - : selectItem (COMMA selectItem)* - ; - selectTrfmClause : LPAREN selectExpressionList RPAREN rowFormat recordWriter KW_USING StringLiteral ( KW_AS (LPAREN (aliasList | columnNameTypeList) RPAREN | aliasList | columnNameTypeList) @@ -1948,11 +1527,7 @@ selectExpressionList Rules for windowing clauses */ window_clause - : KW_WINDOW window_defn (COMMA window_defn)* - ; - -window_defn - : id_ KW_AS window_specification + : KW_WINDOW id_ KW_AS window_specification (COMMA id_ KW_AS window_specification)* ; window_specification @@ -1961,30 +1536,12 @@ window_specification ; window_frame - : window_range_expression - | window_value_expression - ; - -window_range_expression - : KW_ROWS ( - window_frame_start_boundary + : (KW_ROWS | KW_RANGE) ( + ((KW_UNBOUNDED KW_PRECEDING) | (KW_CURRENT KW_ROW) | (Number KW_PRECEDING)) | KW_BETWEEN window_frame_boundary KW_AND window_frame_boundary ) ; -window_value_expression - : KW_RANGE ( - window_frame_start_boundary - | KW_BETWEEN window_frame_boundary KW_AND window_frame_boundary - ) - ; - -window_frame_start_boundary - : KW_UNBOUNDED KW_PRECEDING - | KW_CURRENT KW_ROW - | Number KW_PRECEDING - ; - window_frame_boundary : (KW_UNBOUNDED | Number) (KW_PRECEDING | KW_FOLLOWING) | KW_CURRENT KW_ROW @@ -1992,19 +1549,7 @@ window_frame_boundary // group by a,b groupByClause - : KW_GROUP KW_BY groupby_expression - ; - -// support for new and old rollup/cube syntax -groupby_expression - : columnName - | rollupStandard - | rollupOldSyntax - | groupByEmpty - ; - -groupByEmpty - : LPAREN RPAREN + : KW_GROUP KW_BY (columnName | rollupStandard | rollupOldSyntax | (LPAREN RPAREN)) ; // standard rollup syntax @@ -2020,60 +1565,30 @@ rollupOldSyntax ; groupingSetExpression - : groupingSetExpressionMultiple - | groupingExpressionSingle - ; - -groupingSetExpressionMultiple : LPAREN expression? (COMMA expression)* RPAREN - ; - -groupingExpressionSingle - : expression + | expression ; havingClause - : KW_HAVING havingCondition + : KW_HAVING expression ; qualifyClause : KW_QUALIFY expression ; -havingCondition - : expression - ; - -expressionsInParenthesis - : LPAREN expressionsNotInParenthesis RPAREN - ; - -expressionsNotInParenthesis - : first=expressionOrDefault more=expressionPart? - ; - -expressionPart - : (COMMA expressionOrDefault)+ - ; - expressionOrDefault - : defaultValue + : KW_DEFAULT | expression ; /** Parses comma separated list of expressions with optionally specified aliases. [] [, []] + Parses expressions which may have alias. If alias is not specified generate one. */ firstExpressionsWithAlias - : first=expression KW_AS? colAlias=id_? (COMMA expressionWithAlias)* - ; - -/** Parses expressions which may have alias. - If alias is not specified generate one. -*/ -expressionWithAlias - : expression KW_AS? alias=id_? + : first=expression KW_AS? colAlias=id_? (COMMA expression KW_AS? alias=id_?)* ; expressions @@ -2081,12 +1596,12 @@ expressions | expressionsNotInParenthesis ; -columnRefOrderInParenthesis - : LPAREN columnRefOrder (COMMA columnRefOrder)* RPAREN +expressionsInParenthesis + : LPAREN expressionsNotInParenthesis RPAREN ; -columnRefOrderNotInParenthesis - : columnRefOrder (COMMA columnRefOrder)* +expressionsNotInParenthesis + : first=expressionOrDefault ((COMMA expressionOrDefault)+)? ; // order by a,b @@ -2098,29 +1613,23 @@ clusterByClause : KW_CLUSTER KW_BY expressions ; -partitionByClause - : KW_PARTITION KW_BY expressions - ; - distributeByClause : KW_DISTRIBUTE KW_BY expressions ; sortByClause - : KW_SORT KW_BY (columnRefOrderInParenthesis | columnRefOrderNotInParenthesis) - ; - -// TRIM([LEADING|TRAILING|BOTH] trim_characters FROM str) -trimFunction - : KW_TRIM LPAREN (leading=KW_LEADING | trailing=KW_TRAILING | KW_BOTH)? trim_characters=selectExpression? KW_FROM str=selectExpression RPAREN + : KW_SORT KW_BY ( + (LPAREN columnRefOrder (COMMA columnRefOrder)* RPAREN) + | (columnRefOrder (COMMA columnRefOrder)*) + ) ; // fun(par1, par2, par3) function_ - : trimFunction + : KW_TRIM LPAREN (leading=KW_LEADING | trailing=KW_TRAILING | KW_BOTH)? trim_characters=selectExpression? KW_FROM str=selectExpression RPAREN | functionNameForInvoke LPAREN ( star=STAR - | dist=all_distinct? (selectExpression (COMMA selectExpression)*)? + | dist=(KW_ALL | KW_DISTINCT)? (selectExpression (COMMA selectExpression)*)? ) ( // SELECT rank(3) WITHIN GROUP () RPAREN within=KW_WITHIN KW_GROUP LPAREN ordBy=orderByClause RPAREN @@ -2134,8 +1643,7 @@ function_ ; null_treatment - : KW_RESPECT KW_NULLS - | KW_IGNORE KW_NULLS + : (KW_RESPECT | KW_IGNORE) KW_NULLS ; functionNameCreate @@ -2143,21 +1651,15 @@ functionNameCreate ; functionNameForDDL // Function name use to DDL, such as drop function - : userDefinedFuncName + : functionIdentifier | StringLiteral ; -functionNameForInvoke // Function name used to invoke - : userDefinedFuncName - | internalFunctionName - ; - -userDefinedFuncName // User Defined Function +functionNameForInvoke + // Function name used to invoke : functionIdentifier - ; - -internalFunctionName // Hive Internal Function - : sql11ReservedKeywordsUsedAsFunctionName + // Hive Internal Function + | sql11ReservedKeywordsUsedAsFunctionName | sysFuncNames ; @@ -2174,18 +1676,7 @@ whenExpression ; floorExpression - : KW_FLOOR LPAREN expression (KW_TO floorUnit=floorDateQualifiers)? RPAREN - ; - -floorDateQualifiers - : year - | KW_QUARTER - | month - | week - | day - | hour - | minute - | second + : KW_FLOOR LPAREN expression (KW_TO floorUnit=timeQualifiers)? RPAREN ; extractExpression @@ -2204,49 +1695,22 @@ timeQualifiers ; constant - : intervalLiteral + : value=intervalValue qualifiers=intervalQualifiers | Number - | dateLiteral - | timestampLiteral - | timestampLocalTZLiteral - | StringLiteral - | stringLiteralSequence + | KW_DATE StringLiteral + | KW_CURRENT_DATE + | KW_TIMESTAMP StringLiteral + | KW_CURRENT_TIMESTAMP + | KW_TIMESTAMPLOCALTZ StringLiteral + | StringLiteral StringLiteral* | IntegralLiteral | NumberLiteral - | charSetStringLiteral - | booleanValue + | csName=CharSetName csLiteral=CharSetLiteral + | KW_TRUE + | KW_FALSE | KW_NULL - | prepareStmtParam - ; - -prepareStmtParam - : p=parameterIdx - ; - -parameterIdx - : QUESTION - ; - -stringLiteralSequence - : StringLiteral StringLiteral+ - ; - -charSetStringLiteral - : csName=CharSetName csLiteral=CharSetLiteral - ; - -dateLiteral - : KW_DATE StringLiteral - | KW_CURRENT_DATE - ; - -timestampLiteral - : KW_TIMESTAMP StringLiteral - | KW_CURRENT_TIMESTAMP - ; - -timestampLocalTZLiteral - : KW_TIMESTAMPLOCALTZ StringLiteral + | p=QUESTION + | Identifier ; intervalValue @@ -2254,10 +1718,6 @@ intervalValue | Number ; -intervalLiteral - : value=intervalValue qualifiers=intervalQualifiers - ; - intervalExpression : LPAREN value=intervalValue RPAREN qualifiers=intervalQualifiers | KW_INTERVAL (value=intervalValue | LPAREN expr=expression RPAREN) qualifiers=intervalQualifiers @@ -2275,7 +1735,7 @@ intervalQualifiers ; expression - : precedenceOrExpression + : precedenceAndExpression (KW_OR precedenceAndExpression)* ; atomExpression @@ -2292,83 +1752,38 @@ atomExpression | id_ ; -precedenceFieldExpression - : atomExpression (LSQUARE expression RSQUARE | DOT id_)* - ; - -precedenceUnaryOperator - : PLUS - | MINUS - | TILDE - | BITWISENOT - ; - precedenceUnaryPrefixExpression - : precedenceUnaryOperator* precedenceFieldExpression - ; - -precedenceBitwiseXorOperator - : BITWISEXOR + : (PLUS | MINUS | TILDE | BITWISENOT)* atomExpression (LSQUARE expression RSQUARE | DOT id_)* ; precedenceBitwiseXorExpression - : precedenceUnaryPrefixExpression ( - precedenceBitwiseXorOperator precedenceUnaryPrefixExpression - )* - ; - -precedenceStarOperator - : STAR - | DIVIDE - | MOD - | DIV + : precedenceUnaryPrefixExpression (BITWISEXOR precedenceUnaryPrefixExpression)* ; precedenceStarExpression - : precedenceBitwiseXorExpression (precedenceStarOperator precedenceBitwiseXorExpression)* - ; - -precedencePlusOperator - : PLUS - | MINUS + : precedenceBitwiseXorExpression ((STAR | DIVIDE | MOD | DIV) precedenceBitwiseXorExpression)* ; precedencePlusExpression - : precedenceStarExpression (precedencePlusOperator precedenceStarExpression)* - ; - -precedenceConcatenateOperator - : CONCATENATE + : precedenceStarExpression ((PLUS | MINUS) precedenceStarExpression)* ; precedenceConcatenateExpression - : precedencePlusExpression (precedenceConcatenateOperator plus=precedencePlusExpression)* - ; - -precedenceAmpersandOperator - : AMPERSAND + : precedencePlusExpression (CONCATENATE plus=precedencePlusExpression)* ; precedenceAmpersandExpression - : precedenceConcatenateExpression (precedenceAmpersandOperator precedenceConcatenateExpression)* - ; - -precedenceBitwiseOrOperator - : BITWISEOR + : precedenceConcatenateExpression (AMPERSAND precedenceConcatenateExpression)* ; precedenceBitwiseOrExpression - : precedenceAmpersandExpression (precedenceBitwiseOrOperator precedenceAmpersandExpression)* - ; - -precedenceRegexpOperator - : KW_LIKE - | KW_RLIKE - | KW_REGEXP + : precedenceAmpersandExpression (BITWISEOR precedenceAmpersandExpression)* ; precedenceSimilarOperator - : precedenceRegexpOperator + : KW_LIKE + | KW_RLIKE + | KW_REGEXP | LESSTHANOREQUALTO | LESSTHAN | GREATERTHANOREQUALTO @@ -2380,12 +1795,8 @@ subQueryExpression ; precedenceSimilarExpression - : precedenceSimilarExpressionMain - | KW_EXISTS subQueryExpression - ; - -precedenceSimilarExpressionMain : a=precedenceBitwiseOrExpression part=precedenceSimilarExpressionPart? + | KW_EXISTS subQueryExpression ; precedenceSimilarExpressionPart @@ -2398,17 +1809,7 @@ precedenceSimilarExpressionAtom : KW_IN precedenceSimilarExpressionIn | KW_BETWEEN min=precedenceBitwiseOrExpression KW_AND max=precedenceBitwiseOrExpression | KW_LIKE (KW_ANY | KW_ALL) expr=expressionsInParenthesis - | precedenceSimilarExpressionQuantifierPredicate - ; - -precedenceSimilarExpressionQuantifierPredicate - : subQuerySelectorOperator quantifierType subQueryExpression - ; - -quantifierType - : KW_ANY - | KW_SOME - | KW_ALL + | subQuerySelectorOperator (KW_ANY | KW_SOME | KW_ALL) subQueryExpression ; precedenceSimilarExpressionIn @@ -2417,7 +1818,7 @@ precedenceSimilarExpressionIn ; precedenceSimilarExpressionPartNot - : precedenceRegexpOperator notExpr=precedenceBitwiseOrExpression + : (KW_LIKE | KW_RLIKE | KW_REGEXP) notExpr=precedenceBitwiseOrExpression | precedenceSimilarExpressionAtom ; @@ -2444,48 +1845,15 @@ isCondition | KW_TRUE | KW_FALSE | KW_UNKNOWN - | KW_NOT KW_NULL - | KW_NOT KW_TRUE - | KW_NOT KW_FALSE - | KW_NOT KW_UNKNOWN - ; - -precedenceUnarySuffixExpression - : precedenceEqualExpression (a=KW_IS isCondition)? - ; - -precedenceNotOperator - : KW_NOT + | KW_NOT (KW_NULL | KW_TRUE | KW_FALSE | KW_UNKNOWN) ; precedenceNotExpression - : precedenceNotOperator* precedenceUnarySuffixExpression - ; - -precedenceAndOperator - : KW_AND + : KW_NOT* precedenceEqualExpression (a=KW_IS isCondition)? ; precedenceAndExpression - : precedenceNotExpression (precedenceAndOperator precedenceNotExpression)* - ; - -precedenceOrOperator - : KW_OR - ; - -precedenceOrExpression - : precedenceAndExpression (precedenceOrOperator precedenceAndExpression)* - ; - -booleanValue - : KW_TRUE - | KW_FALSE - ; - -booleanValueTok - : KW_TRUE - | KW_FALSE + : precedenceNotExpression (KW_AND precedenceNotExpression)* ; tableOrPartition @@ -2505,12 +1873,7 @@ partitionSelectorSpec ; partitionSelectorVal - : id_ partitionSelectorOperator constant - ; - -partitionSelectorOperator - : KW_LIKE - | subQuerySelectorOperator + : id_ (KW_LIKE | subQuerySelectorOperator) constant ; subQuerySelectorOperator @@ -2859,65 +2222,103 @@ sql11ReservedKeywordsUsedAsFunctionName | KW_TIMESTAMP ; -// starting rule -hint - : hintList EOF - ; - -hintList - : hintItem (COMMA hintItem)* - ; - -hintItem - : hintName (LPAREN hintArgs RPAREN)? - ; - -hintName - : KW_MAPJOIN - | KW_SEMI - | KW_STREAMTABLE - | KW_PKFK_JOIN - ; - -hintArgs - : hintArgName (COMMA hintArgName)* - ; - -hintArgName - : Identifier - | Number - | KW_NONE - ; - -//----------------------- Rules for parsing Prepare statement----------------------------- -prepareStatement - : KW_PREPARE id_ KW_FROM queryStatementExpression - ; - -executeStatement - : KW_EXECUTE id_ KW_USING executeParamList - ; - -//TODO: instead of constant using expression will provide richer and broader parameters -executeParamList - : constant (COMMA constant)* +configPropertiesItem + : id_ + | KW_JOIN + | KW_PARTITION + | KW_MAP + | KW_REDUCE + | KW_USER + | KW_PERCENT + | KW_INTERVAL + | KW_ROWS + | KW_UNION + | KW_GROUP + | KW_MERGE + | KW_NULL + | KW_FETCH + | KW_LOCAL + | KW_DROP + | KW_TABLE + | KW_ON + | KW_ROW + | KW_GROUPING + | KW_SET + | KW_FORCE + | KW_START + | KW_INSERT + | KW_CONF + | KW_INTO + | KW_UNIQUE + | KW_COLUMN + | KW_TRANSFORM + | KW_DISTINCT + | KW_IN + | KW_REFERENCES + | KW_TIMESTAMP + | KW_ONLY + | KW_END + | KW_FUNCTION + | KW_UPDATE + | KW_AUTHORIZATION + | KW_DDL + | KW_VALUES + | KW_TIME + | KW_IS + | KW_FOR + | KW_NOT + | KW_BINARY + | KW_USING + | KW_READS + | KW_BETWEEN + | KW_CURRENT + | KW_AS ; resourcePlanDdlStatements - : createResourcePlanStatement - | alterResourcePlanStatement - | dropResourcePlanStatement - | globalWmStatement - | replaceResourcePlanStatement - | createTriggerStatement - | alterTriggerStatement - | dropTriggerStatement - | createPoolStatement - | alterPoolStatement - | dropPoolStatement - | createMappingStatement - | alterMappingStatement - | dropMappingStatement + : KW_CREATE KW_RESOURCE KW_PLAN ifNotExists? ( + name=id_ KW_LIKE likeName=id_ + | name=id_ (KW_WITH rpAssignList)? + ) + | KW_ALTER KW_RESOURCE KW_PLAN name=id_ ( + KW_VALIDATE + | disable + | KW_SET rpAssignList + | KW_UNSET rpUnassign (COMMA rpUnassign)* + | KW_RENAME KW_TO newName=id_ + | activate enable? + | enable activate? + ) + | KW_DROP KW_RESOURCE KW_PLAN ifExists? name=id_ + | (enable | disable) KW_WORKLOAD KW_MANAGEMENT + | KW_REPLACE ( + KW_ACTIVE KW_RESOURCE KW_PLAN KW_WITH src=id_ + | KW_RESOURCE KW_PLAN dest=id_ KW_WITH src=id_ + ) + | KW_CREATE KW_TRIGGER rpName=id_ DOT triggerName=id_ KW_WHEN triggerAtomExpression KW_DO triggerActionExpression + | KW_ALTER KW_TRIGGER rpName=id_ DOT triggerName=id_ ( + KW_WHEN triggerAtomExpression KW_DO triggerActionExpression + | (KW_ADD KW_TO | KW_DROP KW_FROM) (KW_POOL poolName=poolPath | KW_UNMANAGED) + ) + | KW_DROP KW_TRIGGER rpName=id_ DOT triggerName=id_ + | KW_CREATE KW_POOL rpName=id_ DOT poolPath KW_WITH poolAssignList + | KW_ALTER KW_POOL rpName=id_ DOT poolPath ( + KW_SET poolAssignList + | KW_UNSET KW_SCHEDULING_POLICY + | (KW_ADD | KW_DROP) KW_TRIGGER triggerName=id_ + ) + | KW_DROP KW_POOL rpName=id_ DOT poolPath + | (KW_CREATE | KW_ALTER) mappingType=mappingTypes KW_MAPPING StringLiteral KW_IN rpName=id_ ( + KW_TO path=poolPath + | KW_UNMANAGED + ) (KW_WITH KW_ORDER order=Number)? + | KW_DROP mappingType=mappingTypes KW_MAPPING StringLiteral KW_IN rpName=id_ + ; + +mappingTypes + : KW_USER + | KW_GROUP + | KW_APPLICATION ; rpAssign @@ -2934,23 +2335,8 @@ rpUnassign | KW_DEFAULT KW_POOL ; -rpUnassignList - : rpUnassign (COMMA rpUnassign)* - ; - -createResourcePlanStatement - : KW_CREATE KW_RESOURCE KW_PLAN ifNotExists? ( - name=id_ KW_LIKE likeName=id_ - | name=id_ (KW_WITH rpAssignList)? - ) - ; - -withReplace - : KW_WITH KW_REPLACE - ; - activate - : KW_ACTIVATE withReplace? + : KW_ACTIVATE (KW_WITH KW_REPLACE)? ; enable @@ -2963,10 +2349,6 @@ disable | KW_DISABLED ; -unmanaged - : KW_UNMANAGED - ; - year : KW_YEAR | KW_YEARS @@ -3008,70 +2390,12 @@ decimal | KW_NUMERIC ; -alterResourcePlanStatement - : KW_ALTER KW_RESOURCE KW_PLAN name=id_ ( - KW_VALIDATE - | disable - | KW_SET rpAssignList - | KW_UNSET rpUnassignList - | KW_RENAME KW_TO newName=id_ - | activate enable? - | enable activate? - ) - ; - -/** It might make sense to make this more generic, if something else could be enabled/disabled. - For now, it's only used for WM. Translate into another form of an alter statement. */ -globalWmStatement - : (enable | disable) KW_WORKLOAD KW_MANAGEMENT - ; - -replaceResourcePlanStatement - : KW_REPLACE ( - KW_ACTIVE KW_RESOURCE KW_PLAN KW_WITH src=id_ - | KW_RESOURCE KW_PLAN dest=id_ KW_WITH src=id_ - ) - ; - -dropResourcePlanStatement - : KW_DROP KW_RESOURCE KW_PLAN ifExists? name=id_ - ; - poolPath : id_ (DOT id_)* ; -triggerExpression - : triggerAtomExpression - ; - -triggerExpressionStandalone - : triggerExpression EOF - ; - -/* - The rules triggerOrExpression and triggerAndExpression are not being used right now. - Only > operator is supported, this should be changed if logic in ExpressionFactory changes. -*/ -triggerOrExpression - : triggerAndExpression (KW_OR triggerAndExpression)* - ; - -triggerAndExpression - : triggerAtomExpression (KW_AND triggerAtomExpression)* - ; - triggerAtomExpression - : id_ comparisionOperator triggerLiteral - ; - -triggerLiteral - : Number - | StringLiteral - ; - -comparisionOperator - : GREATERTHAN + : id_ GREATERTHAN (Number | StringLiteral) ; triggerActionExpression @@ -3079,25 +2403,6 @@ triggerActionExpression | KW_MOVE KW_TO poolPath ; -triggerActionExpressionStandalone - : triggerActionExpression EOF - ; - -createTriggerStatement - : KW_CREATE KW_TRIGGER rpName=id_ DOT triggerName=id_ KW_WHEN triggerExpression KW_DO triggerActionExpression - ; - -alterTriggerStatement - : KW_ALTER KW_TRIGGER rpName=id_ DOT triggerName=id_ ( - KW_WHEN triggerExpression KW_DO triggerActionExpression - | (KW_ADD KW_TO | KW_DROP KW_FROM) (KW_POOL poolName=poolPath | KW_UNMANAGED) - ) - ; - -dropTriggerStatement - : KW_DROP KW_TRIGGER rpName=id_ DOT triggerName=id_ - ; - poolAssign : ( KW_ALLOC_FRACTION EQUAL allocFraction=Number @@ -3109,38 +2414,4 @@ poolAssign poolAssignList : poolAssign (COMMA poolAssign)* - ; - -createPoolStatement - : KW_CREATE KW_POOL rpName=id_ DOT poolPath KW_WITH poolAssignList - ; - -alterPoolStatement - : KW_ALTER KW_POOL rpName=id_ DOT poolPath ( - KW_SET poolAssignList - | KW_UNSET KW_SCHEDULING_POLICY - | (KW_ADD | KW_DROP) KW_TRIGGER triggerName=id_ - ) - ; - -dropPoolStatement - : KW_DROP KW_POOL rpName=id_ DOT poolPath - ; - -createMappingStatement - : KW_CREATE mappingType=(KW_USER | KW_GROUP | KW_APPLICATION) KW_MAPPING name=StringLiteral KW_IN rpName=id_ ( - KW_TO path=poolPath - | unmanaged - ) (KW_WITH KW_ORDER order=Number)? - ; - -alterMappingStatement - : KW_ALTER mappingType=(KW_USER | KW_GROUP | KW_APPLICATION) KW_MAPPING name=StringLiteral KW_IN rpName=id_ ( - KW_TO path=poolPath - | unmanaged - ) (KW_WITH KW_ORDER order=Number)? - ; - -dropMappingStatement - : KW_DROP mappingType=(KW_USER | KW_GROUP | KW_APPLICATION) KW_MAPPING name=StringLiteral KW_IN rpName=id_ ; \ No newline at end of file diff --git a/src/lib/hive/HiveSqlParser.interp b/src/lib/hive/HiveSqlParser.interp index c1518f6..9b89072 100644 --- a/src/lib/hive/HiveSqlParser.interp +++ b/src/lib/hive/HiveSqlParser.interp @@ -885,35 +885,24 @@ program statement explainStatement explainOption -vectorizationOnly vectorizatonDetail execStatement loadStatement -dropPartitionsIgnoreClause replicationClause exportStatement importStatement replDumpStatement replDbPolicy replLoadStatement -replConfigs -replConfigsList replTableLevelPolicy -replStatusStatement ddlStatement ifExists -restrictOrCascade ifNotExists -force +restrictOrCascade rewriteEnabled rewriteDisabled storedAsDirs -orReplace createDatabaseStatement -dbLocation -dbManagedLocation -dbProperties -dbPropertiesList dbConnectorName switchDatabaseStatement dropDatabaseStatement @@ -994,12 +983,9 @@ tableComment tableLifecycle createTablePartitionSpec createTablePartitionColumnTypeSpec -createTablePartitionColumnSpec partitionTransformSpec -columnNameTransformConstraint partitionTransformType tableBuckets -tableImplBuckets tableSkewed rowFormat recordReader @@ -1010,15 +996,15 @@ tableRowFormat tablePropertiesPrefixed tableProperties tablePropertiesList +keyValueProperties +keyValuePropertyList keyValueProperty -keyProperty tableRowFormatFieldIdentifier tableRowFormatCollItemsIdentifier tableRowFormatMapKeysIdentifier tableRowFormatLinesIdentifier tableRowNullFormat tableFileFormat -tableLocation columnNameTypeList columnNameTypeOrConstraintList columnNameColonTypeList @@ -1043,15 +1029,12 @@ alterForeignKeyWithName skewedValueElement skewedColumnValuePairList skewedColumnValuePair -skewedColumnValues -skewedColumnValue -skewedValueLocationElement +constantList orderSpecification nullOrdering columnNameOrder columnNameCommentList columnNameComment -orderSpecificationRewrite columnRefOrder columnNameType columnNameTypeOrConstraint @@ -1069,8 +1052,8 @@ tableConstraintType constraintOptsCreate constraintOptsAlter columnNameColonType -colType -colTypeList +columnType +columnTypeList type primitiveType listType @@ -1092,103 +1075,34 @@ selectStatementWithCTE insertClause destination limitClause -deleteStatement columnAssignmentClause precedencePlusExpressionOrDefault setColumnsClause -updateStatement sqlTransactionStatement -startTransactionStatement transactionMode -transactionAccessMode -isolationLevel -levelOfIsolation -commitStatement -rollbackStatement -setAutoCommitStatement -abortTransactionStatement -abortCompactionStatement -mergeStatement whenClauses whenNotMatchedClause whenMatchedAndClause whenMatchedThenClause -updateOrDelete -killQueryStatement -compactionId compactionPool compactionType compactionStatus alterStatement alterTableStatementSuffix alterTblPartitionStatementSuffix -alterStatementPartitionKeyType alterViewStatementSuffix -alterMaterializedViewStatementSuffix -alterMaterializedViewSuffixRewrite -alterMaterializedViewSuffixRebuild alterDatabaseStatementSuffix -alterDatabaseSuffixProperties -alterDatabaseSuffixSetOwner -alterDatabaseSuffixSetLocation -alterDatabaseSuffixSetManagedLocation -alterStatementSuffixRename -alterStatementSuffixAddCol -alterStatementSuffixAddConstraint -alterStatementSuffixUpdateColumns -alterStatementSuffixProtections -alterStatementSuffixDropConstraint -alterStatementSuffixRenameCol -alterStatementSuffixUpdateStatsCol -alterStatementSuffixUpdateStats -alterStatementChangeColPosition -alterStatementSuffixAddPartitions -alterStatementSuffixAddPartitionsElement -alterStatementSuffixTouch -alterStatementSuffixArchive -alterStatementSuffixUnArchive -partitionLocation -alterStatementSuffixRecoverPartitions -alterStatementSuffixDropPartitions -alterStatementSuffixProperties -alterViewSuffixProperties -alterStatementSuffixSerdeProperties -tablePartitionPrefix -alterStatementSuffixFileFormat -alterStatementSuffixClusterbySortby -alterTblPartitionStatementSuffixSkewedLocation -skewedLocations -skewedLocationsList -skewedLocationMap -alterStatementSuffixLocation -alterStatementSuffixSkewedby -alterStatementSuffixExchangePartition -alterStatementSuffixRenamePart -alterStatementSuffixStatsPart -alterStatementSuffixMergeFiles -alterStatementSuffixBucketNum -blocking -compactPool -alterStatementSuffixCompact -alterStatementSuffixSetOwner -alterStatementSuffixSetPartSpec -alterStatementSuffixExecute -alterIndexStatementSuffix -fileFormat alterDataConnectorStatementSuffix -alterDataConnectorSuffixProperties -alterDataConnectorSuffixSetOwner -alterDataConnectorSuffixSetUrl +locationPath +alterStatementSuffixDropPartitions +skewedLocationMap +alterStatementSuffixExecute +fileFormat likeTableOrFile createTableStatement createDataConnectorStatement -dataConnectorComment -dataConnectorUrl -dataConnectorType -dcProperties dropDataConnectorStatement tableAllColumns -defaultValue expressionList aliasList fromClause @@ -1197,17 +1111,12 @@ atomjoinSource joinSource joinSourcePart uniqueJoinSource -uniqueJoinExpr -uniqueJoinToken joinToken lateralView tableAlias -tableBucketSample -splitSample tableSample tableSource asOfClause -uniqueJoinTableSource dbSchemaName dbSchemaNameCreate tableOrView @@ -1220,128 +1129,75 @@ partitioningSpec partitionTableFunctionSource partitionedTableFunction whereClause -searchCondition -valuesSource valuesClause -valuesTableConstructor -valueRowConstructor -firstValueRowConstructor virtualTableSource selectClause -all_distinct -selectList selectTrfmClause selectItem trfmClause selectExpression selectExpressionList window_clause -window_defn window_specification window_frame -window_range_expression -window_value_expression -window_frame_start_boundary window_frame_boundary groupByClause -groupby_expression -groupByEmpty rollupStandard rollupOldSyntax groupingSetExpression -groupingSetExpressionMultiple -groupingExpressionSingle havingClause qualifyClause -havingCondition -expressionsInParenthesis -expressionsNotInParenthesis -expressionPart expressionOrDefault firstExpressionsWithAlias -expressionWithAlias expressions -columnRefOrderInParenthesis -columnRefOrderNotInParenthesis +expressionsInParenthesis +expressionsNotInParenthesis orderByClause clusterByClause -partitionByClause distributeByClause sortByClause -trimFunction function_ null_treatment functionNameCreate functionNameForDDL functionNameForInvoke -userDefinedFuncName -internalFunctionName castExpression caseExpression whenExpression floorExpression -floorDateQualifiers extractExpression timeQualifiers constant -prepareStmtParam -parameterIdx -stringLiteralSequence -charSetStringLiteral -dateLiteral -timestampLiteral -timestampLocalTZLiteral intervalValue -intervalLiteral intervalExpression intervalQualifiers expression atomExpression -precedenceFieldExpression -precedenceUnaryOperator precedenceUnaryPrefixExpression -precedenceBitwiseXorOperator precedenceBitwiseXorExpression -precedenceStarOperator precedenceStarExpression -precedencePlusOperator precedencePlusExpression -precedenceConcatenateOperator precedenceConcatenateExpression -precedenceAmpersandOperator precedenceAmpersandExpression -precedenceBitwiseOrOperator precedenceBitwiseOrExpression -precedenceRegexpOperator precedenceSimilarOperator subQueryExpression precedenceSimilarExpression -precedenceSimilarExpressionMain precedenceSimilarExpressionPart precedenceSimilarExpressionAtom -precedenceSimilarExpressionQuantifierPredicate -quantifierType precedenceSimilarExpressionIn precedenceSimilarExpressionPartNot precedenceDistinctOperator precedenceEqualOperator precedenceEqualExpression isCondition -precedenceUnarySuffixExpression -precedenceNotOperator precedenceNotExpression -precedenceAndOperator precedenceAndExpression -precedenceOrOperator -precedenceOrExpression -booleanValue -booleanValueTok tableOrPartition partitionSpec partitionVal partitionSelectorSpec partitionSelectorVal -partitionSelectorOperator subQuerySelectorOperator sysFuncNames id_ @@ -1349,26 +1205,15 @@ functionIdentifier principalIdentifier nonReserved sql11ReservedKeywordsUsedAsFunctionName -hint -hintList -hintItem -hintName -hintArgs -hintArgName -prepareStatement -executeStatement -executeParamList +configPropertiesItem resourcePlanDdlStatements +mappingTypes rpAssign rpAssignList rpUnassign -rpUnassignList -createResourcePlanStatement -withReplace activate enable disable -unmanaged year month week @@ -1377,32 +1222,12 @@ hour minute second decimal -alterResourcePlanStatement -globalWmStatement -replaceResourcePlanStatement -dropResourcePlanStatement poolPath -triggerExpression -triggerExpressionStandalone -triggerOrExpression -triggerAndExpression triggerAtomExpression -triggerLiteral -comparisionOperator triggerActionExpression -triggerActionExpressionStandalone -createTriggerStatement -alterTriggerStatement -dropTriggerStatement poolAssign poolAssignList -createPoolStatement -alterPoolStatement -dropPoolStatement -createMappingStatement -alterMappingStatement -dropMappingStatement atn: -[4, 1, 438, 5536, 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, 1, 0, 5, 0, 1044, 8, 0, 10, 0, 12, 0, 1047, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 1053, 8, 1, 1, 1, 3, 1, 1056, 8, 1, 1, 2, 1, 2, 5, 2, 1060, 8, 2, 10, 2, 12, 2, 1063, 9, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1068, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1075, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 1085, 8, 3, 1, 3, 3, 3, 1088, 8, 3, 1, 3, 1, 3, 3, 3, 1092, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1112, 8, 6, 1, 7, 1, 7, 1, 7, 3, 7, 1117, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1122, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1128, 8, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 1135, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1148, 8, 10, 1, 11, 1, 11, 3, 11, 1152, 8, 11, 1, 11, 1, 11, 3, 11, 1156, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1161, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1168, 8, 12, 1, 12, 1, 12, 3, 12, 1172, 8, 12, 1, 13, 1, 13, 1, 13, 3, 13, 1177, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1184, 8, 14, 1, 14, 1, 14, 3, 14, 1188, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 5, 16, 1197, 8, 16, 10, 16, 12, 16, 1200, 9, 16, 1, 17, 1, 17, 1, 17, 3, 17, 1205, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1212, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1261, 8, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 3, 28, 1289, 8, 28, 1, 28, 1, 28, 3, 28, 1293, 8, 28, 1, 28, 1, 28, 3, 28, 1297, 8, 28, 1, 28, 3, 28, 1300, 8, 28, 1, 28, 3, 28, 1303, 8, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1308, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1314, 8, 28, 1, 28, 1, 28, 3, 28, 1318, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1324, 8, 28, 3, 28, 1326, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 5, 32, 1341, 8, 32, 10, 32, 12, 32, 1344, 9, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 3, 35, 1355, 8, 35, 1, 35, 1, 35, 3, 35, 1359, 8, 35, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 3, 37, 1366, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1374, 8, 37, 1, 37, 3, 37, 1377, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1382, 8, 38, 1, 38, 1, 38, 3, 38, 1386, 8, 38, 1, 38, 3, 38, 1389, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 1399, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1407, 8, 40, 5, 40, 1409, 8, 40, 10, 40, 12, 40, 1412, 9, 40, 3, 40, 1414, 8, 40, 1, 41, 1, 41, 3, 41, 1418, 8, 41, 1, 42, 1, 42, 3, 42, 1422, 8, 42, 1, 42, 3, 42, 1425, 8, 42, 1, 43, 1, 43, 1, 43, 3, 43, 1430, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1436, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1441, 8, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1446, 8, 43, 1, 43, 1, 43, 3, 43, 1450, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1461, 8, 44, 3, 44, 1463, 8, 44, 1, 44, 1, 44, 3, 44, 1467, 8, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1477, 8, 47, 1, 47, 1, 47, 3, 47, 1481, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1487, 8, 47, 1, 47, 3, 47, 1490, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1497, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1502, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1510, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1515, 8, 47, 1, 47, 1, 47, 3, 47, 1519, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1527, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1532, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1538, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1544, 8, 47, 1, 47, 3, 47, 1547, 8, 47, 1, 47, 3, 47, 1550, 8, 47, 1, 47, 3, 47, 1553, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1562, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1570, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1575, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1583, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1590, 8, 47, 1, 47, 3, 47, 1593, 8, 47, 1, 47, 3, 47, 1596, 8, 47, 3, 47, 1598, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1606, 8, 47, 1, 47, 3, 47, 1609, 8, 47, 1, 47, 3, 47, 1612, 8, 47, 1, 47, 3, 47, 1615, 8, 47, 1, 47, 3, 47, 1618, 8, 47, 1, 47, 3, 47, 1621, 8, 47, 1, 47, 3, 47, 1624, 8, 47, 1, 47, 3, 47, 1627, 8, 47, 1, 47, 3, 47, 1630, 8, 47, 1, 47, 3, 47, 1633, 8, 47, 1, 47, 3, 47, 1636, 8, 47, 3, 47, 1638, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1650, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1656, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1664, 8, 47, 3, 47, 1666, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1676, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1682, 8, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1697, 8, 52, 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, 3, 56, 1714, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1719, 8, 56, 1, 57, 1, 57, 3, 57, 1723, 8, 57, 1, 57, 1, 57, 3, 57, 1727, 8, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1734, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1739, 8, 58, 10, 58, 12, 58, 1742, 9, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1747, 8, 58, 1, 59, 1, 59, 3, 59, 1751, 8, 59, 1, 59, 3, 59, 1754, 8, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1759, 8, 59, 10, 59, 12, 59, 1762, 9, 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, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1784, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1789, 8, 64, 1, 64, 1, 64, 3, 64, 1793, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 3, 66, 1801, 8, 66, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1810, 8, 68, 1, 68, 1, 68, 3, 68, 1814, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1820, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1826, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1833, 8, 69, 1, 69, 3, 69, 1836, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1842, 8, 69, 1, 70, 1, 70, 1, 70, 5, 70, 1847, 8, 70, 10, 70, 12, 70, 1850, 9, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1857, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 5, 73, 1864, 8, 73, 10, 73, 12, 73, 1867, 9, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1875, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1882, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 1902, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1909, 8, 80, 3, 80, 1911, 8, 80, 1, 81, 1, 81, 1, 81, 5, 81, 1916, 8, 81, 10, 81, 12, 81, 1919, 9, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 3, 84, 1928, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 1936, 8, 84, 1, 85, 1, 85, 3, 85, 1940, 8, 85, 1, 85, 1, 85, 3, 85, 1944, 8, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1957, 8, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1966, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1982, 8, 89, 1, 89, 1, 89, 3, 89, 1986, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1991, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1996, 8, 89, 1, 89, 3, 89, 1999, 8, 89, 1, 89, 3, 89, 2002, 8, 89, 1, 89, 1, 89, 3, 89, 2006, 8, 89, 1, 89, 3, 89, 2009, 8, 89, 1, 89, 3, 89, 2012, 8, 89, 1, 90, 1, 90, 1, 90, 3, 90, 2017, 8, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 2025, 8, 91, 1, 91, 1, 91, 3, 91, 2029, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 2036, 8, 91, 1, 91, 3, 91, 2039, 8, 91, 1, 91, 3, 91, 2042, 8, 91, 1, 91, 3, 91, 2045, 8, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2057, 8, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2063, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 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, 98, 1, 98, 1, 98, 3, 98, 2089, 8, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 2097, 8, 99, 1, 99, 1, 99, 3, 99, 2101, 8, 99, 1, 99, 3, 99, 2104, 8, 99, 1, 99, 3, 99, 2107, 8, 99, 1, 99, 3, 99, 2110, 8, 99, 1, 99, 3, 99, 2113, 8, 99, 1, 99, 3, 99, 2116, 8, 99, 1, 99, 3, 99, 2119, 8, 99, 1, 99, 3, 99, 2122, 8, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2131, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 2141, 8, 101, 1, 101, 3, 101, 2144, 8, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 2164, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2170, 8, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 2176, 8, 105, 1, 105, 3, 105, 2179, 8, 105, 3, 105, 2181, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 3, 107, 2188, 8, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 3, 108, 2195, 8, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2208, 8, 111, 1, 111, 1, 111, 1, 111, 3, 111, 2213, 8, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 5, 112, 2220, 8, 112, 10, 112, 12, 112, 2223, 9, 112, 1, 113, 1, 113, 1, 113, 5, 113, 2228, 8, 113, 10, 113, 12, 113, 2231, 9, 113, 1, 114, 1, 114, 1, 114, 5, 114, 2236, 8, 114, 10, 114, 12, 114, 2239, 9, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2248, 8, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2261, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2274, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 2295, 8, 119, 1, 120, 1, 120, 3, 120, 2299, 8, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2314, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 2320, 8, 124, 1, 124, 3, 124, 2323, 8, 124, 1, 124, 3, 124, 2326, 8, 124, 1, 124, 3, 124, 2329, 8, 124, 1, 124, 3, 124, 2332, 8, 124, 1, 125, 1, 125, 3, 125, 2336, 8, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 5, 128, 2348, 8, 128, 10, 128, 12, 128, 2351, 9, 128, 1, 128, 1, 128, 1, 128, 5, 128, 2356, 8, 128, 10, 128, 12, 128, 2359, 9, 128, 3, 128, 2361, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 2376, 8, 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, 134, 1, 134, 1, 134, 1, 134, 1, 134, 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, 3, 136, 2410, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2418, 8, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2423, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2431, 8, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2436, 8, 136, 1, 136, 1, 136, 1, 136, 3, 136, 2441, 8, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 5, 138, 2449, 8, 138, 10, 138, 12, 138, 2452, 9, 138, 1, 139, 1, 139, 1, 139, 5, 139, 2457, 8, 139, 10, 139, 12, 139, 2460, 9, 139, 1, 140, 1, 140, 1, 140, 5, 140, 2465, 8, 140, 10, 140, 12, 140, 2468, 9, 140, 1, 141, 1, 141, 1, 141, 5, 141, 2473, 8, 141, 10, 141, 12, 141, 2476, 9, 141, 1, 142, 1, 142, 1, 142, 5, 142, 2481, 8, 142, 10, 142, 12, 142, 2484, 9, 142, 1, 142, 3, 142, 2487, 8, 142, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 2497, 8, 144, 5, 144, 2499, 8, 144, 10, 144, 12, 144, 2502, 9, 144, 1, 145, 1, 145, 1, 145, 5, 145, 2507, 8, 145, 10, 145, 12, 145, 2510, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2518, 8, 147, 1, 147, 3, 147, 2521, 8, 147, 1, 148, 1, 148, 3, 148, 2525, 8, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 3, 150, 2532, 8, 150, 1, 151, 1, 151, 1, 152, 1, 152, 3, 152, 2538, 8, 152, 1, 152, 1, 152, 3, 152, 2542, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 2548, 8, 153, 1, 154, 1, 154, 3, 154, 2552, 8, 154, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 3, 157, 2564, 8, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 2573, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 3, 158, 2584, 8, 158, 1, 159, 1, 159, 3, 159, 2588, 8, 159, 1, 160, 1, 160, 1, 160, 5, 160, 2593, 8, 160, 10, 160, 12, 160, 2596, 9, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 5, 162, 2605, 8, 162, 10, 162, 12, 162, 2608, 9, 162, 1, 163, 1, 163, 1, 164, 1, 164, 3, 164, 2614, 8, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 3, 167, 2623, 8, 167, 1, 167, 3, 167, 2626, 8, 167, 1, 168, 1, 168, 1, 168, 5, 168, 2631, 8, 168, 10, 168, 12, 168, 2634, 9, 168, 1, 169, 1, 169, 1, 169, 3, 169, 2639, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 3, 171, 2645, 8, 171, 1, 171, 3, 171, 2648, 8, 171, 1, 171, 3, 171, 2651, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2657, 8, 172, 1, 173, 1, 173, 3, 173, 2661, 8, 173, 1, 174, 1, 174, 3, 174, 2665, 8, 174, 1, 175, 1, 175, 1, 175, 3, 175, 2670, 8, 175, 1, 175, 1, 175, 3, 175, 2674, 8, 175, 1, 176, 1, 176, 3, 176, 2678, 8, 176, 1, 177, 1, 177, 3, 177, 2682, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 2690, 8, 177, 1, 178, 1, 178, 3, 178, 2694, 8, 178, 1, 178, 1, 178, 3, 178, 2698, 8, 178, 1, 179, 1, 179, 3, 179, 2702, 8, 179, 1, 180, 1, 180, 3, 180, 2706, 8, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 2714, 8, 180, 1, 181, 1, 181, 3, 181, 2718, 8, 181, 1, 181, 1, 181, 3, 181, 2722, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 2730, 8, 182, 1, 183, 1, 183, 1, 183, 3, 183, 2735, 8, 183, 1, 184, 1, 184, 1, 184, 3, 184, 2740, 8, 184, 1, 185, 1, 185, 3, 185, 2744, 8, 185, 1, 186, 1, 186, 3, 186, 2748, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2755, 8, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 5, 189, 2762, 8, 189, 10, 189, 12, 189, 2765, 9, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2772, 8, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2784, 8, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2802, 8, 191, 1, 191, 3, 191, 2805, 8, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2811, 8, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 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, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 3, 196, 2837, 8, 196, 1, 197, 3, 197, 2840, 8, 197, 1, 197, 1, 197, 1, 198, 1, 198, 3, 198, 2846, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 2852, 8, 199, 10, 199, 12, 199, 2855, 9, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2862, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 5, 201, 2873, 8, 201, 10, 201, 12, 201, 2876, 9, 201, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2882, 8, 202, 1, 202, 3, 202, 2885, 8, 202, 1, 202, 3, 202, 2888, 8, 202, 1, 202, 3, 202, 2891, 8, 202, 1, 202, 3, 202, 2894, 8, 202, 1, 202, 3, 202, 2897, 8, 202, 1, 202, 3, 202, 2900, 8, 202, 1, 202, 3, 202, 2903, 8, 202, 1, 202, 3, 202, 2906, 8, 202, 1, 202, 3, 202, 2909, 8, 202, 1, 202, 3, 202, 2912, 8, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2917, 8, 202, 1, 202, 3, 202, 2920, 8, 202, 1, 202, 3, 202, 2923, 8, 202, 1, 202, 3, 202, 2926, 8, 202, 1, 202, 3, 202, 2929, 8, 202, 1, 202, 3, 202, 2932, 8, 202, 1, 202, 3, 202, 2935, 8, 202, 1, 202, 3, 202, 2938, 8, 202, 1, 202, 3, 202, 2941, 8, 202, 1, 202, 3, 202, 2944, 8, 202, 1, 202, 3, 202, 2947, 8, 202, 3, 202, 2949, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2955, 8, 203, 1, 204, 1, 204, 3, 204, 2959, 8, 204, 1, 204, 3, 204, 2962, 8, 204, 1, 204, 3, 204, 2965, 8, 204, 1, 204, 3, 204, 2968, 8, 204, 1, 204, 3, 204, 2971, 8, 204, 1, 204, 3, 204, 2974, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 2981, 8, 204, 1, 205, 1, 205, 3, 205, 2985, 8, 205, 1, 205, 3, 205, 2988, 8, 205, 1, 205, 3, 205, 2991, 8, 205, 1, 205, 3, 205, 2994, 8, 205, 1, 205, 3, 205, 2997, 8, 205, 1, 205, 3, 205, 3000, 8, 205, 1, 206, 1, 206, 1, 206, 4, 206, 3005, 8, 206, 11, 206, 12, 206, 3006, 1, 207, 3, 207, 3010, 8, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3018, 8, 208, 1, 208, 1, 208, 3, 208, 3022, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3029, 8, 208, 3, 208, 3031, 8, 208, 1, 209, 3, 209, 3034, 8, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3039, 8, 209, 1, 209, 3, 209, 3042, 8, 209, 1, 209, 1, 209, 3, 209, 3046, 8, 209, 1, 210, 1, 210, 1, 210, 3, 210, 3051, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 3057, 8, 210, 1, 211, 1, 211, 1, 211, 1, 211, 3, 211, 3063, 8, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 3, 213, 3071, 8, 213, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 3077, 8, 214, 10, 214, 12, 214, 3080, 9, 214, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 3086, 8, 215, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3092, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 5, 217, 3099, 8, 217, 10, 217, 12, 217, 3102, 9, 217, 3, 217, 3104, 8, 217, 1, 218, 1, 218, 3, 218, 3108, 8, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 222, 1, 222, 3, 222, 3121, 8, 222, 1, 223, 1, 223, 3, 223, 3125, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 4, 225, 3134, 8, 225, 11, 225, 12, 225, 3135, 1, 226, 1, 226, 1, 226, 4, 226, 3141, 8, 226, 11, 226, 12, 226, 3142, 1, 227, 1, 227, 3, 227, 3147, 8, 227, 1, 227, 1, 227, 1, 227, 3, 227, 3152, 8, 227, 1, 227, 3, 227, 3155, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 5, 228, 3165, 8, 228, 10, 228, 12, 228, 3168, 9, 228, 1, 228, 3, 228, 3171, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 3178, 8, 229, 1, 229, 1, 229, 1, 229, 3, 229, 3183, 8, 229, 1, 229, 1, 229, 1, 229, 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, 232, 1, 232, 1, 232, 3, 232, 3203, 8, 232, 1, 233, 1, 233, 1, 233, 4, 233, 3208, 8, 233, 11, 233, 12, 233, 3209, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 3233, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 3249, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 3266, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 3272, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 3289, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 3302, 8, 242, 1, 243, 1, 243, 3, 243, 3306, 8, 243, 1, 244, 1, 244, 3, 244, 3310, 8, 244, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 3, 246, 3317, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 3, 252, 3345, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 3352, 8, 252, 1, 253, 1, 253, 1, 253, 3, 253, 3357, 8, 253, 1, 254, 1, 254, 1, 254, 3, 254, 3362, 8, 254, 1, 255, 1, 255, 1, 255, 3, 255, 3367, 8, 255, 1, 255, 1, 255, 1, 255, 3, 255, 3372, 8, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 3, 257, 3380, 8, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 3386, 8, 257, 1, 257, 1, 257, 3, 257, 3390, 8, 257, 1, 257, 3, 257, 3393, 8, 257, 1, 257, 3, 257, 3396, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 3402, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 3409, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 3, 260, 3419, 8, 260, 1, 261, 1, 261, 3, 261, 3423, 8, 261, 1, 261, 4, 261, 3426, 8, 261, 11, 261, 12, 261, 3427, 1, 262, 1, 262, 3, 262, 3432, 8, 262, 1, 263, 1, 263, 5, 263, 3436, 8, 263, 10, 263, 12, 263, 3439, 9, 263, 1, 264, 1, 264, 5, 264, 3443, 8, 264, 10, 264, 12, 264, 3446, 9, 264, 1, 265, 1, 265, 5, 265, 3450, 8, 265, 10, 265, 12, 265, 3453, 9, 265, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 3463, 8, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 5, 268, 3470, 8, 268, 10, 268, 12, 268, 3473, 9, 268, 1, 268, 3, 268, 3476, 8, 268, 1, 268, 3, 268, 3479, 8, 268, 1, 268, 3, 268, 3482, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 3490, 8, 269, 1, 269, 3, 269, 3493, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 3501, 8, 270, 1, 270, 3, 270, 3504, 8, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 3, 271, 3512, 8, 271, 1, 271, 1, 271, 3, 271, 3516, 8, 271, 1, 271, 1, 271, 1, 271, 3, 271, 3521, 8, 271, 1, 272, 1, 272, 3, 272, 3525, 8, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 3, 274, 3534, 8, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 5, 277, 3548, 8, 277, 10, 277, 12, 277, 3551, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 3565, 8, 280, 3, 280, 3567, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 3583, 8, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 3590, 8, 283, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 3, 288, 3607, 8, 288, 1, 288, 3, 288, 3610, 8, 288, 1, 288, 3, 288, 3613, 8, 288, 1, 288, 3, 288, 3616, 8, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 3622, 8, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 3645, 8, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 3, 292, 3653, 8, 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, 3, 293, 3667, 8, 293, 1, 293, 3, 293, 3670, 8, 293, 1, 294, 1, 294, 1, 294, 3, 294, 3675, 8, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 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, 3, 298, 3701, 8, 298, 1, 299, 1, 299, 3, 299, 3705, 8, 299, 1, 299, 3, 299, 3708, 8, 299, 1, 299, 3, 299, 3711, 8, 299, 1, 299, 1, 299, 3, 299, 3715, 8, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3720, 8, 299, 1, 299, 3, 299, 3723, 8, 299, 1, 299, 3, 299, 3726, 8, 299, 1, 299, 3, 299, 3729, 8, 299, 1, 299, 3, 299, 3732, 8, 299, 1, 299, 3, 299, 3735, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3741, 8, 299, 1, 299, 3, 299, 3744, 8, 299, 1, 299, 3, 299, 3747, 8, 299, 1, 299, 3, 299, 3750, 8, 299, 1, 299, 3, 299, 3753, 8, 299, 1, 299, 3, 299, 3756, 8, 299, 1, 299, 3, 299, 3759, 8, 299, 1, 299, 3, 299, 3762, 8, 299, 1, 299, 3, 299, 3765, 8, 299, 1, 299, 3, 299, 3768, 8, 299, 1, 299, 1, 299, 3, 299, 3772, 8, 299, 3, 299, 3774, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3780, 8, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3785, 8, 299, 1, 299, 3, 299, 3788, 8, 299, 1, 299, 3, 299, 3791, 8, 299, 1, 299, 3, 299, 3794, 8, 299, 1, 299, 3, 299, 3797, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 3803, 8, 299, 1, 299, 3, 299, 3806, 8, 299, 1, 299, 3, 299, 3809, 8, 299, 1, 299, 3, 299, 3812, 8, 299, 1, 299, 3, 299, 3815, 8, 299, 1, 299, 3, 299, 3818, 8, 299, 1, 299, 3, 299, 3821, 8, 299, 1, 299, 3, 299, 3824, 8, 299, 1, 299, 3, 299, 3827, 8, 299, 1, 299, 3, 299, 3830, 8, 299, 1, 299, 1, 299, 3, 299, 3834, 8, 299, 3, 299, 3836, 8, 299, 3, 299, 3838, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 3843, 8, 300, 1, 300, 1, 300, 3, 300, 3847, 8, 300, 1, 300, 3, 300, 3850, 8, 300, 1, 300, 3, 300, 3853, 8, 300, 1, 300, 1, 300, 1, 300, 3, 300, 3858, 8, 300, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 3, 305, 3876, 8, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 3883, 8, 306, 10, 306, 12, 306, 3886, 9, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 5, 308, 3895, 8, 308, 10, 308, 12, 308, 3898, 9, 308, 1, 309, 1, 309, 1, 309, 5, 309, 3903, 8, 309, 10, 309, 12, 309, 3906, 9, 309, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 311, 1, 311, 4, 311, 3915, 8, 311, 11, 311, 12, 311, 3916, 1, 311, 3, 311, 3920, 8, 311, 1, 312, 1, 312, 5, 312, 3924, 8, 312, 10, 312, 12, 312, 3927, 9, 312, 1, 312, 1, 312, 5, 312, 3931, 8, 312, 10, 312, 12, 312, 3934, 9, 312, 1, 312, 1, 312, 5, 312, 3938, 8, 312, 10, 312, 12, 312, 3941, 9, 312, 1, 312, 1, 312, 5, 312, 3945, 8, 312, 10, 312, 12, 312, 3948, 9, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 3954, 8, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 3963, 8, 313, 5, 313, 3965, 8, 313, 10, 313, 12, 313, 3968, 9, 313, 1, 314, 1, 314, 1, 314, 1, 314, 3, 314, 3974, 8, 314, 1, 314, 5, 314, 3977, 8, 314, 10, 314, 12, 314, 3980, 9, 314, 1, 315, 3, 315, 3983, 8, 315, 1, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 3999, 8, 318, 1, 318, 1, 318, 3, 318, 4003, 8, 318, 3, 318, 4005, 8, 318, 1, 318, 3, 318, 4008, 8, 318, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 5, 319, 4019, 8, 319, 10, 319, 12, 319, 4022, 9, 319, 3, 319, 4024, 8, 319, 1, 319, 3, 319, 4027, 8, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 5, 319, 4037, 8, 319, 10, 319, 12, 319, 4040, 9, 319, 3, 319, 4042, 8, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 3, 319, 4049, 8, 319, 1, 319, 1, 319, 1, 319, 1, 319, 1, 319, 5, 319, 4056, 8, 319, 10, 319, 12, 319, 4059, 9, 319, 1, 319, 1, 319, 3, 319, 4063, 8, 319, 3, 319, 4065, 8, 319, 3, 319, 4067, 8, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 1, 321, 5, 321, 4082, 8, 321, 10, 321, 12, 321, 4085, 9, 321, 3, 321, 4087, 8, 321, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 322, 1, 322, 3, 322, 4096, 8, 322, 1, 322, 1, 322, 1, 323, 1, 323, 3, 323, 4102, 8, 323, 1, 324, 1, 324, 3, 324, 4106, 8, 324, 1, 324, 3, 324, 4109, 8, 324, 1, 324, 3, 324, 4112, 8, 324, 1, 324, 3, 324, 4115, 8, 324, 1, 324, 3, 324, 4118, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4130, 8, 325, 1, 326, 1, 326, 3, 326, 4134, 8, 326, 1, 326, 3, 326, 4137, 8, 326, 1, 326, 3, 326, 4140, 8, 326, 1, 327, 1, 327, 1, 328, 1, 328, 1, 329, 1, 329, 3, 329, 4148, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 330, 3, 330, 4155, 8, 330, 1, 330, 3, 330, 4158, 8, 330, 1, 331, 1, 331, 1, 331, 1, 331, 1, 331, 3, 331, 4165, 8, 331, 1, 331, 3, 331, 4168, 8, 331, 1, 332, 1, 332, 1, 332, 3, 332, 4173, 8, 332, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 3, 333, 4180, 8, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 4188, 8, 334, 1, 334, 1, 334, 1, 335, 1, 335, 3, 335, 4194, 8, 335, 1, 335, 1, 335, 1, 335, 3, 335, 4199, 8, 335, 1, 335, 1, 335, 3, 335, 4203, 8, 335, 1, 336, 1, 336, 1, 336, 3, 336, 4208, 8, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 4215, 8, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 5, 337, 4227, 8, 337, 10, 337, 12, 337, 4230, 9, 337, 3, 337, 4232, 8, 337, 1, 337, 1, 337, 3, 337, 4236, 8, 337, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 5, 342, 4251, 8, 342, 10, 342, 12, 342, 4254, 9, 342, 1, 342, 1, 342, 1, 342, 5, 342, 4259, 8, 342, 10, 342, 12, 342, 4262, 9, 342, 3, 342, 4264, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 4277, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 5, 345, 4284, 8, 345, 10, 345, 12, 345, 4287, 9, 345, 3, 345, 4289, 8, 345, 1, 345, 1, 345, 1, 346, 1, 346, 3, 346, 4295, 8, 346, 1, 346, 3, 346, 4298, 8, 346, 1, 346, 1, 346, 1, 346, 3, 346, 4303, 8, 346, 1, 346, 3, 346, 4306, 8, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 5, 348, 4313, 8, 348, 10, 348, 12, 348, 4316, 9, 348, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 4329, 8, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 4335, 8, 349, 3, 349, 4337, 8, 349, 1, 349, 1, 349, 1, 349, 1, 350, 1, 350, 1, 350, 3, 350, 4345, 8, 350, 1, 350, 3, 350, 4348, 8, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 1, 350, 5, 350, 4356, 8, 350, 10, 350, 12, 350, 4359, 9, 350, 1, 350, 1, 350, 3, 350, 4363, 8, 350, 3, 350, 4365, 8, 350, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 1, 351, 3, 351, 4377, 8, 351, 1, 351, 1, 351, 1, 351, 1, 351, 3, 351, 4383, 8, 351, 3, 351, 4385, 8, 351, 1, 351, 1, 351, 1, 351, 1, 352, 1, 352, 3, 352, 4392, 8, 352, 1, 353, 1, 353, 1, 353, 5, 353, 4397, 8, 353, 10, 353, 12, 353, 4400, 9, 353, 1, 354, 1, 354, 1, 354, 1, 354, 5, 354, 4406, 8, 354, 10, 354, 12, 354, 4409, 9, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 356, 1, 356, 1, 356, 3, 356, 4418, 8, 356, 1, 356, 3, 356, 4421, 8, 356, 1, 356, 3, 356, 4424, 8, 356, 1, 356, 3, 356, 4427, 8, 356, 1, 357, 1, 357, 3, 357, 4431, 8, 357, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 1, 358, 3, 358, 4440, 8, 358, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 1, 359, 3, 359, 4449, 8, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 4457, 8, 360, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 4463, 8, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 4473, 8, 363, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 3, 365, 4480, 8, 365, 1, 365, 1, 365, 1, 365, 1, 365, 5, 365, 4486, 8, 365, 10, 365, 12, 365, 4489, 9, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 4498, 8, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 5, 366, 4506, 8, 366, 10, 366, 12, 366, 4509, 9, 366, 1, 366, 1, 366, 3, 366, 4513, 8, 366, 1, 367, 1, 367, 3, 367, 4517, 8, 367, 1, 368, 1, 368, 3, 368, 4521, 8, 368, 1, 368, 1, 368, 5, 368, 4525, 8, 368, 10, 368, 12, 368, 4528, 9, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 374, 1, 374, 3, 374, 4548, 8, 374, 1, 375, 1, 375, 4, 375, 4552, 8, 375, 11, 375, 12, 375, 4553, 1, 376, 1, 376, 3, 376, 4558, 8, 376, 1, 377, 1, 377, 3, 377, 4562, 8, 377, 1, 377, 3, 377, 4565, 8, 377, 1, 377, 1, 377, 5, 377, 4569, 8, 377, 10, 377, 12, 377, 4572, 9, 377, 1, 378, 1, 378, 3, 378, 4576, 8, 378, 1, 378, 3, 378, 4579, 8, 378, 1, 379, 1, 379, 3, 379, 4583, 8, 379, 1, 380, 1, 380, 1, 380, 1, 380, 5, 380, 4589, 8, 380, 10, 380, 12, 380, 4592, 9, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 5, 381, 4599, 8, 381, 10, 381, 12, 381, 4602, 9, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 5, 382, 4609, 8, 382, 10, 382, 12, 382, 4612, 9, 382, 1, 383, 1, 383, 1, 383, 1, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 1, 386, 1, 386, 1, 386, 1, 386, 3, 386, 4630, 8, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 4637, 8, 387, 1, 387, 3, 387, 4640, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 4651, 8, 388, 1, 388, 1, 388, 1, 388, 5, 388, 4656, 8, 388, 10, 388, 12, 388, 4659, 9, 388, 3, 388, 4661, 8, 388, 3, 388, 4663, 8, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 4674, 8, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 4684, 8, 388, 3, 388, 4686, 8, 388, 1, 389, 1, 389, 1, 389, 1, 389, 3, 389, 4692, 8, 389, 1, 390, 1, 390, 1, 391, 1, 391, 3, 391, 4698, 8, 391, 1, 392, 1, 392, 3, 392, 4702, 8, 392, 1, 393, 1, 393, 1, 394, 1, 394, 3, 394, 4708, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 3, 395, 4717, 8, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 4, 396, 4728, 8, 396, 11, 396, 12, 396, 4729, 1, 396, 1, 396, 3, 396, 4734, 8, 396, 1, 396, 1, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 4, 397, 4744, 8, 397, 11, 397, 12, 397, 4745, 1, 397, 1, 397, 3, 397, 4750, 8, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 4759, 8, 398, 1, 398, 1, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 4771, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 4788, 8, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 4803, 8, 402, 1, 403, 1, 403, 1, 404, 1, 404, 1, 405, 1, 405, 4, 405, 4811, 8, 405, 11, 405, 12, 405, 4812, 1, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 3, 407, 4821, 8, 407, 1, 408, 1, 408, 1, 408, 3, 408, 4826, 8, 408, 1, 409, 1, 409, 1, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 4847, 8, 412, 1, 412, 1, 412, 3, 412, 4851, 8, 412, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 4867, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 4882, 8, 415, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 1, 416, 5, 416, 4891, 8, 416, 10, 416, 12, 416, 4894, 9, 416, 1, 417, 1, 417, 1, 418, 5, 418, 4899, 8, 418, 10, 418, 12, 418, 4902, 9, 418, 1, 418, 1, 418, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 4912, 8, 420, 10, 420, 12, 420, 4915, 9, 420, 1, 421, 1, 421, 1, 422, 1, 422, 1, 422, 1, 422, 5, 422, 4923, 8, 422, 10, 422, 12, 422, 4926, 9, 422, 1, 423, 1, 423, 1, 424, 1, 424, 1, 424, 1, 424, 5, 424, 4934, 8, 424, 10, 424, 12, 424, 4937, 9, 424, 1, 425, 1, 425, 1, 426, 1, 426, 1, 426, 1, 426, 5, 426, 4945, 8, 426, 10, 426, 12, 426, 4948, 9, 426, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 5, 428, 4956, 8, 428, 10, 428, 12, 428, 4959, 9, 428, 1, 429, 1, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 4967, 8, 430, 10, 430, 12, 430, 4970, 9, 430, 1, 431, 1, 431, 1, 432, 1, 432, 1, 432, 1, 432, 1, 432, 3, 432, 4979, 8, 432, 1, 433, 1, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 3, 434, 4988, 8, 434, 1, 435, 1, 435, 3, 435, 4992, 8, 435, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 1, 436, 3, 436, 5000, 8, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 5013, 8, 437, 1, 438, 1, 438, 1, 438, 1, 438, 1, 439, 1, 439, 1, 440, 1, 440, 3, 440, 5023, 8, 440, 1, 441, 1, 441, 1, 441, 1, 441, 3, 441, 5029, 8, 441, 1, 442, 1, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 1, 443, 3, 443, 5042, 8, 443, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 1, 444, 5, 444, 5051, 8, 444, 10, 444, 12, 444, 5054, 9, 444, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 5068, 8, 445, 1, 446, 1, 446, 1, 446, 3, 446, 5073, 8, 446, 1, 447, 1, 447, 1, 448, 5, 448, 5078, 8, 448, 10, 448, 12, 448, 5081, 9, 448, 1, 448, 1, 448, 1, 449, 1, 449, 1, 450, 1, 450, 1, 450, 1, 450, 5, 450, 5091, 8, 450, 10, 450, 12, 450, 5094, 9, 450, 1, 451, 1, 451, 1, 452, 1, 452, 1, 452, 1, 452, 5, 452, 5102, 8, 452, 10, 452, 12, 452, 5105, 9, 452, 1, 453, 1, 453, 1, 454, 1, 454, 1, 455, 1, 455, 3, 455, 5113, 8, 455, 1, 456, 1, 456, 1, 456, 1, 456, 1, 456, 5, 456, 5120, 8, 456, 10, 456, 12, 456, 5123, 9, 456, 1, 456, 1, 456, 1, 457, 1, 457, 1, 457, 3, 457, 5130, 8, 457, 1, 458, 1, 458, 1, 458, 1, 458, 5, 458, 5136, 8, 458, 10, 458, 12, 458, 5139, 9, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 1, 459, 1, 460, 1, 460, 3, 460, 5149, 8, 460, 1, 461, 1, 461, 1, 462, 1, 462, 1, 463, 1, 463, 3, 463, 5157, 8, 463, 1, 464, 1, 464, 1, 464, 3, 464, 5162, 8, 464, 1, 465, 1, 465, 1, 466, 1, 466, 1, 467, 1, 467, 1, 468, 1, 468, 1, 468, 1, 469, 1, 469, 1, 469, 5, 469, 5176, 8, 469, 10, 469, 12, 469, 5179, 9, 469, 1, 470, 1, 470, 1, 470, 1, 470, 1, 470, 3, 470, 5186, 8, 470, 1, 471, 1, 471, 1, 472, 1, 472, 1, 472, 5, 472, 5193, 8, 472, 10, 472, 12, 472, 5196, 9, 472, 1, 473, 1, 473, 1, 474, 1, 474, 1, 474, 1, 474, 1, 474, 1, 475, 1, 475, 1, 475, 1, 475, 1, 475, 1, 476, 1, 476, 1, 476, 5, 476, 5213, 8, 476, 10, 476, 12, 476, 5216, 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, 1, 477, 3, 477, 5232, 8, 477, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 1, 478, 3, 478, 5241, 8, 478, 1, 479, 1, 479, 1, 479, 5, 479, 5246, 8, 479, 10, 479, 12, 479, 5249, 9, 479, 1, 480, 1, 480, 1, 480, 3, 480, 5254, 8, 480, 1, 481, 1, 481, 1, 481, 5, 481, 5259, 8, 481, 10, 481, 12, 481, 5262, 9, 481, 1, 482, 1, 482, 1, 482, 1, 482, 3, 482, 5268, 8, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 1, 482, 3, 482, 5277, 8, 482, 3, 482, 5279, 8, 482, 1, 483, 1, 483, 1, 483, 1, 484, 1, 484, 3, 484, 5286, 8, 484, 1, 485, 1, 485, 1, 486, 1, 486, 1, 487, 1, 487, 1, 488, 1, 488, 1, 489, 1, 489, 1, 490, 1, 490, 1, 491, 1, 491, 1, 492, 1, 492, 1, 493, 1, 493, 1, 494, 1, 494, 1, 495, 1, 495, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 1, 496, 3, 496, 5325, 8, 496, 1, 496, 1, 496, 3, 496, 5329, 8, 496, 3, 496, 5331, 8, 496, 1, 497, 1, 497, 3, 497, 5335, 8, 497, 1, 497, 1, 497, 1, 497, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 1, 498, 3, 498, 5352, 8, 498, 1, 499, 1, 499, 1, 499, 1, 499, 3, 499, 5358, 8, 499, 1, 499, 1, 499, 1, 500, 1, 500, 1, 500, 5, 500, 5365, 8, 500, 10, 500, 12, 500, 5368, 9, 500, 1, 501, 1, 501, 1, 502, 1, 502, 1, 502, 1, 503, 1, 503, 1, 503, 5, 503, 5378, 8, 503, 10, 503, 12, 503, 5381, 9, 503, 1, 504, 1, 504, 1, 504, 5, 504, 5386, 8, 504, 10, 504, 12, 504, 5389, 9, 504, 1, 505, 1, 505, 1, 505, 1, 505, 1, 506, 1, 506, 1, 507, 1, 507, 1, 508, 1, 508, 1, 508, 1, 508, 3, 508, 5403, 8, 508, 1, 509, 1, 509, 1, 509, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 510, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 1, 511, 3, 511, 5432, 8, 511, 1, 511, 1, 511, 1, 511, 3, 511, 5437, 8, 511, 3, 511, 5439, 8, 511, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 512, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 1, 513, 3, 513, 5459, 8, 513, 1, 514, 1, 514, 1, 514, 5, 514, 5464, 8, 514, 10, 514, 12, 514, 5467, 9, 514, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 515, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 1, 516, 3, 516, 5489, 8, 516, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 517, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 1, 518, 3, 518, 5506, 8, 518, 1, 518, 1, 518, 1, 518, 3, 518, 5511, 8, 518, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 1, 519, 3, 519, 5522, 8, 519, 1, 519, 1, 519, 1, 519, 3, 519, 5527, 8, 519, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 1, 520, 0, 0, 521, 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, 0, 56, 2, 0, 57, 57, 172, 172, 4, 0, 91, 91, 121, 121, 226, 226, 325, 325, 2, 0, 34, 34, 282, 282, 1, 0, 89, 90, 2, 0, 139, 139, 154, 154, 2, 0, 67, 67, 295, 295, 2, 0, 68, 68, 296, 296, 1, 0, 155, 156, 2, 0, 114, 114, 307, 307, 11, 0, 7, 7, 9, 9, 58, 58, 86, 86, 101, 101, 155, 155, 161, 161, 190, 190, 299, 299, 309, 309, 365, 365, 3, 0, 4, 4, 101, 101, 326, 326, 3, 0, 15, 15, 128, 128, 170, 170, 1, 0, 141, 142, 2, 0, 30, 30, 351, 351, 2, 0, 217, 217, 373, 373, 2, 0, 214, 214, 272, 272, 2, 0, 18, 18, 89, 89, 2, 0, 130, 130, 177, 177, 2, 0, 39, 39, 376, 376, 4, 0, 112, 112, 164, 164, 205, 205, 356, 356, 2, 0, 7, 7, 96, 96, 2, 0, 225, 225, 391, 391, 2, 0, 189, 189, 196, 196, 2, 0, 42, 42, 315, 315, 2, 0, 426, 426, 431, 431, 2, 0, 140, 140, 285, 285, 3, 0, 12, 12, 231, 231, 300, 300, 2, 0, 241, 241, 292, 292, 2, 0, 198, 198, 268, 268, 2, 0, 354, 354, 431, 431, 2, 0, 133, 133, 247, 247, 3, 0, 413, 414, 418, 418, 420, 420, 2, 0, 412, 412, 415, 417, 1, 0, 413, 414, 3, 0, 184, 184, 270, 270, 286, 286, 2, 0, 7, 7, 13, 13, 3, 0, 7, 7, 13, 13, 313, 313, 2, 0, 125, 125, 350, 350, 2, 0, 405, 405, 407, 411, 24, 0, 11, 11, 16, 16, 25, 28, 35, 35, 100, 100, 131, 132, 151, 151, 154, 154, 162, 163, 184, 184, 198, 198, 216, 216, 228, 228, 264, 264, 270, 270, 286, 286, 311, 311, 323, 324, 340, 340, 357, 357, 383, 383, 405, 417, 419, 421, 423, 423, 85, 0, 1, 6, 8, 8, 10, 10, 15, 15, 18, 20, 22, 24, 30, 31, 33, 34, 37, 38, 40, 44, 46, 47, 49, 50, 52, 53, 56, 57, 59, 59, 66, 66, 68, 68, 72, 77, 79, 79, 83, 85, 87, 89, 91, 95, 97, 99, 103, 104, 106, 107, 109, 111, 114, 116, 118, 121, 127, 130, 137, 138, 142, 142, 147, 150, 152, 152, 155, 156, 158, 160, 168, 170, 172, 177, 182, 183, 185, 187, 189, 193, 195, 197, 199, 202, 204, 204, 206, 209, 211, 212, 214, 215, 217, 218, 220, 220, 222, 223, 226, 227, 232, 233, 235, 236, 238, 240, 243, 246, 252, 252, 254, 255, 257, 259, 261, 262, 265, 267, 271, 282, 284, 284, 287, 288, 293, 298, 300, 303, 305, 310, 312, 312, 314, 317, 319, 325, 327, 328, 330, 330, 332, 334, 339, 340, 342, 342, 344, 346, 349, 349, 352, 353, 355, 355, 357, 357, 360, 364, 366, 368, 371, 373, 375, 375, 377, 382, 385, 385, 388, 394, 13, 0, 16, 16, 26, 28, 63, 64, 71, 71, 100, 100, 131, 131, 145, 145, 151, 151, 162, 163, 198, 198, 264, 264, 311, 311, 337, 337, 4, 0, 199, 199, 242, 242, 300, 300, 322, 322, 2, 0, 213, 213, 431, 432, 1, 0, 106, 107, 1, 0, 94, 95, 1, 0, 392, 393, 1, 0, 208, 209, 1, 0, 381, 382, 1, 0, 73, 74, 1, 0, 148, 149, 1, 0, 206, 207, 1, 0, 297, 298, 1, 0, 80, 82, 2, 0, 4, 4, 101, 101, 3, 0, 14, 14, 144, 144, 369, 369, 5939, 0, 1045, 1, 0, 0, 0, 2, 1052, 1, 0, 0, 0, 4, 1057, 1, 0, 0, 0, 6, 1091, 1, 0, 0, 0, 8, 1093, 1, 0, 0, 0, 10, 1095, 1, 0, 0, 0, 12, 1111, 1, 0, 0, 0, 14, 1113, 1, 0, 0, 0, 16, 1129, 1, 0, 0, 0, 18, 1132, 1, 0, 0, 0, 20, 1141, 1, 0, 0, 0, 22, 1149, 1, 0, 0, 0, 24, 1162, 1, 0, 0, 0, 26, 1173, 1, 0, 0, 0, 28, 1178, 1, 0, 0, 0, 30, 1189, 1, 0, 0, 0, 32, 1193, 1, 0, 0, 0, 34, 1201, 1, 0, 0, 0, 36, 1206, 1, 0, 0, 0, 38, 1260, 1, 0, 0, 0, 40, 1262, 1, 0, 0, 0, 42, 1265, 1, 0, 0, 0, 44, 1267, 1, 0, 0, 0, 46, 1271, 1, 0, 0, 0, 48, 1273, 1, 0, 0, 0, 50, 1276, 1, 0, 0, 0, 52, 1279, 1, 0, 0, 0, 54, 1283, 1, 0, 0, 0, 56, 1325, 1, 0, 0, 0, 58, 1327, 1, 0, 0, 0, 60, 1330, 1, 0, 0, 0, 62, 1333, 1, 0, 0, 0, 64, 1337, 1, 0, 0, 0, 66, 1345, 1, 0, 0, 0, 68, 1348, 1, 0, 0, 0, 70, 1351, 1, 0, 0, 0, 72, 1360, 1, 0, 0, 0, 74, 1363, 1, 0, 0, 0, 76, 1378, 1, 0, 0, 0, 78, 1390, 1, 0, 0, 0, 80, 1395, 1, 0, 0, 0, 82, 1415, 1, 0, 0, 0, 84, 1419, 1, 0, 0, 0, 86, 1426, 1, 0, 0, 0, 88, 1451, 1, 0, 0, 0, 90, 1468, 1, 0, 0, 0, 92, 1470, 1, 0, 0, 0, 94, 1665, 1, 0, 0, 0, 96, 1675, 1, 0, 0, 0, 98, 1677, 1, 0, 0, 0, 100, 1685, 1, 0, 0, 0, 102, 1690, 1, 0, 0, 0, 104, 1692, 1, 0, 0, 0, 106, 1698, 1, 0, 0, 0, 108, 1702, 1, 0, 0, 0, 110, 1706, 1, 0, 0, 0, 112, 1710, 1, 0, 0, 0, 114, 1720, 1, 0, 0, 0, 116, 1731, 1, 0, 0, 0, 118, 1748, 1, 0, 0, 0, 120, 1766, 1, 0, 0, 0, 122, 1771, 1, 0, 0, 0, 124, 1774, 1, 0, 0, 0, 126, 1778, 1, 0, 0, 0, 128, 1785, 1, 0, 0, 0, 130, 1794, 1, 0, 0, 0, 132, 1800, 1, 0, 0, 0, 134, 1802, 1, 0, 0, 0, 136, 1819, 1, 0, 0, 0, 138, 1841, 1, 0, 0, 0, 140, 1843, 1, 0, 0, 0, 142, 1851, 1, 0, 0, 0, 144, 1858, 1, 0, 0, 0, 146, 1860, 1, 0, 0, 0, 148, 1874, 1, 0, 0, 0, 150, 1881, 1, 0, 0, 0, 152, 1883, 1, 0, 0, 0, 154, 1887, 1, 0, 0, 0, 156, 1891, 1, 0, 0, 0, 158, 1895, 1, 0, 0, 0, 160, 1899, 1, 0, 0, 0, 162, 1912, 1, 0, 0, 0, 164, 1920, 1, 0, 0, 0, 166, 1923, 1, 0, 0, 0, 168, 1925, 1, 0, 0, 0, 170, 1937, 1, 0, 0, 0, 172, 1947, 1, 0, 0, 0, 174, 1950, 1, 0, 0, 0, 176, 1961, 1, 0, 0, 0, 178, 1969, 1, 0, 0, 0, 180, 2013, 1, 0, 0, 0, 182, 2022, 1, 0, 0, 0, 184, 2049, 1, 0, 0, 0, 186, 2062, 1, 0, 0, 0, 188, 2064, 1, 0, 0, 0, 190, 2070, 1, 0, 0, 0, 192, 2073, 1, 0, 0, 0, 194, 2079, 1, 0, 0, 0, 196, 2085, 1, 0, 0, 0, 198, 2092, 1, 0, 0, 0, 200, 2126, 1, 0, 0, 0, 202, 2134, 1, 0, 0, 0, 204, 2147, 1, 0, 0, 0, 206, 2152, 1, 0, 0, 0, 208, 2163, 1, 0, 0, 0, 210, 2180, 1, 0, 0, 0, 212, 2182, 1, 0, 0, 0, 214, 2187, 1, 0, 0, 0, 216, 2194, 1, 0, 0, 0, 218, 2196, 1, 0, 0, 0, 220, 2199, 1, 0, 0, 0, 222, 2202, 1, 0, 0, 0, 224, 2216, 1, 0, 0, 0, 226, 2224, 1, 0, 0, 0, 228, 2232, 1, 0, 0, 0, 230, 2240, 1, 0, 0, 0, 232, 2260, 1, 0, 0, 0, 234, 2262, 1, 0, 0, 0, 236, 2279, 1, 0, 0, 0, 238, 2284, 1, 0, 0, 0, 240, 2298, 1, 0, 0, 0, 242, 2300, 1, 0, 0, 0, 244, 2303, 1, 0, 0, 0, 246, 2306, 1, 0, 0, 0, 248, 2315, 1, 0, 0, 0, 250, 2335, 1, 0, 0, 0, 252, 2337, 1, 0, 0, 0, 254, 2340, 1, 0, 0, 0, 256, 2360, 1, 0, 0, 0, 258, 2362, 1, 0, 0, 0, 260, 2366, 1, 0, 0, 0, 262, 2368, 1, 0, 0, 0, 264, 2377, 1, 0, 0, 0, 266, 2383, 1, 0, 0, 0, 268, 2389, 1, 0, 0, 0, 270, 2394, 1, 0, 0, 0, 272, 2440, 1, 0, 0, 0, 274, 2442, 1, 0, 0, 0, 276, 2445, 1, 0, 0, 0, 278, 2453, 1, 0, 0, 0, 280, 2461, 1, 0, 0, 0, 282, 2469, 1, 0, 0, 0, 284, 2486, 1, 0, 0, 0, 286, 2488, 1, 0, 0, 0, 288, 2490, 1, 0, 0, 0, 290, 2503, 1, 0, 0, 0, 292, 2511, 1, 0, 0, 0, 294, 2520, 1, 0, 0, 0, 296, 2524, 1, 0, 0, 0, 298, 2526, 1, 0, 0, 0, 300, 2531, 1, 0, 0, 0, 302, 2533, 1, 0, 0, 0, 304, 2537, 1, 0, 0, 0, 306, 2543, 1, 0, 0, 0, 308, 2551, 1, 0, 0, 0, 310, 2553, 1, 0, 0, 0, 312, 2556, 1, 0, 0, 0, 314, 2563, 1, 0, 0, 0, 316, 2574, 1, 0, 0, 0, 318, 2587, 1, 0, 0, 0, 320, 2589, 1, 0, 0, 0, 322, 2597, 1, 0, 0, 0, 324, 2601, 1, 0, 0, 0, 326, 2609, 1, 0, 0, 0, 328, 2613, 1, 0, 0, 0, 330, 2615, 1, 0, 0, 0, 332, 2617, 1, 0, 0, 0, 334, 2620, 1, 0, 0, 0, 336, 2627, 1, 0, 0, 0, 338, 2635, 1, 0, 0, 0, 340, 2640, 1, 0, 0, 0, 342, 2644, 1, 0, 0, 0, 344, 2652, 1, 0, 0, 0, 346, 2660, 1, 0, 0, 0, 348, 2664, 1, 0, 0, 0, 350, 2666, 1, 0, 0, 0, 352, 2677, 1, 0, 0, 0, 354, 2681, 1, 0, 0, 0, 356, 2693, 1, 0, 0, 0, 358, 2701, 1, 0, 0, 0, 360, 2705, 1, 0, 0, 0, 362, 2717, 1, 0, 0, 0, 364, 2729, 1, 0, 0, 0, 366, 2734, 1, 0, 0, 0, 368, 2739, 1, 0, 0, 0, 370, 2741, 1, 0, 0, 0, 372, 2745, 1, 0, 0, 0, 374, 2749, 1, 0, 0, 0, 376, 2756, 1, 0, 0, 0, 378, 2758, 1, 0, 0, 0, 380, 2771, 1, 0, 0, 0, 382, 2810, 1, 0, 0, 0, 384, 2812, 1, 0, 0, 0, 386, 2817, 1, 0, 0, 0, 388, 2822, 1, 0, 0, 0, 390, 2829, 1, 0, 0, 0, 392, 2834, 1, 0, 0, 0, 394, 2839, 1, 0, 0, 0, 396, 2845, 1, 0, 0, 0, 398, 2847, 1, 0, 0, 0, 400, 2856, 1, 0, 0, 0, 402, 2868, 1, 0, 0, 0, 404, 2948, 1, 0, 0, 0, 406, 2954, 1, 0, 0, 0, 408, 2980, 1, 0, 0, 0, 410, 2982, 1, 0, 0, 0, 412, 3004, 1, 0, 0, 0, 414, 3009, 1, 0, 0, 0, 416, 3013, 1, 0, 0, 0, 418, 3045, 1, 0, 0, 0, 420, 3047, 1, 0, 0, 0, 422, 3058, 1, 0, 0, 0, 424, 3064, 1, 0, 0, 0, 426, 3070, 1, 0, 0, 0, 428, 3072, 1, 0, 0, 0, 430, 3081, 1, 0, 0, 0, 432, 3091, 1, 0, 0, 0, 434, 3093, 1, 0, 0, 0, 436, 3107, 1, 0, 0, 0, 438, 3109, 1, 0, 0, 0, 440, 3112, 1, 0, 0, 0, 442, 3116, 1, 0, 0, 0, 444, 3118, 1, 0, 0, 0, 446, 3122, 1, 0, 0, 0, 448, 3126, 1, 0, 0, 0, 450, 3130, 1, 0, 0, 0, 452, 3137, 1, 0, 0, 0, 454, 3144, 1, 0, 0, 0, 456, 3166, 1, 0, 0, 0, 458, 3172, 1, 0, 0, 0, 460, 3187, 1, 0, 0, 0, 462, 3194, 1, 0, 0, 0, 464, 3202, 1, 0, 0, 0, 466, 3204, 1, 0, 0, 0, 468, 3211, 1, 0, 0, 0, 470, 3215, 1, 0, 0, 0, 472, 3218, 1, 0, 0, 0, 474, 3221, 1, 0, 0, 0, 476, 3224, 1, 0, 0, 0, 478, 3271, 1, 0, 0, 0, 480, 3288, 1, 0, 0, 0, 482, 3290, 1, 0, 0, 0, 484, 3301, 1, 0, 0, 0, 486, 3305, 1, 0, 0, 0, 488, 3309, 1, 0, 0, 0, 490, 3311, 1, 0, 0, 0, 492, 3316, 1, 0, 0, 0, 494, 3318, 1, 0, 0, 0, 496, 3323, 1, 0, 0, 0, 498, 3328, 1, 0, 0, 0, 500, 3333, 1, 0, 0, 0, 502, 3338, 1, 0, 0, 0, 504, 3344, 1, 0, 0, 0, 506, 3353, 1, 0, 0, 0, 508, 3358, 1, 0, 0, 0, 510, 3371, 1, 0, 0, 0, 512, 3373, 1, 0, 0, 0, 514, 3377, 1, 0, 0, 0, 516, 3397, 1, 0, 0, 0, 518, 3410, 1, 0, 0, 0, 520, 3418, 1, 0, 0, 0, 522, 3420, 1, 0, 0, 0, 524, 3429, 1, 0, 0, 0, 526, 3433, 1, 0, 0, 0, 528, 3440, 1, 0, 0, 0, 530, 3447, 1, 0, 0, 0, 532, 3454, 1, 0, 0, 0, 534, 3457, 1, 0, 0, 0, 536, 3460, 1, 0, 0, 0, 538, 3492, 1, 0, 0, 0, 540, 3503, 1, 0, 0, 0, 542, 3520, 1, 0, 0, 0, 544, 3522, 1, 0, 0, 0, 546, 3526, 1, 0, 0, 0, 548, 3533, 1, 0, 0, 0, 550, 3535, 1, 0, 0, 0, 552, 3540, 1, 0, 0, 0, 554, 3544, 1, 0, 0, 0, 556, 3552, 1, 0, 0, 0, 558, 3556, 1, 0, 0, 0, 560, 3566, 1, 0, 0, 0, 562, 3568, 1, 0, 0, 0, 564, 3574, 1, 0, 0, 0, 566, 3578, 1, 0, 0, 0, 568, 3591, 1, 0, 0, 0, 570, 3593, 1, 0, 0, 0, 572, 3597, 1, 0, 0, 0, 574, 3600, 1, 0, 0, 0, 576, 3603, 1, 0, 0, 0, 578, 3623, 1, 0, 0, 0, 580, 3627, 1, 0, 0, 0, 582, 3634, 1, 0, 0, 0, 584, 3648, 1, 0, 0, 0, 586, 3669, 1, 0, 0, 0, 588, 3674, 1, 0, 0, 0, 590, 3676, 1, 0, 0, 0, 592, 3681, 1, 0, 0, 0, 594, 3686, 1, 0, 0, 0, 596, 3700, 1, 0, 0, 0, 598, 3837, 1, 0, 0, 0, 600, 3839, 1, 0, 0, 0, 602, 3859, 1, 0, 0, 0, 604, 3862, 1, 0, 0, 0, 606, 3865, 1, 0, 0, 0, 608, 3868, 1, 0, 0, 0, 610, 3872, 1, 0, 0, 0, 612, 3884, 1, 0, 0, 0, 614, 3889, 1, 0, 0, 0, 616, 3891, 1, 0, 0, 0, 618, 3899, 1, 0, 0, 0, 620, 3907, 1, 0, 0, 0, 622, 3919, 1, 0, 0, 0, 624, 3953, 1, 0, 0, 0, 626, 3955, 1, 0, 0, 0, 628, 3973, 1, 0, 0, 0, 630, 3982, 1, 0, 0, 0, 632, 3987, 1, 0, 0, 0, 634, 3991, 1, 0, 0, 0, 636, 4007, 1, 0, 0, 0, 638, 4066, 1, 0, 0, 0, 640, 4068, 1, 0, 0, 0, 642, 4070, 1, 0, 0, 0, 644, 4090, 1, 0, 0, 0, 646, 4101, 1, 0, 0, 0, 648, 4103, 1, 0, 0, 0, 650, 4119, 1, 0, 0, 0, 652, 4131, 1, 0, 0, 0, 654, 4141, 1, 0, 0, 0, 656, 4143, 1, 0, 0, 0, 658, 4147, 1, 0, 0, 0, 660, 4157, 1, 0, 0, 0, 662, 4167, 1, 0, 0, 0, 664, 4172, 1, 0, 0, 0, 666, 4179, 1, 0, 0, 0, 668, 4183, 1, 0, 0, 0, 670, 4202, 1, 0, 0, 0, 672, 4207, 1, 0, 0, 0, 674, 4209, 1, 0, 0, 0, 676, 4237, 1, 0, 0, 0, 678, 4240, 1, 0, 0, 0, 680, 4242, 1, 0, 0, 0, 682, 4244, 1, 0, 0, 0, 684, 4263, 1, 0, 0, 0, 686, 4265, 1, 0, 0, 0, 688, 4267, 1, 0, 0, 0, 690, 4271, 1, 0, 0, 0, 692, 4305, 1, 0, 0, 0, 694, 4307, 1, 0, 0, 0, 696, 4309, 1, 0, 0, 0, 698, 4317, 1, 0, 0, 0, 700, 4364, 1, 0, 0, 0, 702, 4366, 1, 0, 0, 0, 704, 4391, 1, 0, 0, 0, 706, 4393, 1, 0, 0, 0, 708, 4401, 1, 0, 0, 0, 710, 4410, 1, 0, 0, 0, 712, 4426, 1, 0, 0, 0, 714, 4430, 1, 0, 0, 0, 716, 4432, 1, 0, 0, 0, 718, 4441, 1, 0, 0, 0, 720, 4456, 1, 0, 0, 0, 722, 4462, 1, 0, 0, 0, 724, 4464, 1, 0, 0, 0, 726, 4472, 1, 0, 0, 0, 728, 4474, 1, 0, 0, 0, 730, 4479, 1, 0, 0, 0, 732, 4492, 1, 0, 0, 0, 734, 4516, 1, 0, 0, 0, 736, 4518, 1, 0, 0, 0, 738, 4531, 1, 0, 0, 0, 740, 4533, 1, 0, 0, 0, 742, 4536, 1, 0, 0, 0, 744, 4539, 1, 0, 0, 0, 746, 4541, 1, 0, 0, 0, 748, 4545, 1, 0, 0, 0, 750, 4551, 1, 0, 0, 0, 752, 4557, 1, 0, 0, 0, 754, 4559, 1, 0, 0, 0, 756, 4573, 1, 0, 0, 0, 758, 4582, 1, 0, 0, 0, 760, 4584, 1, 0, 0, 0, 762, 4595, 1, 0, 0, 0, 764, 4603, 1, 0, 0, 0, 766, 4613, 1, 0, 0, 0, 768, 4617, 1, 0, 0, 0, 770, 4621, 1, 0, 0, 0, 772, 4625, 1, 0, 0, 0, 774, 4631, 1, 0, 0, 0, 776, 4685, 1, 0, 0, 0, 778, 4691, 1, 0, 0, 0, 780, 4693, 1, 0, 0, 0, 782, 4697, 1, 0, 0, 0, 784, 4701, 1, 0, 0, 0, 786, 4703, 1, 0, 0, 0, 788, 4707, 1, 0, 0, 0, 790, 4709, 1, 0, 0, 0, 792, 4720, 1, 0, 0, 0, 794, 4737, 1, 0, 0, 0, 796, 4753, 1, 0, 0, 0, 798, 4770, 1, 0, 0, 0, 800, 4772, 1, 0, 0, 0, 802, 4787, 1, 0, 0, 0, 804, 4802, 1, 0, 0, 0, 806, 4804, 1, 0, 0, 0, 808, 4806, 1, 0, 0, 0, 810, 4808, 1, 0, 0, 0, 812, 4814, 1, 0, 0, 0, 814, 4820, 1, 0, 0, 0, 816, 4825, 1, 0, 0, 0, 818, 4827, 1, 0, 0, 0, 820, 4830, 1, 0, 0, 0, 822, 4832, 1, 0, 0, 0, 824, 4850, 1, 0, 0, 0, 826, 4866, 1, 0, 0, 0, 828, 4868, 1, 0, 0, 0, 830, 4881, 1, 0, 0, 0, 832, 4883, 1, 0, 0, 0, 834, 4895, 1, 0, 0, 0, 836, 4900, 1, 0, 0, 0, 838, 4905, 1, 0, 0, 0, 840, 4907, 1, 0, 0, 0, 842, 4916, 1, 0, 0, 0, 844, 4918, 1, 0, 0, 0, 846, 4927, 1, 0, 0, 0, 848, 4929, 1, 0, 0, 0, 850, 4938, 1, 0, 0, 0, 852, 4940, 1, 0, 0, 0, 854, 4949, 1, 0, 0, 0, 856, 4951, 1, 0, 0, 0, 858, 4960, 1, 0, 0, 0, 860, 4962, 1, 0, 0, 0, 862, 4971, 1, 0, 0, 0, 864, 4978, 1, 0, 0, 0, 866, 4980, 1, 0, 0, 0, 868, 4987, 1, 0, 0, 0, 870, 4989, 1, 0, 0, 0, 872, 4999, 1, 0, 0, 0, 874, 5012, 1, 0, 0, 0, 876, 5014, 1, 0, 0, 0, 878, 5018, 1, 0, 0, 0, 880, 5022, 1, 0, 0, 0, 882, 5028, 1, 0, 0, 0, 884, 5030, 1, 0, 0, 0, 886, 5041, 1, 0, 0, 0, 888, 5043, 1, 0, 0, 0, 890, 5067, 1, 0, 0, 0, 892, 5069, 1, 0, 0, 0, 894, 5074, 1, 0, 0, 0, 896, 5079, 1, 0, 0, 0, 898, 5084, 1, 0, 0, 0, 900, 5086, 1, 0, 0, 0, 902, 5095, 1, 0, 0, 0, 904, 5097, 1, 0, 0, 0, 906, 5106, 1, 0, 0, 0, 908, 5108, 1, 0, 0, 0, 910, 5110, 1, 0, 0, 0, 912, 5114, 1, 0, 0, 0, 914, 5126, 1, 0, 0, 0, 916, 5131, 1, 0, 0, 0, 918, 5142, 1, 0, 0, 0, 920, 5148, 1, 0, 0, 0, 922, 5150, 1, 0, 0, 0, 924, 5152, 1, 0, 0, 0, 926, 5156, 1, 0, 0, 0, 928, 5158, 1, 0, 0, 0, 930, 5163, 1, 0, 0, 0, 932, 5165, 1, 0, 0, 0, 934, 5167, 1, 0, 0, 0, 936, 5169, 1, 0, 0, 0, 938, 5172, 1, 0, 0, 0, 940, 5180, 1, 0, 0, 0, 942, 5187, 1, 0, 0, 0, 944, 5189, 1, 0, 0, 0, 946, 5197, 1, 0, 0, 0, 948, 5199, 1, 0, 0, 0, 950, 5204, 1, 0, 0, 0, 952, 5209, 1, 0, 0, 0, 954, 5231, 1, 0, 0, 0, 956, 5240, 1, 0, 0, 0, 958, 5242, 1, 0, 0, 0, 960, 5253, 1, 0, 0, 0, 962, 5255, 1, 0, 0, 0, 964, 5263, 1, 0, 0, 0, 966, 5280, 1, 0, 0, 0, 968, 5283, 1, 0, 0, 0, 970, 5287, 1, 0, 0, 0, 972, 5289, 1, 0, 0, 0, 974, 5291, 1, 0, 0, 0, 976, 5293, 1, 0, 0, 0, 978, 5295, 1, 0, 0, 0, 980, 5297, 1, 0, 0, 0, 982, 5299, 1, 0, 0, 0, 984, 5301, 1, 0, 0, 0, 986, 5303, 1, 0, 0, 0, 988, 5305, 1, 0, 0, 0, 990, 5307, 1, 0, 0, 0, 992, 5309, 1, 0, 0, 0, 994, 5334, 1, 0, 0, 0, 996, 5339, 1, 0, 0, 0, 998, 5353, 1, 0, 0, 0, 1000, 5361, 1, 0, 0, 0, 1002, 5369, 1, 0, 0, 0, 1004, 5371, 1, 0, 0, 0, 1006, 5374, 1, 0, 0, 0, 1008, 5382, 1, 0, 0, 0, 1010, 5390, 1, 0, 0, 0, 1012, 5394, 1, 0, 0, 0, 1014, 5396, 1, 0, 0, 0, 1016, 5402, 1, 0, 0, 0, 1018, 5404, 1, 0, 0, 0, 1020, 5407, 1, 0, 0, 0, 1022, 5417, 1, 0, 0, 0, 1024, 5440, 1, 0, 0, 0, 1026, 5458, 1, 0, 0, 0, 1028, 5460, 1, 0, 0, 0, 1030, 5468, 1, 0, 0, 0, 1032, 5476, 1, 0, 0, 0, 1034, 5490, 1, 0, 0, 0, 1036, 5496, 1, 0, 0, 0, 1038, 5512, 1, 0, 0, 0, 1040, 5528, 1, 0, 0, 0, 1042, 1044, 3, 2, 1, 0, 1043, 1042, 1, 0, 0, 0, 1044, 1047, 1, 0, 0, 0, 1045, 1043, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1045, 1, 0, 0, 0, 1048, 1049, 5, 0, 0, 1, 1049, 1, 1, 0, 0, 0, 1050, 1053, 3, 4, 2, 0, 1051, 1053, 3, 12, 6, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 1055, 1, 0, 0, 0, 1054, 1056, 5, 398, 0, 0, 1055, 1054, 1, 0, 0, 0, 1055, 1056, 1, 0, 0, 0, 1056, 3, 1, 0, 0, 0, 1057, 1067, 5, 119, 0, 0, 1058, 1060, 3, 6, 3, 0, 1059, 1058, 1, 0, 0, 0, 1060, 1063, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1064, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1064, 1068, 3, 12, 6, 0, 1065, 1066, 5, 284, 0, 0, 1066, 1068, 3, 394, 197, 0, 1067, 1061, 1, 0, 0, 0, 1067, 1065, 1, 0, 0, 0, 1068, 5, 1, 0, 0, 0, 1069, 1092, 5, 122, 0, 0, 1070, 1092, 5, 138, 0, 0, 1071, 1092, 5, 88, 0, 0, 1072, 1074, 5, 37, 0, 0, 1073, 1075, 7, 0, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1092, 1, 0, 0, 0, 1076, 1092, 5, 192, 0, 0, 1077, 1092, 5, 21, 0, 0, 1078, 1092, 5, 10, 0, 0, 1079, 1092, 5, 275, 0, 0, 1080, 1092, 5, 191, 0, 0, 1081, 1092, 5, 19, 0, 0, 1082, 1084, 5, 377, 0, 0, 1083, 1085, 3, 8, 4, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1087, 1, 0, 0, 0, 1086, 1088, 3, 10, 5, 0, 1087, 1086, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1092, 1, 0, 0, 0, 1089, 1092, 5, 79, 0, 0, 1090, 1092, 5, 78, 0, 0, 1091, 1069, 1, 0, 0, 0, 1091, 1070, 1, 0, 0, 0, 1091, 1071, 1, 0, 0, 0, 1091, 1072, 1, 0, 0, 0, 1091, 1076, 1, 0, 0, 0, 1091, 1077, 1, 0, 0, 0, 1091, 1078, 1, 0, 0, 0, 1091, 1079, 1, 0, 0, 0, 1091, 1080, 1, 0, 0, 0, 1091, 1081, 1, 0, 0, 0, 1091, 1082, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1091, 1090, 1, 0, 0, 0, 1092, 7, 1, 0, 0, 0, 1093, 1094, 5, 225, 0, 0, 1094, 9, 1, 0, 0, 0, 1095, 1096, 7, 1, 0, 0, 1096, 11, 1, 0, 0, 0, 1097, 1112, 3, 394, 197, 0, 1098, 1112, 3, 14, 7, 0, 1099, 1112, 3, 20, 10, 0, 1100, 1112, 3, 22, 11, 0, 1101, 1112, 3, 24, 12, 0, 1102, 1112, 3, 28, 14, 0, 1103, 1112, 3, 36, 18, 0, 1104, 1112, 3, 38, 19, 0, 1105, 1112, 3, 422, 211, 0, 1106, 1112, 3, 430, 215, 0, 1107, 1112, 3, 432, 216, 0, 1108, 1112, 3, 454, 227, 0, 1109, 1112, 3, 948, 474, 0, 1110, 1112, 3, 950, 475, 0, 1111, 1097, 1, 0, 0, 0, 1111, 1098, 1, 0, 0, 0, 1111, 1099, 1, 0, 0, 0, 1111, 1100, 1, 0, 0, 0, 1111, 1101, 1, 0, 0, 0, 1111, 1102, 1, 0, 0, 0, 1111, 1103, 1, 0, 0, 0, 1111, 1104, 1, 0, 0, 0, 1111, 1105, 1, 0, 0, 0, 1111, 1106, 1, 0, 0, 0, 1111, 1107, 1, 0, 0, 0, 1111, 1108, 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 13, 1, 0, 0, 0, 1113, 1114, 5, 187, 0, 0, 1114, 1116, 5, 66, 0, 0, 1115, 1117, 5, 188, 0, 0, 1116, 1115, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 5, 158, 0, 0, 1119, 1121, 5, 426, 0, 0, 1120, 1122, 5, 235, 0, 0, 1121, 1120, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 5, 166, 0, 0, 1124, 1125, 5, 329, 0, 0, 1125, 1127, 3, 910, 455, 0, 1126, 1128, 3, 78, 39, 0, 1127, 1126, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 15, 1, 0, 0, 0, 1129, 1130, 5, 152, 0, 0, 1130, 1131, 5, 254, 0, 0, 1131, 17, 1, 0, 0, 0, 1132, 1134, 5, 134, 0, 0, 1133, 1135, 5, 204, 0, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 5, 279, 0, 0, 1137, 1138, 5, 399, 0, 0, 1138, 1139, 5, 426, 0, 0, 1139, 1140, 5, 400, 0, 0, 1140, 19, 1, 0, 0, 0, 1141, 1142, 5, 120, 0, 0, 1142, 1143, 5, 329, 0, 0, 1143, 1144, 3, 910, 455, 0, 1144, 1145, 5, 341, 0, 0, 1145, 1147, 5, 426, 0, 0, 1146, 1148, 3, 18, 9, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 21, 1, 0, 0, 0, 1149, 1155, 5, 153, 0, 0, 1150, 1152, 5, 123, 0, 0, 1151, 1150, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 5, 329, 0, 0, 1154, 1156, 3, 910, 455, 0, 1155, 1151, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1157, 1, 0, 0, 0, 1157, 1158, 5, 139, 0, 0, 1158, 1160, 5, 426, 0, 0, 1159, 1161, 3, 274, 137, 0, 1160, 1159, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 23, 1, 0, 0, 0, 1162, 1163, 5, 277, 0, 0, 1163, 1164, 5, 103, 0, 0, 1164, 1167, 3, 26, 13, 0, 1165, 1166, 5, 278, 0, 0, 1166, 1168, 3, 26, 13, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1171, 1, 0, 0, 0, 1169, 1170, 5, 387, 0, 0, 1170, 1172, 3, 30, 15, 0, 1171, 1169, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 25, 1, 0, 0, 0, 1173, 1176, 3, 654, 327, 0, 1174, 1175, 5, 395, 0, 0, 1175, 1177, 3, 34, 17, 0, 1176, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 27, 1, 0, 0, 0, 1178, 1179, 5, 277, 0, 0, 1179, 1180, 5, 187, 0, 0, 1180, 1183, 3, 26, 13, 0, 1181, 1182, 5, 166, 0, 0, 1182, 1184, 3, 654, 327, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1186, 5, 387, 0, 0, 1186, 1188, 3, 30, 15, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1188, 1, 0, 0, 0, 1188, 29, 1, 0, 0, 0, 1189, 1190, 5, 399, 0, 0, 1190, 1191, 3, 32, 16, 0, 1191, 1192, 5, 400, 0, 0, 1192, 31, 1, 0, 0, 0, 1193, 1198, 3, 258, 129, 0, 1194, 1195, 5, 397, 0, 0, 1195, 1197, 3, 258, 129, 0, 1196, 1194, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 33, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, 1204, 5, 426, 0, 0, 1202, 1203, 5, 395, 0, 0, 1203, 1205, 5, 426, 0, 0, 1204, 1202, 1, 0, 0, 0, 1204, 1205, 1, 0, 0, 0, 1205, 35, 1, 0, 0, 0, 1206, 1207, 5, 277, 0, 0, 1207, 1208, 5, 320, 0, 0, 1208, 1211, 3, 654, 327, 0, 1209, 1210, 5, 387, 0, 0, 1210, 1212, 3, 30, 15, 0, 1211, 1209, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 37, 1, 0, 0, 0, 1213, 1261, 3, 56, 28, 0, 1214, 1261, 3, 68, 34, 0, 1215, 1261, 3, 70, 35, 0, 1216, 1261, 3, 598, 299, 0, 1217, 1261, 3, 76, 38, 0, 1218, 1261, 3, 74, 37, 0, 1219, 1261, 3, 476, 238, 0, 1220, 1261, 3, 86, 43, 0, 1221, 1261, 3, 94, 47, 0, 1222, 1261, 3, 160, 80, 0, 1223, 1261, 3, 182, 91, 0, 1224, 1261, 3, 198, 99, 0, 1225, 1261, 3, 202, 101, 0, 1226, 1261, 3, 206, 103, 0, 1227, 1261, 3, 204, 102, 0, 1228, 1261, 3, 196, 98, 0, 1229, 1261, 3, 200, 100, 0, 1230, 1261, 3, 168, 84, 0, 1231, 1261, 3, 174, 87, 0, 1232, 1261, 3, 170, 85, 0, 1233, 1261, 3, 172, 86, 0, 1234, 1261, 3, 176, 88, 0, 1235, 1261, 3, 178, 89, 0, 1236, 1261, 3, 180, 90, 0, 1237, 1261, 3, 88, 44, 0, 1238, 1261, 3, 98, 49, 0, 1239, 1261, 3, 104, 52, 0, 1240, 1261, 3, 100, 50, 0, 1241, 1261, 3, 106, 53, 0, 1242, 1261, 3, 108, 54, 0, 1243, 1261, 3, 110, 55, 0, 1244, 1261, 3, 112, 56, 0, 1245, 1261, 3, 114, 57, 0, 1246, 1261, 3, 128, 64, 0, 1247, 1261, 3, 120, 60, 0, 1248, 1261, 3, 130, 65, 0, 1249, 1261, 3, 122, 61, 0, 1250, 1261, 3, 116, 58, 0, 1251, 1261, 3, 118, 59, 0, 1252, 1261, 3, 126, 63, 0, 1253, 1261, 3, 124, 62, 0, 1254, 1261, 3, 450, 225, 0, 1255, 1261, 3, 452, 226, 0, 1256, 1261, 3, 466, 233, 0, 1257, 1261, 3, 954, 477, 0, 1258, 1261, 3, 600, 300, 0, 1259, 1261, 3, 610, 305, 0, 1260, 1213, 1, 0, 0, 0, 1260, 1214, 1, 0, 0, 0, 1260, 1215, 1, 0, 0, 0, 1260, 1216, 1, 0, 0, 0, 1260, 1217, 1, 0, 0, 0, 1260, 1218, 1, 0, 0, 0, 1260, 1219, 1, 0, 0, 0, 1260, 1220, 1, 0, 0, 0, 1260, 1221, 1, 0, 0, 0, 1260, 1222, 1, 0, 0, 0, 1260, 1223, 1, 0, 0, 0, 1260, 1224, 1, 0, 0, 0, 1260, 1225, 1, 0, 0, 0, 1260, 1226, 1, 0, 0, 0, 1260, 1227, 1, 0, 0, 0, 1260, 1228, 1, 0, 0, 0, 1260, 1229, 1, 0, 0, 0, 1260, 1230, 1, 0, 0, 0, 1260, 1231, 1, 0, 0, 0, 1260, 1232, 1, 0, 0, 0, 1260, 1233, 1, 0, 0, 0, 1260, 1234, 1, 0, 0, 0, 1260, 1235, 1, 0, 0, 0, 1260, 1236, 1, 0, 0, 0, 1260, 1237, 1, 0, 0, 0, 1260, 1238, 1, 0, 0, 0, 1260, 1239, 1, 0, 0, 0, 1260, 1240, 1, 0, 0, 0, 1260, 1241, 1, 0, 0, 0, 1260, 1242, 1, 0, 0, 0, 1260, 1243, 1, 0, 0, 0, 1260, 1244, 1, 0, 0, 0, 1260, 1245, 1, 0, 0, 0, 1260, 1246, 1, 0, 0, 0, 1260, 1247, 1, 0, 0, 0, 1260, 1248, 1, 0, 0, 0, 1260, 1249, 1, 0, 0, 0, 1260, 1250, 1, 0, 0, 0, 1260, 1251, 1, 0, 0, 0, 1260, 1252, 1, 0, 0, 0, 1260, 1253, 1, 0, 0, 0, 1260, 1254, 1, 0, 0, 0, 1260, 1255, 1, 0, 0, 0, 1260, 1256, 1, 0, 0, 0, 1260, 1257, 1, 0, 0, 0, 1260, 1258, 1, 0, 0, 0, 1260, 1259, 1, 0, 0, 0, 1261, 39, 1, 0, 0, 0, 1262, 1263, 5, 151, 0, 0, 1263, 1264, 5, 117, 0, 0, 1264, 41, 1, 0, 0, 0, 1265, 1266, 7, 2, 0, 0, 1266, 43, 1, 0, 0, 0, 1267, 1268, 5, 151, 0, 0, 1268, 1269, 5, 216, 0, 0, 1269, 1270, 5, 117, 0, 0, 1270, 45, 1, 0, 0, 0, 1271, 1272, 5, 135, 0, 0, 1272, 47, 1, 0, 0, 0, 1273, 1274, 3, 970, 485, 0, 1274, 1275, 5, 284, 0, 0, 1275, 49, 1, 0, 0, 0, 1276, 1277, 3, 972, 486, 0, 1277, 1278, 5, 284, 0, 0, 1278, 51, 1, 0, 0, 0, 1279, 1280, 5, 321, 0, 0, 1280, 1281, 5, 17, 0, 0, 1281, 1282, 5, 92, 0, 0, 1282, 53, 1, 0, 0, 0, 1283, 1284, 5, 228, 0, 0, 1284, 1285, 5, 278, 0, 0, 1285, 55, 1, 0, 0, 0, 1286, 1288, 5, 58, 0, 0, 1287, 1289, 5, 273, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1292, 3, 92, 46, 0, 1291, 1293, 3, 44, 22, 0, 1292, 1291, 1, 0, 0, 0, 1292, 1293, 1, 0, 0, 0, 1293, 1294, 1, 0, 0, 0, 1294, 1296, 3, 656, 328, 0, 1295, 1297, 3, 72, 36, 0, 1296, 1295, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1300, 3, 58, 29, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1302, 1, 0, 0, 0, 1301, 1303, 3, 60, 30, 0, 1302, 1301, 1, 0, 0, 0, 1302, 1303, 1, 0, 0, 0, 1303, 1307, 1, 0, 0, 0, 1304, 1305, 5, 387, 0, 0, 1305, 1306, 5, 76, 0, 0, 1306, 1308, 3, 62, 31, 0, 1307, 1304, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1326, 1, 0, 0, 0, 1309, 1310, 5, 58, 0, 0, 1310, 1311, 5, 273, 0, 0, 1311, 1313, 3, 92, 46, 0, 1312, 1314, 3, 44, 22, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 3, 656, 328, 0, 1316, 1318, 3, 72, 36, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1323, 3, 66, 33, 0, 1320, 1321, 5, 387, 0, 0, 1321, 1322, 5, 76, 0, 0, 1322, 1324, 3, 62, 31, 0, 1323, 1320, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, 0, 0, 1325, 1286, 1, 0, 0, 0, 1325, 1309, 1, 0, 0, 0, 1326, 57, 1, 0, 0, 0, 1327, 1328, 5, 189, 0, 0, 1328, 1329, 5, 426, 0, 0, 1329, 59, 1, 0, 0, 0, 1330, 1331, 5, 196, 0, 0, 1331, 1332, 5, 426, 0, 0, 1332, 61, 1, 0, 0, 0, 1333, 1334, 5, 399, 0, 0, 1334, 1335, 3, 64, 32, 0, 1335, 1336, 5, 400, 0, 0, 1336, 63, 1, 0, 0, 0, 1337, 1342, 3, 258, 129, 0, 1338, 1339, 5, 397, 0, 0, 1339, 1341, 3, 258, 129, 0, 1340, 1338, 1, 0, 0, 0, 1341, 1344, 1, 0, 0, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 65, 1, 0, 0, 0, 1344, 1342, 1, 0, 0, 0, 1345, 1346, 5, 370, 0, 0, 1346, 1347, 3, 654, 327, 0, 1347, 67, 1, 0, 0, 0, 1348, 1349, 5, 368, 0, 0, 1349, 1350, 3, 654, 327, 0, 1350, 69, 1, 0, 0, 0, 1351, 1352, 5, 101, 0, 0, 1352, 1354, 3, 92, 46, 0, 1353, 1355, 3, 40, 20, 0, 1354, 1353, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1358, 3, 654, 327, 0, 1357, 1359, 3, 42, 21, 0, 1358, 1357, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 71, 1, 0, 0, 0, 1360, 1361, 5, 47, 0, 0, 1361, 1362, 5, 426, 0, 0, 1362, 73, 1, 0, 0, 0, 1363, 1365, 5, 351, 0, 0, 1364, 1366, 5, 329, 0, 0, 1365, 1364, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1373, 3, 544, 272, 0, 1368, 1369, 5, 46, 0, 0, 1369, 1370, 5, 399, 0, 0, 1370, 1371, 3, 282, 141, 0, 1371, 1372, 5, 400, 0, 0, 1372, 1374, 1, 0, 0, 0, 1373, 1368, 1, 0, 0, 0, 1373, 1374, 1, 0, 0, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1377, 3, 46, 23, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 75, 1, 0, 0, 0, 1378, 1379, 5, 101, 0, 0, 1379, 1381, 5, 329, 0, 0, 1380, 1382, 3, 40, 20, 0, 1381, 1380, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1383, 1, 0, 0, 0, 1383, 1385, 3, 660, 330, 0, 1384, 1386, 5, 255, 0, 0, 1385, 1384, 1, 0, 0, 0, 1385, 1386, 1, 0, 0, 0, 1386, 1388, 1, 0, 0, 0, 1387, 1389, 3, 18, 9, 0, 1388, 1387, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 77, 1, 0, 0, 0, 1390, 1391, 5, 160, 0, 0, 1391, 1392, 5, 426, 0, 0, 1392, 1393, 5, 301, 0, 0, 1393, 1394, 5, 426, 0, 0, 1394, 79, 1, 0, 0, 0, 1395, 1398, 3, 926, 463, 0, 1396, 1397, 5, 395, 0, 0, 1397, 1399, 3, 926, 463, 0, 1398, 1396, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1413, 1, 0, 0, 0, 1400, 1410, 3, 926, 463, 0, 1401, 1406, 5, 395, 0, 0, 1402, 1407, 5, 104, 0, 0, 1403, 1407, 5, 175, 0, 0, 1404, 1407, 5, 375, 0, 0, 1405, 1407, 3, 926, 463, 0, 1406, 1402, 1, 0, 0, 0, 1406, 1403, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1405, 1, 0, 0, 0, 1407, 1409, 1, 0, 0, 0, 1408, 1401, 1, 0, 0, 0, 1409, 1412, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1414, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1413, 1400, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 81, 1, 0, 0, 0, 1415, 1417, 3, 80, 40, 0, 1416, 1418, 3, 912, 456, 0, 1417, 1416, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 83, 1, 0, 0, 0, 1419, 1421, 3, 658, 329, 0, 1420, 1422, 3, 912, 456, 0, 1421, 1420, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1424, 1, 0, 0, 0, 1423, 1425, 3, 288, 144, 0, 1424, 1423, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 85, 1, 0, 0, 0, 1426, 1449, 7, 3, 0, 0, 1427, 1429, 3, 92, 46, 0, 1428, 1430, 5, 122, 0, 0, 1429, 1428, 1, 0, 0, 0, 1429, 1430, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1432, 3, 654, 327, 0, 1432, 1450, 1, 0, 0, 0, 1433, 1435, 5, 69, 0, 0, 1434, 1436, 5, 122, 0, 0, 1435, 1434, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1450, 3, 654, 327, 0, 1438, 1440, 5, 141, 0, 0, 1439, 1441, 5, 122, 0, 0, 1440, 1439, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 1, 0, 0, 0, 1442, 1450, 3, 782, 391, 0, 1443, 1446, 5, 138, 0, 0, 1444, 1446, 5, 122, 0, 0, 1445, 1443, 1, 0, 0, 0, 1445, 1444, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1450, 3, 84, 42, 0, 1448, 1450, 3, 84, 42, 0, 1449, 1427, 1, 0, 0, 0, 1449, 1433, 1, 0, 0, 0, 1449, 1438, 1, 0, 0, 0, 1449, 1445, 1, 0, 0, 0, 1449, 1448, 1, 0, 0, 0, 1450, 87, 1, 0, 0, 0, 1451, 1452, 5, 10, 0, 0, 1452, 1453, 5, 329, 0, 0, 1453, 1466, 3, 910, 455, 0, 1454, 1455, 5, 52, 0, 0, 1455, 1462, 5, 319, 0, 0, 1456, 1463, 5, 215, 0, 0, 1457, 1458, 5, 134, 0, 0, 1458, 1460, 5, 46, 0, 0, 1459, 1461, 3, 282, 141, 0, 1460, 1459, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1463, 1, 0, 0, 0, 1462, 1456, 1, 0, 0, 0, 1462, 1457, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1467, 1, 0, 0, 0, 1464, 1465, 5, 33, 0, 0, 1465, 1467, 5, 204, 0, 0, 1466, 1454, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1467, 89, 1, 0, 0, 0, 1468, 1469, 7, 4, 0, 0, 1469, 91, 1, 0, 0, 0, 1470, 1471, 7, 5, 0, 0, 1471, 93, 1, 0, 0, 0, 1472, 1473, 5, 308, 0, 0, 1473, 1476, 7, 6, 0, 0, 1474, 1475, 5, 184, 0, 0, 1475, 1477, 3, 216, 108, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1666, 1, 0, 0, 0, 1478, 1480, 5, 308, 0, 0, 1479, 1481, 5, 122, 0, 0, 1480, 1479, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1486, 5, 330, 0, 0, 1483, 1484, 3, 90, 45, 0, 1484, 1485, 3, 654, 327, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1483, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1489, 1, 0, 0, 0, 1488, 1490, 3, 96, 48, 0, 1489, 1488, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1666, 1, 0, 0, 0, 1491, 1492, 5, 308, 0, 0, 1492, 1496, 5, 379, 0, 0, 1493, 1494, 3, 90, 45, 0, 1494, 1495, 3, 654, 327, 0, 1495, 1497, 1, 0, 0, 0, 1496, 1493, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1501, 1, 0, 0, 0, 1498, 1499, 5, 184, 0, 0, 1499, 1502, 3, 216, 108, 0, 1500, 1502, 3, 216, 108, 0, 1501, 1498, 1, 0, 0, 0, 1501, 1500, 1, 0, 0, 0, 1501, 1502, 1, 0, 0, 0, 1502, 1666, 1, 0, 0, 0, 1503, 1504, 5, 308, 0, 0, 1504, 1505, 5, 202, 0, 0, 1505, 1509, 5, 379, 0, 0, 1506, 1507, 3, 90, 45, 0, 1507, 1508, 3, 654, 327, 0, 1508, 1510, 1, 0, 0, 0, 1509, 1506, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1514, 1, 0, 0, 0, 1511, 1512, 5, 184, 0, 0, 1512, 1515, 3, 216, 108, 0, 1513, 1515, 3, 216, 108, 0, 1514, 1511, 1, 0, 0, 0, 1514, 1513, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1666, 1, 0, 0, 0, 1516, 1518, 5, 308, 0, 0, 1517, 1519, 5, 315, 0, 0, 1518, 1517, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1521, 5, 46, 0, 0, 1521, 1522, 3, 90, 45, 0, 1522, 1526, 3, 658, 329, 0, 1523, 1524, 3, 90, 45, 0, 1524, 1525, 3, 654, 327, 0, 1525, 1527, 1, 0, 0, 0, 1526, 1523, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1531, 1, 0, 0, 0, 1528, 1529, 5, 184, 0, 0, 1529, 1532, 3, 216, 108, 0, 1530, 1532, 3, 216, 108, 0, 1531, 1528, 1, 0, 0, 0, 1531, 1530, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1666, 1, 0, 0, 0, 1533, 1534, 5, 308, 0, 0, 1534, 1537, 5, 142, 0, 0, 1535, 1536, 5, 184, 0, 0, 1536, 1538, 3, 782, 391, 0, 1537, 1535, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1666, 1, 0, 0, 0, 1539, 1540, 5, 308, 0, 0, 1540, 1541, 5, 239, 0, 0, 1541, 1543, 3, 658, 329, 0, 1542, 1544, 3, 912, 456, 0, 1543, 1542, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1546, 1, 0, 0, 0, 1545, 1547, 3, 676, 338, 0, 1546, 1545, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1549, 1, 0, 0, 0, 1548, 1550, 3, 764, 382, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1553, 3, 420, 210, 0, 1552, 1551, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1666, 1, 0, 0, 0, 1554, 1555, 5, 308, 0, 0, 1555, 1561, 5, 58, 0, 0, 1556, 1557, 3, 92, 46, 0, 1557, 1558, 3, 654, 327, 0, 1558, 1562, 1, 0, 0, 0, 1559, 1560, 5, 329, 0, 0, 1560, 1562, 3, 660, 330, 0, 1561, 1556, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1562, 1666, 1, 0, 0, 0, 1563, 1564, 5, 308, 0, 0, 1564, 1565, 5, 329, 0, 0, 1565, 1569, 5, 122, 0, 0, 1566, 1567, 3, 90, 45, 0, 1567, 1568, 3, 654, 327, 0, 1568, 1570, 1, 0, 0, 0, 1569, 1566, 1, 0, 0, 0, 1569, 1570, 1, 0, 0, 0, 1570, 1571, 1, 0, 0, 0, 1571, 1572, 5, 184, 0, 0, 1572, 1574, 3, 216, 108, 0, 1573, 1575, 3, 912, 456, 0, 1574, 1573, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1666, 1, 0, 0, 0, 1576, 1577, 5, 308, 0, 0, 1577, 1578, 5, 332, 0, 0, 1578, 1582, 3, 660, 330, 0, 1579, 1580, 5, 399, 0, 0, 1580, 1581, 5, 426, 0, 0, 1581, 1583, 5, 400, 0, 0, 1582, 1579, 1, 0, 0, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1666, 1, 0, 0, 0, 1584, 1585, 5, 308, 0, 0, 1585, 1597, 5, 191, 0, 0, 1586, 1587, 3, 92, 46, 0, 1587, 1589, 3, 654, 327, 0, 1588, 1590, 5, 122, 0, 0, 1589, 1588, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1598, 1, 0, 0, 0, 1591, 1593, 3, 82, 41, 0, 1592, 1591, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1595, 1, 0, 0, 0, 1594, 1596, 5, 122, 0, 0, 1595, 1594, 1, 0, 0, 0, 1595, 1596, 1, 0, 0, 0, 1596, 1598, 1, 0, 0, 0, 1597, 1586, 1, 0, 0, 0, 1597, 1592, 1, 0, 0, 0, 1598, 1666, 1, 0, 0, 0, 1599, 1600, 5, 308, 0, 0, 1600, 1637, 5, 50, 0, 0, 1601, 1638, 3, 468, 234, 0, 1602, 1603, 3, 92, 46, 0, 1603, 1605, 3, 654, 327, 0, 1604, 1606, 3, 470, 235, 0, 1605, 1604, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1608, 1, 0, 0, 0, 1607, 1609, 3, 472, 236, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1611, 1, 0, 0, 0, 1610, 1612, 3, 474, 237, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1615, 3, 764, 382, 0, 1614, 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1617, 1, 0, 0, 0, 1616, 1618, 3, 420, 210, 0, 1617, 1616, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1638, 1, 0, 0, 0, 1619, 1621, 3, 82, 41, 0, 1620, 1619, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1623, 1, 0, 0, 0, 1622, 1624, 3, 470, 235, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1627, 3, 472, 236, 0, 1626, 1625, 1, 0, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1629, 1, 0, 0, 0, 1628, 1630, 3, 474, 237, 0, 1629, 1628, 1, 0, 0, 0, 1629, 1630, 1, 0, 0, 0, 1630, 1632, 1, 0, 0, 0, 1631, 1633, 3, 764, 382, 0, 1632, 1631, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1635, 1, 0, 0, 0, 1634, 1636, 3, 420, 210, 0, 1635, 1634, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1638, 1, 0, 0, 0, 1637, 1601, 1, 0, 0, 0, 1637, 1602, 1, 0, 0, 0, 1637, 1620, 1, 0, 0, 0, 1638, 1666, 1, 0, 0, 0, 1639, 1640, 5, 308, 0, 0, 1640, 1666, 5, 346, 0, 0, 1641, 1642, 5, 308, 0, 0, 1642, 1643, 5, 54, 0, 0, 1643, 1666, 5, 426, 0, 0, 1644, 1645, 5, 308, 0, 0, 1645, 1649, 5, 280, 0, 0, 1646, 1647, 5, 243, 0, 0, 1647, 1650, 3, 926, 463, 0, 1648, 1650, 5, 244, 0, 0, 1649, 1646, 1, 0, 0, 0, 1649, 1648, 1, 0, 0, 0, 1650, 1666, 1, 0, 0, 0, 1651, 1652, 5, 308, 0, 0, 1652, 1666, 5, 70, 0, 0, 1653, 1655, 5, 308, 0, 0, 1654, 1656, 5, 138, 0, 0, 1655, 1654, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1657, 1, 0, 0, 0, 1657, 1658, 7, 7, 0, 0, 1658, 1659, 5, 224, 0, 0, 1659, 1663, 3, 660, 330, 0, 1660, 1661, 3, 90, 45, 0, 1661, 1662, 3, 654, 327, 0, 1662, 1664, 1, 0, 0, 0, 1663, 1660, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1666, 1, 0, 0, 0, 1665, 1472, 1, 0, 0, 0, 1665, 1478, 1, 0, 0, 0, 1665, 1491, 1, 0, 0, 0, 1665, 1503, 1, 0, 0, 0, 1665, 1516, 1, 0, 0, 0, 1665, 1533, 1, 0, 0, 0, 1665, 1539, 1, 0, 0, 0, 1665, 1554, 1, 0, 0, 0, 1665, 1563, 1, 0, 0, 0, 1665, 1576, 1, 0, 0, 0, 1665, 1584, 1, 0, 0, 0, 1665, 1599, 1, 0, 0, 0, 1665, 1639, 1, 0, 0, 0, 1665, 1641, 1, 0, 0, 0, 1665, 1644, 1, 0, 0, 0, 1665, 1651, 1, 0, 0, 0, 1665, 1653, 1, 0, 0, 0, 1666, 95, 1, 0, 0, 0, 1667, 1668, 5, 384, 0, 0, 1668, 1669, 3, 926, 463, 0, 1669, 1670, 5, 405, 0, 0, 1670, 1671, 5, 426, 0, 0, 1671, 1676, 1, 0, 0, 0, 1672, 1673, 5, 184, 0, 0, 1673, 1676, 3, 216, 108, 0, 1674, 1676, 3, 216, 108, 0, 1675, 1667, 1, 0, 0, 0, 1675, 1672, 1, 0, 0, 0, 1675, 1674, 1, 0, 0, 0, 1676, 97, 1, 0, 0, 0, 1677, 1678, 5, 190, 0, 0, 1678, 1679, 5, 329, 0, 0, 1679, 1681, 3, 660, 330, 0, 1680, 1682, 3, 912, 456, 0, 1681, 1680, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 3, 102, 51, 0, 1684, 99, 1, 0, 0, 0, 1685, 1686, 5, 190, 0, 0, 1686, 1687, 3, 92, 46, 0, 1687, 1688, 3, 654, 327, 0, 1688, 1689, 3, 102, 51, 0, 1689, 101, 1, 0, 0, 0, 1690, 1691, 7, 8, 0, 0, 1691, 103, 1, 0, 0, 0, 1692, 1693, 5, 361, 0, 0, 1693, 1694, 5, 329, 0, 0, 1694, 1696, 3, 660, 330, 0, 1695, 1697, 3, 912, 456, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 105, 1, 0, 0, 0, 1698, 1699, 5, 361, 0, 0, 1699, 1700, 3, 92, 46, 0, 1700, 1701, 3, 654, 327, 0, 1701, 107, 1, 0, 0, 0, 1702, 1703, 5, 58, 0, 0, 1703, 1704, 5, 287, 0, 0, 1704, 1705, 3, 926, 463, 0, 1705, 109, 1, 0, 0, 0, 1706, 1707, 5, 101, 0, 0, 1707, 1708, 5, 287, 0, 0, 1708, 1709, 3, 926, 463, 0, 1709, 111, 1, 0, 0, 0, 1710, 1711, 5, 143, 0, 0, 1711, 1713, 3, 140, 70, 0, 1712, 1714, 3, 134, 67, 0, 1713, 1712, 1, 0, 0, 0, 1713, 1714, 1, 0, 0, 0, 1714, 1715, 1, 0, 0, 0, 1715, 1716, 5, 341, 0, 0, 1716, 1718, 3, 146, 73, 0, 1717, 1719, 3, 152, 76, 0, 1718, 1717, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 113, 1, 0, 0, 0, 1720, 1722, 5, 283, 0, 0, 1721, 1723, 3, 154, 77, 0, 1722, 1721, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1726, 3, 140, 70, 0, 1725, 1727, 3, 134, 67, 0, 1726, 1725, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1728, 1729, 5, 139, 0, 0, 1729, 1730, 3, 146, 73, 0, 1730, 115, 1, 0, 0, 0, 1731, 1733, 5, 143, 0, 0, 1732, 1734, 5, 287, 0, 0, 1733, 1732, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1740, 3, 926, 463, 0, 1736, 1737, 5, 397, 0, 0, 1737, 1739, 3, 926, 463, 0, 1738, 1736, 1, 0, 0, 0, 1739, 1742, 1, 0, 0, 0, 1740, 1738, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1744, 5, 341, 0, 0, 1744, 1746, 3, 146, 73, 0, 1745, 1747, 3, 158, 79, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 117, 1, 0, 0, 0, 1748, 1750, 5, 283, 0, 0, 1749, 1751, 3, 156, 78, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 1, 0, 0, 0, 1752, 1754, 5, 287, 0, 0, 1753, 1752, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1760, 3, 926, 463, 0, 1756, 1757, 5, 397, 0, 0, 1757, 1759, 3, 926, 463, 0, 1758, 1756, 1, 0, 0, 0, 1759, 1762, 1, 0, 0, 0, 1760, 1758, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1763, 1, 0, 0, 0, 1762, 1760, 1, 0, 0, 0, 1763, 1764, 5, 139, 0, 0, 1764, 1765, 3, 146, 73, 0, 1765, 119, 1, 0, 0, 0, 1766, 1767, 5, 308, 0, 0, 1767, 1768, 5, 287, 0, 0, 1768, 1769, 5, 143, 0, 0, 1769, 1770, 3, 148, 74, 0, 1770, 121, 1, 0, 0, 0, 1771, 1772, 5, 308, 0, 0, 1772, 1773, 5, 288, 0, 0, 1773, 123, 1, 0, 0, 0, 1774, 1775, 5, 308, 0, 0, 1775, 1776, 5, 62, 0, 0, 1776, 1777, 5, 288, 0, 0, 1777, 125, 1, 0, 0, 0, 1778, 1779, 5, 304, 0, 0, 1779, 1783, 5, 287, 0, 0, 1780, 1784, 5, 7, 0, 0, 1781, 1784, 5, 213, 0, 0, 1782, 1784, 3, 926, 463, 0, 1783, 1780, 1, 0, 0, 0, 1783, 1781, 1, 0, 0, 0, 1783, 1782, 1, 0, 0, 0, 1784, 127, 1, 0, 0, 0, 1785, 1786, 5, 308, 0, 0, 1786, 1788, 5, 143, 0, 0, 1787, 1789, 3, 148, 74, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1792, 1, 0, 0, 0, 1790, 1791, 5, 224, 0, 0, 1791, 1793, 3, 132, 66, 0, 1792, 1790, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 129, 1, 0, 0, 0, 1794, 1795, 5, 308, 0, 0, 1795, 1796, 5, 252, 0, 0, 1796, 1797, 3, 926, 463, 0, 1797, 131, 1, 0, 0, 0, 1798, 1801, 5, 7, 0, 0, 1799, 1801, 3, 138, 69, 0, 1800, 1798, 1, 0, 0, 0, 1800, 1799, 1, 0, 0, 0, 1801, 133, 1, 0, 0, 0, 1802, 1803, 5, 224, 0, 0, 1803, 1804, 3, 136, 68, 0, 1804, 135, 1, 0, 0, 0, 1805, 1806, 3, 92, 46, 0, 1806, 1807, 3, 654, 327, 0, 1807, 1820, 1, 0, 0, 0, 1808, 1810, 5, 329, 0, 0, 1809, 1808, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 1813, 3, 660, 330, 0, 1812, 1814, 3, 912, 456, 0, 1813, 1812, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1820, 1, 0, 0, 0, 1815, 1816, 5, 366, 0, 0, 1816, 1820, 5, 426, 0, 0, 1817, 1818, 5, 303, 0, 0, 1818, 1820, 3, 926, 463, 0, 1819, 1805, 1, 0, 0, 0, 1819, 1809, 1, 0, 0, 0, 1819, 1815, 1, 0, 0, 0, 1819, 1817, 1, 0, 0, 0, 1820, 137, 1, 0, 0, 0, 1821, 1822, 3, 92, 46, 0, 1822, 1823, 3, 654, 327, 0, 1823, 1842, 1, 0, 0, 0, 1824, 1826, 5, 329, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1832, 3, 660, 330, 0, 1828, 1829, 5, 399, 0, 0, 1829, 1830, 3, 282, 141, 0, 1830, 1831, 5, 400, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1828, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1835, 1, 0, 0, 0, 1834, 1836, 3, 912, 456, 0, 1835, 1834, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1842, 1, 0, 0, 0, 1837, 1838, 5, 366, 0, 0, 1838, 1842, 5, 426, 0, 0, 1839, 1840, 5, 303, 0, 0, 1840, 1842, 3, 926, 463, 0, 1841, 1821, 1, 0, 0, 0, 1841, 1825, 1, 0, 0, 0, 1841, 1837, 1, 0, 0, 0, 1841, 1839, 1, 0, 0, 0, 1842, 139, 1, 0, 0, 0, 1843, 1848, 3, 142, 71, 0, 1844, 1845, 5, 397, 0, 0, 1845, 1847, 3, 142, 71, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 141, 1, 0, 0, 0, 1850, 1848, 1, 0, 0, 0, 1851, 1856, 3, 144, 72, 0, 1852, 1853, 5, 399, 0, 0, 1853, 1854, 3, 282, 141, 0, 1854, 1855, 5, 400, 0, 0, 1855, 1857, 1, 0, 0, 0, 1856, 1852, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 143, 1, 0, 0, 0, 1858, 1859, 7, 9, 0, 0, 1859, 145, 1, 0, 0, 0, 1860, 1865, 3, 148, 74, 0, 1861, 1862, 5, 397, 0, 0, 1862, 1864, 3, 148, 74, 0, 1863, 1861, 1, 0, 0, 0, 1864, 1867, 1, 0, 0, 0, 1865, 1863, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 147, 1, 0, 0, 0, 1867, 1865, 1, 0, 0, 0, 1868, 1869, 5, 369, 0, 0, 1869, 1875, 3, 930, 465, 0, 1870, 1871, 5, 144, 0, 0, 1871, 1875, 3, 930, 465, 0, 1872, 1873, 5, 287, 0, 0, 1873, 1875, 3, 926, 463, 0, 1874, 1868, 1, 0, 0, 0, 1874, 1870, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1875, 149, 1, 0, 0, 0, 1876, 1877, 5, 369, 0, 0, 1877, 1882, 3, 930, 465, 0, 1878, 1879, 5, 287, 0, 0, 1879, 1882, 3, 926, 463, 0, 1880, 1882, 3, 926, 463, 0, 1881, 1876, 1, 0, 0, 0, 1881, 1878, 1, 0, 0, 0, 1881, 1880, 1, 0, 0, 0, 1882, 151, 1, 0, 0, 0, 1883, 1884, 5, 387, 0, 0, 1884, 1885, 5, 143, 0, 0, 1885, 1886, 5, 227, 0, 0, 1886, 153, 1, 0, 0, 0, 1887, 1888, 5, 143, 0, 0, 1888, 1889, 5, 227, 0, 0, 1889, 1890, 5, 134, 0, 0, 1890, 155, 1, 0, 0, 0, 1891, 1892, 5, 5, 0, 0, 1892, 1893, 5, 227, 0, 0, 1893, 1894, 5, 134, 0, 0, 1894, 157, 1, 0, 0, 0, 1895, 1896, 5, 387, 0, 0, 1896, 1897, 5, 5, 0, 0, 1897, 1898, 5, 227, 0, 0, 1898, 159, 1, 0, 0, 0, 1899, 1901, 5, 212, 0, 0, 1900, 1902, 5, 276, 0, 0, 1901, 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1904, 5, 329, 0, 0, 1904, 1910, 3, 660, 330, 0, 1905, 1906, 7, 10, 0, 0, 1906, 1908, 5, 239, 0, 0, 1907, 1909, 3, 916, 458, 0, 1908, 1907, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1911, 1, 0, 0, 0, 1910, 1905, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 161, 1, 0, 0, 0, 1912, 1917, 3, 164, 82, 0, 1913, 1914, 5, 397, 0, 0, 1914, 1916, 3, 164, 82, 0, 1915, 1913, 1, 0, 0, 0, 1916, 1919, 1, 0, 0, 0, 1917, 1915, 1, 0, 0, 0, 1917, 1918, 1, 0, 0, 0, 1918, 163, 1, 0, 0, 0, 1919, 1917, 1, 0, 0, 0, 1920, 1921, 3, 166, 83, 0, 1921, 1922, 5, 426, 0, 0, 1922, 165, 1, 0, 0, 0, 1923, 1924, 7, 11, 0, 0, 1924, 167, 1, 0, 0, 0, 1925, 1927, 5, 58, 0, 0, 1926, 1928, 5, 333, 0, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1930, 5, 141, 0, 0, 1930, 1931, 3, 780, 390, 0, 1931, 1932, 5, 17, 0, 0, 1932, 1935, 5, 426, 0, 0, 1933, 1934, 5, 370, 0, 0, 1934, 1936, 3, 162, 81, 0, 1935, 1933, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 169, 1, 0, 0, 0, 1937, 1939, 5, 101, 0, 0, 1938, 1940, 5, 333, 0, 0, 1939, 1938, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1943, 5, 141, 0, 0, 1942, 1944, 3, 40, 20, 0, 1943, 1942, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1945, 1, 0, 0, 0, 1945, 1946, 3, 782, 391, 0, 1946, 171, 1, 0, 0, 0, 1947, 1948, 5, 271, 0, 0, 1948, 1949, 7, 12, 0, 0, 1949, 173, 1, 0, 0, 0, 1950, 1951, 5, 58, 0, 0, 1951, 1952, 5, 333, 0, 0, 1952, 1953, 5, 194, 0, 0, 1953, 1954, 5, 432, 0, 0, 1954, 1956, 5, 399, 0, 0, 1955, 1957, 3, 276, 138, 0, 1956, 1955, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1959, 5, 400, 0, 0, 1959, 1960, 3, 828, 414, 0, 1960, 175, 1, 0, 0, 0, 1961, 1962, 5, 101, 0, 0, 1962, 1963, 5, 333, 0, 0, 1963, 1965, 5, 194, 0, 0, 1964, 1966, 3, 40, 20, 0, 1965, 1964, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 5, 432, 0, 0, 1968, 177, 1, 0, 0, 0, 1969, 1970, 5, 58, 0, 0, 1970, 1971, 5, 155, 0, 0, 1971, 1972, 3, 926, 463, 0, 1972, 1973, 5, 224, 0, 0, 1973, 1974, 5, 329, 0, 0, 1974, 1975, 3, 660, 330, 0, 1975, 1976, 3, 292, 146, 0, 1976, 1977, 5, 17, 0, 0, 1977, 1981, 5, 426, 0, 0, 1978, 1979, 5, 387, 0, 0, 1979, 1980, 5, 84, 0, 0, 1980, 1982, 5, 265, 0, 0, 1981, 1978, 1, 0, 0, 0, 1981, 1982, 1, 0, 0, 0, 1982, 1985, 1, 0, 0, 0, 1983, 1984, 5, 150, 0, 0, 1984, 1986, 3, 254, 127, 0, 1985, 1983, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1990, 1, 0, 0, 0, 1987, 1988, 5, 154, 0, 0, 1988, 1989, 5, 329, 0, 0, 1989, 1991, 3, 660, 330, 0, 1990, 1987, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1995, 1, 0, 0, 0, 1992, 1993, 5, 238, 0, 0, 1993, 1994, 5, 32, 0, 0, 1994, 1996, 3, 292, 146, 0, 1995, 1992, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 2001, 1, 0, 0, 0, 1997, 1999, 3, 250, 125, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 1, 0, 0, 0, 2000, 2002, 3, 272, 136, 0, 2001, 1998, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2005, 1, 0, 0, 0, 2003, 2004, 5, 189, 0, 0, 2004, 2006, 5, 426, 0, 0, 2005, 2003, 1, 0, 0, 0, 2005, 2006, 1, 0, 0, 0, 2006, 2008, 1, 0, 0, 0, 2007, 2009, 3, 252, 126, 0, 2008, 2007, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2011, 1, 0, 0, 0, 2010, 2012, 3, 218, 109, 0, 2011, 2010, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 179, 1, 0, 0, 0, 2013, 2014, 5, 101, 0, 0, 2014, 2016, 5, 155, 0, 0, 2015, 2017, 3, 40, 20, 0, 2016, 2015, 1, 0, 0, 0, 2016, 2017, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 3, 926, 463, 0, 2019, 2020, 5, 224, 0, 0, 2020, 2021, 3, 660, 330, 0, 2021, 181, 1, 0, 0, 0, 2022, 2024, 5, 58, 0, 0, 2023, 2025, 3, 54, 27, 0, 2024, 2023, 1, 0, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2028, 5, 378, 0, 0, 2027, 2029, 3, 44, 22, 0, 2028, 2027, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 2035, 3, 666, 333, 0, 2031, 2032, 5, 399, 0, 0, 2032, 2033, 3, 336, 168, 0, 2033, 2034, 5, 400, 0, 0, 2034, 2036, 1, 0, 0, 0, 2035, 2031, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2039, 3, 218, 109, 0, 2038, 2037, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2041, 1, 0, 0, 0, 2040, 2042, 3, 184, 92, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2044, 1, 0, 0, 0, 2043, 2045, 3, 252, 126, 0, 2044, 2043, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2046, 1, 0, 0, 0, 2046, 2047, 5, 17, 0, 0, 2047, 2048, 3, 414, 207, 0, 2048, 183, 1, 0, 0, 0, 2049, 2050, 5, 238, 0, 0, 2050, 2056, 5, 224, 0, 0, 2051, 2052, 5, 399, 0, 0, 2052, 2057, 3, 282, 141, 0, 2053, 2054, 5, 316, 0, 0, 2054, 2055, 5, 399, 0, 0, 2055, 2057, 3, 228, 114, 0, 2056, 2051, 1, 0, 0, 0, 2056, 2053, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 5, 400, 0, 0, 2059, 185, 1, 0, 0, 0, 2060, 2063, 3, 188, 94, 0, 2061, 2063, 3, 190, 95, 0, 2062, 2060, 1, 0, 0, 0, 2062, 2061, 1, 0, 0, 0, 2063, 187, 1, 0, 0, 0, 2064, 2065, 5, 42, 0, 0, 2065, 2066, 5, 224, 0, 0, 2066, 2067, 5, 399, 0, 0, 2067, 2068, 3, 282, 141, 0, 2068, 2069, 5, 400, 0, 0, 2069, 189, 1, 0, 0, 0, 2070, 2071, 3, 192, 96, 0, 2071, 2072, 3, 194, 97, 0, 2072, 191, 1, 0, 0, 0, 2073, 2074, 5, 98, 0, 0, 2074, 2075, 5, 224, 0, 0, 2075, 2076, 5, 399, 0, 0, 2076, 2077, 3, 282, 141, 0, 2077, 2078, 5, 400, 0, 0, 2078, 193, 1, 0, 0, 0, 2079, 2080, 5, 315, 0, 0, 2080, 2081, 5, 224, 0, 0, 2081, 2082, 5, 399, 0, 0, 2082, 2083, 3, 282, 141, 0, 2083, 2084, 5, 400, 0, 0, 2084, 195, 1, 0, 0, 0, 2085, 2086, 5, 101, 0, 0, 2086, 2088, 5, 378, 0, 0, 2087, 2089, 3, 40, 20, 0, 2088, 2087, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2091, 3, 664, 332, 0, 2091, 197, 1, 0, 0, 0, 2092, 2093, 5, 58, 0, 0, 2093, 2094, 5, 202, 0, 0, 2094, 2096, 5, 378, 0, 0, 2095, 2097, 3, 44, 22, 0, 2096, 2095, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2100, 3, 666, 333, 0, 2099, 2101, 3, 50, 25, 0, 2100, 2099, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 1, 0, 0, 0, 2102, 2104, 3, 218, 109, 0, 2103, 2102, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2106, 1, 0, 0, 0, 2105, 2107, 3, 184, 92, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2109, 1, 0, 0, 0, 2108, 2110, 3, 186, 93, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 1, 0, 0, 0, 2111, 2113, 3, 250, 125, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2116, 3, 272, 136, 0, 2115, 2114, 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2119, 3, 274, 137, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2122, 3, 252, 126, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2124, 5, 17, 0, 0, 2124, 2125, 3, 414, 207, 0, 2125, 199, 1, 0, 0, 0, 2126, 2127, 5, 101, 0, 0, 2127, 2128, 5, 202, 0, 0, 2128, 2130, 5, 378, 0, 0, 2129, 2131, 3, 40, 20, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2133, 3, 664, 332, 0, 2133, 201, 1, 0, 0, 0, 2134, 2135, 5, 58, 0, 0, 2135, 2136, 5, 293, 0, 0, 2136, 2137, 5, 258, 0, 0, 2137, 2138, 3, 926, 463, 0, 2138, 2140, 3, 210, 105, 0, 2139, 2141, 3, 212, 106, 0, 2140, 2139, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2144, 3, 296, 148, 0, 2143, 2142, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2146, 3, 214, 107, 0, 2146, 203, 1, 0, 0, 0, 2147, 2148, 5, 101, 0, 0, 2148, 2149, 5, 293, 0, 0, 2149, 2150, 5, 258, 0, 0, 2150, 2151, 3, 926, 463, 0, 2151, 205, 1, 0, 0, 0, 2152, 2153, 5, 9, 0, 0, 2153, 2154, 5, 293, 0, 0, 2154, 2155, 5, 258, 0, 0, 2155, 2156, 3, 926, 463, 0, 2156, 2157, 3, 208, 104, 0, 2157, 207, 1, 0, 0, 0, 2158, 2164, 3, 210, 105, 0, 2159, 2164, 3, 212, 106, 0, 2160, 2164, 3, 296, 148, 0, 2161, 2164, 3, 214, 107, 0, 2162, 2164, 5, 115, 0, 0, 2163, 2158, 1, 0, 0, 0, 2163, 2159, 1, 0, 0, 0, 2163, 2160, 1, 0, 0, 0, 2163, 2161, 1, 0, 0, 0, 2163, 2162, 1, 0, 0, 0, 2164, 209, 1, 0, 0, 0, 2165, 2166, 5, 59, 0, 0, 2166, 2181, 5, 426, 0, 0, 2167, 2169, 5, 111, 0, 0, 2168, 2170, 5, 431, 0, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2178, 3, 826, 413, 0, 2172, 2176, 5, 20, 0, 0, 2173, 2174, 5, 223, 0, 0, 2174, 2176, 5, 32, 0, 0, 2175, 2172, 1, 0, 0, 0, 2175, 2173, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2179, 5, 426, 0, 0, 2178, 2175, 1, 0, 0, 0, 2178, 2179, 1, 0, 0, 0, 2179, 2181, 1, 0, 0, 0, 2180, 2165, 1, 0, 0, 0, 2180, 2167, 1, 0, 0, 0, 2181, 211, 1, 0, 0, 0, 2182, 2183, 5, 116, 0, 0, 2183, 2184, 5, 17, 0, 0, 2184, 2185, 5, 426, 0, 0, 2185, 213, 1, 0, 0, 0, 2186, 2188, 5, 85, 0, 0, 2187, 2186, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2190, 5, 17, 0, 0, 2190, 2191, 3, 2, 1, 0, 2191, 215, 1, 0, 0, 0, 2192, 2195, 3, 926, 463, 0, 2193, 2195, 5, 426, 0, 0, 2194, 2192, 1, 0, 0, 0, 2194, 2193, 1, 0, 0, 0, 2195, 217, 1, 0, 0, 0, 2196, 2197, 5, 47, 0, 0, 2197, 2198, 5, 426, 0, 0, 2198, 219, 1, 0, 0, 0, 2199, 2200, 5, 183, 0, 0, 2200, 2201, 5, 431, 0, 0, 2201, 221, 1, 0, 0, 0, 2202, 2203, 5, 238, 0, 0, 2203, 2212, 5, 32, 0, 0, 2204, 2207, 5, 399, 0, 0, 2205, 2208, 3, 224, 112, 0, 2206, 2208, 3, 226, 113, 0, 2207, 2205, 1, 0, 0, 0, 2207, 2206, 1, 0, 0, 0, 2208, 2213, 1, 0, 0, 0, 2209, 2210, 5, 316, 0, 0, 2210, 2211, 5, 399, 0, 0, 2211, 2213, 3, 228, 114, 0, 2212, 2204, 1, 0, 0, 0, 2212, 2209, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2215, 5, 400, 0, 0, 2215, 223, 1, 0, 0, 0, 2216, 2221, 3, 350, 175, 0, 2217, 2218, 5, 397, 0, 0, 2218, 2220, 3, 350, 175, 0, 2219, 2217, 1, 0, 0, 0, 2220, 2223, 1, 0, 0, 0, 2221, 2219, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 225, 1, 0, 0, 0, 2223, 2221, 1, 0, 0, 0, 2224, 2229, 3, 284, 142, 0, 2225, 2226, 5, 397, 0, 0, 2226, 2228, 3, 284, 142, 0, 2227, 2225, 1, 0, 0, 0, 2228, 2231, 1, 0, 0, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 227, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2232, 2237, 3, 230, 115, 0, 2233, 2234, 5, 397, 0, 0, 2234, 2236, 3, 230, 115, 0, 2235, 2233, 1, 0, 0, 0, 2236, 2239, 1, 0, 0, 0, 2237, 2235, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 229, 1, 0, 0, 0, 2239, 2237, 1, 0, 0, 0, 2240, 2241, 3, 232, 116, 0, 2241, 231, 1, 0, 0, 0, 2242, 2261, 3, 284, 142, 0, 2243, 2248, 3, 976, 488, 0, 2244, 2248, 3, 978, 489, 0, 2245, 2248, 3, 982, 491, 0, 2246, 2248, 3, 984, 492, 0, 2247, 2243, 1, 0, 0, 0, 2247, 2244, 1, 0, 0, 0, 2247, 2245, 1, 0, 0, 0, 2247, 2246, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2250, 5, 399, 0, 0, 2250, 2251, 3, 284, 142, 0, 2251, 2252, 5, 400, 0, 0, 2252, 2261, 1, 0, 0, 0, 2253, 2254, 7, 13, 0, 0, 2254, 2255, 5, 399, 0, 0, 2255, 2256, 5, 431, 0, 0, 2256, 2257, 5, 397, 0, 0, 2257, 2258, 3, 284, 142, 0, 2258, 2259, 5, 400, 0, 0, 2259, 2261, 1, 0, 0, 0, 2260, 2242, 1, 0, 0, 0, 2260, 2247, 1, 0, 0, 0, 2260, 2253, 1, 0, 0, 0, 2261, 233, 1, 0, 0, 0, 2262, 2263, 5, 42, 0, 0, 2263, 2264, 5, 32, 0, 0, 2264, 2265, 5, 399, 0, 0, 2265, 2266, 3, 282, 141, 0, 2266, 2273, 5, 400, 0, 0, 2267, 2268, 5, 315, 0, 0, 2268, 2269, 5, 32, 0, 0, 2269, 2270, 5, 399, 0, 0, 2270, 2271, 3, 290, 145, 0, 2271, 2272, 5, 400, 0, 0, 2272, 2274, 1, 0, 0, 0, 2273, 2267, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2276, 5, 166, 0, 0, 2276, 2277, 5, 431, 0, 0, 2277, 2278, 5, 31, 0, 0, 2278, 235, 1, 0, 0, 0, 2279, 2280, 5, 42, 0, 0, 2280, 2281, 5, 166, 0, 0, 2281, 2282, 5, 431, 0, 0, 2282, 2283, 5, 31, 0, 0, 2283, 237, 1, 0, 0, 0, 2284, 2285, 5, 310, 0, 0, 2285, 2286, 5, 32, 0, 0, 2286, 2287, 5, 399, 0, 0, 2287, 2288, 3, 282, 141, 0, 2288, 2289, 5, 400, 0, 0, 2289, 2290, 5, 224, 0, 0, 2290, 2291, 5, 399, 0, 0, 2291, 2292, 3, 318, 159, 0, 2292, 2294, 5, 400, 0, 0, 2293, 2295, 3, 52, 26, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 239, 1, 0, 0, 0, 2296, 2299, 3, 246, 123, 0, 2297, 2299, 3, 248, 124, 0, 2298, 2296, 1, 0, 0, 0, 2298, 2297, 1, 0, 0, 0, 2299, 241, 1, 0, 0, 0, 2300, 2301, 5, 266, 0, 0, 2301, 2302, 5, 426, 0, 0, 2302, 243, 1, 0, 0, 0, 2303, 2304, 5, 267, 0, 0, 2304, 2305, 5, 426, 0, 0, 2305, 245, 1, 0, 0, 0, 2306, 2307, 5, 291, 0, 0, 2307, 2308, 5, 137, 0, 0, 2308, 2309, 5, 301, 0, 0, 2309, 2313, 5, 426, 0, 0, 2310, 2311, 5, 387, 0, 0, 2311, 2312, 5, 302, 0, 0, 2312, 2314, 3, 254, 127, 0, 2313, 2310, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 247, 1, 0, 0, 0, 2315, 2316, 5, 291, 0, 0, 2316, 2317, 5, 137, 0, 0, 2317, 2319, 5, 87, 0, 0, 2318, 2320, 3, 262, 131, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2322, 1, 0, 0, 0, 2321, 2323, 3, 264, 132, 0, 2322, 2321, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2325, 1, 0, 0, 0, 2324, 2326, 3, 266, 133, 0, 2325, 2324, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2328, 1, 0, 0, 0, 2327, 2329, 3, 268, 134, 0, 2328, 2327, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2331, 1, 0, 0, 0, 2330, 2332, 3, 270, 135, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 249, 1, 0, 0, 0, 2333, 2336, 3, 248, 124, 0, 2334, 2336, 3, 246, 123, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2334, 1, 0, 0, 0, 2336, 251, 1, 0, 0, 0, 2337, 2338, 5, 332, 0, 0, 2338, 2339, 3, 254, 127, 0, 2339, 253, 1, 0, 0, 0, 2340, 2341, 5, 399, 0, 0, 2341, 2342, 3, 256, 128, 0, 2342, 2343, 5, 400, 0, 0, 2343, 255, 1, 0, 0, 0, 2344, 2349, 3, 258, 129, 0, 2345, 2346, 5, 397, 0, 0, 2346, 2348, 3, 258, 129, 0, 2347, 2345, 1, 0, 0, 0, 2348, 2351, 1, 0, 0, 0, 2349, 2347, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2361, 1, 0, 0, 0, 2351, 2349, 1, 0, 0, 0, 2352, 2357, 3, 260, 130, 0, 2353, 2354, 5, 397, 0, 0, 2354, 2356, 3, 260, 130, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2359, 1, 0, 0, 0, 2357, 2355, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2361, 1, 0, 0, 0, 2359, 2357, 1, 0, 0, 0, 2360, 2344, 1, 0, 0, 0, 2360, 2352, 1, 0, 0, 0, 2361, 257, 1, 0, 0, 0, 2362, 2363, 5, 426, 0, 0, 2363, 2364, 5, 405, 0, 0, 2364, 2365, 5, 426, 0, 0, 2365, 259, 1, 0, 0, 0, 2366, 2367, 5, 426, 0, 0, 2367, 261, 1, 0, 0, 0, 2368, 2369, 5, 127, 0, 0, 2369, 2370, 5, 334, 0, 0, 2370, 2371, 5, 32, 0, 0, 2371, 2375, 5, 426, 0, 0, 2372, 2373, 5, 110, 0, 0, 2373, 2374, 5, 32, 0, 0, 2374, 2376, 5, 426, 0, 0, 2375, 2372, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 263, 1, 0, 0, 0, 2377, 2378, 5, 44, 0, 0, 2378, 2379, 5, 169, 0, 0, 2379, 2380, 5, 334, 0, 0, 2380, 2381, 5, 32, 0, 0, 2381, 2382, 5, 426, 0, 0, 2382, 265, 1, 0, 0, 0, 2383, 2384, 5, 198, 0, 0, 2384, 2385, 5, 174, 0, 0, 2385, 2386, 5, 334, 0, 0, 2386, 2387, 5, 32, 0, 0, 2387, 2388, 5, 426, 0, 0, 2388, 267, 1, 0, 0, 0, 2389, 2390, 5, 186, 0, 0, 2390, 2391, 5, 334, 0, 0, 2391, 2392, 5, 32, 0, 0, 2392, 2393, 5, 426, 0, 0, 2393, 269, 1, 0, 0, 0, 2394, 2395, 5, 219, 0, 0, 2395, 2396, 5, 85, 0, 0, 2396, 2397, 5, 17, 0, 0, 2397, 2398, 5, 426, 0, 0, 2398, 271, 1, 0, 0, 0, 2399, 2400, 5, 321, 0, 0, 2400, 2401, 5, 17, 0, 0, 2401, 2402, 5, 160, 0, 0, 2402, 2403, 5, 426, 0, 0, 2403, 2404, 5, 233, 0, 0, 2404, 2409, 5, 426, 0, 0, 2405, 2406, 5, 159, 0, 0, 2406, 2407, 5, 426, 0, 0, 2407, 2408, 5, 232, 0, 0, 2408, 2410, 5, 426, 0, 0, 2409, 2405, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2441, 1, 0, 0, 0, 2411, 2412, 5, 321, 0, 0, 2412, 2413, 5, 32, 0, 0, 2413, 2417, 5, 426, 0, 0, 2414, 2415, 5, 387, 0, 0, 2415, 2416, 5, 302, 0, 0, 2416, 2418, 3, 254, 127, 0, 2417, 2414, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2422, 1, 0, 0, 0, 2419, 2420, 5, 321, 0, 0, 2420, 2421, 5, 17, 0, 0, 2421, 2423, 3, 926, 463, 0, 2422, 2419, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2441, 1, 0, 0, 0, 2424, 2425, 5, 321, 0, 0, 2425, 2426, 5, 32, 0, 0, 2426, 2430, 3, 926, 463, 0, 2427, 2428, 5, 387, 0, 0, 2428, 2429, 5, 302, 0, 0, 2429, 2431, 3, 254, 127, 0, 2430, 2427, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2435, 1, 0, 0, 0, 2432, 2433, 5, 321, 0, 0, 2433, 2434, 5, 17, 0, 0, 2434, 2436, 3, 926, 463, 0, 2435, 2432, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2441, 1, 0, 0, 0, 2437, 2438, 5, 321, 0, 0, 2438, 2439, 5, 17, 0, 0, 2439, 2441, 3, 926, 463, 0, 2440, 2399, 1, 0, 0, 0, 2440, 2411, 1, 0, 0, 0, 2440, 2424, 1, 0, 0, 0, 2440, 2437, 1, 0, 0, 0, 2441, 273, 1, 0, 0, 0, 2442, 2443, 5, 189, 0, 0, 2443, 2444, 5, 426, 0, 0, 2444, 275, 1, 0, 0, 0, 2445, 2450, 3, 344, 172, 0, 2446, 2447, 5, 397, 0, 0, 2447, 2449, 3, 344, 172, 0, 2448, 2446, 1, 0, 0, 0, 2449, 2452, 1, 0, 0, 0, 2450, 2448, 1, 0, 0, 0, 2450, 2451, 1, 0, 0, 0, 2451, 277, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 2458, 3, 346, 173, 0, 2454, 2455, 5, 397, 0, 0, 2455, 2457, 3, 346, 173, 0, 2456, 2454, 1, 0, 0, 0, 2457, 2460, 1, 0, 0, 0, 2458, 2456, 1, 0, 0, 0, 2458, 2459, 1, 0, 0, 0, 2459, 279, 1, 0, 0, 0, 2460, 2458, 1, 0, 0, 0, 2461, 2466, 3, 374, 187, 0, 2462, 2463, 5, 397, 0, 0, 2463, 2465, 3, 374, 187, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 281, 1, 0, 0, 0, 2468, 2466, 1, 0, 0, 0, 2469, 2474, 3, 284, 142, 0, 2470, 2471, 5, 397, 0, 0, 2471, 2473, 3, 284, 142, 0, 2472, 2470, 1, 0, 0, 0, 2473, 2476, 1, 0, 0, 0, 2474, 2472, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 283, 1, 0, 0, 0, 2476, 2474, 1, 0, 0, 0, 2477, 2482, 3, 926, 463, 0, 2478, 2479, 5, 395, 0, 0, 2479, 2481, 3, 926, 463, 0, 2480, 2478, 1, 0, 0, 0, 2481, 2484, 1, 0, 0, 0, 2482, 2480, 1, 0, 0, 0, 2482, 2483, 1, 0, 0, 0, 2483, 2487, 1, 0, 0, 0, 2484, 2482, 1, 0, 0, 0, 2485, 2487, 4, 142, 0, 0, 2486, 2477, 1, 0, 0, 0, 2486, 2485, 1, 0, 0, 0, 2487, 285, 1, 0, 0, 0, 2488, 2489, 3, 926, 463, 0, 2489, 287, 1, 0, 0, 0, 2490, 2500, 3, 284, 142, 0, 2491, 2496, 5, 395, 0, 0, 2492, 2497, 5, 104, 0, 0, 2493, 2497, 5, 175, 0, 0, 2494, 2497, 5, 375, 0, 0, 2495, 2497, 3, 926, 463, 0, 2496, 2492, 1, 0, 0, 0, 2496, 2493, 1, 0, 0, 0, 2496, 2494, 1, 0, 0, 0, 2496, 2495, 1, 0, 0, 0, 2497, 2499, 1, 0, 0, 0, 2498, 2491, 1, 0, 0, 0, 2499, 2502, 1, 0, 0, 0, 2500, 2498, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 289, 1, 0, 0, 0, 2502, 2500, 1, 0, 0, 0, 2503, 2508, 3, 334, 167, 0, 2504, 2505, 5, 397, 0, 0, 2505, 2507, 3, 334, 167, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2510, 1, 0, 0, 0, 2508, 2506, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 291, 1, 0, 0, 0, 2510, 2508, 1, 0, 0, 0, 2511, 2512, 5, 399, 0, 0, 2512, 2513, 3, 282, 141, 0, 2513, 2514, 5, 400, 0, 0, 2514, 293, 1, 0, 0, 0, 2515, 2517, 3, 296, 148, 0, 2516, 2518, 3, 298, 149, 0, 2517, 2516, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2521, 1, 0, 0, 0, 2519, 2521, 3, 300, 150, 0, 2520, 2515, 1, 0, 0, 0, 2520, 2519, 1, 0, 0, 0, 2521, 295, 1, 0, 0, 0, 2522, 2525, 3, 970, 485, 0, 2523, 2525, 3, 972, 486, 0, 2524, 2522, 1, 0, 0, 0, 2524, 2523, 1, 0, 0, 0, 2525, 297, 1, 0, 0, 0, 2526, 2527, 7, 14, 0, 0, 2527, 299, 1, 0, 0, 0, 2528, 2532, 5, 109, 0, 0, 2529, 2530, 5, 216, 0, 0, 2530, 2532, 5, 109, 0, 0, 2531, 2528, 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2532, 301, 1, 0, 0, 0, 2533, 2534, 7, 15, 0, 0, 2534, 303, 1, 0, 0, 0, 2535, 2536, 5, 55, 0, 0, 2536, 2538, 3, 926, 463, 0, 2537, 2535, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2541, 3, 308, 154, 0, 2540, 2542, 3, 370, 185, 0, 2541, 2540, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 305, 1, 0, 0, 0, 2543, 2544, 5, 55, 0, 0, 2544, 2545, 3, 926, 463, 0, 2545, 2547, 3, 308, 154, 0, 2546, 2548, 3, 372, 186, 0, 2547, 2546, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 307, 1, 0, 0, 0, 2549, 2552, 3, 310, 155, 0, 2550, 2552, 3, 312, 156, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2550, 1, 0, 0, 0, 2552, 309, 1, 0, 0, 0, 2553, 2554, 3, 368, 184, 0, 2554, 2555, 3, 292, 146, 0, 2555, 311, 1, 0, 0, 0, 2556, 2557, 5, 40, 0, 0, 2557, 2558, 5, 399, 0, 0, 2558, 2559, 3, 828, 414, 0, 2559, 2560, 5, 400, 0, 0, 2560, 313, 1, 0, 0, 0, 2561, 2562, 5, 55, 0, 0, 2562, 2564, 3, 926, 463, 0, 2563, 2561, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2566, 5, 136, 0, 0, 2566, 2567, 5, 173, 0, 0, 2567, 2568, 3, 292, 146, 0, 2568, 2569, 5, 269, 0, 0, 2569, 2570, 3, 660, 330, 0, 2570, 2572, 3, 292, 146, 0, 2571, 2573, 3, 370, 185, 0, 2572, 2571, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 315, 1, 0, 0, 0, 2574, 2575, 5, 55, 0, 0, 2575, 2576, 3, 926, 463, 0, 2576, 2577, 5, 136, 0, 0, 2577, 2578, 5, 173, 0, 0, 2578, 2579, 3, 292, 146, 0, 2579, 2580, 5, 269, 0, 0, 2580, 2581, 3, 660, 330, 0, 2581, 2583, 3, 292, 146, 0, 2582, 2584, 3, 372, 186, 0, 2583, 2582, 1, 0, 0, 0, 2583, 2584, 1, 0, 0, 0, 2584, 317, 1, 0, 0, 0, 2585, 2588, 3, 324, 162, 0, 2586, 2588, 3, 320, 160, 0, 2587, 2585, 1, 0, 0, 0, 2587, 2586, 1, 0, 0, 0, 2588, 319, 1, 0, 0, 0, 2589, 2594, 3, 322, 161, 0, 2590, 2591, 5, 397, 0, 0, 2591, 2593, 3, 322, 161, 0, 2592, 2590, 1, 0, 0, 0, 2593, 2596, 1, 0, 0, 0, 2594, 2592, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 321, 1, 0, 0, 0, 2596, 2594, 1, 0, 0, 0, 2597, 2598, 5, 399, 0, 0, 2598, 2599, 3, 324, 162, 0, 2599, 2600, 5, 400, 0, 0, 2600, 323, 1, 0, 0, 0, 2601, 2606, 3, 326, 163, 0, 2602, 2603, 5, 397, 0, 0, 2603, 2605, 3, 326, 163, 0, 2604, 2602, 1, 0, 0, 0, 2605, 2608, 1, 0, 0, 0, 2606, 2604, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 325, 1, 0, 0, 0, 2608, 2606, 1, 0, 0, 0, 2609, 2610, 3, 804, 402, 0, 2610, 327, 1, 0, 0, 0, 2611, 2614, 3, 326, 163, 0, 2612, 2614, 3, 322, 161, 0, 2613, 2611, 1, 0, 0, 0, 2613, 2612, 1, 0, 0, 0, 2614, 329, 1, 0, 0, 0, 2615, 2616, 7, 16, 0, 0, 2616, 331, 1, 0, 0, 0, 2617, 2618, 5, 220, 0, 0, 2618, 2619, 7, 17, 0, 0, 2619, 333, 1, 0, 0, 0, 2620, 2622, 3, 284, 142, 0, 2621, 2623, 3, 330, 165, 0, 2622, 2621, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2625, 1, 0, 0, 0, 2624, 2626, 3, 332, 166, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 335, 1, 0, 0, 0, 2627, 2632, 3, 338, 169, 0, 2628, 2629, 5, 397, 0, 0, 2629, 2631, 3, 338, 169, 0, 2630, 2628, 1, 0, 0, 0, 2631, 2634, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2632, 2633, 1, 0, 0, 0, 2633, 337, 1, 0, 0, 0, 2634, 2632, 1, 0, 0, 0, 2635, 2638, 3, 286, 143, 0, 2636, 2637, 5, 47, 0, 0, 2637, 2639, 5, 426, 0, 0, 2638, 2636, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 339, 1, 0, 0, 0, 2640, 2641, 7, 16, 0, 0, 2641, 341, 1, 0, 0, 0, 2642, 2645, 3, 284, 142, 0, 2643, 2645, 3, 828, 414, 0, 2644, 2642, 1, 0, 0, 0, 2644, 2643, 1, 0, 0, 0, 2645, 2647, 1, 0, 0, 0, 2646, 2648, 3, 340, 170, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2650, 1, 0, 0, 0, 2649, 2651, 3, 332, 166, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 343, 1, 0, 0, 0, 2652, 2653, 3, 286, 143, 0, 2653, 2656, 3, 376, 188, 0, 2654, 2655, 5, 47, 0, 0, 2655, 2657, 5, 426, 0, 0, 2656, 2654, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 345, 1, 0, 0, 0, 2658, 2661, 3, 348, 174, 0, 2659, 2661, 3, 350, 175, 0, 2660, 2658, 1, 0, 0, 0, 2660, 2659, 1, 0, 0, 0, 2661, 347, 1, 0, 0, 0, 2662, 2665, 3, 314, 157, 0, 2663, 2665, 3, 304, 152, 0, 2664, 2662, 1, 0, 0, 0, 2664, 2663, 1, 0, 0, 0, 2665, 349, 1, 0, 0, 0, 2666, 2667, 3, 286, 143, 0, 2667, 2669, 3, 376, 188, 0, 2668, 2670, 3, 352, 176, 0, 2669, 2668, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2673, 1, 0, 0, 0, 2671, 2672, 5, 47, 0, 0, 2672, 2674, 5, 426, 0, 0, 2673, 2671, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 351, 1, 0, 0, 0, 2675, 2678, 3, 354, 177, 0, 2676, 2678, 3, 356, 178, 0, 2677, 2675, 1, 0, 0, 0, 2677, 2676, 1, 0, 0, 0, 2678, 353, 1, 0, 0, 0, 2679, 2680, 5, 55, 0, 0, 2680, 2682, 3, 926, 463, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 2684, 5, 269, 0, 0, 2684, 2685, 3, 660, 330, 0, 2685, 2686, 5, 399, 0, 0, 2686, 2687, 3, 284, 142, 0, 2687, 2689, 5, 400, 0, 0, 2688, 2690, 3, 370, 185, 0, 2689, 2688, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 355, 1, 0, 0, 0, 2691, 2692, 5, 55, 0, 0, 2692, 2694, 3, 926, 463, 0, 2693, 2691, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 2695, 1, 0, 0, 0, 2695, 2697, 3, 364, 182, 0, 2696, 2698, 3, 370, 185, 0, 2697, 2696, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 357, 1, 0, 0, 0, 2699, 2702, 3, 360, 180, 0, 2700, 2702, 3, 362, 181, 0, 2701, 2699, 1, 0, 0, 0, 2701, 2700, 1, 0, 0, 0, 2702, 359, 1, 0, 0, 0, 2703, 2704, 5, 55, 0, 0, 2704, 2706, 3, 926, 463, 0, 2705, 2703, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2708, 5, 269, 0, 0, 2708, 2709, 3, 660, 330, 0, 2709, 2710, 5, 399, 0, 0, 2710, 2711, 3, 284, 142, 0, 2711, 2713, 5, 400, 0, 0, 2712, 2714, 3, 372, 186, 0, 2713, 2712, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 361, 1, 0, 0, 0, 2715, 2716, 5, 55, 0, 0, 2716, 2718, 3, 926, 463, 0, 2717, 2715, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2721, 3, 364, 182, 0, 2720, 2722, 3, 372, 186, 0, 2721, 2720, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 363, 1, 0, 0, 0, 2723, 2724, 5, 216, 0, 0, 2724, 2730, 5, 219, 0, 0, 2725, 2726, 5, 83, 0, 0, 2726, 2730, 3, 366, 183, 0, 2727, 2730, 3, 312, 156, 0, 2728, 2730, 3, 368, 184, 0, 2729, 2723, 1, 0, 0, 0, 2729, 2725, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2728, 1, 0, 0, 0, 2730, 365, 1, 0, 0, 0, 2731, 2735, 3, 804, 402, 0, 2732, 2735, 3, 776, 388, 0, 2733, 2735, 3, 790, 395, 0, 2734, 2731, 1, 0, 0, 0, 2734, 2732, 1, 0, 0, 0, 2734, 2733, 1, 0, 0, 0, 2735, 367, 1, 0, 0, 0, 2736, 2737, 5, 251, 0, 0, 2737, 2740, 5, 173, 0, 0, 2738, 2740, 5, 358, 0, 0, 2739, 2736, 1, 0, 0, 0, 2739, 2738, 1, 0, 0, 0, 2740, 369, 1, 0, 0, 0, 2741, 2743, 3, 294, 147, 0, 2742, 2744, 3, 302, 151, 0, 2743, 2742, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 371, 1, 0, 0, 0, 2745, 2747, 3, 294, 147, 0, 2746, 2748, 3, 302, 151, 0, 2747, 2746, 1, 0, 0, 0, 2747, 2748, 1, 0, 0, 0, 2748, 373, 1, 0, 0, 0, 2749, 2750, 3, 286, 143, 0, 2750, 2751, 5, 396, 0, 0, 2751, 2754, 3, 376, 188, 0, 2752, 2753, 5, 47, 0, 0, 2753, 2755, 5, 426, 0, 0, 2754, 2752, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 375, 1, 0, 0, 0, 2756, 2757, 3, 380, 190, 0, 2757, 377, 1, 0, 0, 0, 2758, 2763, 3, 376, 188, 0, 2759, 2760, 5, 397, 0, 0, 2760, 2762, 3, 376, 188, 0, 2761, 2759, 1, 0, 0, 0, 2762, 2765, 1, 0, 0, 0, 2763, 2761, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 379, 1, 0, 0, 0, 2765, 2763, 1, 0, 0, 0, 2766, 2772, 3, 382, 191, 0, 2767, 2772, 3, 384, 192, 0, 2768, 2772, 3, 386, 193, 0, 2769, 2772, 3, 388, 194, 0, 2770, 2772, 3, 390, 195, 0, 2771, 2766, 1, 0, 0, 0, 2771, 2767, 1, 0, 0, 0, 2771, 2768, 1, 0, 0, 0, 2771, 2769, 1, 0, 0, 0, 2771, 2770, 1, 0, 0, 0, 2772, 381, 1, 0, 0, 0, 2773, 2811, 5, 340, 0, 0, 2774, 2811, 5, 311, 0, 0, 2775, 2811, 5, 162, 0, 0, 2776, 2811, 5, 163, 0, 0, 2777, 2811, 5, 26, 0, 0, 2778, 2811, 5, 28, 0, 0, 2779, 2811, 5, 131, 0, 0, 2780, 2811, 5, 264, 0, 0, 2781, 2783, 5, 100, 0, 0, 2782, 2784, 5, 248, 0, 0, 2783, 2782, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2811, 1, 0, 0, 0, 2785, 2811, 5, 71, 0, 0, 2786, 2811, 5, 72, 0, 0, 2787, 2811, 5, 337, 0, 0, 2788, 2811, 5, 338, 0, 0, 2789, 2790, 5, 337, 0, 0, 2790, 2791, 5, 387, 0, 0, 2791, 2792, 5, 188, 0, 0, 2792, 2793, 5, 336, 0, 0, 2793, 2811, 5, 394, 0, 0, 2794, 2811, 5, 323, 0, 0, 2795, 2811, 5, 27, 0, 0, 2796, 2804, 3, 990, 495, 0, 2797, 2798, 5, 399, 0, 0, 2798, 2801, 5, 431, 0, 0, 2799, 2800, 5, 397, 0, 0, 2800, 2802, 5, 431, 0, 0, 2801, 2799, 1, 0, 0, 0, 2801, 2802, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 2805, 5, 400, 0, 0, 2804, 2797, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2811, 1, 0, 0, 0, 2806, 2807, 7, 18, 0, 0, 2807, 2808, 5, 399, 0, 0, 2808, 2809, 5, 431, 0, 0, 2809, 2811, 5, 400, 0, 0, 2810, 2773, 1, 0, 0, 0, 2810, 2774, 1, 0, 0, 0, 2810, 2775, 1, 0, 0, 0, 2810, 2776, 1, 0, 0, 0, 2810, 2777, 1, 0, 0, 0, 2810, 2778, 1, 0, 0, 0, 2810, 2779, 1, 0, 0, 0, 2810, 2780, 1, 0, 0, 0, 2810, 2781, 1, 0, 0, 0, 2810, 2785, 1, 0, 0, 0, 2810, 2786, 1, 0, 0, 0, 2810, 2787, 1, 0, 0, 0, 2810, 2788, 1, 0, 0, 0, 2810, 2789, 1, 0, 0, 0, 2810, 2794, 1, 0, 0, 0, 2810, 2795, 1, 0, 0, 0, 2810, 2796, 1, 0, 0, 0, 2810, 2806, 1, 0, 0, 0, 2811, 383, 1, 0, 0, 0, 2812, 2813, 5, 16, 0, 0, 2813, 2814, 5, 409, 0, 0, 2814, 2815, 3, 380, 190, 0, 2815, 2816, 5, 411, 0, 0, 2816, 385, 1, 0, 0, 0, 2817, 2818, 5, 324, 0, 0, 2818, 2819, 5, 409, 0, 0, 2819, 2820, 3, 280, 140, 0, 2820, 2821, 5, 411, 0, 0, 2821, 387, 1, 0, 0, 0, 2822, 2823, 5, 198, 0, 0, 2823, 2824, 5, 409, 0, 0, 2824, 2825, 3, 382, 191, 0, 2825, 2826, 5, 397, 0, 0, 2826, 2827, 3, 380, 190, 0, 2827, 2828, 5, 411, 0, 0, 2828, 389, 1, 0, 0, 0, 2829, 2830, 5, 357, 0, 0, 2830, 2831, 5, 409, 0, 0, 2831, 2832, 3, 378, 189, 0, 2832, 2833, 5, 411, 0, 0, 2833, 391, 1, 0, 0, 0, 2834, 2836, 7, 19, 0, 0, 2835, 2837, 7, 20, 0, 0, 2836, 2835, 1, 0, 0, 0, 2836, 2837, 1, 0, 0, 0, 2837, 393, 1, 0, 0, 0, 2838, 2840, 3, 398, 199, 0, 2839, 2838, 1, 0, 0, 0, 2839, 2840, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 2842, 3, 396, 198, 0, 2842, 395, 1, 0, 0, 0, 2843, 2846, 3, 402, 201, 0, 2844, 2846, 3, 406, 203, 0, 2845, 2843, 1, 0, 0, 0, 2845, 2844, 1, 0, 0, 0, 2846, 397, 1, 0, 0, 0, 2847, 2848, 5, 387, 0, 0, 2848, 2853, 3, 400, 200, 0, 2849, 2850, 5, 397, 0, 0, 2850, 2852, 3, 400, 200, 0, 2851, 2849, 1, 0, 0, 0, 2852, 2855, 1, 0, 0, 0, 2853, 2851, 1, 0, 0, 0, 2853, 2854, 1, 0, 0, 0, 2854, 399, 1, 0, 0, 0, 2855, 2853, 1, 0, 0, 0, 2856, 2861, 3, 926, 463, 0, 2857, 2858, 5, 399, 0, 0, 2858, 2859, 3, 282, 141, 0, 2859, 2860, 5, 400, 0, 0, 2860, 2862, 1, 0, 0, 0, 2861, 2857, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2864, 5, 17, 0, 0, 2864, 2865, 5, 399, 0, 0, 2865, 2866, 3, 394, 197, 0, 2866, 2867, 5, 400, 0, 0, 2867, 401, 1, 0, 0, 0, 2868, 2874, 3, 404, 202, 0, 2869, 2870, 3, 392, 196, 0, 2870, 2871, 3, 404, 202, 0, 2871, 2873, 1, 0, 0, 0, 2872, 2869, 1, 0, 0, 0, 2873, 2876, 1, 0, 0, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2875, 1, 0, 0, 0, 2875, 403, 1, 0, 0, 0, 2876, 2874, 1, 0, 0, 0, 2877, 2878, 3, 620, 310, 0, 2878, 2879, 3, 416, 208, 0, 2879, 2881, 3, 692, 346, 0, 2880, 2882, 3, 638, 319, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2884, 1, 0, 0, 0, 2883, 2885, 3, 676, 338, 0, 2884, 2883, 1, 0, 0, 0, 2884, 2885, 1, 0, 0, 0, 2885, 2887, 1, 0, 0, 0, 2886, 2888, 3, 724, 362, 0, 2887, 2886, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2890, 1, 0, 0, 0, 2889, 2891, 3, 740, 370, 0, 2890, 2889, 1, 0, 0, 0, 2890, 2891, 1, 0, 0, 0, 2891, 2893, 1, 0, 0, 0, 2892, 2894, 3, 708, 354, 0, 2893, 2892, 1, 0, 0, 0, 2893, 2894, 1, 0, 0, 0, 2894, 2896, 1, 0, 0, 0, 2895, 2897, 3, 742, 371, 0, 2896, 2895, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2899, 1, 0, 0, 0, 2898, 2900, 3, 764, 382, 0, 2899, 2898, 1, 0, 0, 0, 2899, 2900, 1, 0, 0, 0, 2900, 2902, 1, 0, 0, 0, 2901, 2903, 3, 766, 383, 0, 2902, 2901, 1, 0, 0, 0, 2902, 2903, 1, 0, 0, 0, 2903, 2905, 1, 0, 0, 0, 2904, 2906, 3, 770, 385, 0, 2905, 2904, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2908, 1, 0, 0, 0, 2907, 2909, 3, 772, 386, 0, 2908, 2907, 1, 0, 0, 0, 2908, 2909, 1, 0, 0, 0, 2909, 2911, 1, 0, 0, 0, 2910, 2912, 3, 420, 210, 0, 2911, 2910, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2949, 1, 0, 0, 0, 2913, 2914, 3, 620, 310, 0, 2914, 2916, 3, 692, 346, 0, 2915, 2917, 3, 638, 319, 0, 2916, 2915, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2919, 1, 0, 0, 0, 2918, 2920, 3, 676, 338, 0, 2919, 2918, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2922, 1, 0, 0, 0, 2921, 2923, 3, 724, 362, 0, 2922, 2921, 1, 0, 0, 0, 2922, 2923, 1, 0, 0, 0, 2923, 2925, 1, 0, 0, 0, 2924, 2926, 3, 740, 370, 0, 2925, 2924, 1, 0, 0, 0, 2925, 2926, 1, 0, 0, 0, 2926, 2928, 1, 0, 0, 0, 2927, 2929, 3, 708, 354, 0, 2928, 2927, 1, 0, 0, 0, 2928, 2929, 1, 0, 0, 0, 2929, 2931, 1, 0, 0, 0, 2930, 2932, 3, 742, 371, 0, 2931, 2930, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 2934, 1, 0, 0, 0, 2933, 2935, 3, 764, 382, 0, 2934, 2933, 1, 0, 0, 0, 2934, 2935, 1, 0, 0, 0, 2935, 2937, 1, 0, 0, 0, 2936, 2938, 3, 766, 383, 0, 2937, 2936, 1, 0, 0, 0, 2937, 2938, 1, 0, 0, 0, 2938, 2940, 1, 0, 0, 0, 2939, 2941, 3, 770, 385, 0, 2940, 2939, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2943, 1, 0, 0, 0, 2942, 2944, 3, 772, 386, 0, 2943, 2942, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2946, 1, 0, 0, 0, 2945, 2947, 3, 420, 210, 0, 2946, 2945, 1, 0, 0, 0, 2946, 2947, 1, 0, 0, 0, 2947, 2949, 1, 0, 0, 0, 2948, 2877, 1, 0, 0, 0, 2948, 2913, 1, 0, 0, 0, 2949, 405, 1, 0, 0, 0, 2950, 2951, 3, 416, 208, 0, 2951, 2952, 3, 410, 205, 0, 2952, 2955, 1, 0, 0, 0, 2953, 2955, 3, 410, 205, 0, 2954, 2950, 1, 0, 0, 0, 2954, 2953, 1, 0, 0, 0, 2955, 407, 1, 0, 0, 0, 2956, 2958, 3, 692, 346, 0, 2957, 2959, 3, 620, 310, 0, 2958, 2957, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2961, 1, 0, 0, 0, 2960, 2962, 3, 676, 338, 0, 2961, 2960, 1, 0, 0, 0, 2961, 2962, 1, 0, 0, 0, 2962, 2964, 1, 0, 0, 0, 2963, 2965, 3, 724, 362, 0, 2964, 2963, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2967, 1, 0, 0, 0, 2966, 2968, 3, 740, 370, 0, 2967, 2966, 1, 0, 0, 0, 2967, 2968, 1, 0, 0, 0, 2968, 2970, 1, 0, 0, 0, 2969, 2971, 3, 708, 354, 0, 2970, 2969, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 2973, 1, 0, 0, 0, 2972, 2974, 3, 742, 371, 0, 2973, 2972, 1, 0, 0, 0, 2973, 2974, 1, 0, 0, 0, 2974, 2981, 1, 0, 0, 0, 2975, 2976, 5, 399, 0, 0, 2976, 2977, 3, 410, 205, 0, 2977, 2978, 5, 400, 0, 0, 2978, 2981, 1, 0, 0, 0, 2979, 2981, 3, 680, 340, 0, 2980, 2956, 1, 0, 0, 0, 2980, 2975, 1, 0, 0, 0, 2980, 2979, 1, 0, 0, 0, 2981, 409, 1, 0, 0, 0, 2982, 2984, 3, 408, 204, 0, 2983, 2985, 3, 412, 206, 0, 2984, 2983, 1, 0, 0, 0, 2984, 2985, 1, 0, 0, 0, 2985, 2987, 1, 0, 0, 0, 2986, 2988, 3, 764, 382, 0, 2987, 2986, 1, 0, 0, 0, 2987, 2988, 1, 0, 0, 0, 2988, 2990, 1, 0, 0, 0, 2989, 2991, 3, 766, 383, 0, 2990, 2989, 1, 0, 0, 0, 2990, 2991, 1, 0, 0, 0, 2991, 2993, 1, 0, 0, 0, 2992, 2994, 3, 770, 385, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2997, 3, 772, 386, 0, 2996, 2995, 1, 0, 0, 0, 2996, 2997, 1, 0, 0, 0, 2997, 2999, 1, 0, 0, 0, 2998, 3000, 3, 420, 210, 0, 2999, 2998, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 411, 1, 0, 0, 0, 3001, 3002, 3, 392, 196, 0, 3002, 3003, 3, 408, 204, 0, 3003, 3005, 1, 0, 0, 0, 3004, 3001, 1, 0, 0, 0, 3005, 3006, 1, 0, 0, 0, 3006, 3004, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 413, 1, 0, 0, 0, 3008, 3010, 3, 398, 199, 0, 3009, 3008, 1, 0, 0, 0, 3009, 3010, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3012, 3, 410, 205, 0, 3012, 415, 1, 0, 0, 0, 3013, 3030, 5, 161, 0, 0, 3014, 3015, 5, 235, 0, 0, 3015, 3017, 3, 418, 209, 0, 3016, 3018, 3, 44, 22, 0, 3017, 3016, 1, 0, 0, 0, 3017, 3018, 1, 0, 0, 0, 3018, 3031, 1, 0, 0, 0, 3019, 3021, 5, 166, 0, 0, 3020, 3022, 5, 329, 0, 0, 3021, 3020, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3023, 1, 0, 0, 0, 3023, 3028, 3, 910, 455, 0, 3024, 3025, 5, 399, 0, 0, 3025, 3026, 3, 282, 141, 0, 3026, 3027, 5, 400, 0, 0, 3027, 3029, 1, 0, 0, 0, 3028, 3024, 1, 0, 0, 0, 3028, 3029, 1, 0, 0, 0, 3029, 3031, 1, 0, 0, 0, 3030, 3014, 1, 0, 0, 0, 3030, 3019, 1, 0, 0, 0, 3031, 417, 1, 0, 0, 0, 3032, 3034, 5, 188, 0, 0, 3033, 3032, 1, 0, 0, 0, 3033, 3034, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3036, 5, 93, 0, 0, 3036, 3038, 5, 426, 0, 0, 3037, 3039, 3, 250, 125, 0, 3038, 3037, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3041, 1, 0, 0, 0, 3040, 3042, 3, 272, 136, 0, 3041, 3040, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 3046, 1, 0, 0, 0, 3043, 3044, 5, 329, 0, 0, 3044, 3046, 3, 910, 455, 0, 3045, 3033, 1, 0, 0, 0, 3045, 3043, 1, 0, 0, 0, 3046, 419, 1, 0, 0, 0, 3047, 3056, 5, 185, 0, 0, 3048, 3049, 5, 431, 0, 0, 3049, 3051, 5, 397, 0, 0, 3050, 3048, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 3057, 5, 431, 0, 0, 3053, 3054, 5, 431, 0, 0, 3054, 3055, 5, 223, 0, 0, 3055, 3057, 5, 431, 0, 0, 3056, 3050, 1, 0, 0, 0, 3056, 3053, 1, 0, 0, 0, 3057, 421, 1, 0, 0, 0, 3058, 3059, 5, 86, 0, 0, 3059, 3060, 5, 139, 0, 0, 3060, 3062, 3, 660, 330, 0, 3061, 3063, 3, 676, 338, 0, 3062, 3061, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 423, 1, 0, 0, 0, 3064, 3065, 3, 284, 142, 0, 3065, 3066, 5, 405, 0, 0, 3066, 3067, 3, 426, 213, 0, 3067, 425, 1, 0, 0, 0, 3068, 3071, 3, 614, 307, 0, 3069, 3071, 3, 848, 424, 0, 3070, 3068, 1, 0, 0, 0, 3070, 3069, 1, 0, 0, 0, 3071, 427, 1, 0, 0, 0, 3072, 3073, 5, 304, 0, 0, 3073, 3078, 3, 424, 212, 0, 3074, 3075, 5, 397, 0, 0, 3075, 3077, 3, 424, 212, 0, 3076, 3074, 1, 0, 0, 0, 3077, 3080, 1, 0, 0, 0, 3078, 3076, 1, 0, 0, 0, 3078, 3079, 1, 0, 0, 0, 3079, 429, 1, 0, 0, 0, 3080, 3078, 1, 0, 0, 0, 3081, 3082, 5, 365, 0, 0, 3082, 3083, 3, 660, 330, 0, 3083, 3085, 3, 428, 214, 0, 3084, 3086, 3, 676, 338, 0, 3085, 3084, 1, 0, 0, 0, 3085, 3086, 1, 0, 0, 0, 3086, 431, 1, 0, 0, 0, 3087, 3092, 3, 434, 217, 0, 3088, 3092, 3, 444, 222, 0, 3089, 3092, 3, 446, 223, 0, 3090, 3092, 3, 448, 224, 0, 3091, 3087, 1, 0, 0, 0, 3091, 3088, 1, 0, 0, 0, 3091, 3089, 1, 0, 0, 0, 3091, 3090, 1, 0, 0, 0, 3092, 433, 1, 0, 0, 0, 3093, 3094, 5, 318, 0, 0, 3094, 3103, 5, 344, 0, 0, 3095, 3100, 3, 436, 218, 0, 3096, 3097, 5, 397, 0, 0, 3097, 3099, 3, 436, 218, 0, 3098, 3096, 1, 0, 0, 0, 3099, 3102, 1, 0, 0, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3104, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3103, 3095, 1, 0, 0, 0, 3103, 3104, 1, 0, 0, 0, 3104, 435, 1, 0, 0, 0, 3105, 3108, 3, 440, 220, 0, 3106, 3108, 3, 438, 219, 0, 3107, 3105, 1, 0, 0, 0, 3107, 3106, 1, 0, 0, 0, 3108, 437, 1, 0, 0, 0, 3109, 3110, 5, 261, 0, 0, 3110, 3111, 7, 21, 0, 0, 3111, 439, 1, 0, 0, 0, 3112, 3113, 5, 168, 0, 0, 3113, 3114, 5, 182, 0, 0, 3114, 3115, 3, 442, 221, 0, 3115, 441, 1, 0, 0, 0, 3116, 3117, 5, 312, 0, 0, 3117, 443, 1, 0, 0, 0, 3118, 3120, 5, 48, 0, 0, 3119, 3121, 5, 389, 0, 0, 3120, 3119, 1, 0, 0, 0, 3120, 3121, 1, 0, 0, 0, 3121, 445, 1, 0, 0, 0, 3122, 3124, 5, 289, 0, 0, 3123, 3125, 5, 389, 0, 0, 3124, 3123, 1, 0, 0, 0, 3124, 3125, 1, 0, 0, 0, 3125, 447, 1, 0, 0, 0, 3126, 3127, 5, 304, 0, 0, 3127, 3128, 5, 22, 0, 0, 3128, 3129, 3, 908, 454, 0, 3129, 449, 1, 0, 0, 0, 3130, 3131, 5, 1, 0, 0, 3131, 3133, 5, 346, 0, 0, 3132, 3134, 5, 431, 0, 0, 3133, 3132, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 451, 1, 0, 0, 0, 3137, 3138, 5, 1, 0, 0, 3138, 3140, 5, 50, 0, 0, 3139, 3141, 5, 431, 0, 0, 3140, 3139, 1, 0, 0, 0, 3141, 3142, 1, 0, 0, 0, 3142, 3140, 1, 0, 0, 0, 3142, 3143, 1, 0, 0, 0, 3143, 453, 1, 0, 0, 0, 3144, 3146, 5, 203, 0, 0, 3145, 3147, 5, 436, 0, 0, 3146, 3145, 1, 0, 0, 0, 3146, 3147, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3149, 5, 166, 0, 0, 3149, 3154, 3, 660, 330, 0, 3150, 3152, 5, 17, 0, 0, 3151, 3150, 1, 0, 0, 0, 3151, 3152, 1, 0, 0, 0, 3152, 3153, 1, 0, 0, 0, 3153, 3155, 3, 926, 463, 0, 3154, 3151, 1, 0, 0, 0, 3154, 3155, 1, 0, 0, 0, 3155, 3156, 1, 0, 0, 0, 3156, 3157, 5, 370, 0, 0, 3157, 3158, 3, 628, 314, 0, 3158, 3159, 5, 224, 0, 0, 3159, 3160, 3, 828, 414, 0, 3160, 3161, 3, 456, 228, 0, 3161, 455, 1, 0, 0, 0, 3162, 3165, 3, 460, 230, 0, 3163, 3165, 3, 462, 231, 0, 3164, 3162, 1, 0, 0, 0, 3164, 3163, 1, 0, 0, 0, 3165, 3168, 1, 0, 0, 0, 3166, 3164, 1, 0, 0, 0, 3166, 3167, 1, 0, 0, 0, 3167, 3170, 1, 0, 0, 0, 3168, 3166, 1, 0, 0, 0, 3169, 3171, 3, 458, 229, 0, 3170, 3169, 1, 0, 0, 0, 3170, 3171, 1, 0, 0, 0, 3171, 457, 1, 0, 0, 0, 3172, 3173, 5, 383, 0, 0, 3173, 3174, 5, 216, 0, 0, 3174, 3177, 5, 201, 0, 0, 3175, 3176, 5, 11, 0, 0, 3176, 3178, 3, 828, 414, 0, 3177, 3175, 1, 0, 0, 0, 3177, 3178, 1, 0, 0, 0, 3178, 3179, 1, 0, 0, 0, 3179, 3180, 5, 335, 0, 0, 3180, 3182, 5, 161, 0, 0, 3181, 3183, 3, 292, 146, 0, 3182, 3181, 1, 0, 0, 0, 3182, 3183, 1, 0, 0, 0, 3183, 3184, 1, 0, 0, 0, 3184, 3185, 5, 374, 0, 0, 3185, 3186, 3, 686, 343, 0, 3186, 459, 1, 0, 0, 0, 3187, 3188, 5, 383, 0, 0, 3188, 3189, 5, 201, 0, 0, 3189, 3190, 5, 11, 0, 0, 3190, 3191, 3, 828, 414, 0, 3191, 3192, 5, 335, 0, 0, 3192, 3193, 3, 464, 232, 0, 3193, 461, 1, 0, 0, 0, 3194, 3195, 5, 383, 0, 0, 3195, 3196, 5, 201, 0, 0, 3196, 3197, 5, 335, 0, 0, 3197, 3198, 3, 464, 232, 0, 3198, 463, 1, 0, 0, 0, 3199, 3200, 5, 365, 0, 0, 3200, 3203, 3, 428, 214, 0, 3201, 3203, 5, 86, 0, 0, 3202, 3199, 1, 0, 0, 0, 3202, 3201, 1, 0, 0, 0, 3203, 465, 1, 0, 0, 0, 3204, 3205, 5, 176, 0, 0, 3205, 3207, 5, 258, 0, 0, 3206, 3208, 5, 426, 0, 0, 3207, 3206, 1, 0, 0, 0, 3208, 3209, 1, 0, 0, 0, 3209, 3207, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 467, 1, 0, 0, 0, 3211, 3212, 5, 51, 0, 0, 3212, 3213, 5, 405, 0, 0, 3213, 3214, 5, 431, 0, 0, 3214, 469, 1, 0, 0, 0, 3215, 3216, 5, 246, 0, 0, 3216, 3217, 5, 426, 0, 0, 3217, 471, 1, 0, 0, 0, 3218, 3219, 5, 352, 0, 0, 3219, 3220, 5, 426, 0, 0, 3220, 473, 1, 0, 0, 0, 3221, 3222, 5, 320, 0, 0, 3222, 3223, 5, 426, 0, 0, 3223, 475, 1, 0, 0, 0, 3224, 3248, 5, 9, 0, 0, 3225, 3226, 5, 329, 0, 0, 3226, 3227, 3, 660, 330, 0, 3227, 3228, 3, 478, 239, 0, 3228, 3249, 1, 0, 0, 0, 3229, 3230, 5, 378, 0, 0, 3230, 3232, 3, 664, 332, 0, 3231, 3233, 5, 17, 0, 0, 3232, 3231, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 3235, 3, 484, 242, 0, 3235, 3249, 1, 0, 0, 0, 3236, 3237, 5, 202, 0, 0, 3237, 3238, 5, 378, 0, 0, 3238, 3239, 3, 664, 332, 0, 3239, 3240, 3, 486, 243, 0, 3240, 3249, 1, 0, 0, 0, 3241, 3242, 3, 92, 46, 0, 3242, 3243, 3, 492, 246, 0, 3243, 3249, 1, 0, 0, 0, 3244, 3245, 5, 69, 0, 0, 3245, 3249, 3, 588, 294, 0, 3246, 3247, 5, 155, 0, 0, 3247, 3249, 3, 584, 292, 0, 3248, 3225, 1, 0, 0, 0, 3248, 3229, 1, 0, 0, 0, 3248, 3236, 1, 0, 0, 0, 3248, 3241, 1, 0, 0, 0, 3248, 3244, 1, 0, 0, 0, 3248, 3246, 1, 0, 0, 0, 3249, 477, 1, 0, 0, 0, 3250, 3272, 3, 502, 251, 0, 3251, 3272, 3, 534, 267, 0, 3252, 3272, 3, 536, 268, 0, 3253, 3272, 3, 522, 261, 0, 3254, 3272, 3, 526, 263, 0, 3255, 3272, 3, 528, 264, 0, 3256, 3272, 3, 530, 265, 0, 3257, 3272, 3, 538, 269, 0, 3258, 3272, 3, 560, 280, 0, 3259, 3272, 3, 562, 281, 0, 3260, 3272, 3, 482, 241, 0, 3261, 3272, 3, 512, 256, 0, 3262, 3272, 3, 506, 253, 0, 3263, 3272, 3, 480, 240, 0, 3264, 3266, 3, 912, 456, 0, 3265, 3264, 1, 0, 0, 0, 3265, 3266, 1, 0, 0, 0, 3266, 3267, 1, 0, 0, 0, 3267, 3272, 3, 480, 240, 0, 3268, 3272, 3, 578, 289, 0, 3269, 3272, 3, 580, 290, 0, 3270, 3272, 3, 582, 291, 0, 3271, 3250, 1, 0, 0, 0, 3271, 3251, 1, 0, 0, 0, 3271, 3252, 1, 0, 0, 0, 3271, 3253, 1, 0, 0, 0, 3271, 3254, 1, 0, 0, 0, 3271, 3255, 1, 0, 0, 0, 3271, 3256, 1, 0, 0, 0, 3271, 3257, 1, 0, 0, 0, 3271, 3258, 1, 0, 0, 0, 3271, 3259, 1, 0, 0, 0, 3271, 3260, 1, 0, 0, 0, 3271, 3261, 1, 0, 0, 0, 3271, 3262, 1, 0, 0, 0, 3271, 3263, 1, 0, 0, 0, 3271, 3265, 1, 0, 0, 0, 3271, 3268, 1, 0, 0, 0, 3271, 3269, 1, 0, 0, 0, 3271, 3270, 1, 0, 0, 0, 3272, 479, 1, 0, 0, 0, 3273, 3289, 3, 546, 273, 0, 3274, 3289, 3, 558, 279, 0, 3275, 3289, 3, 568, 284, 0, 3276, 3289, 3, 542, 271, 0, 3277, 3289, 3, 564, 282, 0, 3278, 3289, 3, 570, 285, 0, 3279, 3289, 3, 550, 275, 0, 3280, 3289, 3, 548, 274, 0, 3281, 3289, 3, 576, 288, 0, 3282, 3289, 3, 516, 258, 0, 3283, 3289, 3, 518, 259, 0, 3284, 3289, 3, 514, 257, 0, 3285, 3289, 3, 504, 252, 0, 3286, 3289, 3, 508, 254, 0, 3287, 3289, 3, 510, 255, 0, 3288, 3273, 1, 0, 0, 0, 3288, 3274, 1, 0, 0, 0, 3288, 3275, 1, 0, 0, 0, 3288, 3276, 1, 0, 0, 0, 3288, 3277, 1, 0, 0, 0, 3288, 3278, 1, 0, 0, 0, 3288, 3279, 1, 0, 0, 0, 3288, 3280, 1, 0, 0, 0, 3288, 3281, 1, 0, 0, 0, 3288, 3282, 1, 0, 0, 0, 3288, 3283, 1, 0, 0, 0, 3288, 3284, 1, 0, 0, 0, 3288, 3285, 1, 0, 0, 0, 3288, 3286, 1, 0, 0, 0, 3288, 3287, 1, 0, 0, 0, 3289, 481, 1, 0, 0, 0, 3290, 3291, 5, 237, 0, 0, 3291, 3292, 5, 45, 0, 0, 3292, 3293, 5, 399, 0, 0, 3293, 3294, 3, 344, 172, 0, 3294, 3295, 5, 400, 0, 0, 3295, 483, 1, 0, 0, 0, 3296, 3302, 3, 540, 270, 0, 3297, 3302, 3, 502, 251, 0, 3298, 3302, 3, 522, 261, 0, 3299, 3302, 3, 536, 268, 0, 3300, 3302, 3, 414, 207, 0, 3301, 3296, 1, 0, 0, 0, 3301, 3297, 1, 0, 0, 0, 3301, 3298, 1, 0, 0, 0, 3301, 3299, 1, 0, 0, 0, 3301, 3300, 1, 0, 0, 0, 3302, 485, 1, 0, 0, 0, 3303, 3306, 3, 488, 244, 0, 3304, 3306, 3, 490, 245, 0, 3305, 3303, 1, 0, 0, 0, 3305, 3304, 1, 0, 0, 0, 3306, 487, 1, 0, 0, 0, 3307, 3310, 3, 48, 24, 0, 3308, 3310, 3, 50, 25, 0, 3309, 3307, 1, 0, 0, 0, 3309, 3308, 1, 0, 0, 0, 3310, 489, 1, 0, 0, 0, 3311, 3312, 5, 265, 0, 0, 3312, 491, 1, 0, 0, 0, 3313, 3317, 3, 494, 247, 0, 3314, 3317, 3, 496, 248, 0, 3315, 3317, 3, 498, 249, 0, 3316, 3313, 1, 0, 0, 0, 3316, 3314, 1, 0, 0, 0, 3316, 3315, 1, 0, 0, 0, 3317, 493, 1, 0, 0, 0, 3318, 3319, 3, 654, 327, 0, 3319, 3320, 5, 304, 0, 0, 3320, 3321, 5, 76, 0, 0, 3321, 3322, 3, 62, 31, 0, 3322, 495, 1, 0, 0, 0, 3323, 3324, 3, 654, 327, 0, 3324, 3325, 5, 304, 0, 0, 3325, 3326, 5, 236, 0, 0, 3326, 3327, 3, 150, 75, 0, 3327, 497, 1, 0, 0, 0, 3328, 3329, 3, 654, 327, 0, 3329, 3330, 5, 304, 0, 0, 3330, 3331, 7, 22, 0, 0, 3331, 3332, 5, 426, 0, 0, 3332, 499, 1, 0, 0, 0, 3333, 3334, 3, 654, 327, 0, 3334, 3335, 5, 304, 0, 0, 3335, 3336, 5, 196, 0, 0, 3336, 3337, 5, 426, 0, 0, 3337, 501, 1, 0, 0, 0, 3338, 3339, 5, 274, 0, 0, 3339, 3340, 5, 341, 0, 0, 3340, 3341, 3, 662, 331, 0, 3341, 503, 1, 0, 0, 0, 3342, 3345, 5, 4, 0, 0, 3343, 3345, 5, 278, 0, 0, 3344, 3342, 1, 0, 0, 0, 3344, 3343, 1, 0, 0, 0, 3345, 3346, 1, 0, 0, 0, 3346, 3347, 5, 46, 0, 0, 3347, 3348, 5, 399, 0, 0, 3348, 3349, 3, 276, 138, 0, 3349, 3351, 5, 400, 0, 0, 3350, 3352, 3, 42, 21, 0, 3351, 3350, 1, 0, 0, 0, 3351, 3352, 1, 0, 0, 0, 3352, 505, 1, 0, 0, 0, 3353, 3356, 5, 4, 0, 0, 3354, 3357, 3, 316, 158, 0, 3355, 3357, 3, 306, 153, 0, 3356, 3354, 1, 0, 0, 0, 3356, 3355, 1, 0, 0, 0, 3357, 507, 1, 0, 0, 0, 3358, 3359, 5, 365, 0, 0, 3359, 3361, 5, 46, 0, 0, 3360, 3362, 3, 42, 21, 0, 3361, 3360, 1, 0, 0, 0, 3361, 3362, 1, 0, 0, 0, 3362, 509, 1, 0, 0, 0, 3363, 3364, 3, 296, 148, 0, 3364, 3366, 5, 218, 0, 0, 3365, 3367, 5, 34, 0, 0, 3366, 3365, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3372, 1, 0, 0, 0, 3368, 3369, 3, 296, 148, 0, 3369, 3370, 5, 222, 0, 0, 3370, 3372, 1, 0, 0, 0, 3371, 3363, 1, 0, 0, 0, 3371, 3368, 1, 0, 0, 0, 3372, 511, 1, 0, 0, 0, 3373, 3374, 5, 101, 0, 0, 3374, 3375, 5, 55, 0, 0, 3375, 3376, 3, 926, 463, 0, 3376, 513, 1, 0, 0, 0, 3377, 3379, 5, 38, 0, 0, 3378, 3380, 5, 45, 0, 0, 3379, 3378, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3381, 1, 0, 0, 0, 3381, 3382, 3, 284, 142, 0, 3382, 3383, 3, 286, 143, 0, 3383, 3385, 3, 376, 188, 0, 3384, 3386, 3, 358, 179, 0, 3385, 3384, 1, 0, 0, 0, 3385, 3386, 1, 0, 0, 0, 3386, 3389, 1, 0, 0, 0, 3387, 3388, 5, 47, 0, 0, 3388, 3390, 5, 426, 0, 0, 3389, 3387, 1, 0, 0, 0, 3389, 3390, 1, 0, 0, 0, 3390, 3392, 1, 0, 0, 0, 3391, 3393, 3, 520, 260, 0, 3392, 3391, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3395, 1, 0, 0, 0, 3394, 3396, 3, 42, 21, 0, 3395, 3394, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 515, 1, 0, 0, 0, 3397, 3398, 5, 365, 0, 0, 3398, 3399, 5, 319, 0, 0, 3399, 3401, 5, 134, 0, 0, 3400, 3402, 5, 45, 0, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3403, 1, 0, 0, 0, 3403, 3404, 3, 284, 142, 0, 3404, 3405, 5, 304, 0, 0, 3405, 3408, 3, 254, 127, 0, 3406, 3407, 5, 47, 0, 0, 3407, 3409, 5, 426, 0, 0, 3408, 3406, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 517, 1, 0, 0, 0, 3410, 3411, 5, 365, 0, 0, 3411, 3412, 5, 319, 0, 0, 3412, 3413, 5, 304, 0, 0, 3413, 3414, 3, 254, 127, 0, 3414, 519, 1, 0, 0, 0, 3415, 3419, 5, 130, 0, 0, 3416, 3417, 5, 6, 0, 0, 3417, 3419, 3, 926, 463, 0, 3418, 3415, 1, 0, 0, 0, 3418, 3416, 1, 0, 0, 0, 3419, 521, 1, 0, 0, 0, 3420, 3422, 5, 4, 0, 0, 3421, 3423, 3, 44, 22, 0, 3422, 3421, 1, 0, 0, 0, 3422, 3423, 1, 0, 0, 0, 3423, 3425, 1, 0, 0, 0, 3424, 3426, 3, 524, 262, 0, 3425, 3424, 1, 0, 0, 0, 3426, 3427, 1, 0, 0, 0, 3427, 3425, 1, 0, 0, 0, 3427, 3428, 1, 0, 0, 0, 3428, 523, 1, 0, 0, 0, 3429, 3431, 3, 912, 456, 0, 3430, 3432, 3, 532, 266, 0, 3431, 3430, 1, 0, 0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 525, 1, 0, 0, 0, 3433, 3437, 5, 342, 0, 0, 3434, 3436, 3, 912, 456, 0, 3435, 3434, 1, 0, 0, 0, 3436, 3439, 1, 0, 0, 0, 3437, 3435, 1, 0, 0, 0, 3437, 3438, 1, 0, 0, 0, 3438, 527, 1, 0, 0, 0, 3439, 3437, 1, 0, 0, 0, 3440, 3444, 5, 15, 0, 0, 3441, 3443, 3, 912, 456, 0, 3442, 3441, 1, 0, 0, 0, 3443, 3446, 1, 0, 0, 0, 3444, 3442, 1, 0, 0, 0, 3444, 3445, 1, 0, 0, 0, 3445, 529, 1, 0, 0, 0, 3446, 3444, 1, 0, 0, 0, 3447, 3451, 5, 353, 0, 0, 3448, 3450, 3, 912, 456, 0, 3449, 3448, 1, 0, 0, 0, 3450, 3453, 1, 0, 0, 0, 3451, 3449, 1, 0, 0, 0, 3451, 3452, 1, 0, 0, 0, 3452, 531, 1, 0, 0, 0, 3453, 3451, 1, 0, 0, 0, 3454, 3455, 5, 189, 0, 0, 3455, 3456, 5, 426, 0, 0, 3456, 533, 1, 0, 0, 0, 3457, 3458, 5, 102, 0, 0, 3458, 3459, 5, 239, 0, 0, 3459, 535, 1, 0, 0, 0, 3460, 3462, 5, 101, 0, 0, 3461, 3463, 3, 40, 20, 0, 3462, 3461, 1, 0, 0, 0, 3462, 3463, 1, 0, 0, 0, 3463, 3464, 1, 0, 0, 0, 3464, 3465, 5, 237, 0, 0, 3465, 3471, 3, 916, 458, 0, 3466, 3467, 5, 397, 0, 0, 3467, 3468, 5, 237, 0, 0, 3468, 3470, 3, 916, 458, 0, 3469, 3466, 1, 0, 0, 0, 3470, 3473, 1, 0, 0, 0, 3471, 3469, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3475, 1, 0, 0, 0, 3473, 3471, 1, 0, 0, 0, 3474, 3476, 3, 16, 8, 0, 3475, 3474, 1, 0, 0, 0, 3475, 3476, 1, 0, 0, 0, 3476, 3478, 1, 0, 0, 0, 3477, 3479, 5, 255, 0, 0, 3478, 3477, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3481, 1, 0, 0, 0, 3480, 3482, 3, 18, 9, 0, 3481, 3480, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 537, 1, 0, 0, 0, 3483, 3484, 5, 304, 0, 0, 3484, 3485, 5, 332, 0, 0, 3485, 3493, 3, 254, 127, 0, 3486, 3487, 5, 363, 0, 0, 3487, 3489, 5, 332, 0, 0, 3488, 3490, 3, 40, 20, 0, 3489, 3488, 1, 0, 0, 0, 3489, 3490, 1, 0, 0, 0, 3490, 3491, 1, 0, 0, 0, 3491, 3493, 3, 254, 127, 0, 3492, 3483, 1, 0, 0, 0, 3492, 3486, 1, 0, 0, 0, 3493, 539, 1, 0, 0, 0, 3494, 3495, 5, 304, 0, 0, 3495, 3496, 5, 332, 0, 0, 3496, 3504, 3, 254, 127, 0, 3497, 3498, 5, 363, 0, 0, 3498, 3500, 5, 332, 0, 0, 3499, 3501, 3, 40, 20, 0, 3500, 3499, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3502, 1, 0, 0, 0, 3502, 3504, 3, 254, 127, 0, 3503, 3494, 1, 0, 0, 0, 3503, 3497, 1, 0, 0, 0, 3504, 541, 1, 0, 0, 0, 3505, 3515, 5, 304, 0, 0, 3506, 3507, 5, 301, 0, 0, 3507, 3511, 5, 426, 0, 0, 3508, 3509, 5, 387, 0, 0, 3509, 3510, 5, 302, 0, 0, 3510, 3512, 3, 254, 127, 0, 3511, 3508, 1, 0, 0, 0, 3511, 3512, 1, 0, 0, 0, 3512, 3516, 1, 0, 0, 0, 3513, 3514, 5, 302, 0, 0, 3514, 3516, 3, 254, 127, 0, 3515, 3506, 1, 0, 0, 0, 3515, 3513, 1, 0, 0, 0, 3516, 3521, 1, 0, 0, 0, 3517, 3518, 5, 363, 0, 0, 3518, 3519, 5, 302, 0, 0, 3519, 3521, 3, 254, 127, 0, 3520, 3505, 1, 0, 0, 0, 3520, 3517, 1, 0, 0, 0, 3521, 543, 1, 0, 0, 0, 3522, 3524, 3, 660, 330, 0, 3523, 3525, 3, 912, 456, 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 545, 1, 0, 0, 0, 3526, 3527, 5, 304, 0, 0, 3527, 3528, 5, 129, 0, 0, 3528, 3529, 3, 586, 293, 0, 3529, 547, 1, 0, 0, 0, 3530, 3531, 5, 216, 0, 0, 3531, 3534, 7, 23, 0, 0, 3532, 3534, 3, 234, 117, 0, 3533, 3530, 1, 0, 0, 0, 3533, 3532, 1, 0, 0, 0, 3534, 549, 1, 0, 0, 0, 3535, 3536, 5, 304, 0, 0, 3536, 3537, 5, 310, 0, 0, 3537, 3538, 5, 189, 0, 0, 3538, 3539, 3, 552, 276, 0, 3539, 551, 1, 0, 0, 0, 3540, 3541, 5, 399, 0, 0, 3541, 3542, 3, 554, 277, 0, 3542, 3543, 5, 400, 0, 0, 3543, 553, 1, 0, 0, 0, 3544, 3549, 3, 556, 278, 0, 3545, 3546, 5, 397, 0, 0, 3546, 3548, 3, 556, 278, 0, 3547, 3545, 1, 0, 0, 0, 3548, 3551, 1, 0, 0, 0, 3549, 3547, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 555, 1, 0, 0, 0, 3551, 3549, 1, 0, 0, 0, 3552, 3553, 3, 328, 164, 0, 3553, 3554, 5, 405, 0, 0, 3554, 3555, 5, 426, 0, 0, 3555, 557, 1, 0, 0, 0, 3556, 3557, 5, 304, 0, 0, 3557, 3558, 5, 189, 0, 0, 3558, 3559, 5, 426, 0, 0, 3559, 559, 1, 0, 0, 0, 3560, 3567, 3, 238, 119, 0, 3561, 3564, 5, 216, 0, 0, 3562, 3565, 5, 310, 0, 0, 3563, 3565, 3, 52, 26, 0, 3564, 3562, 1, 0, 0, 0, 3564, 3563, 1, 0, 0, 0, 3565, 3567, 1, 0, 0, 0, 3566, 3560, 1, 0, 0, 0, 3566, 3561, 1, 0, 0, 0, 3567, 561, 1, 0, 0, 0, 3568, 3569, 5, 113, 0, 0, 3569, 3570, 3, 912, 456, 0, 3570, 3571, 5, 387, 0, 0, 3571, 3572, 5, 329, 0, 0, 3572, 3573, 3, 660, 330, 0, 3573, 563, 1, 0, 0, 0, 3574, 3575, 5, 274, 0, 0, 3575, 3576, 5, 341, 0, 0, 3576, 3577, 3, 912, 456, 0, 3577, 565, 1, 0, 0, 0, 3578, 3579, 5, 365, 0, 0, 3579, 3580, 5, 319, 0, 0, 3580, 3582, 5, 134, 0, 0, 3581, 3583, 5, 45, 0, 0, 3582, 3581, 1, 0, 0, 0, 3582, 3583, 1, 0, 0, 0, 3583, 3584, 1, 0, 0, 0, 3584, 3585, 3, 284, 142, 0, 3585, 3586, 5, 304, 0, 0, 3586, 3589, 3, 254, 127, 0, 3587, 3588, 5, 47, 0, 0, 3588, 3590, 5, 426, 0, 0, 3589, 3587, 1, 0, 0, 0, 3589, 3590, 1, 0, 0, 0, 3590, 567, 1, 0, 0, 0, 3591, 3592, 5, 53, 0, 0, 3592, 569, 1, 0, 0, 0, 3593, 3594, 5, 166, 0, 0, 3594, 3595, 5, 431, 0, 0, 3595, 3596, 5, 31, 0, 0, 3596, 571, 1, 0, 0, 0, 3597, 3598, 5, 11, 0, 0, 3598, 3599, 5, 380, 0, 0, 3599, 573, 1, 0, 0, 0, 3600, 3601, 5, 246, 0, 0, 3601, 3602, 5, 426, 0, 0, 3602, 575, 1, 0, 0, 0, 3603, 3604, 5, 49, 0, 0, 3604, 3606, 5, 426, 0, 0, 3605, 3607, 3, 572, 286, 0, 3606, 3605, 1, 0, 0, 0, 3606, 3607, 1, 0, 0, 0, 3607, 3609, 1, 0, 0, 0, 3608, 3610, 3, 236, 118, 0, 3609, 3608, 1, 0, 0, 0, 3609, 3610, 1, 0, 0, 0, 3610, 3612, 1, 0, 0, 0, 3611, 3613, 3, 764, 382, 0, 3612, 3611, 1, 0, 0, 0, 3612, 3613, 1, 0, 0, 0, 3613, 3615, 1, 0, 0, 0, 3614, 3616, 3, 574, 287, 0, 3615, 3614, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3621, 1, 0, 0, 0, 3617, 3618, 5, 387, 0, 0, 3618, 3619, 5, 235, 0, 0, 3619, 3620, 5, 332, 0, 0, 3620, 3622, 3, 254, 127, 0, 3621, 3617, 1, 0, 0, 0, 3621, 3622, 1, 0, 0, 0, 3622, 577, 1, 0, 0, 0, 3623, 3624, 5, 304, 0, 0, 3624, 3625, 5, 236, 0, 0, 3625, 3626, 3, 148, 74, 0, 3626, 579, 1, 0, 0, 0, 3627, 3628, 5, 304, 0, 0, 3628, 3629, 5, 237, 0, 0, 3629, 3630, 5, 316, 0, 0, 3630, 3631, 5, 399, 0, 0, 3631, 3632, 3, 228, 114, 0, 3632, 3633, 5, 400, 0, 0, 3633, 581, 1, 0, 0, 0, 3634, 3644, 5, 115, 0, 0, 3635, 3636, 5, 289, 0, 0, 3636, 3637, 5, 399, 0, 0, 3637, 3645, 7, 24, 0, 0, 3638, 3639, 5, 118, 0, 0, 3639, 3640, 5, 399, 0, 0, 3640, 3645, 5, 426, 0, 0, 3641, 3642, 5, 306, 0, 0, 3642, 3643, 5, 399, 0, 0, 3643, 3645, 5, 431, 0, 0, 3644, 3635, 1, 0, 0, 0, 3644, 3638, 1, 0, 0, 0, 3644, 3641, 1, 0, 0, 0, 3645, 3646, 1, 0, 0, 0, 3646, 3647, 5, 400, 0, 0, 3647, 583, 1, 0, 0, 0, 3648, 3649, 3, 926, 463, 0, 3649, 3650, 5, 224, 0, 0, 3650, 3652, 3, 660, 330, 0, 3651, 3653, 3, 912, 456, 0, 3652, 3651, 1, 0, 0, 0, 3652, 3653, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3655, 5, 265, 0, 0, 3655, 585, 1, 0, 0, 0, 3656, 3657, 5, 160, 0, 0, 3657, 3658, 5, 426, 0, 0, 3658, 3659, 5, 233, 0, 0, 3659, 3660, 5, 426, 0, 0, 3660, 3661, 5, 301, 0, 0, 3661, 3666, 5, 426, 0, 0, 3662, 3663, 5, 159, 0, 0, 3663, 3664, 5, 426, 0, 0, 3664, 3665, 5, 232, 0, 0, 3665, 3667, 5, 426, 0, 0, 3666, 3662, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3670, 1, 0, 0, 0, 3668, 3670, 3, 926, 463, 0, 3669, 3656, 1, 0, 0, 0, 3669, 3668, 1, 0, 0, 0, 3670, 587, 1, 0, 0, 0, 3671, 3675, 3, 590, 295, 0, 3672, 3675, 3, 592, 296, 0, 3673, 3675, 3, 594, 297, 0, 3674, 3671, 1, 0, 0, 0, 3674, 3672, 1, 0, 0, 0, 3674, 3673, 1, 0, 0, 0, 3675, 589, 1, 0, 0, 0, 3676, 3677, 3, 654, 327, 0, 3677, 3678, 5, 304, 0, 0, 3678, 3679, 5, 77, 0, 0, 3679, 3680, 3, 608, 304, 0, 3680, 591, 1, 0, 0, 0, 3681, 3682, 3, 654, 327, 0, 3682, 3683, 5, 304, 0, 0, 3683, 3684, 5, 236, 0, 0, 3684, 3685, 3, 150, 75, 0, 3685, 593, 1, 0, 0, 0, 3686, 3687, 3, 654, 327, 0, 3687, 3688, 5, 304, 0, 0, 3688, 3689, 5, 367, 0, 0, 3689, 3690, 5, 426, 0, 0, 3690, 595, 1, 0, 0, 0, 3691, 3692, 5, 184, 0, 0, 3692, 3701, 5, 128, 0, 0, 3693, 3694, 5, 184, 0, 0, 3694, 3695, 5, 128, 0, 0, 3695, 3696, 3, 926, 463, 0, 3696, 3697, 5, 426, 0, 0, 3697, 3701, 1, 0, 0, 0, 3698, 3699, 5, 184, 0, 0, 3699, 3701, 3, 660, 330, 0, 3700, 3691, 1, 0, 0, 0, 3700, 3693, 1, 0, 0, 0, 3700, 3698, 1, 0, 0, 0, 3701, 597, 1, 0, 0, 0, 3702, 3704, 5, 58, 0, 0, 3703, 3705, 5, 333, 0, 0, 3704, 3703, 1, 0, 0, 0, 3704, 3705, 1, 0, 0, 0, 3705, 3707, 1, 0, 0, 0, 3706, 3708, 5, 345, 0, 0, 3707, 3706, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3710, 1, 0, 0, 0, 3709, 3711, 5, 123, 0, 0, 3710, 3709, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3712, 1, 0, 0, 0, 3712, 3714, 5, 329, 0, 0, 3713, 3715, 3, 44, 22, 0, 3714, 3713, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3773, 3, 662, 331, 0, 3717, 3719, 3, 596, 298, 0, 3718, 3720, 3, 222, 111, 0, 3719, 3718, 1, 0, 0, 0, 3719, 3720, 1, 0, 0, 0, 3720, 3722, 1, 0, 0, 0, 3721, 3723, 3, 250, 125, 0, 3722, 3721, 1, 0, 0, 0, 3722, 3723, 1, 0, 0, 0, 3723, 3725, 1, 0, 0, 0, 3724, 3726, 3, 272, 136, 0, 3725, 3724, 1, 0, 0, 0, 3725, 3726, 1, 0, 0, 0, 3726, 3728, 1, 0, 0, 0, 3727, 3729, 3, 274, 137, 0, 3728, 3727, 1, 0, 0, 0, 3728, 3729, 1, 0, 0, 0, 3729, 3731, 1, 0, 0, 0, 3730, 3732, 3, 252, 126, 0, 3731, 3730, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3734, 1, 0, 0, 0, 3733, 3735, 3, 220, 110, 0, 3734, 3733, 1, 0, 0, 0, 3734, 3735, 1, 0, 0, 0, 3735, 3774, 1, 0, 0, 0, 3736, 3737, 5, 399, 0, 0, 3737, 3738, 3, 278, 139, 0, 3738, 3739, 5, 400, 0, 0, 3739, 3741, 1, 0, 0, 0, 3740, 3736, 1, 0, 0, 0, 3740, 3741, 1, 0, 0, 0, 3741, 3743, 1, 0, 0, 0, 3742, 3744, 3, 218, 109, 0, 3743, 3742, 1, 0, 0, 0, 3743, 3744, 1, 0, 0, 0, 3744, 3746, 1, 0, 0, 0, 3745, 3747, 3, 222, 111, 0, 3746, 3745, 1, 0, 0, 0, 3746, 3747, 1, 0, 0, 0, 3747, 3749, 1, 0, 0, 0, 3748, 3750, 3, 234, 117, 0, 3749, 3748, 1, 0, 0, 0, 3749, 3750, 1, 0, 0, 0, 3750, 3752, 1, 0, 0, 0, 3751, 3753, 3, 238, 119, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3755, 1, 0, 0, 0, 3754, 3756, 3, 250, 125, 0, 3755, 3754, 1, 0, 0, 0, 3755, 3756, 1, 0, 0, 0, 3756, 3758, 1, 0, 0, 0, 3757, 3759, 3, 272, 136, 0, 3758, 3757, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3761, 1, 0, 0, 0, 3760, 3762, 3, 274, 137, 0, 3761, 3760, 1, 0, 0, 0, 3761, 3762, 1, 0, 0, 0, 3762, 3764, 1, 0, 0, 0, 3763, 3765, 3, 252, 126, 0, 3764, 3763, 1, 0, 0, 0, 3764, 3765, 1, 0, 0, 0, 3765, 3767, 1, 0, 0, 0, 3766, 3768, 3, 220, 110, 0, 3767, 3766, 1, 0, 0, 0, 3767, 3768, 1, 0, 0, 0, 3768, 3771, 1, 0, 0, 0, 3769, 3770, 5, 17, 0, 0, 3770, 3772, 3, 414, 207, 0, 3771, 3769, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3774, 1, 0, 0, 0, 3773, 3717, 1, 0, 0, 0, 3773, 3740, 1, 0, 0, 0, 3774, 3838, 1, 0, 0, 0, 3775, 3776, 5, 58, 0, 0, 3776, 3777, 5, 195, 0, 0, 3777, 3779, 5, 329, 0, 0, 3778, 3780, 3, 44, 22, 0, 3779, 3778, 1, 0, 0, 0, 3779, 3780, 1, 0, 0, 0, 3780, 3781, 1, 0, 0, 0, 3781, 3835, 3, 662, 331, 0, 3782, 3784, 3, 596, 298, 0, 3783, 3785, 3, 250, 125, 0, 3784, 3783, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3787, 1, 0, 0, 0, 3786, 3788, 3, 272, 136, 0, 3787, 3786, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3790, 1, 0, 0, 0, 3789, 3791, 3, 274, 137, 0, 3790, 3789, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3793, 1, 0, 0, 0, 3792, 3794, 3, 252, 126, 0, 3793, 3792, 1, 0, 0, 0, 3793, 3794, 1, 0, 0, 0, 3794, 3796, 1, 0, 0, 0, 3795, 3797, 3, 220, 110, 0, 3796, 3795, 1, 0, 0, 0, 3796, 3797, 1, 0, 0, 0, 3797, 3836, 1, 0, 0, 0, 3798, 3799, 5, 399, 0, 0, 3799, 3800, 3, 278, 139, 0, 3800, 3801, 5, 400, 0, 0, 3801, 3803, 1, 0, 0, 0, 3802, 3798, 1, 0, 0, 0, 3802, 3803, 1, 0, 0, 0, 3803, 3805, 1, 0, 0, 0, 3804, 3806, 3, 218, 109, 0, 3805, 3804, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3808, 1, 0, 0, 0, 3807, 3809, 3, 222, 111, 0, 3808, 3807, 1, 0, 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3811, 1, 0, 0, 0, 3810, 3812, 3, 234, 117, 0, 3811, 3810, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 3814, 1, 0, 0, 0, 3813, 3815, 3, 238, 119, 0, 3814, 3813, 1, 0, 0, 0, 3814, 3815, 1, 0, 0, 0, 3815, 3817, 1, 0, 0, 0, 3816, 3818, 3, 250, 125, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3820, 1, 0, 0, 0, 3819, 3821, 3, 272, 136, 0, 3820, 3819, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 3823, 1, 0, 0, 0, 3822, 3824, 3, 274, 137, 0, 3823, 3822, 1, 0, 0, 0, 3823, 3824, 1, 0, 0, 0, 3824, 3826, 1, 0, 0, 0, 3825, 3827, 3, 252, 126, 0, 3826, 3825, 1, 0, 0, 0, 3826, 3827, 1, 0, 0, 0, 3827, 3829, 1, 0, 0, 0, 3828, 3830, 3, 220, 110, 0, 3829, 3828, 1, 0, 0, 0, 3829, 3830, 1, 0, 0, 0, 3830, 3833, 1, 0, 0, 0, 3831, 3832, 5, 17, 0, 0, 3832, 3834, 3, 414, 207, 0, 3833, 3831, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3836, 1, 0, 0, 0, 3835, 3782, 1, 0, 0, 0, 3835, 3802, 1, 0, 0, 0, 3836, 3838, 1, 0, 0, 0, 3837, 3702, 1, 0, 0, 0, 3837, 3775, 1, 0, 0, 0, 3838, 599, 1, 0, 0, 0, 3839, 3840, 5, 58, 0, 0, 3840, 3842, 5, 69, 0, 0, 3841, 3843, 3, 44, 22, 0, 3842, 3841, 1, 0, 0, 0, 3842, 3843, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3846, 3, 926, 463, 0, 3845, 3847, 3, 606, 303, 0, 3846, 3845, 1, 0, 0, 0, 3846, 3847, 1, 0, 0, 0, 3847, 3849, 1, 0, 0, 0, 3848, 3850, 3, 604, 302, 0, 3849, 3848, 1, 0, 0, 0, 3849, 3850, 1, 0, 0, 0, 3850, 3852, 1, 0, 0, 0, 3851, 3853, 3, 602, 301, 0, 3852, 3851, 1, 0, 0, 0, 3852, 3853, 1, 0, 0, 0, 3853, 3857, 1, 0, 0, 0, 3854, 3855, 5, 387, 0, 0, 3855, 3856, 5, 77, 0, 0, 3856, 3858, 3, 608, 304, 0, 3857, 3854, 1, 0, 0, 0, 3857, 3858, 1, 0, 0, 0, 3858, 601, 1, 0, 0, 0, 3859, 3860, 5, 47, 0, 0, 3860, 3861, 5, 426, 0, 0, 3861, 603, 1, 0, 0, 0, 3862, 3863, 5, 367, 0, 0, 3863, 3864, 5, 426, 0, 0, 3864, 605, 1, 0, 0, 0, 3865, 3866, 5, 352, 0, 0, 3866, 3867, 5, 426, 0, 0, 3867, 607, 1, 0, 0, 0, 3868, 3869, 5, 399, 0, 0, 3869, 3870, 3, 64, 32, 0, 3870, 3871, 5, 400, 0, 0, 3871, 609, 1, 0, 0, 0, 3872, 3873, 5, 101, 0, 0, 3873, 3875, 5, 69, 0, 0, 3874, 3876, 3, 40, 20, 0, 3875, 3874, 1, 0, 0, 0, 3875, 3876, 1, 0, 0, 0, 3876, 3877, 1, 0, 0, 0, 3877, 3878, 3, 926, 463, 0, 3878, 611, 1, 0, 0, 0, 3879, 3880, 3, 926, 463, 0, 3880, 3881, 5, 395, 0, 0, 3881, 3883, 1, 0, 0, 0, 3882, 3879, 1, 0, 0, 0, 3883, 3886, 1, 0, 0, 0, 3884, 3882, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3887, 1, 0, 0, 0, 3886, 3884, 1, 0, 0, 0, 3887, 3888, 5, 415, 0, 0, 3888, 613, 1, 0, 0, 0, 3889, 3890, 5, 83, 0, 0, 3890, 615, 1, 0, 0, 0, 3891, 3896, 3, 828, 414, 0, 3892, 3893, 5, 397, 0, 0, 3893, 3895, 3, 828, 414, 0, 3894, 3892, 1, 0, 0, 0, 3895, 3898, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3896, 3897, 1, 0, 0, 0, 3897, 617, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3899, 3904, 3, 926, 463, 0, 3900, 3901, 5, 397, 0, 0, 3901, 3903, 3, 926, 463, 0, 3902, 3900, 1, 0, 0, 0, 3903, 3906, 1, 0, 0, 0, 3904, 3902, 1, 0, 0, 0, 3904, 3905, 1, 0, 0, 0, 3905, 619, 1, 0, 0, 0, 3906, 3904, 1, 0, 0, 0, 3907, 3908, 5, 139, 0, 0, 3908, 3909, 3, 622, 311, 0, 3909, 621, 1, 0, 0, 0, 3910, 3911, 3, 634, 317, 0, 3911, 3914, 3, 630, 315, 0, 3912, 3913, 5, 397, 0, 0, 3913, 3915, 3, 630, 315, 0, 3914, 3912, 1, 0, 0, 0, 3915, 3916, 1, 0, 0, 0, 3916, 3914, 1, 0, 0, 0, 3916, 3917, 1, 0, 0, 0, 3917, 3920, 1, 0, 0, 0, 3918, 3920, 3, 626, 313, 0, 3919, 3910, 1, 0, 0, 0, 3919, 3918, 1, 0, 0, 0, 3920, 623, 1, 0, 0, 0, 3921, 3925, 3, 648, 324, 0, 3922, 3924, 3, 638, 319, 0, 3923, 3922, 1, 0, 0, 0, 3924, 3927, 1, 0, 0, 0, 3925, 3923, 1, 0, 0, 0, 3925, 3926, 1, 0, 0, 0, 3926, 3954, 1, 0, 0, 0, 3927, 3925, 1, 0, 0, 0, 3928, 3932, 3, 690, 345, 0, 3929, 3931, 3, 638, 319, 0, 3930, 3929, 1, 0, 0, 0, 3931, 3934, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3932, 3933, 1, 0, 0, 0, 3933, 3954, 1, 0, 0, 0, 3934, 3932, 1, 0, 0, 0, 3935, 3939, 3, 668, 334, 0, 3936, 3938, 3, 638, 319, 0, 3937, 3936, 1, 0, 0, 0, 3938, 3941, 1, 0, 0, 0, 3939, 3937, 1, 0, 0, 0, 3939, 3940, 1, 0, 0, 0, 3940, 3954, 1, 0, 0, 0, 3941, 3939, 1, 0, 0, 0, 3942, 3946, 3, 674, 337, 0, 3943, 3945, 3, 638, 319, 0, 3944, 3943, 1, 0, 0, 0, 3945, 3948, 1, 0, 0, 0, 3946, 3944, 1, 0, 0, 0, 3946, 3947, 1, 0, 0, 0, 3947, 3954, 1, 0, 0, 0, 3948, 3946, 1, 0, 0, 0, 3949, 3950, 5, 399, 0, 0, 3950, 3951, 3, 626, 313, 0, 3951, 3952, 5, 400, 0, 0, 3952, 3954, 1, 0, 0, 0, 3953, 3921, 1, 0, 0, 0, 3953, 3928, 1, 0, 0, 0, 3953, 3935, 1, 0, 0, 0, 3953, 3942, 1, 0, 0, 0, 3953, 3949, 1, 0, 0, 0, 3954, 625, 1, 0, 0, 0, 3955, 3966, 3, 624, 312, 0, 3956, 3957, 3, 636, 318, 0, 3957, 3962, 3, 628, 314, 0, 3958, 3959, 5, 224, 0, 0, 3959, 3963, 3, 828, 414, 0, 3960, 3961, 5, 370, 0, 0, 3961, 3963, 3, 292, 146, 0, 3962, 3958, 1, 0, 0, 0, 3962, 3960, 1, 0, 0, 0, 3962, 3963, 1, 0, 0, 0, 3963, 3965, 1, 0, 0, 0, 3964, 3956, 1, 0, 0, 0, 3965, 3968, 1, 0, 0, 0, 3966, 3964, 1, 0, 0, 0, 3966, 3967, 1, 0, 0, 0, 3967, 627, 1, 0, 0, 0, 3968, 3966, 1, 0, 0, 0, 3969, 3974, 3, 648, 324, 0, 3970, 3974, 3, 690, 345, 0, 3971, 3974, 3, 668, 334, 0, 3972, 3974, 3, 674, 337, 0, 3973, 3969, 1, 0, 0, 0, 3973, 3970, 1, 0, 0, 0, 3973, 3971, 1, 0, 0, 0, 3973, 3972, 1, 0, 0, 0, 3974, 3978, 1, 0, 0, 0, 3975, 3977, 3, 638, 319, 0, 3976, 3975, 1, 0, 0, 0, 3977, 3980, 1, 0, 0, 0, 3978, 3976, 1, 0, 0, 0, 3978, 3979, 1, 0, 0, 0, 3979, 629, 1, 0, 0, 0, 3980, 3978, 1, 0, 0, 0, 3981, 3983, 5, 250, 0, 0, 3982, 3981, 1, 0, 0, 0, 3982, 3983, 1, 0, 0, 0, 3983, 3984, 1, 0, 0, 0, 3984, 3985, 3, 652, 326, 0, 3985, 3986, 3, 632, 316, 0, 3986, 631, 1, 0, 0, 0, 3987, 3988, 5, 399, 0, 0, 3988, 3989, 3, 616, 308, 0, 3989, 3990, 5, 400, 0, 0, 3990, 633, 1, 0, 0, 0, 3991, 3992, 5, 359, 0, 0, 3992, 635, 1, 0, 0, 0, 3993, 4008, 5, 397, 0, 0, 3994, 4005, 5, 157, 0, 0, 3995, 4005, 5, 60, 0, 0, 3996, 3998, 7, 25, 0, 0, 3997, 3999, 5, 231, 0, 0, 3998, 3997, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4005, 1, 0, 0, 0, 4000, 4002, 5, 180, 0, 0, 4001, 4003, 7, 26, 0, 0, 4002, 4001, 1, 0, 0, 0, 4002, 4003, 1, 0, 0, 0, 4003, 4005, 1, 0, 0, 0, 4004, 3994, 1, 0, 0, 0, 4004, 3995, 1, 0, 0, 0, 4004, 3996, 1, 0, 0, 0, 4004, 4000, 1, 0, 0, 0, 4004, 4005, 1, 0, 0, 0, 4005, 4006, 1, 0, 0, 0, 4006, 4008, 5, 171, 0, 0, 4007, 3993, 1, 0, 0, 0, 4007, 4004, 1, 0, 0, 0, 4008, 637, 1, 0, 0, 0, 4009, 4010, 5, 178, 0, 0, 4010, 4011, 5, 378, 0, 0, 4011, 4012, 5, 231, 0, 0, 4012, 4013, 3, 776, 388, 0, 4013, 4023, 3, 640, 320, 0, 4014, 4015, 5, 17, 0, 0, 4015, 4020, 3, 926, 463, 0, 4016, 4017, 5, 397, 0, 0, 4017, 4019, 3, 926, 463, 0, 4018, 4016, 1, 0, 0, 0, 4019, 4022, 1, 0, 0, 0, 4020, 4018, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4024, 1, 0, 0, 0, 4022, 4020, 1, 0, 0, 0, 4023, 4014, 1, 0, 0, 0, 4023, 4024, 1, 0, 0, 0, 4024, 4067, 1, 0, 0, 0, 4025, 4027, 5, 397, 0, 0, 4026, 4025, 1, 0, 0, 0, 4026, 4027, 1, 0, 0, 0, 4027, 4028, 1, 0, 0, 0, 4028, 4064, 5, 178, 0, 0, 4029, 4030, 5, 378, 0, 0, 4030, 4031, 3, 776, 388, 0, 4031, 4041, 3, 640, 320, 0, 4032, 4033, 5, 17, 0, 0, 4033, 4038, 3, 926, 463, 0, 4034, 4035, 5, 397, 0, 0, 4035, 4037, 3, 926, 463, 0, 4036, 4034, 1, 0, 0, 0, 4037, 4040, 1, 0, 0, 0, 4038, 4036, 1, 0, 0, 0, 4038, 4039, 1, 0, 0, 0, 4039, 4042, 1, 0, 0, 0, 4040, 4038, 1, 0, 0, 0, 4041, 4032, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4065, 1, 0, 0, 0, 4043, 4044, 5, 329, 0, 0, 4044, 4045, 5, 399, 0, 0, 4045, 4046, 3, 682, 341, 0, 4046, 4048, 5, 400, 0, 0, 4047, 4049, 5, 17, 0, 0, 4048, 4047, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4062, 3, 640, 320, 0, 4051, 4052, 5, 399, 0, 0, 4052, 4057, 3, 926, 463, 0, 4053, 4054, 5, 397, 0, 0, 4054, 4056, 3, 926, 463, 0, 4055, 4053, 1, 0, 0, 0, 4056, 4059, 1, 0, 0, 0, 4057, 4055, 1, 0, 0, 0, 4057, 4058, 1, 0, 0, 0, 4058, 4060, 1, 0, 0, 0, 4059, 4057, 1, 0, 0, 0, 4060, 4061, 5, 400, 0, 0, 4061, 4063, 1, 0, 0, 0, 4062, 4051, 1, 0, 0, 0, 4062, 4063, 1, 0, 0, 0, 4063, 4065, 1, 0, 0, 0, 4064, 4029, 1, 0, 0, 0, 4064, 4043, 1, 0, 0, 0, 4065, 4067, 1, 0, 0, 0, 4066, 4009, 1, 0, 0, 0, 4066, 4026, 1, 0, 0, 0, 4067, 639, 1, 0, 0, 0, 4068, 4069, 3, 926, 463, 0, 4069, 641, 1, 0, 0, 0, 4070, 4071, 5, 331, 0, 0, 4071, 4072, 5, 399, 0, 0, 4072, 4073, 5, 30, 0, 0, 4073, 4074, 5, 431, 0, 0, 4074, 4075, 5, 230, 0, 0, 4075, 4076, 5, 221, 0, 0, 4076, 4086, 5, 431, 0, 0, 4077, 4078, 5, 224, 0, 0, 4078, 4083, 3, 828, 414, 0, 4079, 4080, 5, 397, 0, 0, 4080, 4082, 3, 828, 414, 0, 4081, 4079, 1, 0, 0, 0, 4082, 4085, 1, 0, 0, 0, 4083, 4081, 1, 0, 0, 0, 4083, 4084, 1, 0, 0, 0, 4084, 4087, 1, 0, 0, 0, 4085, 4083, 1, 0, 0, 0, 4086, 4077, 1, 0, 0, 0, 4086, 4087, 1, 0, 0, 0, 4087, 4088, 1, 0, 0, 0, 4088, 4089, 5, 400, 0, 0, 4089, 643, 1, 0, 0, 0, 4090, 4091, 5, 331, 0, 0, 4091, 4095, 5, 399, 0, 0, 4092, 4093, 5, 431, 0, 0, 4093, 4096, 7, 27, 0, 0, 4094, 4096, 5, 430, 0, 0, 4095, 4092, 1, 0, 0, 0, 4095, 4094, 1, 0, 0, 0, 4096, 4097, 1, 0, 0, 0, 4097, 4098, 5, 400, 0, 0, 4098, 645, 1, 0, 0, 0, 4099, 4102, 3, 642, 321, 0, 4100, 4102, 3, 644, 322, 0, 4101, 4099, 1, 0, 0, 0, 4101, 4100, 1, 0, 0, 0, 4102, 647, 1, 0, 0, 0, 4103, 4105, 3, 658, 329, 0, 4104, 4106, 3, 254, 127, 0, 4105, 4104, 1, 0, 0, 0, 4105, 4106, 1, 0, 0, 0, 4106, 4108, 1, 0, 0, 0, 4107, 4109, 3, 646, 323, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 4111, 1, 0, 0, 0, 4110, 4112, 3, 650, 325, 0, 4111, 4110, 1, 0, 0, 0, 4111, 4112, 1, 0, 0, 0, 4112, 4117, 1, 0, 0, 0, 4113, 4115, 5, 17, 0, 0, 4114, 4113, 1, 0, 0, 0, 4114, 4115, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4118, 3, 926, 463, 0, 4117, 4114, 1, 0, 0, 0, 4117, 4118, 1, 0, 0, 0, 4118, 649, 1, 0, 0, 0, 4119, 4129, 5, 134, 0, 0, 4120, 4121, 5, 327, 0, 0, 4121, 4122, 5, 17, 0, 0, 4122, 4123, 5, 221, 0, 0, 4123, 4130, 3, 828, 414, 0, 4124, 4125, 5, 134, 0, 0, 4125, 4126, 5, 328, 0, 0, 4126, 4127, 5, 17, 0, 0, 4127, 4128, 5, 221, 0, 0, 4128, 4130, 5, 431, 0, 0, 4129, 4120, 1, 0, 0, 0, 4129, 4124, 1, 0, 0, 0, 4130, 651, 1, 0, 0, 0, 4131, 4133, 3, 658, 329, 0, 4132, 4134, 3, 646, 323, 0, 4133, 4132, 1, 0, 0, 0, 4133, 4134, 1, 0, 0, 0, 4134, 4139, 1, 0, 0, 0, 4135, 4137, 5, 17, 0, 0, 4136, 4135, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 4138, 1, 0, 0, 0, 4138, 4140, 3, 926, 463, 0, 4139, 4136, 1, 0, 0, 0, 4139, 4140, 1, 0, 0, 0, 4140, 653, 1, 0, 0, 0, 4141, 4142, 3, 926, 463, 0, 4142, 655, 1, 0, 0, 0, 4143, 4144, 3, 926, 463, 0, 4144, 657, 1, 0, 0, 0, 4145, 4148, 3, 660, 330, 0, 4146, 4148, 3, 664, 332, 0, 4147, 4145, 1, 0, 0, 0, 4147, 4146, 1, 0, 0, 0, 4148, 659, 1, 0, 0, 0, 4149, 4150, 3, 926, 463, 0, 4150, 4151, 5, 395, 0, 0, 4151, 4154, 3, 926, 463, 0, 4152, 4153, 5, 395, 0, 0, 4153, 4155, 3, 926, 463, 0, 4154, 4152, 1, 0, 0, 0, 4154, 4155, 1, 0, 0, 0, 4155, 4158, 1, 0, 0, 0, 4156, 4158, 3, 926, 463, 0, 4157, 4149, 1, 0, 0, 0, 4157, 4156, 1, 0, 0, 0, 4158, 661, 1, 0, 0, 0, 4159, 4160, 3, 926, 463, 0, 4160, 4161, 5, 395, 0, 0, 4161, 4164, 3, 926, 463, 0, 4162, 4163, 5, 395, 0, 0, 4163, 4165, 3, 926, 463, 0, 4164, 4162, 1, 0, 0, 0, 4164, 4165, 1, 0, 0, 0, 4165, 4168, 1, 0, 0, 0, 4166, 4168, 3, 926, 463, 0, 4167, 4159, 1, 0, 0, 0, 4167, 4166, 1, 0, 0, 0, 4168, 663, 1, 0, 0, 0, 4169, 4170, 3, 926, 463, 0, 4170, 4171, 5, 395, 0, 0, 4171, 4173, 1, 0, 0, 0, 4172, 4169, 1, 0, 0, 0, 4172, 4173, 1, 0, 0, 0, 4173, 4174, 1, 0, 0, 0, 4174, 4175, 3, 926, 463, 0, 4175, 665, 1, 0, 0, 0, 4176, 4177, 3, 926, 463, 0, 4177, 4178, 5, 395, 0, 0, 4178, 4180, 1, 0, 0, 0, 4179, 4176, 1, 0, 0, 0, 4179, 4180, 1, 0, 0, 0, 4180, 4181, 1, 0, 0, 0, 4181, 4182, 3, 926, 463, 0, 4182, 667, 1, 0, 0, 0, 4183, 4184, 5, 399, 0, 0, 4184, 4185, 3, 394, 197, 0, 4185, 4187, 5, 400, 0, 0, 4186, 4188, 5, 17, 0, 0, 4187, 4186, 1, 0, 0, 0, 4187, 4188, 1, 0, 0, 0, 4188, 4189, 1, 0, 0, 0, 4189, 4190, 3, 926, 463, 0, 4190, 669, 1, 0, 0, 0, 4191, 4193, 3, 768, 384, 0, 4192, 4194, 3, 764, 382, 0, 4193, 4192, 1, 0, 0, 0, 4193, 4194, 1, 0, 0, 0, 4194, 4203, 1, 0, 0, 0, 4195, 4203, 3, 764, 382, 0, 4196, 4198, 3, 770, 385, 0, 4197, 4199, 3, 772, 386, 0, 4198, 4197, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4203, 1, 0, 0, 0, 4200, 4203, 3, 772, 386, 0, 4201, 4203, 3, 766, 383, 0, 4202, 4191, 1, 0, 0, 0, 4202, 4195, 1, 0, 0, 0, 4202, 4196, 1, 0, 0, 0, 4202, 4200, 1, 0, 0, 0, 4202, 4201, 1, 0, 0, 0, 4203, 671, 1, 0, 0, 0, 4204, 4208, 3, 668, 334, 0, 4205, 4208, 3, 648, 324, 0, 4206, 4208, 3, 674, 337, 0, 4207, 4204, 1, 0, 0, 0, 4207, 4205, 1, 0, 0, 0, 4207, 4206, 1, 0, 0, 0, 4208, 673, 1, 0, 0, 0, 4209, 4210, 3, 926, 463, 0, 4210, 4211, 5, 399, 0, 0, 4211, 4212, 5, 224, 0, 0, 4212, 4214, 3, 672, 336, 0, 4213, 4215, 3, 670, 335, 0, 4214, 4213, 1, 0, 0, 0, 4214, 4215, 1, 0, 0, 0, 4215, 4231, 1, 0, 0, 0, 4216, 4217, 5, 432, 0, 0, 4217, 4218, 5, 399, 0, 0, 4218, 4219, 3, 828, 414, 0, 4219, 4228, 5, 400, 0, 0, 4220, 4221, 5, 397, 0, 0, 4221, 4222, 5, 432, 0, 0, 4222, 4223, 5, 399, 0, 0, 4223, 4224, 3, 828, 414, 0, 4224, 4225, 5, 400, 0, 0, 4225, 4227, 1, 0, 0, 0, 4226, 4220, 1, 0, 0, 0, 4227, 4230, 1, 0, 0, 0, 4228, 4226, 1, 0, 0, 0, 4228, 4229, 1, 0, 0, 0, 4229, 4232, 1, 0, 0, 0, 4230, 4228, 1, 0, 0, 0, 4231, 4216, 1, 0, 0, 0, 4231, 4232, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4235, 5, 400, 0, 0, 4234, 4236, 3, 926, 463, 0, 4235, 4234, 1, 0, 0, 0, 4235, 4236, 1, 0, 0, 0, 4236, 675, 1, 0, 0, 0, 4237, 4238, 5, 384, 0, 0, 4238, 4239, 3, 678, 339, 0, 4239, 677, 1, 0, 0, 0, 4240, 4241, 3, 828, 414, 0, 4241, 679, 1, 0, 0, 0, 4242, 4243, 3, 682, 341, 0, 4243, 681, 1, 0, 0, 0, 4244, 4245, 5, 374, 0, 0, 4245, 4246, 3, 684, 342, 0, 4246, 683, 1, 0, 0, 0, 4247, 4252, 3, 686, 343, 0, 4248, 4249, 5, 397, 0, 0, 4249, 4251, 3, 686, 343, 0, 4250, 4248, 1, 0, 0, 0, 4251, 4254, 1, 0, 0, 0, 4252, 4250, 1, 0, 0, 0, 4252, 4253, 1, 0, 0, 0, 4253, 4264, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4255, 4260, 3, 688, 344, 0, 4256, 4257, 5, 397, 0, 0, 4257, 4259, 3, 686, 343, 0, 4258, 4256, 1, 0, 0, 0, 4259, 4262, 1, 0, 0, 0, 4260, 4258, 1, 0, 0, 0, 4260, 4261, 1, 0, 0, 0, 4261, 4264, 1, 0, 0, 0, 4262, 4260, 1, 0, 0, 0, 4263, 4247, 1, 0, 0, 0, 4263, 4255, 1, 0, 0, 0, 4264, 685, 1, 0, 0, 0, 4265, 4266, 3, 746, 373, 0, 4266, 687, 1, 0, 0, 0, 4267, 4268, 5, 399, 0, 0, 4268, 4269, 3, 754, 377, 0, 4269, 4270, 5, 400, 0, 0, 4270, 689, 1, 0, 0, 0, 4271, 4272, 5, 329, 0, 0, 4272, 4273, 5, 399, 0, 0, 4273, 4274, 3, 682, 341, 0, 4274, 4276, 5, 400, 0, 0, 4275, 4277, 5, 17, 0, 0, 4276, 4275, 1, 0, 0, 0, 4276, 4277, 1, 0, 0, 0, 4277, 4278, 1, 0, 0, 0, 4278, 4288, 3, 640, 320, 0, 4279, 4280, 5, 399, 0, 0, 4280, 4285, 3, 926, 463, 0, 4281, 4282, 5, 397, 0, 0, 4282, 4284, 3, 926, 463, 0, 4283, 4281, 1, 0, 0, 0, 4284, 4287, 1, 0, 0, 0, 4285, 4283, 1, 0, 0, 0, 4285, 4286, 1, 0, 0, 0, 4286, 4289, 1, 0, 0, 0, 4287, 4285, 1, 0, 0, 0, 4288, 4279, 1, 0, 0, 0, 4288, 4289, 1, 0, 0, 0, 4289, 4290, 1, 0, 0, 0, 4290, 4291, 5, 400, 0, 0, 4291, 691, 1, 0, 0, 0, 4292, 4294, 5, 299, 0, 0, 4293, 4295, 5, 436, 0, 0, 4294, 4293, 1, 0, 0, 0, 4294, 4295, 1, 0, 0, 0, 4295, 4302, 1, 0, 0, 0, 4296, 4298, 3, 694, 347, 0, 4297, 4296, 1, 0, 0, 0, 4297, 4298, 1, 0, 0, 0, 4298, 4299, 1, 0, 0, 0, 4299, 4303, 3, 696, 348, 0, 4300, 4301, 5, 347, 0, 0, 4301, 4303, 3, 698, 349, 0, 4302, 4297, 1, 0, 0, 0, 4302, 4300, 1, 0, 0, 0, 4303, 4306, 1, 0, 0, 0, 4304, 4306, 3, 702, 351, 0, 4305, 4292, 1, 0, 0, 0, 4305, 4304, 1, 0, 0, 0, 4306, 693, 1, 0, 0, 0, 4307, 4308, 7, 20, 0, 0, 4308, 695, 1, 0, 0, 0, 4309, 4314, 3, 700, 350, 0, 4310, 4311, 5, 397, 0, 0, 4311, 4313, 3, 700, 350, 0, 4312, 4310, 1, 0, 0, 0, 4313, 4316, 1, 0, 0, 0, 4314, 4312, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 697, 1, 0, 0, 0, 4316, 4314, 1, 0, 0, 0, 4317, 4318, 5, 399, 0, 0, 4318, 4319, 3, 706, 353, 0, 4319, 4320, 5, 400, 0, 0, 4320, 4321, 3, 240, 120, 0, 4321, 4322, 3, 244, 122, 0, 4322, 4323, 5, 370, 0, 0, 4323, 4336, 5, 426, 0, 0, 4324, 4334, 5, 17, 0, 0, 4325, 4328, 5, 399, 0, 0, 4326, 4329, 3, 618, 309, 0, 4327, 4329, 3, 276, 138, 0, 4328, 4326, 1, 0, 0, 0, 4328, 4327, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 4331, 5, 400, 0, 0, 4331, 4335, 1, 0, 0, 0, 4332, 4335, 3, 618, 309, 0, 4333, 4335, 3, 276, 138, 0, 4334, 4325, 1, 0, 0, 0, 4334, 4332, 1, 0, 0, 0, 4334, 4333, 1, 0, 0, 0, 4335, 4337, 1, 0, 0, 0, 4336, 4324, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 4338, 1, 0, 0, 0, 4338, 4339, 3, 240, 120, 0, 4339, 4340, 3, 242, 121, 0, 4340, 699, 1, 0, 0, 0, 4341, 4365, 3, 612, 306, 0, 4342, 4345, 3, 284, 142, 0, 4343, 4345, 3, 828, 414, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4343, 1, 0, 0, 0, 4345, 4362, 1, 0, 0, 0, 4346, 4348, 5, 17, 0, 0, 4347, 4346, 1, 0, 0, 0, 4347, 4348, 1, 0, 0, 0, 4348, 4349, 1, 0, 0, 0, 4349, 4363, 3, 926, 463, 0, 4350, 4351, 5, 17, 0, 0, 4351, 4352, 5, 399, 0, 0, 4352, 4357, 3, 926, 463, 0, 4353, 4354, 5, 397, 0, 0, 4354, 4356, 3, 926, 463, 0, 4355, 4353, 1, 0, 0, 0, 4356, 4359, 1, 0, 0, 0, 4357, 4355, 1, 0, 0, 0, 4357, 4358, 1, 0, 0, 0, 4358, 4360, 1, 0, 0, 0, 4359, 4357, 1, 0, 0, 0, 4360, 4361, 5, 400, 0, 0, 4361, 4363, 1, 0, 0, 0, 4362, 4347, 1, 0, 0, 0, 4362, 4350, 1, 0, 0, 0, 4362, 4363, 1, 0, 0, 0, 4363, 4365, 1, 0, 0, 0, 4364, 4341, 1, 0, 0, 0, 4364, 4344, 1, 0, 0, 0, 4365, 701, 1, 0, 0, 0, 4366, 4367, 7, 28, 0, 0, 4367, 4368, 3, 706, 353, 0, 4368, 4369, 3, 240, 120, 0, 4369, 4370, 3, 244, 122, 0, 4370, 4371, 5, 370, 0, 0, 4371, 4384, 5, 426, 0, 0, 4372, 4382, 5, 17, 0, 0, 4373, 4376, 5, 399, 0, 0, 4374, 4377, 3, 618, 309, 0, 4375, 4377, 3, 276, 138, 0, 4376, 4374, 1, 0, 0, 0, 4376, 4375, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4379, 5, 400, 0, 0, 4379, 4383, 1, 0, 0, 0, 4380, 4383, 3, 618, 309, 0, 4381, 4383, 3, 276, 138, 0, 4382, 4373, 1, 0, 0, 0, 4382, 4380, 1, 0, 0, 0, 4382, 4381, 1, 0, 0, 0, 4383, 4385, 1, 0, 0, 0, 4384, 4372, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4386, 1, 0, 0, 0, 4386, 4387, 3, 240, 120, 0, 4387, 4388, 3, 242, 121, 0, 4388, 703, 1, 0, 0, 0, 4389, 4392, 3, 612, 306, 0, 4390, 4392, 3, 828, 414, 0, 4391, 4389, 1, 0, 0, 0, 4391, 4390, 1, 0, 0, 0, 4392, 705, 1, 0, 0, 0, 4393, 4398, 3, 704, 352, 0, 4394, 4395, 5, 397, 0, 0, 4395, 4397, 3, 704, 352, 0, 4396, 4394, 1, 0, 0, 0, 4397, 4400, 1, 0, 0, 0, 4398, 4396, 1, 0, 0, 0, 4398, 4399, 1, 0, 0, 0, 4399, 707, 1, 0, 0, 0, 4400, 4398, 1, 0, 0, 0, 4401, 4402, 5, 386, 0, 0, 4402, 4407, 3, 710, 355, 0, 4403, 4404, 5, 397, 0, 0, 4404, 4406, 3, 710, 355, 0, 4405, 4403, 1, 0, 0, 0, 4406, 4409, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 709, 1, 0, 0, 0, 4409, 4407, 1, 0, 0, 0, 4410, 4411, 3, 926, 463, 0, 4411, 4412, 5, 17, 0, 0, 4412, 4413, 3, 712, 356, 0, 4413, 711, 1, 0, 0, 0, 4414, 4427, 3, 926, 463, 0, 4415, 4417, 5, 399, 0, 0, 4416, 4418, 3, 926, 463, 0, 4417, 4416, 1, 0, 0, 0, 4417, 4418, 1, 0, 0, 0, 4418, 4420, 1, 0, 0, 0, 4419, 4421, 3, 670, 335, 0, 4420, 4419, 1, 0, 0, 0, 4420, 4421, 1, 0, 0, 0, 4421, 4423, 1, 0, 0, 0, 4422, 4424, 3, 714, 357, 0, 4423, 4422, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 4425, 1, 0, 0, 0, 4425, 4427, 5, 400, 0, 0, 4426, 4414, 1, 0, 0, 0, 4426, 4415, 1, 0, 0, 0, 4427, 713, 1, 0, 0, 0, 4428, 4431, 3, 716, 358, 0, 4429, 4431, 3, 718, 359, 0, 4430, 4428, 1, 0, 0, 0, 4430, 4429, 1, 0, 0, 0, 4431, 715, 1, 0, 0, 0, 4432, 4439, 5, 292, 0, 0, 4433, 4440, 3, 720, 360, 0, 4434, 4435, 5, 25, 0, 0, 4435, 4436, 3, 722, 361, 0, 4436, 4437, 5, 11, 0, 0, 4437, 4438, 3, 722, 361, 0, 4438, 4440, 1, 0, 0, 0, 4439, 4433, 1, 0, 0, 0, 4439, 4434, 1, 0, 0, 0, 4440, 717, 1, 0, 0, 0, 4441, 4448, 5, 260, 0, 0, 4442, 4449, 3, 720, 360, 0, 4443, 4444, 5, 25, 0, 0, 4444, 4445, 3, 722, 361, 0, 4445, 4446, 5, 11, 0, 0, 4446, 4447, 3, 722, 361, 0, 4447, 4449, 1, 0, 0, 0, 4448, 4442, 1, 0, 0, 0, 4448, 4443, 1, 0, 0, 0, 4449, 719, 1, 0, 0, 0, 4450, 4451, 5, 354, 0, 0, 4451, 4457, 5, 247, 0, 0, 4452, 4453, 5, 62, 0, 0, 4453, 4457, 5, 291, 0, 0, 4454, 4455, 5, 431, 0, 0, 4455, 4457, 5, 247, 0, 0, 4456, 4450, 1, 0, 0, 0, 4456, 4452, 1, 0, 0, 0, 4456, 4454, 1, 0, 0, 0, 4457, 721, 1, 0, 0, 0, 4458, 4459, 7, 29, 0, 0, 4459, 4463, 7, 30, 0, 0, 4460, 4461, 5, 62, 0, 0, 4461, 4463, 5, 291, 0, 0, 4462, 4458, 1, 0, 0, 0, 4462, 4460, 1, 0, 0, 0, 4463, 723, 1, 0, 0, 0, 4464, 4465, 5, 144, 0, 0, 4465, 4466, 5, 32, 0, 0, 4466, 4467, 3, 726, 363, 0, 4467, 725, 1, 0, 0, 0, 4468, 4473, 3, 284, 142, 0, 4469, 4473, 3, 730, 365, 0, 4470, 4473, 3, 732, 366, 0, 4471, 4473, 3, 728, 364, 0, 4472, 4468, 1, 0, 0, 0, 4472, 4469, 1, 0, 0, 0, 4472, 4470, 1, 0, 0, 0, 4472, 4471, 1, 0, 0, 0, 4473, 727, 1, 0, 0, 0, 4474, 4475, 5, 399, 0, 0, 4475, 4476, 5, 400, 0, 0, 4476, 729, 1, 0, 0, 0, 4477, 4480, 5, 290, 0, 0, 4478, 4480, 5, 61, 0, 0, 4479, 4477, 1, 0, 0, 0, 4479, 4478, 1, 0, 0, 0, 4480, 4481, 1, 0, 0, 0, 4481, 4482, 5, 399, 0, 0, 4482, 4487, 3, 828, 414, 0, 4483, 4484, 5, 397, 0, 0, 4484, 4486, 3, 828, 414, 0, 4485, 4483, 1, 0, 0, 0, 4486, 4489, 1, 0, 0, 0, 4487, 4485, 1, 0, 0, 0, 4487, 4488, 1, 0, 0, 0, 4488, 4490, 1, 0, 0, 0, 4489, 4487, 1, 0, 0, 0, 4490, 4491, 5, 400, 0, 0, 4491, 731, 1, 0, 0, 0, 4492, 4497, 3, 748, 374, 0, 4493, 4494, 5, 387, 0, 0, 4494, 4498, 5, 290, 0, 0, 4495, 4496, 5, 387, 0, 0, 4496, 4498, 5, 61, 0, 0, 4497, 4493, 1, 0, 0, 0, 4497, 4495, 1, 0, 0, 0, 4497, 4498, 1, 0, 0, 0, 4498, 4512, 1, 0, 0, 0, 4499, 4500, 5, 145, 0, 0, 4500, 4501, 5, 305, 0, 0, 4501, 4502, 5, 399, 0, 0, 4502, 4507, 3, 734, 367, 0, 4503, 4504, 5, 397, 0, 0, 4504, 4506, 3, 734, 367, 0, 4505, 4503, 1, 0, 0, 0, 4506, 4509, 1, 0, 0, 0, 4507, 4505, 1, 0, 0, 0, 4507, 4508, 1, 0, 0, 0, 4508, 4510, 1, 0, 0, 0, 4509, 4507, 1, 0, 0, 0, 4510, 4511, 5, 400, 0, 0, 4511, 4513, 1, 0, 0, 0, 4512, 4499, 1, 0, 0, 0, 4512, 4513, 1, 0, 0, 0, 4513, 733, 1, 0, 0, 0, 4514, 4517, 3, 736, 368, 0, 4515, 4517, 3, 738, 369, 0, 4516, 4514, 1, 0, 0, 0, 4516, 4515, 1, 0, 0, 0, 4517, 735, 1, 0, 0, 0, 4518, 4520, 5, 399, 0, 0, 4519, 4521, 3, 828, 414, 0, 4520, 4519, 1, 0, 0, 0, 4520, 4521, 1, 0, 0, 0, 4521, 4526, 1, 0, 0, 0, 4522, 4523, 5, 397, 0, 0, 4523, 4525, 3, 828, 414, 0, 4524, 4522, 1, 0, 0, 0, 4525, 4528, 1, 0, 0, 0, 4526, 4524, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, 0, 4527, 4529, 1, 0, 0, 0, 4528, 4526, 1, 0, 0, 0, 4529, 4530, 5, 400, 0, 0, 4530, 737, 1, 0, 0, 0, 4531, 4532, 3, 828, 414, 0, 4532, 739, 1, 0, 0, 0, 4533, 4534, 5, 146, 0, 0, 4534, 4535, 3, 744, 372, 0, 4535, 741, 1, 0, 0, 0, 4536, 4537, 5, 256, 0, 0, 4537, 4538, 3, 828, 414, 0, 4538, 743, 1, 0, 0, 0, 4539, 4540, 3, 828, 414, 0, 4540, 745, 1, 0, 0, 0, 4541, 4542, 5, 399, 0, 0, 4542, 4543, 3, 748, 374, 0, 4543, 4544, 5, 400, 0, 0, 4544, 747, 1, 0, 0, 0, 4545, 4547, 3, 752, 376, 0, 4546, 4548, 3, 750, 375, 0, 4547, 4546, 1, 0, 0, 0, 4547, 4548, 1, 0, 0, 0, 4548, 749, 1, 0, 0, 0, 4549, 4550, 5, 397, 0, 0, 4550, 4552, 3, 752, 376, 0, 4551, 4549, 1, 0, 0, 0, 4552, 4553, 1, 0, 0, 0, 4553, 4551, 1, 0, 0, 0, 4553, 4554, 1, 0, 0, 0, 4554, 751, 1, 0, 0, 0, 4555, 4558, 3, 614, 307, 0, 4556, 4558, 3, 828, 414, 0, 4557, 4555, 1, 0, 0, 0, 4557, 4556, 1, 0, 0, 0, 4558, 753, 1, 0, 0, 0, 4559, 4561, 3, 828, 414, 0, 4560, 4562, 5, 17, 0, 0, 4561, 4560, 1, 0, 0, 0, 4561, 4562, 1, 0, 0, 0, 4562, 4564, 1, 0, 0, 0, 4563, 4565, 3, 926, 463, 0, 4564, 4563, 1, 0, 0, 0, 4564, 4565, 1, 0, 0, 0, 4565, 4570, 1, 0, 0, 0, 4566, 4567, 5, 397, 0, 0, 4567, 4569, 3, 756, 378, 0, 4568, 4566, 1, 0, 0, 0, 4569, 4572, 1, 0, 0, 0, 4570, 4568, 1, 0, 0, 0, 4570, 4571, 1, 0, 0, 0, 4571, 755, 1, 0, 0, 0, 4572, 4570, 1, 0, 0, 0, 4573, 4575, 3, 828, 414, 0, 4574, 4576, 5, 17, 0, 0, 4575, 4574, 1, 0, 0, 0, 4575, 4576, 1, 0, 0, 0, 4576, 4578, 1, 0, 0, 0, 4577, 4579, 3, 926, 463, 0, 4578, 4577, 1, 0, 0, 0, 4578, 4579, 1, 0, 0, 0, 4579, 757, 1, 0, 0, 0, 4580, 4583, 3, 746, 373, 0, 4581, 4583, 3, 748, 374, 0, 4582, 4580, 1, 0, 0, 0, 4582, 4581, 1, 0, 0, 0, 4583, 759, 1, 0, 0, 0, 4584, 4585, 5, 399, 0, 0, 4585, 4590, 3, 342, 171, 0, 4586, 4587, 5, 397, 0, 0, 4587, 4589, 3, 342, 171, 0, 4588, 4586, 1, 0, 0, 0, 4589, 4592, 1, 0, 0, 0, 4590, 4588, 1, 0, 0, 0, 4590, 4591, 1, 0, 0, 0, 4591, 4593, 1, 0, 0, 0, 4592, 4590, 1, 0, 0, 0, 4593, 4594, 5, 400, 0, 0, 4594, 761, 1, 0, 0, 0, 4595, 4600, 3, 342, 171, 0, 4596, 4597, 5, 397, 0, 0, 4597, 4599, 3, 342, 171, 0, 4598, 4596, 1, 0, 0, 0, 4599, 4602, 1, 0, 0, 0, 4600, 4598, 1, 0, 0, 0, 4600, 4601, 1, 0, 0, 0, 4601, 763, 1, 0, 0, 0, 4602, 4600, 1, 0, 0, 0, 4603, 4604, 5, 229, 0, 0, 4604, 4605, 5, 32, 0, 0, 4605, 4610, 3, 342, 171, 0, 4606, 4607, 5, 397, 0, 0, 4607, 4609, 3, 342, 171, 0, 4608, 4606, 1, 0, 0, 0, 4609, 4612, 1, 0, 0, 0, 4610, 4608, 1, 0, 0, 0, 4610, 4611, 1, 0, 0, 0, 4611, 765, 1, 0, 0, 0, 4612, 4610, 1, 0, 0, 0, 4613, 4614, 5, 41, 0, 0, 4614, 4615, 5, 32, 0, 0, 4615, 4616, 3, 758, 379, 0, 4616, 767, 1, 0, 0, 0, 4617, 4618, 5, 237, 0, 0, 4618, 4619, 5, 32, 0, 0, 4619, 4620, 3, 758, 379, 0, 4620, 769, 1, 0, 0, 0, 4621, 4622, 5, 97, 0, 0, 4622, 4623, 5, 32, 0, 0, 4623, 4624, 3, 758, 379, 0, 4624, 771, 1, 0, 0, 0, 4625, 4626, 5, 314, 0, 0, 4626, 4629, 5, 32, 0, 0, 4627, 4630, 3, 760, 380, 0, 4628, 4630, 3, 762, 381, 0, 4629, 4627, 1, 0, 0, 0, 4629, 4628, 1, 0, 0, 0, 4630, 773, 1, 0, 0, 0, 4631, 4632, 5, 349, 0, 0, 4632, 4636, 5, 399, 0, 0, 4633, 4637, 5, 179, 0, 0, 4634, 4637, 5, 343, 0, 0, 4635, 4637, 5, 29, 0, 0, 4636, 4633, 1, 0, 0, 0, 4636, 4634, 1, 0, 0, 0, 4636, 4635, 1, 0, 0, 0, 4636, 4637, 1, 0, 0, 0, 4637, 4639, 1, 0, 0, 0, 4638, 4640, 3, 704, 352, 0, 4639, 4638, 1, 0, 0, 0, 4639, 4640, 1, 0, 0, 0, 4640, 4641, 1, 0, 0, 0, 4641, 4642, 5, 139, 0, 0, 4642, 4643, 3, 704, 352, 0, 4643, 4644, 5, 400, 0, 0, 4644, 775, 1, 0, 0, 0, 4645, 4686, 3, 774, 387, 0, 4646, 4647, 3, 784, 392, 0, 4647, 4662, 5, 399, 0, 0, 4648, 4663, 5, 415, 0, 0, 4649, 4651, 3, 694, 347, 0, 4650, 4649, 1, 0, 0, 0, 4650, 4651, 1, 0, 0, 0, 4651, 4660, 1, 0, 0, 0, 4652, 4657, 3, 704, 352, 0, 4653, 4654, 5, 397, 0, 0, 4654, 4656, 3, 704, 352, 0, 4655, 4653, 1, 0, 0, 0, 4656, 4659, 1, 0, 0, 0, 4657, 4655, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4661, 1, 0, 0, 0, 4659, 4657, 1, 0, 0, 0, 4660, 4652, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4663, 1, 0, 0, 0, 4662, 4648, 1, 0, 0, 0, 4662, 4650, 1, 0, 0, 0, 4663, 4683, 1, 0, 0, 0, 4664, 4665, 5, 400, 0, 0, 4665, 4666, 5, 388, 0, 0, 4666, 4667, 5, 144, 0, 0, 4667, 4668, 5, 399, 0, 0, 4668, 4669, 3, 764, 382, 0, 4669, 4670, 5, 400, 0, 0, 4670, 4684, 1, 0, 0, 0, 4671, 4673, 5, 400, 0, 0, 4672, 4674, 3, 778, 389, 0, 4673, 4672, 1, 0, 0, 0, 4673, 4674, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 4676, 5, 234, 0, 0, 4676, 4684, 3, 712, 356, 0, 4677, 4678, 3, 778, 389, 0, 4678, 4679, 5, 400, 0, 0, 4679, 4680, 5, 234, 0, 0, 4680, 4681, 3, 712, 356, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4684, 5, 400, 0, 0, 4683, 4664, 1, 0, 0, 0, 4683, 4671, 1, 0, 0, 0, 4683, 4677, 1, 0, 0, 0, 4683, 4682, 1, 0, 0, 0, 4684, 4686, 1, 0, 0, 0, 4685, 4645, 1, 0, 0, 0, 4685, 4646, 1, 0, 0, 0, 4686, 777, 1, 0, 0, 0, 4687, 4688, 5, 281, 0, 0, 4688, 4692, 5, 220, 0, 0, 4689, 4690, 5, 152, 0, 0, 4690, 4692, 5, 220, 0, 0, 4691, 4687, 1, 0, 0, 0, 4691, 4689, 1, 0, 0, 0, 4692, 779, 1, 0, 0, 0, 4693, 4694, 3, 928, 464, 0, 4694, 781, 1, 0, 0, 0, 4695, 4698, 3, 786, 393, 0, 4696, 4698, 5, 426, 0, 0, 4697, 4695, 1, 0, 0, 0, 4697, 4696, 1, 0, 0, 0, 4698, 783, 1, 0, 0, 0, 4699, 4702, 3, 786, 393, 0, 4700, 4702, 3, 788, 394, 0, 4701, 4699, 1, 0, 0, 0, 4701, 4700, 1, 0, 0, 0, 4702, 785, 1, 0, 0, 0, 4703, 4704, 3, 928, 464, 0, 4704, 787, 1, 0, 0, 0, 4705, 4708, 3, 934, 467, 0, 4706, 4708, 3, 924, 462, 0, 4707, 4705, 1, 0, 0, 0, 4707, 4706, 1, 0, 0, 0, 4708, 789, 1, 0, 0, 0, 4709, 4710, 5, 36, 0, 0, 4710, 4711, 5, 399, 0, 0, 4711, 4712, 3, 828, 414, 0, 4712, 4713, 5, 17, 0, 0, 4713, 4716, 3, 382, 191, 0, 4714, 4715, 5, 137, 0, 0, 4715, 4717, 5, 426, 0, 0, 4716, 4714, 1, 0, 0, 0, 4716, 4717, 1, 0, 0, 0, 4717, 4718, 1, 0, 0, 0, 4718, 4719, 5, 400, 0, 0, 4719, 791, 1, 0, 0, 0, 4720, 4721, 5, 35, 0, 0, 4721, 4727, 3, 828, 414, 0, 4722, 4723, 5, 383, 0, 0, 4723, 4724, 3, 828, 414, 0, 4724, 4725, 5, 335, 0, 0, 4725, 4726, 3, 828, 414, 0, 4726, 4728, 1, 0, 0, 0, 4727, 4722, 1, 0, 0, 0, 4728, 4729, 1, 0, 0, 0, 4729, 4727, 1, 0, 0, 0, 4729, 4730, 1, 0, 0, 0, 4730, 4733, 1, 0, 0, 0, 4731, 4732, 5, 105, 0, 0, 4732, 4734, 3, 828, 414, 0, 4733, 4731, 1, 0, 0, 0, 4733, 4734, 1, 0, 0, 0, 4734, 4735, 1, 0, 0, 0, 4735, 4736, 5, 108, 0, 0, 4736, 793, 1, 0, 0, 0, 4737, 4743, 5, 35, 0, 0, 4738, 4739, 5, 383, 0, 0, 4739, 4740, 3, 828, 414, 0, 4740, 4741, 5, 335, 0, 0, 4741, 4742, 3, 828, 414, 0, 4742, 4744, 1, 0, 0, 0, 4743, 4738, 1, 0, 0, 0, 4744, 4745, 1, 0, 0, 0, 4745, 4743, 1, 0, 0, 0, 4745, 4746, 1, 0, 0, 0, 4746, 4749, 1, 0, 0, 0, 4747, 4748, 5, 105, 0, 0, 4748, 4750, 3, 828, 414, 0, 4749, 4747, 1, 0, 0, 0, 4749, 4750, 1, 0, 0, 0, 4750, 4751, 1, 0, 0, 0, 4751, 4752, 5, 108, 0, 0, 4752, 795, 1, 0, 0, 0, 4753, 4754, 5, 132, 0, 0, 4754, 4755, 5, 399, 0, 0, 4755, 4758, 3, 828, 414, 0, 4756, 4757, 5, 341, 0, 0, 4757, 4759, 3, 798, 399, 0, 4758, 4756, 1, 0, 0, 0, 4758, 4759, 1, 0, 0, 0, 4759, 4760, 1, 0, 0, 0, 4760, 4761, 5, 400, 0, 0, 4761, 797, 1, 0, 0, 0, 4762, 4771, 3, 976, 488, 0, 4763, 4771, 5, 257, 0, 0, 4764, 4771, 3, 978, 489, 0, 4765, 4771, 3, 980, 490, 0, 4766, 4771, 3, 982, 491, 0, 4767, 4771, 3, 984, 492, 0, 4768, 4771, 3, 986, 493, 0, 4769, 4771, 3, 988, 494, 0, 4770, 4762, 1, 0, 0, 0, 4770, 4763, 1, 0, 0, 0, 4770, 4764, 1, 0, 0, 0, 4770, 4765, 1, 0, 0, 0, 4770, 4766, 1, 0, 0, 0, 4770, 4767, 1, 0, 0, 0, 4770, 4768, 1, 0, 0, 0, 4770, 4769, 1, 0, 0, 0, 4771, 799, 1, 0, 0, 0, 4772, 4773, 5, 124, 0, 0, 4773, 4774, 5, 399, 0, 0, 4774, 4775, 3, 802, 401, 0, 4775, 4776, 5, 139, 0, 0, 4776, 4777, 3, 828, 414, 0, 4777, 4778, 5, 400, 0, 0, 4778, 801, 1, 0, 0, 0, 4779, 4788, 3, 976, 488, 0, 4780, 4788, 5, 257, 0, 0, 4781, 4788, 3, 978, 489, 0, 4782, 4788, 3, 980, 490, 0, 4783, 4788, 3, 982, 491, 0, 4784, 4788, 3, 984, 492, 0, 4785, 4788, 3, 986, 493, 0, 4786, 4788, 3, 988, 494, 0, 4787, 4779, 1, 0, 0, 0, 4787, 4780, 1, 0, 0, 0, 4787, 4781, 1, 0, 0, 0, 4787, 4782, 1, 0, 0, 0, 4787, 4783, 1, 0, 0, 0, 4787, 4784, 1, 0, 0, 0, 4787, 4785, 1, 0, 0, 0, 4787, 4786, 1, 0, 0, 0, 4788, 803, 1, 0, 0, 0, 4789, 4803, 3, 822, 411, 0, 4790, 4803, 5, 431, 0, 0, 4791, 4803, 3, 814, 407, 0, 4792, 4803, 3, 816, 408, 0, 4793, 4803, 3, 818, 409, 0, 4794, 4803, 5, 426, 0, 0, 4795, 4803, 3, 810, 405, 0, 4796, 4803, 5, 428, 0, 0, 4797, 4803, 5, 429, 0, 0, 4798, 4803, 3, 812, 406, 0, 4799, 4803, 3, 906, 453, 0, 4800, 4803, 5, 219, 0, 0, 4801, 4803, 3, 806, 403, 0, 4802, 4789, 1, 0, 0, 0, 4802, 4790, 1, 0, 0, 0, 4802, 4791, 1, 0, 0, 0, 4802, 4792, 1, 0, 0, 0, 4802, 4793, 1, 0, 0, 0, 4802, 4794, 1, 0, 0, 0, 4802, 4795, 1, 0, 0, 0, 4802, 4796, 1, 0, 0, 0, 4802, 4797, 1, 0, 0, 0, 4802, 4798, 1, 0, 0, 0, 4802, 4799, 1, 0, 0, 0, 4802, 4800, 1, 0, 0, 0, 4802, 4801, 1, 0, 0, 0, 4803, 805, 1, 0, 0, 0, 4804, 4805, 3, 808, 404, 0, 4805, 807, 1, 0, 0, 0, 4806, 4807, 5, 424, 0, 0, 4807, 809, 1, 0, 0, 0, 4808, 4810, 5, 426, 0, 0, 4809, 4811, 5, 426, 0, 0, 4810, 4809, 1, 0, 0, 0, 4811, 4812, 1, 0, 0, 0, 4812, 4810, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 811, 1, 0, 0, 0, 4814, 4815, 5, 433, 0, 0, 4815, 4816, 5, 427, 0, 0, 4816, 813, 1, 0, 0, 0, 4817, 4818, 5, 71, 0, 0, 4818, 4821, 5, 426, 0, 0, 4819, 4821, 5, 63, 0, 0, 4820, 4817, 1, 0, 0, 0, 4820, 4819, 1, 0, 0, 0, 4821, 815, 1, 0, 0, 0, 4822, 4823, 5, 337, 0, 0, 4823, 4826, 5, 426, 0, 0, 4824, 4826, 5, 64, 0, 0, 4825, 4822, 1, 0, 0, 0, 4825, 4824, 1, 0, 0, 0, 4826, 817, 1, 0, 0, 0, 4827, 4828, 5, 338, 0, 0, 4828, 4829, 5, 426, 0, 0, 4829, 819, 1, 0, 0, 0, 4830, 4831, 7, 24, 0, 0, 4831, 821, 1, 0, 0, 0, 4832, 4833, 3, 820, 410, 0, 4833, 4834, 3, 826, 413, 0, 4834, 823, 1, 0, 0, 0, 4835, 4836, 5, 399, 0, 0, 4836, 4837, 3, 820, 410, 0, 4837, 4838, 5, 400, 0, 0, 4838, 4839, 3, 826, 413, 0, 4839, 4851, 1, 0, 0, 0, 4840, 4846, 5, 165, 0, 0, 4841, 4847, 3, 820, 410, 0, 4842, 4843, 5, 399, 0, 0, 4843, 4844, 3, 828, 414, 0, 4844, 4845, 5, 400, 0, 0, 4845, 4847, 1, 0, 0, 0, 4846, 4841, 1, 0, 0, 0, 4846, 4842, 1, 0, 0, 0, 4847, 4848, 1, 0, 0, 0, 4848, 4849, 3, 826, 413, 0, 4849, 4851, 1, 0, 0, 0, 4850, 4835, 1, 0, 0, 0, 4850, 4840, 1, 0, 0, 0, 4851, 825, 1, 0, 0, 0, 4852, 4853, 3, 976, 488, 0, 4853, 4854, 5, 341, 0, 0, 4854, 4855, 3, 978, 489, 0, 4855, 4867, 1, 0, 0, 0, 4856, 4857, 3, 982, 491, 0, 4857, 4858, 5, 341, 0, 0, 4858, 4859, 3, 988, 494, 0, 4859, 4867, 1, 0, 0, 0, 4860, 4867, 3, 976, 488, 0, 4861, 4867, 3, 978, 489, 0, 4862, 4867, 3, 982, 491, 0, 4863, 4867, 3, 984, 492, 0, 4864, 4867, 3, 986, 493, 0, 4865, 4867, 3, 988, 494, 0, 4866, 4852, 1, 0, 0, 0, 4866, 4856, 1, 0, 0, 0, 4866, 4860, 1, 0, 0, 0, 4866, 4861, 1, 0, 0, 0, 4866, 4862, 1, 0, 0, 0, 4866, 4863, 1, 0, 0, 0, 4866, 4864, 1, 0, 0, 0, 4866, 4865, 1, 0, 0, 0, 4867, 827, 1, 0, 0, 0, 4868, 4869, 3, 904, 452, 0, 4869, 829, 1, 0, 0, 0, 4870, 4882, 3, 804, 402, 0, 4871, 4882, 3, 824, 412, 0, 4872, 4882, 3, 790, 395, 0, 4873, 4882, 3, 800, 400, 0, 4874, 4882, 3, 796, 398, 0, 4875, 4882, 3, 792, 396, 0, 4876, 4882, 3, 794, 397, 0, 4877, 4882, 3, 866, 433, 0, 4878, 4882, 3, 776, 388, 0, 4879, 4882, 3, 746, 373, 0, 4880, 4882, 3, 926, 463, 0, 4881, 4870, 1, 0, 0, 0, 4881, 4871, 1, 0, 0, 0, 4881, 4872, 1, 0, 0, 0, 4881, 4873, 1, 0, 0, 0, 4881, 4874, 1, 0, 0, 0, 4881, 4875, 1, 0, 0, 0, 4881, 4876, 1, 0, 0, 0, 4881, 4877, 1, 0, 0, 0, 4881, 4878, 1, 0, 0, 0, 4881, 4879, 1, 0, 0, 0, 4881, 4880, 1, 0, 0, 0, 4882, 831, 1, 0, 0, 0, 4883, 4892, 3, 830, 415, 0, 4884, 4885, 5, 401, 0, 0, 4885, 4886, 3, 828, 414, 0, 4886, 4887, 5, 402, 0, 0, 4887, 4891, 1, 0, 0, 0, 4888, 4889, 5, 395, 0, 0, 4889, 4891, 3, 926, 463, 0, 4890, 4884, 1, 0, 0, 0, 4890, 4888, 1, 0, 0, 0, 4891, 4894, 1, 0, 0, 0, 4892, 4890, 1, 0, 0, 0, 4892, 4893, 1, 0, 0, 0, 4893, 833, 1, 0, 0, 0, 4894, 4892, 1, 0, 0, 0, 4895, 4896, 7, 31, 0, 0, 4896, 835, 1, 0, 0, 0, 4897, 4899, 3, 834, 417, 0, 4898, 4897, 1, 0, 0, 0, 4899, 4902, 1, 0, 0, 0, 4900, 4898, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 1, 0, 0, 0, 4902, 4900, 1, 0, 0, 0, 4903, 4904, 3, 832, 416, 0, 4904, 837, 1, 0, 0, 0, 4905, 4906, 5, 423, 0, 0, 4906, 839, 1, 0, 0, 0, 4907, 4913, 3, 836, 418, 0, 4908, 4909, 3, 838, 419, 0, 4909, 4910, 3, 836, 418, 0, 4910, 4912, 1, 0, 0, 0, 4911, 4908, 1, 0, 0, 0, 4912, 4915, 1, 0, 0, 0, 4913, 4911, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 841, 1, 0, 0, 0, 4915, 4913, 1, 0, 0, 0, 4916, 4917, 7, 32, 0, 0, 4917, 843, 1, 0, 0, 0, 4918, 4924, 3, 840, 420, 0, 4919, 4920, 3, 842, 421, 0, 4920, 4921, 3, 840, 420, 0, 4921, 4923, 1, 0, 0, 0, 4922, 4919, 1, 0, 0, 0, 4923, 4926, 1, 0, 0, 0, 4924, 4922, 1, 0, 0, 0, 4924, 4925, 1, 0, 0, 0, 4925, 845, 1, 0, 0, 0, 4926, 4924, 1, 0, 0, 0, 4927, 4928, 7, 33, 0, 0, 4928, 847, 1, 0, 0, 0, 4929, 4935, 3, 844, 422, 0, 4930, 4931, 3, 846, 423, 0, 4931, 4932, 3, 844, 422, 0, 4932, 4934, 1, 0, 0, 0, 4933, 4930, 1, 0, 0, 0, 4934, 4937, 1, 0, 0, 0, 4935, 4933, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 849, 1, 0, 0, 0, 4937, 4935, 1, 0, 0, 0, 4938, 4939, 5, 422, 0, 0, 4939, 851, 1, 0, 0, 0, 4940, 4946, 3, 848, 424, 0, 4941, 4942, 3, 850, 425, 0, 4942, 4943, 3, 848, 424, 0, 4943, 4945, 1, 0, 0, 0, 4944, 4941, 1, 0, 0, 0, 4945, 4948, 1, 0, 0, 0, 4946, 4944, 1, 0, 0, 0, 4946, 4947, 1, 0, 0, 0, 4947, 853, 1, 0, 0, 0, 4948, 4946, 1, 0, 0, 0, 4949, 4950, 5, 419, 0, 0, 4950, 855, 1, 0, 0, 0, 4951, 4957, 3, 852, 426, 0, 4952, 4953, 3, 854, 427, 0, 4953, 4954, 3, 852, 426, 0, 4954, 4956, 1, 0, 0, 0, 4955, 4952, 1, 0, 0, 0, 4956, 4959, 1, 0, 0, 0, 4957, 4955, 1, 0, 0, 0, 4957, 4958, 1, 0, 0, 0, 4958, 857, 1, 0, 0, 0, 4959, 4957, 1, 0, 0, 0, 4960, 4961, 5, 421, 0, 0, 4961, 859, 1, 0, 0, 0, 4962, 4968, 3, 856, 428, 0, 4963, 4964, 3, 858, 429, 0, 4964, 4965, 3, 856, 428, 0, 4965, 4967, 1, 0, 0, 0, 4966, 4963, 1, 0, 0, 0, 4967, 4970, 1, 0, 0, 0, 4968, 4966, 1, 0, 0, 0, 4968, 4969, 1, 0, 0, 0, 4969, 861, 1, 0, 0, 0, 4970, 4968, 1, 0, 0, 0, 4971, 4972, 7, 34, 0, 0, 4972, 863, 1, 0, 0, 0, 4973, 4979, 3, 862, 431, 0, 4974, 4979, 5, 408, 0, 0, 4975, 4979, 5, 409, 0, 0, 4976, 4979, 5, 410, 0, 0, 4977, 4979, 5, 411, 0, 0, 4978, 4973, 1, 0, 0, 0, 4978, 4974, 1, 0, 0, 0, 4978, 4975, 1, 0, 0, 0, 4978, 4976, 1, 0, 0, 0, 4978, 4977, 1, 0, 0, 0, 4979, 865, 1, 0, 0, 0, 4980, 4981, 5, 399, 0, 0, 4981, 4982, 3, 410, 205, 0, 4982, 4983, 5, 400, 0, 0, 4983, 867, 1, 0, 0, 0, 4984, 4988, 3, 870, 435, 0, 4985, 4986, 5, 117, 0, 0, 4986, 4988, 3, 866, 433, 0, 4987, 4984, 1, 0, 0, 0, 4987, 4985, 1, 0, 0, 0, 4988, 869, 1, 0, 0, 0, 4989, 4991, 3, 860, 430, 0, 4990, 4992, 3, 872, 436, 0, 4991, 4990, 1, 0, 0, 0, 4991, 4992, 1, 0, 0, 0, 4992, 871, 1, 0, 0, 0, 4993, 4994, 3, 864, 432, 0, 4994, 4995, 3, 860, 430, 0, 4995, 5000, 1, 0, 0, 0, 4996, 5000, 3, 874, 437, 0, 4997, 4998, 5, 216, 0, 0, 4998, 5000, 3, 882, 441, 0, 4999, 4993, 1, 0, 0, 0, 4999, 4996, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 873, 1, 0, 0, 0, 5001, 5002, 5, 154, 0, 0, 5002, 5013, 3, 880, 440, 0, 5003, 5004, 5, 25, 0, 0, 5004, 5005, 3, 860, 430, 0, 5005, 5006, 5, 11, 0, 0, 5006, 5007, 3, 860, 430, 0, 5007, 5013, 1, 0, 0, 0, 5008, 5009, 5, 184, 0, 0, 5009, 5010, 7, 35, 0, 0, 5010, 5013, 3, 746, 373, 0, 5011, 5013, 3, 876, 438, 0, 5012, 5001, 1, 0, 0, 0, 5012, 5003, 1, 0, 0, 0, 5012, 5008, 1, 0, 0, 0, 5012, 5011, 1, 0, 0, 0, 5013, 875, 1, 0, 0, 0, 5014, 5015, 3, 922, 461, 0, 5015, 5016, 3, 878, 439, 0, 5016, 5017, 3, 866, 433, 0, 5017, 877, 1, 0, 0, 0, 5018, 5019, 7, 36, 0, 0, 5019, 879, 1, 0, 0, 0, 5020, 5023, 3, 866, 433, 0, 5021, 5023, 3, 746, 373, 0, 5022, 5020, 1, 0, 0, 0, 5022, 5021, 1, 0, 0, 0, 5023, 881, 1, 0, 0, 0, 5024, 5025, 3, 862, 431, 0, 5025, 5026, 3, 860, 430, 0, 5026, 5029, 1, 0, 0, 0, 5027, 5029, 3, 874, 437, 0, 5028, 5024, 1, 0, 0, 0, 5028, 5027, 1, 0, 0, 0, 5029, 883, 1, 0, 0, 0, 5030, 5031, 5, 167, 0, 0, 5031, 5032, 5, 96, 0, 0, 5032, 5033, 5, 139, 0, 0, 5033, 885, 1, 0, 0, 0, 5034, 5042, 5, 405, 0, 0, 5035, 5042, 5, 406, 0, 0, 5036, 5042, 5, 407, 0, 0, 5037, 5038, 5, 167, 0, 0, 5038, 5039, 5, 216, 0, 0, 5039, 5040, 5, 96, 0, 0, 5040, 5042, 5, 139, 0, 0, 5041, 5034, 1, 0, 0, 0, 5041, 5035, 1, 0, 0, 0, 5041, 5036, 1, 0, 0, 0, 5041, 5037, 1, 0, 0, 0, 5042, 887, 1, 0, 0, 0, 5043, 5052, 3, 868, 434, 0, 5044, 5045, 3, 886, 443, 0, 5045, 5046, 3, 868, 434, 0, 5046, 5051, 1, 0, 0, 0, 5047, 5048, 3, 884, 442, 0, 5048, 5049, 3, 868, 434, 0, 5049, 5051, 1, 0, 0, 0, 5050, 5044, 1, 0, 0, 0, 5050, 5047, 1, 0, 0, 0, 5051, 5054, 1, 0, 0, 0, 5052, 5050, 1, 0, 0, 0, 5052, 5053, 1, 0, 0, 0, 5053, 889, 1, 0, 0, 0, 5054, 5052, 1, 0, 0, 0, 5055, 5068, 5, 219, 0, 0, 5056, 5068, 5, 350, 0, 0, 5057, 5068, 5, 125, 0, 0, 5058, 5068, 5, 360, 0, 0, 5059, 5060, 5, 216, 0, 0, 5060, 5068, 5, 219, 0, 0, 5061, 5062, 5, 216, 0, 0, 5062, 5068, 5, 350, 0, 0, 5063, 5064, 5, 216, 0, 0, 5064, 5068, 5, 125, 0, 0, 5065, 5066, 5, 216, 0, 0, 5066, 5068, 5, 360, 0, 0, 5067, 5055, 1, 0, 0, 0, 5067, 5056, 1, 0, 0, 0, 5067, 5057, 1, 0, 0, 0, 5067, 5058, 1, 0, 0, 0, 5067, 5059, 1, 0, 0, 0, 5067, 5061, 1, 0, 0, 0, 5067, 5063, 1, 0, 0, 0, 5067, 5065, 1, 0, 0, 0, 5068, 891, 1, 0, 0, 0, 5069, 5072, 3, 888, 444, 0, 5070, 5071, 5, 167, 0, 0, 5071, 5073, 3, 890, 445, 0, 5072, 5070, 1, 0, 0, 0, 5072, 5073, 1, 0, 0, 0, 5073, 893, 1, 0, 0, 0, 5074, 5075, 5, 216, 0, 0, 5075, 895, 1, 0, 0, 0, 5076, 5078, 3, 894, 447, 0, 5077, 5076, 1, 0, 0, 0, 5078, 5081, 1, 0, 0, 0, 5079, 5077, 1, 0, 0, 0, 5079, 5080, 1, 0, 0, 0, 5080, 5082, 1, 0, 0, 0, 5081, 5079, 1, 0, 0, 0, 5082, 5083, 3, 892, 446, 0, 5083, 897, 1, 0, 0, 0, 5084, 5085, 5, 11, 0, 0, 5085, 899, 1, 0, 0, 0, 5086, 5092, 3, 896, 448, 0, 5087, 5088, 3, 898, 449, 0, 5088, 5089, 3, 896, 448, 0, 5089, 5091, 1, 0, 0, 0, 5090, 5087, 1, 0, 0, 0, 5091, 5094, 1, 0, 0, 0, 5092, 5090, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 901, 1, 0, 0, 0, 5094, 5092, 1, 0, 0, 0, 5095, 5096, 5, 228, 0, 0, 5096, 903, 1, 0, 0, 0, 5097, 5103, 3, 900, 450, 0, 5098, 5099, 3, 902, 451, 0, 5099, 5100, 3, 900, 450, 0, 5100, 5102, 1, 0, 0, 0, 5101, 5098, 1, 0, 0, 0, 5102, 5105, 1, 0, 0, 0, 5103, 5101, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 905, 1, 0, 0, 0, 5105, 5103, 1, 0, 0, 0, 5106, 5107, 7, 37, 0, 0, 5107, 907, 1, 0, 0, 0, 5108, 5109, 7, 37, 0, 0, 5109, 909, 1, 0, 0, 0, 5110, 5112, 3, 660, 330, 0, 5111, 5113, 3, 912, 456, 0, 5112, 5111, 1, 0, 0, 0, 5112, 5113, 1, 0, 0, 0, 5113, 911, 1, 0, 0, 0, 5114, 5115, 5, 237, 0, 0, 5115, 5116, 5, 399, 0, 0, 5116, 5121, 3, 914, 457, 0, 5117, 5118, 5, 397, 0, 0, 5118, 5120, 3, 914, 457, 0, 5119, 5117, 1, 0, 0, 0, 5120, 5123, 1, 0, 0, 0, 5121, 5119, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5124, 1, 0, 0, 0, 5123, 5121, 1, 0, 0, 0, 5124, 5125, 5, 400, 0, 0, 5125, 913, 1, 0, 0, 0, 5126, 5129, 3, 926, 463, 0, 5127, 5128, 5, 405, 0, 0, 5128, 5130, 3, 804, 402, 0, 5129, 5127, 1, 0, 0, 0, 5129, 5130, 1, 0, 0, 0, 5130, 915, 1, 0, 0, 0, 5131, 5132, 5, 399, 0, 0, 5132, 5137, 3, 918, 459, 0, 5133, 5134, 5, 397, 0, 0, 5134, 5136, 3, 918, 459, 0, 5135, 5133, 1, 0, 0, 0, 5136, 5139, 1, 0, 0, 0, 5137, 5135, 1, 0, 0, 0, 5137, 5138, 1, 0, 0, 0, 5138, 5140, 1, 0, 0, 0, 5139, 5137, 1, 0, 0, 0, 5140, 5141, 5, 400, 0, 0, 5141, 917, 1, 0, 0, 0, 5142, 5143, 3, 926, 463, 0, 5143, 5144, 3, 920, 460, 0, 5144, 5145, 3, 804, 402, 0, 5145, 919, 1, 0, 0, 0, 5146, 5149, 5, 184, 0, 0, 5147, 5149, 3, 922, 461, 0, 5148, 5146, 1, 0, 0, 0, 5148, 5147, 1, 0, 0, 0, 5149, 921, 1, 0, 0, 0, 5150, 5151, 7, 38, 0, 0, 5151, 923, 1, 0, 0, 0, 5152, 5153, 7, 39, 0, 0, 5153, 925, 1, 0, 0, 0, 5154, 5157, 5, 432, 0, 0, 5155, 5157, 3, 932, 466, 0, 5156, 5154, 1, 0, 0, 0, 5156, 5155, 1, 0, 0, 0, 5157, 927, 1, 0, 0, 0, 5158, 5161, 3, 926, 463, 0, 5159, 5160, 5, 395, 0, 0, 5160, 5162, 3, 926, 463, 0, 5161, 5159, 1, 0, 0, 0, 5161, 5162, 1, 0, 0, 0, 5162, 929, 1, 0, 0, 0, 5163, 5164, 3, 926, 463, 0, 5164, 931, 1, 0, 0, 0, 5165, 5166, 7, 40, 0, 0, 5166, 933, 1, 0, 0, 0, 5167, 5168, 7, 41, 0, 0, 5168, 935, 1, 0, 0, 0, 5169, 5170, 3, 938, 469, 0, 5170, 5171, 5, 0, 0, 1, 5171, 937, 1, 0, 0, 0, 5172, 5177, 3, 940, 470, 0, 5173, 5174, 5, 397, 0, 0, 5174, 5176, 3, 940, 470, 0, 5175, 5173, 1, 0, 0, 0, 5176, 5179, 1, 0, 0, 0, 5177, 5175, 1, 0, 0, 0, 5177, 5178, 1, 0, 0, 0, 5178, 939, 1, 0, 0, 0, 5179, 5177, 1, 0, 0, 0, 5180, 5185, 3, 942, 471, 0, 5181, 5182, 5, 399, 0, 0, 5182, 5183, 3, 944, 472, 0, 5183, 5184, 5, 400, 0, 0, 5184, 5186, 1, 0, 0, 0, 5185, 5181, 1, 0, 0, 0, 5185, 5186, 1, 0, 0, 0, 5186, 941, 1, 0, 0, 0, 5187, 5188, 7, 42, 0, 0, 5188, 943, 1, 0, 0, 0, 5189, 5194, 3, 946, 473, 0, 5190, 5191, 5, 397, 0, 0, 5191, 5193, 3, 946, 473, 0, 5192, 5190, 1, 0, 0, 0, 5193, 5196, 1, 0, 0, 0, 5194, 5192, 1, 0, 0, 0, 5194, 5195, 1, 0, 0, 0, 5195, 945, 1, 0, 0, 0, 5196, 5194, 1, 0, 0, 0, 5197, 5198, 7, 43, 0, 0, 5198, 947, 1, 0, 0, 0, 5199, 5200, 5, 249, 0, 0, 5200, 5201, 3, 926, 463, 0, 5201, 5202, 5, 139, 0, 0, 5202, 5203, 3, 394, 197, 0, 5203, 949, 1, 0, 0, 0, 5204, 5205, 5, 115, 0, 0, 5205, 5206, 3, 926, 463, 0, 5206, 5207, 5, 370, 0, 0, 5207, 5208, 3, 952, 476, 0, 5208, 951, 1, 0, 0, 0, 5209, 5214, 3, 804, 402, 0, 5210, 5211, 5, 397, 0, 0, 5211, 5213, 3, 804, 402, 0, 5212, 5210, 1, 0, 0, 0, 5213, 5216, 1, 0, 0, 0, 5214, 5212, 1, 0, 0, 0, 5214, 5215, 1, 0, 0, 0, 5215, 953, 1, 0, 0, 0, 5216, 5214, 1, 0, 0, 0, 5217, 5232, 3, 964, 482, 0, 5218, 5232, 3, 992, 496, 0, 5219, 5232, 3, 998, 499, 0, 5220, 5232, 3, 994, 497, 0, 5221, 5232, 3, 996, 498, 0, 5222, 5232, 3, 1020, 510, 0, 5223, 5232, 3, 1022, 511, 0, 5224, 5232, 3, 1024, 512, 0, 5225, 5232, 3, 1030, 515, 0, 5226, 5232, 3, 1032, 516, 0, 5227, 5232, 3, 1034, 517, 0, 5228, 5232, 3, 1036, 518, 0, 5229, 5232, 3, 1038, 519, 0, 5230, 5232, 3, 1040, 520, 0, 5231, 5217, 1, 0, 0, 0, 5231, 5218, 1, 0, 0, 0, 5231, 5219, 1, 0, 0, 0, 5231, 5220, 1, 0, 0, 0, 5231, 5221, 1, 0, 0, 0, 5231, 5222, 1, 0, 0, 0, 5231, 5223, 1, 0, 0, 0, 5231, 5224, 1, 0, 0, 0, 5231, 5225, 1, 0, 0, 0, 5231, 5226, 1, 0, 0, 0, 5231, 5227, 1, 0, 0, 0, 5231, 5228, 1, 0, 0, 0, 5231, 5229, 1, 0, 0, 0, 5231, 5230, 1, 0, 0, 0, 5232, 955, 1, 0, 0, 0, 5233, 5234, 5, 259, 0, 0, 5234, 5235, 5, 405, 0, 0, 5235, 5241, 5, 431, 0, 0, 5236, 5237, 5, 83, 0, 0, 5237, 5238, 5, 246, 0, 0, 5238, 5239, 5, 405, 0, 0, 5239, 5241, 3, 1000, 500, 0, 5240, 5233, 1, 0, 0, 0, 5240, 5236, 1, 0, 0, 0, 5241, 957, 1, 0, 0, 0, 5242, 5247, 3, 956, 478, 0, 5243, 5244, 5, 397, 0, 0, 5244, 5246, 3, 956, 478, 0, 5245, 5243, 1, 0, 0, 0, 5246, 5249, 1, 0, 0, 0, 5247, 5245, 1, 0, 0, 0, 5247, 5248, 1, 0, 0, 0, 5248, 959, 1, 0, 0, 0, 5249, 5247, 1, 0, 0, 0, 5250, 5254, 5, 259, 0, 0, 5251, 5252, 5, 83, 0, 0, 5252, 5254, 5, 246, 0, 0, 5253, 5250, 1, 0, 0, 0, 5253, 5251, 1, 0, 0, 0, 5254, 961, 1, 0, 0, 0, 5255, 5260, 3, 960, 480, 0, 5256, 5257, 5, 397, 0, 0, 5257, 5259, 3, 960, 480, 0, 5258, 5256, 1, 0, 0, 0, 5259, 5262, 1, 0, 0, 0, 5260, 5258, 1, 0, 0, 0, 5260, 5261, 1, 0, 0, 0, 5261, 963, 1, 0, 0, 0, 5262, 5260, 1, 0, 0, 0, 5263, 5264, 5, 58, 0, 0, 5264, 5265, 5, 280, 0, 0, 5265, 5267, 5, 243, 0, 0, 5266, 5268, 3, 44, 22, 0, 5267, 5266, 1, 0, 0, 0, 5267, 5268, 1, 0, 0, 0, 5268, 5278, 1, 0, 0, 0, 5269, 5270, 3, 926, 463, 0, 5270, 5271, 5, 184, 0, 0, 5271, 5272, 3, 926, 463, 0, 5272, 5279, 1, 0, 0, 0, 5273, 5276, 3, 926, 463, 0, 5274, 5275, 5, 387, 0, 0, 5275, 5277, 3, 958, 479, 0, 5276, 5274, 1, 0, 0, 0, 5276, 5277, 1, 0, 0, 0, 5277, 5279, 1, 0, 0, 0, 5278, 5269, 1, 0, 0, 0, 5278, 5273, 1, 0, 0, 0, 5279, 965, 1, 0, 0, 0, 5280, 5281, 5, 387, 0, 0, 5281, 5282, 5, 278, 0, 0, 5282, 967, 1, 0, 0, 0, 5283, 5285, 5, 2, 0, 0, 5284, 5286, 3, 966, 483, 0, 5285, 5284, 1, 0, 0, 0, 5285, 5286, 1, 0, 0, 0, 5286, 969, 1, 0, 0, 0, 5287, 5288, 7, 44, 0, 0, 5288, 971, 1, 0, 0, 0, 5289, 5290, 7, 45, 0, 0, 5290, 973, 1, 0, 0, 0, 5291, 5292, 5, 362, 0, 0, 5292, 975, 1, 0, 0, 0, 5293, 5294, 7, 46, 0, 0, 5294, 977, 1, 0, 0, 0, 5295, 5296, 7, 47, 0, 0, 5296, 979, 1, 0, 0, 0, 5297, 5298, 7, 48, 0, 0, 5298, 981, 1, 0, 0, 0, 5299, 5300, 7, 49, 0, 0, 5300, 983, 1, 0, 0, 0, 5301, 5302, 7, 50, 0, 0, 5302, 985, 1, 0, 0, 0, 5303, 5304, 7, 51, 0, 0, 5304, 987, 1, 0, 0, 0, 5305, 5306, 7, 52, 0, 0, 5306, 989, 1, 0, 0, 0, 5307, 5308, 7, 53, 0, 0, 5308, 991, 1, 0, 0, 0, 5309, 5310, 5, 9, 0, 0, 5310, 5311, 5, 280, 0, 0, 5311, 5312, 5, 243, 0, 0, 5312, 5330, 3, 926, 463, 0, 5313, 5331, 5, 373, 0, 0, 5314, 5331, 3, 972, 486, 0, 5315, 5316, 5, 304, 0, 0, 5316, 5331, 3, 958, 479, 0, 5317, 5318, 5, 363, 0, 0, 5318, 5331, 3, 962, 481, 0, 5319, 5320, 5, 274, 0, 0, 5320, 5321, 5, 341, 0, 0, 5321, 5331, 3, 926, 463, 0, 5322, 5324, 3, 968, 484, 0, 5323, 5325, 3, 970, 485, 0, 5324, 5323, 1, 0, 0, 0, 5324, 5325, 1, 0, 0, 0, 5325, 5331, 1, 0, 0, 0, 5326, 5328, 3, 970, 485, 0, 5327, 5329, 3, 968, 484, 0, 5328, 5327, 1, 0, 0, 0, 5328, 5329, 1, 0, 0, 0, 5329, 5331, 1, 0, 0, 0, 5330, 5313, 1, 0, 0, 0, 5330, 5314, 1, 0, 0, 0, 5330, 5315, 1, 0, 0, 0, 5330, 5317, 1, 0, 0, 0, 5330, 5319, 1, 0, 0, 0, 5330, 5322, 1, 0, 0, 0, 5330, 5326, 1, 0, 0, 0, 5331, 993, 1, 0, 0, 0, 5332, 5335, 3, 970, 485, 0, 5333, 5335, 3, 972, 486, 0, 5334, 5332, 1, 0, 0, 0, 5334, 5333, 1, 0, 0, 0, 5335, 5336, 1, 0, 0, 0, 5336, 5337, 5, 390, 0, 0, 5337, 5338, 5, 197, 0, 0, 5338, 995, 1, 0, 0, 0, 5339, 5351, 5, 278, 0, 0, 5340, 5341, 5, 3, 0, 0, 5341, 5342, 5, 280, 0, 0, 5342, 5343, 5, 243, 0, 0, 5343, 5344, 5, 387, 0, 0, 5344, 5352, 3, 926, 463, 0, 5345, 5346, 5, 280, 0, 0, 5346, 5347, 5, 243, 0, 0, 5347, 5348, 3, 926, 463, 0, 5348, 5349, 5, 387, 0, 0, 5349, 5350, 3, 926, 463, 0, 5350, 5352, 1, 0, 0, 0, 5351, 5340, 1, 0, 0, 0, 5351, 5345, 1, 0, 0, 0, 5352, 997, 1, 0, 0, 0, 5353, 5354, 5, 101, 0, 0, 5354, 5355, 5, 280, 0, 0, 5355, 5357, 5, 243, 0, 0, 5356, 5358, 3, 40, 20, 0, 5357, 5356, 1, 0, 0, 0, 5357, 5358, 1, 0, 0, 0, 5358, 5359, 1, 0, 0, 0, 5359, 5360, 3, 926, 463, 0, 5360, 999, 1, 0, 0, 0, 5361, 5366, 3, 926, 463, 0, 5362, 5363, 5, 395, 0, 0, 5363, 5365, 3, 926, 463, 0, 5364, 5362, 1, 0, 0, 0, 5365, 5368, 1, 0, 0, 0, 5366, 5364, 1, 0, 0, 0, 5366, 5367, 1, 0, 0, 0, 5367, 1001, 1, 0, 0, 0, 5368, 5366, 1, 0, 0, 0, 5369, 5370, 3, 1010, 505, 0, 5370, 1003, 1, 0, 0, 0, 5371, 5372, 3, 1002, 501, 0, 5372, 5373, 5, 0, 0, 1, 5373, 1005, 1, 0, 0, 0, 5374, 5379, 3, 1008, 504, 0, 5375, 5376, 5, 228, 0, 0, 5376, 5378, 3, 1008, 504, 0, 5377, 5375, 1, 0, 0, 0, 5378, 5381, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5379, 5380, 1, 0, 0, 0, 5380, 1007, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5382, 5387, 3, 1010, 505, 0, 5383, 5384, 5, 11, 0, 0, 5384, 5386, 3, 1010, 505, 0, 5385, 5383, 1, 0, 0, 0, 5386, 5389, 1, 0, 0, 0, 5387, 5385, 1, 0, 0, 0, 5387, 5388, 1, 0, 0, 0, 5388, 1009, 1, 0, 0, 0, 5389, 5387, 1, 0, 0, 0, 5390, 5391, 3, 926, 463, 0, 5391, 5392, 3, 1014, 507, 0, 5392, 5393, 3, 1012, 506, 0, 5393, 1011, 1, 0, 0, 0, 5394, 5395, 7, 24, 0, 0, 5395, 1013, 1, 0, 0, 0, 5396, 5397, 5, 411, 0, 0, 5397, 1015, 1, 0, 0, 0, 5398, 5403, 5, 176, 0, 0, 5399, 5400, 5, 211, 0, 0, 5400, 5401, 5, 341, 0, 0, 5401, 5403, 3, 1000, 500, 0, 5402, 5398, 1, 0, 0, 0, 5402, 5399, 1, 0, 0, 0, 5403, 1017, 1, 0, 0, 0, 5404, 5405, 3, 1016, 508, 0, 5405, 5406, 5, 0, 0, 1, 5406, 1019, 1, 0, 0, 0, 5407, 5408, 5, 58, 0, 0, 5408, 5409, 5, 348, 0, 0, 5409, 5410, 3, 926, 463, 0, 5410, 5411, 5, 395, 0, 0, 5411, 5412, 3, 926, 463, 0, 5412, 5413, 5, 383, 0, 0, 5413, 5414, 3, 1002, 501, 0, 5414, 5415, 5, 99, 0, 0, 5415, 5416, 3, 1016, 508, 0, 5416, 1021, 1, 0, 0, 0, 5417, 5418, 5, 9, 0, 0, 5418, 5419, 5, 348, 0, 0, 5419, 5420, 3, 926, 463, 0, 5420, 5421, 5, 395, 0, 0, 5421, 5438, 3, 926, 463, 0, 5422, 5423, 5, 383, 0, 0, 5423, 5424, 3, 1002, 501, 0, 5424, 5425, 5, 99, 0, 0, 5425, 5426, 3, 1016, 508, 0, 5426, 5439, 1, 0, 0, 0, 5427, 5428, 5, 4, 0, 0, 5428, 5432, 5, 341, 0, 0, 5429, 5430, 5, 101, 0, 0, 5430, 5432, 5, 139, 0, 0, 5431, 5427, 1, 0, 0, 0, 5431, 5429, 1, 0, 0, 0, 5432, 5436, 1, 0, 0, 0, 5433, 5434, 5, 246, 0, 0, 5434, 5437, 3, 1000, 500, 0, 5435, 5437, 5, 362, 0, 0, 5436, 5433, 1, 0, 0, 0, 5436, 5435, 1, 0, 0, 0, 5437, 5439, 1, 0, 0, 0, 5438, 5422, 1, 0, 0, 0, 5438, 5431, 1, 0, 0, 0, 5439, 1023, 1, 0, 0, 0, 5440, 5441, 5, 101, 0, 0, 5441, 5442, 5, 348, 0, 0, 5442, 5443, 3, 926, 463, 0, 5443, 5444, 5, 395, 0, 0, 5444, 5445, 3, 926, 463, 0, 5445, 1025, 1, 0, 0, 0, 5446, 5447, 5, 8, 0, 0, 5447, 5448, 5, 405, 0, 0, 5448, 5459, 5, 431, 0, 0, 5449, 5450, 5, 259, 0, 0, 5450, 5451, 5, 405, 0, 0, 5451, 5459, 5, 431, 0, 0, 5452, 5453, 5, 294, 0, 0, 5453, 5454, 5, 405, 0, 0, 5454, 5459, 5, 426, 0, 0, 5455, 5456, 5, 240, 0, 0, 5456, 5457, 5, 405, 0, 0, 5457, 5459, 3, 1000, 500, 0, 5458, 5446, 1, 0, 0, 0, 5458, 5449, 1, 0, 0, 0, 5458, 5452, 1, 0, 0, 0, 5458, 5455, 1, 0, 0, 0, 5459, 1027, 1, 0, 0, 0, 5460, 5465, 3, 1026, 513, 0, 5461, 5462, 5, 397, 0, 0, 5462, 5464, 3, 1026, 513, 0, 5463, 5461, 1, 0, 0, 0, 5464, 5467, 1, 0, 0, 0, 5465, 5463, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 1029, 1, 0, 0, 0, 5467, 5465, 1, 0, 0, 0, 5468, 5469, 5, 58, 0, 0, 5469, 5470, 5, 246, 0, 0, 5470, 5471, 3, 926, 463, 0, 5471, 5472, 5, 395, 0, 0, 5472, 5473, 3, 1000, 500, 0, 5473, 5474, 5, 387, 0, 0, 5474, 5475, 3, 1028, 514, 0, 5475, 1031, 1, 0, 0, 0, 5476, 5477, 5, 9, 0, 0, 5477, 5478, 5, 246, 0, 0, 5478, 5479, 3, 926, 463, 0, 5479, 5480, 5, 395, 0, 0, 5480, 5488, 3, 1000, 500, 0, 5481, 5482, 5, 304, 0, 0, 5482, 5489, 3, 1028, 514, 0, 5483, 5484, 5, 363, 0, 0, 5484, 5489, 5, 294, 0, 0, 5485, 5486, 7, 54, 0, 0, 5486, 5487, 5, 348, 0, 0, 5487, 5489, 3, 926, 463, 0, 5488, 5481, 1, 0, 0, 0, 5488, 5483, 1, 0, 0, 0, 5488, 5485, 1, 0, 0, 0, 5489, 1033, 1, 0, 0, 0, 5490, 5491, 5, 101, 0, 0, 5491, 5492, 5, 246, 0, 0, 5492, 5493, 3, 926, 463, 0, 5493, 5494, 5, 395, 0, 0, 5494, 5495, 3, 1000, 500, 0, 5495, 1035, 1, 0, 0, 0, 5496, 5497, 5, 58, 0, 0, 5497, 5498, 7, 55, 0, 0, 5498, 5499, 5, 200, 0, 0, 5499, 5500, 5, 426, 0, 0, 5500, 5501, 5, 154, 0, 0, 5501, 5505, 3, 926, 463, 0, 5502, 5503, 5, 341, 0, 0, 5503, 5506, 3, 1000, 500, 0, 5504, 5506, 3, 974, 487, 0, 5505, 5502, 1, 0, 0, 0, 5505, 5504, 1, 0, 0, 0, 5506, 5510, 1, 0, 0, 0, 5507, 5508, 5, 387, 0, 0, 5508, 5509, 5, 229, 0, 0, 5509, 5511, 5, 431, 0, 0, 5510, 5507, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 1037, 1, 0, 0, 0, 5512, 5513, 5, 9, 0, 0, 5513, 5514, 7, 55, 0, 0, 5514, 5515, 5, 200, 0, 0, 5515, 5516, 5, 426, 0, 0, 5516, 5517, 5, 154, 0, 0, 5517, 5521, 3, 926, 463, 0, 5518, 5519, 5, 341, 0, 0, 5519, 5522, 3, 1000, 500, 0, 5520, 5522, 3, 974, 487, 0, 5521, 5518, 1, 0, 0, 0, 5521, 5520, 1, 0, 0, 0, 5522, 5526, 1, 0, 0, 0, 5523, 5524, 5, 387, 0, 0, 5524, 5525, 5, 229, 0, 0, 5525, 5527, 5, 431, 0, 0, 5526, 5523, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 1039, 1, 0, 0, 0, 5528, 5529, 5, 101, 0, 0, 5529, 5530, 7, 55, 0, 0, 5530, 5531, 5, 200, 0, 0, 5531, 5532, 5, 426, 0, 0, 5532, 5533, 5, 154, 0, 0, 5533, 5534, 3, 926, 463, 0, 5534, 1041, 1, 0, 0, 0, 653, 1045, 1052, 1055, 1061, 1067, 1074, 1084, 1087, 1091, 1111, 1116, 1121, 1127, 1134, 1147, 1151, 1155, 1160, 1167, 1171, 1176, 1183, 1187, 1198, 1204, 1211, 1260, 1288, 1292, 1296, 1299, 1302, 1307, 1313, 1317, 1323, 1325, 1342, 1354, 1358, 1365, 1373, 1376, 1381, 1385, 1388, 1398, 1406, 1410, 1413, 1417, 1421, 1424, 1429, 1435, 1440, 1445, 1449, 1460, 1462, 1466, 1476, 1480, 1486, 1489, 1496, 1501, 1509, 1514, 1518, 1526, 1531, 1537, 1543, 1546, 1549, 1552, 1561, 1569, 1574, 1582, 1589, 1592, 1595, 1597, 1605, 1608, 1611, 1614, 1617, 1620, 1623, 1626, 1629, 1632, 1635, 1637, 1649, 1655, 1663, 1665, 1675, 1681, 1696, 1713, 1718, 1722, 1726, 1733, 1740, 1746, 1750, 1753, 1760, 1783, 1788, 1792, 1800, 1809, 1813, 1819, 1825, 1832, 1835, 1841, 1848, 1856, 1865, 1874, 1881, 1901, 1908, 1910, 1917, 1927, 1935, 1939, 1943, 1956, 1965, 1981, 1985, 1990, 1995, 1998, 2001, 2005, 2008, 2011, 2016, 2024, 2028, 2035, 2038, 2041, 2044, 2056, 2062, 2088, 2096, 2100, 2103, 2106, 2109, 2112, 2115, 2118, 2121, 2130, 2140, 2143, 2163, 2169, 2175, 2178, 2180, 2187, 2194, 2207, 2212, 2221, 2229, 2237, 2247, 2260, 2273, 2294, 2298, 2313, 2319, 2322, 2325, 2328, 2331, 2335, 2349, 2357, 2360, 2375, 2409, 2417, 2422, 2430, 2435, 2440, 2450, 2458, 2466, 2474, 2482, 2486, 2496, 2500, 2508, 2517, 2520, 2524, 2531, 2537, 2541, 2547, 2551, 2563, 2572, 2583, 2587, 2594, 2606, 2613, 2622, 2625, 2632, 2638, 2644, 2647, 2650, 2656, 2660, 2664, 2669, 2673, 2677, 2681, 2689, 2693, 2697, 2701, 2705, 2713, 2717, 2721, 2729, 2734, 2739, 2743, 2747, 2754, 2763, 2771, 2783, 2801, 2804, 2810, 2836, 2839, 2845, 2853, 2861, 2874, 2881, 2884, 2887, 2890, 2893, 2896, 2899, 2902, 2905, 2908, 2911, 2916, 2919, 2922, 2925, 2928, 2931, 2934, 2937, 2940, 2943, 2946, 2948, 2954, 2958, 2961, 2964, 2967, 2970, 2973, 2980, 2984, 2987, 2990, 2993, 2996, 2999, 3006, 3009, 3017, 3021, 3028, 3030, 3033, 3038, 3041, 3045, 3050, 3056, 3062, 3070, 3078, 3085, 3091, 3100, 3103, 3107, 3120, 3124, 3135, 3142, 3146, 3151, 3154, 3164, 3166, 3170, 3177, 3182, 3202, 3209, 3232, 3248, 3265, 3271, 3288, 3301, 3305, 3309, 3316, 3344, 3351, 3356, 3361, 3366, 3371, 3379, 3385, 3389, 3392, 3395, 3401, 3408, 3418, 3422, 3427, 3431, 3437, 3444, 3451, 3462, 3471, 3475, 3478, 3481, 3489, 3492, 3500, 3503, 3511, 3515, 3520, 3524, 3533, 3549, 3564, 3566, 3582, 3589, 3606, 3609, 3612, 3615, 3621, 3644, 3652, 3666, 3669, 3674, 3700, 3704, 3707, 3710, 3714, 3719, 3722, 3725, 3728, 3731, 3734, 3740, 3743, 3746, 3749, 3752, 3755, 3758, 3761, 3764, 3767, 3771, 3773, 3779, 3784, 3787, 3790, 3793, 3796, 3802, 3805, 3808, 3811, 3814, 3817, 3820, 3823, 3826, 3829, 3833, 3835, 3837, 3842, 3846, 3849, 3852, 3857, 3875, 3884, 3896, 3904, 3916, 3919, 3925, 3932, 3939, 3946, 3953, 3962, 3966, 3973, 3978, 3982, 3998, 4002, 4004, 4007, 4020, 4023, 4026, 4038, 4041, 4048, 4057, 4062, 4064, 4066, 4083, 4086, 4095, 4101, 4105, 4108, 4111, 4114, 4117, 4129, 4133, 4136, 4139, 4147, 4154, 4157, 4164, 4167, 4172, 4179, 4187, 4193, 4198, 4202, 4207, 4214, 4228, 4231, 4235, 4252, 4260, 4263, 4276, 4285, 4288, 4294, 4297, 4302, 4305, 4314, 4328, 4334, 4336, 4344, 4347, 4357, 4362, 4364, 4376, 4382, 4384, 4391, 4398, 4407, 4417, 4420, 4423, 4426, 4430, 4439, 4448, 4456, 4462, 4472, 4479, 4487, 4497, 4507, 4512, 4516, 4520, 4526, 4547, 4553, 4557, 4561, 4564, 4570, 4575, 4578, 4582, 4590, 4600, 4610, 4629, 4636, 4639, 4650, 4657, 4660, 4662, 4673, 4683, 4685, 4691, 4697, 4701, 4707, 4716, 4729, 4733, 4745, 4749, 4758, 4770, 4787, 4802, 4812, 4820, 4825, 4846, 4850, 4866, 4881, 4890, 4892, 4900, 4913, 4924, 4935, 4946, 4957, 4968, 4978, 4987, 4991, 4999, 5012, 5022, 5028, 5041, 5050, 5052, 5067, 5072, 5079, 5092, 5103, 5112, 5121, 5129, 5137, 5148, 5156, 5161, 5177, 5185, 5194, 5214, 5231, 5240, 5247, 5253, 5260, 5267, 5276, 5278, 5285, 5324, 5328, 5330, 5334, 5351, 5357, 5366, 5379, 5387, 5402, 5431, 5436, 5438, 5458, 5465, 5488, 5505, 5510, 5521, 5526] \ No newline at end of file +[4, 1, 438, 4800, 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, 1, 0, 5, 0, 694, 8, 0, 10, 0, 12, 0, 697, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 703, 8, 1, 1, 1, 3, 1, 706, 8, 1, 1, 2, 1, 2, 5, 2, 710, 8, 2, 10, 2, 12, 2, 713, 9, 2, 1, 2, 1, 2, 1, 2, 3, 2, 718, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 725, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 735, 8, 3, 1, 3, 3, 3, 738, 8, 3, 1, 3, 1, 3, 3, 3, 742, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 757, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 764, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 770, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 775, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 780, 8, 5, 1, 5, 3, 5, 783, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 805, 8, 5, 10, 5, 12, 5, 808, 9, 5, 1, 5, 1, 5, 5, 5, 812, 8, 5, 10, 5, 12, 5, 815, 9, 5, 3, 5, 817, 8, 5, 1, 6, 1, 6, 1, 6, 3, 6, 822, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 827, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 833, 8, 6, 1, 7, 1, 7, 3, 7, 837, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 850, 8, 8, 1, 9, 1, 9, 3, 9, 854, 8, 9, 1, 9, 1, 9, 3, 9, 858, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 863, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 870, 8, 10, 1, 10, 1, 10, 3, 10, 874, 8, 10, 1, 11, 1, 11, 1, 11, 3, 11, 879, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 886, 8, 12, 1, 12, 1, 12, 3, 12, 890, 8, 12, 1, 13, 1, 13, 1, 13, 3, 13, 895, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 4, 14, 941, 8, 14, 11, 14, 12, 14, 942, 1, 14, 1, 14, 1, 14, 4, 14, 948, 8, 14, 11, 14, 12, 14, 949, 1, 14, 1, 14, 1, 14, 3, 14, 955, 8, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 978, 8, 21, 1, 21, 1, 21, 3, 21, 982, 8, 21, 1, 21, 1, 21, 3, 21, 986, 8, 21, 1, 21, 3, 21, 989, 8, 21, 1, 21, 1, 21, 3, 21, 993, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 998, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1004, 8, 21, 1, 21, 1, 21, 3, 21, 1008, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1014, 8, 21, 3, 21, 1016, 8, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 3, 24, 1027, 8, 24, 1, 24, 1, 24, 3, 24, 1031, 8, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 1038, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1046, 8, 26, 1, 26, 3, 26, 1049, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 1054, 8, 27, 1, 27, 1, 27, 3, 27, 1058, 8, 27, 1, 27, 3, 27, 1061, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 1071, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1079, 8, 29, 5, 29, 1081, 8, 29, 10, 29, 12, 29, 1084, 9, 29, 3, 29, 1086, 8, 29, 1, 30, 1, 30, 3, 30, 1090, 8, 30, 1, 31, 1, 31, 3, 31, 1094, 8, 31, 1, 31, 3, 31, 1097, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1102, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1108, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1113, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1118, 8, 32, 1, 32, 1, 32, 3, 32, 1122, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1133, 8, 33, 3, 33, 1135, 8, 33, 1, 33, 1, 33, 3, 33, 1139, 8, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1149, 8, 36, 1, 36, 1, 36, 3, 36, 1153, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1159, 8, 36, 1, 36, 3, 36, 1162, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1169, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1174, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1182, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1187, 8, 36, 1, 36, 1, 36, 3, 36, 1191, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1199, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1204, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1210, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1216, 8, 36, 1, 36, 3, 36, 1219, 8, 36, 1, 36, 3, 36, 1222, 8, 36, 1, 36, 3, 36, 1225, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1234, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1242, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1247, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1255, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1262, 8, 36, 1, 36, 3, 36, 1265, 8, 36, 1, 36, 3, 36, 1268, 8, 36, 3, 36, 1270, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1281, 8, 36, 3, 36, 1283, 8, 36, 1, 36, 3, 36, 1286, 8, 36, 1, 36, 3, 36, 1289, 8, 36, 1, 36, 3, 36, 1292, 8, 36, 1, 36, 3, 36, 1295, 8, 36, 1, 36, 3, 36, 1298, 8, 36, 3, 36, 1300, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1312, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1318, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1326, 8, 36, 3, 36, 1328, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1338, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 3, 45, 1371, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1376, 8, 45, 1, 46, 1, 46, 3, 46, 1380, 8, 46, 1, 46, 1, 46, 3, 46, 1384, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1391, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1396, 8, 47, 10, 47, 12, 47, 1399, 9, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1404, 8, 47, 1, 48, 1, 48, 3, 48, 1408, 8, 48, 1, 48, 3, 48, 1411, 8, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1416, 8, 48, 10, 48, 12, 48, 1419, 9, 48, 1, 48, 1, 48, 1, 48, 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, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1441, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1446, 8, 53, 1, 53, 1, 53, 3, 53, 1450, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1458, 8, 55, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1467, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1474, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1480, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1487, 8, 58, 1, 58, 3, 58, 1490, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1496, 8, 58, 1, 59, 1, 59, 1, 59, 5, 59, 1501, 8, 59, 10, 59, 12, 59, 1504, 9, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 1511, 8, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 5, 62, 1518, 8, 62, 10, 62, 12, 62, 1521, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1529, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1536, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 1556, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1563, 8, 69, 3, 69, 1565, 8, 69, 1, 70, 1, 70, 1, 70, 5, 70, 1570, 8, 70, 10, 70, 12, 70, 1573, 9, 70, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 73, 1, 73, 3, 73, 1582, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1590, 8, 73, 1, 74, 1, 74, 3, 74, 1594, 8, 74, 1, 74, 1, 74, 3, 74, 1598, 8, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 3, 76, 1611, 8, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1620, 8, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1636, 8, 78, 1, 78, 1, 78, 3, 78, 1640, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1645, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1650, 8, 78, 1, 78, 3, 78, 1653, 8, 78, 1, 78, 3, 78, 1656, 8, 78, 1, 78, 3, 78, 1659, 8, 78, 1, 78, 3, 78, 1662, 8, 78, 1, 78, 3, 78, 1665, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 1670, 8, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 3, 80, 1679, 8, 80, 1, 80, 1, 80, 3, 80, 1683, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1690, 8, 80, 1, 80, 3, 80, 1693, 8, 80, 1, 80, 3, 80, 1696, 8, 80, 1, 80, 3, 80, 1699, 8, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1711, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 1717, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 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, 87, 1, 87, 1, 87, 3, 87, 1743, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1751, 8, 88, 1, 88, 1, 88, 3, 88, 1755, 8, 88, 1, 88, 3, 88, 1758, 8, 88, 1, 88, 3, 88, 1761, 8, 88, 1, 88, 3, 88, 1764, 8, 88, 1, 88, 3, 88, 1767, 8, 88, 1, 88, 3, 88, 1770, 8, 88, 1, 88, 3, 88, 1773, 8, 88, 1, 88, 3, 88, 1776, 8, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1785, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1795, 8, 90, 1, 90, 3, 90, 1798, 8, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1818, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1824, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1830, 8, 94, 1, 94, 3, 94, 1833, 8, 94, 3, 94, 1835, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 3, 96, 1842, 8, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 3, 97, 1849, 8, 97, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1862, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1867, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 5, 101, 1874, 8, 101, 10, 101, 12, 101, 1877, 9, 101, 1, 102, 1, 102, 1, 102, 5, 102, 1882, 8, 102, 10, 102, 12, 102, 1885, 9, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1892, 8, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 1905, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1918, 8, 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, 105, 1, 105, 3, 105, 1934, 8, 105, 1, 106, 1, 106, 3, 106, 1938, 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, 3, 109, 1953, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 1959, 8, 110, 1, 110, 3, 110, 1962, 8, 110, 1, 110, 3, 110, 1965, 8, 110, 1, 110, 3, 110, 1968, 8, 110, 1, 110, 3, 110, 1971, 8, 110, 1, 111, 1, 111, 3, 111, 1975, 8, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 1988, 8, 114, 10, 114, 12, 114, 1991, 9, 114, 3, 114, 1993, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 2002, 8, 116, 10, 116, 12, 116, 2005, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 2018, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2052, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2060, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2065, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2073, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2078, 8, 123, 1, 123, 1, 123, 1, 123, 3, 123, 2083, 8, 123, 1, 124, 1, 124, 1, 124, 5, 124, 2088, 8, 124, 10, 124, 12, 124, 2091, 9, 124, 1, 125, 1, 125, 1, 125, 5, 125, 2096, 8, 125, 10, 125, 12, 125, 2099, 9, 125, 1, 126, 1, 126, 1, 126, 5, 126, 2104, 8, 126, 10, 126, 12, 126, 2107, 9, 126, 1, 127, 1, 127, 1, 127, 5, 127, 2112, 8, 127, 10, 127, 12, 127, 2115, 9, 127, 1, 128, 1, 128, 3, 128, 2119, 8, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 2129, 8, 130, 5, 130, 2131, 8, 130, 10, 130, 12, 130, 2134, 9, 130, 1, 131, 1, 131, 1, 131, 5, 131, 2139, 8, 131, 10, 131, 12, 131, 2142, 9, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 3, 133, 2150, 8, 133, 1, 133, 3, 133, 2153, 8, 133, 1, 134, 1, 134, 3, 134, 2157, 8, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 3, 136, 2164, 8, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 2170, 8, 138, 1, 138, 1, 138, 3, 138, 2174, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2180, 8, 139, 1, 140, 1, 140, 3, 140, 2184, 8, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 3, 143, 2196, 8, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2205, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 2216, 8, 144, 1, 145, 1, 145, 3, 145, 2220, 8, 145, 1, 146, 1, 146, 1, 146, 5, 146, 2225, 8, 146, 10, 146, 12, 146, 2228, 9, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 5, 148, 2237, 8, 148, 10, 148, 12, 148, 2240, 9, 148, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2249, 8, 151, 1, 151, 3, 151, 2252, 8, 151, 1, 152, 1, 152, 1, 152, 5, 152, 2257, 8, 152, 10, 152, 12, 152, 2260, 9, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2265, 8, 153, 1, 154, 1, 154, 3, 154, 2269, 8, 154, 1, 154, 3, 154, 2272, 8, 154, 1, 154, 3, 154, 2275, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2281, 8, 155, 1, 156, 1, 156, 3, 156, 2285, 8, 156, 1, 157, 1, 157, 3, 157, 2289, 8, 157, 1, 158, 1, 158, 1, 158, 3, 158, 2294, 8, 158, 1, 158, 1, 158, 3, 158, 2298, 8, 158, 1, 159, 1, 159, 3, 159, 2302, 8, 159, 1, 160, 1, 160, 3, 160, 2306, 8, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 3, 160, 2314, 8, 160, 1, 161, 1, 161, 3, 161, 2318, 8, 161, 1, 161, 1, 161, 3, 161, 2322, 8, 161, 1, 162, 1, 162, 3, 162, 2326, 8, 162, 1, 163, 1, 163, 3, 163, 2330, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 2338, 8, 163, 1, 164, 1, 164, 3, 164, 2342, 8, 164, 1, 164, 1, 164, 3, 164, 2346, 8, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 2354, 8, 165, 1, 166, 1, 166, 1, 166, 3, 166, 2359, 8, 166, 1, 167, 1, 167, 1, 167, 3, 167, 2364, 8, 167, 1, 168, 1, 168, 3, 168, 2368, 8, 168, 1, 169, 1, 169, 3, 169, 2372, 8, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 3, 170, 2379, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 5, 172, 2386, 8, 172, 10, 172, 12, 172, 2389, 9, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2396, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2408, 8, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2426, 8, 174, 1, 174, 3, 174, 2429, 8, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 2435, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 2461, 8, 179, 1, 180, 3, 180, 2464, 8, 180, 1, 180, 1, 180, 1, 181, 1, 181, 3, 181, 2470, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 2476, 8, 182, 10, 182, 12, 182, 2479, 9, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 2486, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 2497, 8, 184, 10, 184, 12, 184, 2500, 9, 184, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2506, 8, 185, 1, 185, 3, 185, 2509, 8, 185, 1, 185, 3, 185, 2512, 8, 185, 1, 185, 3, 185, 2515, 8, 185, 1, 185, 3, 185, 2518, 8, 185, 1, 185, 3, 185, 2521, 8, 185, 1, 185, 3, 185, 2524, 8, 185, 1, 185, 3, 185, 2527, 8, 185, 1, 185, 3, 185, 2530, 8, 185, 1, 185, 3, 185, 2533, 8, 185, 1, 185, 3, 185, 2536, 8, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2541, 8, 185, 1, 185, 3, 185, 2544, 8, 185, 1, 185, 3, 185, 2547, 8, 185, 1, 185, 3, 185, 2550, 8, 185, 1, 185, 3, 185, 2553, 8, 185, 1, 185, 3, 185, 2556, 8, 185, 1, 185, 3, 185, 2559, 8, 185, 1, 185, 3, 185, 2562, 8, 185, 1, 185, 3, 185, 2565, 8, 185, 1, 185, 3, 185, 2568, 8, 185, 1, 185, 3, 185, 2571, 8, 185, 3, 185, 2573, 8, 185, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2579, 8, 186, 1, 187, 1, 187, 3, 187, 2583, 8, 187, 1, 187, 3, 187, 2586, 8, 187, 1, 187, 3, 187, 2589, 8, 187, 1, 187, 3, 187, 2592, 8, 187, 1, 187, 3, 187, 2595, 8, 187, 1, 187, 3, 187, 2598, 8, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 2605, 8, 187, 1, 188, 1, 188, 3, 188, 2609, 8, 188, 1, 188, 3, 188, 2612, 8, 188, 1, 188, 3, 188, 2615, 8, 188, 1, 188, 3, 188, 2618, 8, 188, 1, 188, 3, 188, 2621, 8, 188, 1, 188, 3, 188, 2624, 8, 188, 1, 189, 1, 189, 1, 189, 4, 189, 2629, 8, 189, 11, 189, 12, 189, 2630, 1, 190, 3, 190, 2634, 8, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2642, 8, 191, 1, 191, 1, 191, 3, 191, 2646, 8, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 2653, 8, 191, 3, 191, 2655, 8, 191, 1, 192, 3, 192, 2658, 8, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2663, 8, 192, 1, 192, 3, 192, 2666, 8, 192, 1, 192, 1, 192, 3, 192, 2670, 8, 192, 1, 193, 1, 193, 1, 193, 3, 193, 2675, 8, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 2681, 8, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 3, 195, 2689, 8, 195, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 2695, 8, 196, 10, 196, 12, 196, 2698, 9, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 5, 197, 2705, 8, 197, 10, 197, 12, 197, 2708, 9, 197, 3, 197, 2710, 8, 197, 1, 197, 1, 197, 3, 197, 2714, 8, 197, 1, 197, 1, 197, 3, 197, 2718, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2723, 8, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2730, 8, 198, 1, 199, 1, 199, 5, 199, 2734, 8, 199, 10, 199, 12, 199, 2737, 9, 199, 1, 199, 3, 199, 2740, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2747, 8, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2752, 8, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 3, 201, 2765, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2773, 8, 202, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 2792, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 2802, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 2815, 8, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2825, 8, 207, 1, 207, 1, 207, 3, 207, 2829, 8, 207, 4, 207, 2831, 8, 207, 11, 207, 12, 207, 2832, 1, 207, 1, 207, 5, 207, 2837, 8, 207, 10, 207, 12, 207, 2840, 9, 207, 1, 207, 1, 207, 5, 207, 2844, 8, 207, 10, 207, 12, 207, 2847, 9, 207, 1, 207, 1, 207, 5, 207, 2851, 8, 207, 10, 207, 12, 207, 2854, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2862, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2869, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2889, 8, 207, 1, 207, 3, 207, 2892, 8, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 2906, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2921, 8, 208, 1, 208, 1, 208, 3, 208, 2925, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 5, 208, 2943, 8, 208, 10, 208, 12, 208, 2946, 9, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2957, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2963, 8, 208, 1, 208, 3, 208, 2966, 8, 208, 1, 208, 3, 208, 2969, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2975, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2981, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2988, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 2996, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3002, 8, 208, 1, 208, 1, 208, 3, 208, 3006, 8, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3011, 8, 208, 1, 208, 3, 208, 3014, 8, 208, 1, 208, 1, 208, 3, 208, 3018, 8, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3025, 8, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3030, 8, 208, 1, 208, 1, 208, 1, 208, 3, 208, 3035, 8, 208, 1, 208, 3, 208, 3038, 8, 208, 3, 208, 3040, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3048, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 3056, 8, 209, 1, 209, 1, 209, 3, 209, 3060, 8, 209, 4, 209, 3062, 8, 209, 11, 209, 12, 209, 3063, 1, 209, 1, 209, 3, 209, 3068, 8, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 3085, 8, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 3, 211, 3102, 8, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 3, 213, 3109, 8, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 5, 213, 3116, 8, 213, 10, 213, 12, 213, 3119, 9, 213, 1, 213, 1, 213, 3, 213, 3123, 8, 213, 1, 213, 3, 213, 3126, 8, 213, 1, 213, 3, 213, 3129, 8, 213, 1, 214, 1, 214, 3, 214, 3133, 8, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 3148, 8, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 3162, 8, 216, 1, 216, 3, 216, 3165, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 3176, 8, 217, 1, 218, 1, 218, 3, 218, 3180, 8, 218, 1, 218, 3, 218, 3183, 8, 218, 1, 218, 3, 218, 3186, 8, 218, 1, 218, 1, 218, 3, 218, 3190, 8, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3195, 8, 218, 1, 218, 3, 218, 3198, 8, 218, 1, 218, 3, 218, 3201, 8, 218, 1, 218, 3, 218, 3204, 8, 218, 1, 218, 3, 218, 3207, 8, 218, 1, 218, 3, 218, 3210, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3216, 8, 218, 1, 218, 3, 218, 3219, 8, 218, 1, 218, 3, 218, 3222, 8, 218, 1, 218, 3, 218, 3225, 8, 218, 1, 218, 3, 218, 3228, 8, 218, 1, 218, 3, 218, 3231, 8, 218, 1, 218, 3, 218, 3234, 8, 218, 1, 218, 3, 218, 3237, 8, 218, 1, 218, 3, 218, 3240, 8, 218, 1, 218, 3, 218, 3243, 8, 218, 1, 218, 1, 218, 3, 218, 3247, 8, 218, 3, 218, 3249, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3255, 8, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3260, 8, 218, 1, 218, 3, 218, 3263, 8, 218, 1, 218, 3, 218, 3266, 8, 218, 1, 218, 3, 218, 3269, 8, 218, 1, 218, 3, 218, 3272, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 3278, 8, 218, 1, 218, 3, 218, 3281, 8, 218, 1, 218, 3, 218, 3284, 8, 218, 1, 218, 3, 218, 3287, 8, 218, 1, 218, 3, 218, 3290, 8, 218, 1, 218, 3, 218, 3293, 8, 218, 1, 218, 3, 218, 3296, 8, 218, 1, 218, 3, 218, 3299, 8, 218, 1, 218, 3, 218, 3302, 8, 218, 1, 218, 3, 218, 3305, 8, 218, 1, 218, 1, 218, 3, 218, 3309, 8, 218, 3, 218, 3311, 8, 218, 3, 218, 3313, 8, 218, 1, 219, 1, 219, 1, 219, 3, 219, 3318, 8, 219, 1, 219, 1, 219, 1, 219, 3, 219, 3323, 8, 219, 1, 219, 1, 219, 3, 219, 3327, 8, 219, 1, 219, 1, 219, 3, 219, 3331, 8, 219, 1, 219, 1, 219, 1, 219, 3, 219, 3336, 8, 219, 1, 220, 1, 220, 1, 220, 3, 220, 3341, 8, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 5, 221, 3348, 8, 221, 10, 221, 12, 221, 3351, 9, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 5, 222, 3358, 8, 222, 10, 222, 12, 222, 3361, 9, 222, 1, 223, 1, 223, 1, 223, 5, 223, 3366, 8, 223, 10, 223, 12, 223, 3369, 9, 223, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 4, 225, 3378, 8, 225, 11, 225, 12, 225, 3379, 1, 225, 3, 225, 3383, 8, 225, 1, 226, 1, 226, 5, 226, 3387, 8, 226, 10, 226, 12, 226, 3390, 9, 226, 1, 226, 1, 226, 5, 226, 3394, 8, 226, 10, 226, 12, 226, 3397, 9, 226, 1, 226, 1, 226, 5, 226, 3401, 8, 226, 10, 226, 12, 226, 3404, 9, 226, 1, 226, 1, 226, 5, 226, 3408, 8, 226, 10, 226, 12, 226, 3411, 9, 226, 1, 226, 1, 226, 1, 226, 1, 226, 3, 226, 3417, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 3426, 8, 227, 5, 227, 3428, 8, 227, 10, 227, 12, 227, 3431, 9, 227, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 3437, 8, 228, 1, 228, 5, 228, 3440, 8, 228, 10, 228, 12, 228, 3443, 9, 228, 1, 229, 3, 229, 3446, 8, 229, 1, 229, 1, 229, 3, 229, 3450, 8, 229, 1, 229, 3, 229, 3453, 8, 229, 1, 229, 3, 229, 3456, 8, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 3467, 8, 230, 1, 230, 1, 230, 3, 230, 3471, 8, 230, 3, 230, 3473, 8, 230, 1, 230, 3, 230, 3476, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 3487, 8, 231, 10, 231, 12, 231, 3490, 9, 231, 3, 231, 3492, 8, 231, 1, 231, 3, 231, 3495, 8, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 3505, 8, 231, 10, 231, 12, 231, 3508, 9, 231, 3, 231, 3510, 8, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 3517, 8, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 5, 231, 3524, 8, 231, 10, 231, 12, 231, 3527, 9, 231, 1, 231, 1, 231, 3, 231, 3531, 8, 231, 3, 231, 3533, 8, 231, 3, 231, 3535, 8, 231, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 3550, 8, 233, 10, 233, 12, 233, 3553, 9, 233, 3, 233, 3555, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 3563, 8, 233, 1, 233, 3, 233, 3566, 8, 233, 1, 234, 1, 234, 3, 234, 3570, 8, 234, 1, 234, 3, 234, 3573, 8, 234, 1, 234, 3, 234, 3576, 8, 234, 1, 234, 3, 234, 3579, 8, 234, 1, 234, 3, 234, 3582, 8, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 3, 235, 3594, 8, 235, 1, 236, 1, 236, 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 3602, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 3609, 8, 239, 1, 239, 3, 239, 3612, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 3619, 8, 240, 1, 240, 3, 240, 3622, 8, 240, 1, 241, 1, 241, 1, 241, 3, 241, 3627, 8, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 3, 242, 3634, 8, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 3642, 8, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 3, 244, 3650, 8, 244, 1, 244, 1, 244, 1, 244, 3, 244, 3655, 8, 244, 1, 244, 1, 244, 3, 244, 3659, 8, 244, 1, 245, 1, 245, 1, 245, 3, 245, 3664, 8, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 3671, 8, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 5, 246, 3683, 8, 246, 10, 246, 12, 246, 3686, 9, 246, 3, 246, 3688, 8, 246, 1, 246, 1, 246, 3, 246, 3692, 8, 246, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 5, 248, 3701, 8, 248, 10, 248, 12, 248, 3704, 9, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 5, 248, 3711, 8, 248, 10, 248, 12, 248, 3714, 9, 248, 3, 248, 3716, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 3723, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 5, 249, 3730, 8, 249, 10, 249, 12, 249, 3733, 9, 249, 3, 249, 3735, 8, 249, 1, 249, 1, 249, 1, 250, 1, 250, 3, 250, 3741, 8, 250, 1, 250, 3, 250, 3744, 8, 250, 1, 250, 1, 250, 1, 250, 5, 250, 3749, 8, 250, 10, 250, 12, 250, 3752, 9, 250, 1, 250, 1, 250, 3, 250, 3756, 8, 250, 1, 250, 3, 250, 3759, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 3772, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 3778, 8, 251, 3, 251, 3780, 8, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 3, 252, 3788, 8, 252, 1, 252, 3, 252, 3791, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 5, 252, 3799, 8, 252, 10, 252, 12, 252, 3802, 9, 252, 1, 252, 1, 252, 3, 252, 3806, 8, 252, 3, 252, 3808, 8, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 3820, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 3826, 8, 253, 3, 253, 3828, 8, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 3, 254, 3835, 8, 254, 1, 255, 1, 255, 1, 255, 5, 255, 3840, 8, 255, 10, 255, 12, 255, 3843, 9, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 5, 256, 3854, 8, 256, 10, 256, 12, 256, 3857, 9, 256, 1, 257, 1, 257, 1, 257, 3, 257, 3862, 8, 257, 1, 257, 3, 257, 3865, 8, 257, 1, 257, 3, 257, 3868, 8, 257, 1, 257, 3, 257, 3871, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 3880, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 3887, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 3893, 8, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 3, 260, 3902, 8, 260, 1, 261, 1, 261, 3, 261, 3906, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 5, 261, 3912, 8, 261, 10, 261, 12, 261, 3915, 9, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 3924, 8, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 3932, 8, 262, 10, 262, 12, 262, 3935, 9, 262, 1, 262, 1, 262, 3, 262, 3939, 8, 262, 1, 263, 1, 263, 3, 263, 3943, 8, 263, 1, 263, 1, 263, 5, 263, 3947, 8, 263, 10, 263, 12, 263, 3950, 9, 263, 1, 263, 1, 263, 3, 263, 3954, 8, 263, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 3, 266, 3964, 8, 266, 1, 267, 1, 267, 3, 267, 3968, 8, 267, 1, 267, 3, 267, 3971, 8, 267, 1, 267, 1, 267, 1, 267, 3, 267, 3976, 8, 267, 1, 267, 3, 267, 3979, 8, 267, 5, 267, 3981, 8, 267, 10, 267, 12, 267, 3984, 9, 267, 1, 268, 1, 268, 3, 268, 3988, 8, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 4, 270, 3997, 8, 270, 11, 270, 12, 270, 3998, 3, 270, 4001, 8, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 4008, 8, 271, 10, 271, 12, 271, 4011, 9, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 5, 274, 4027, 8, 274, 10, 274, 12, 274, 4030, 9, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 5, 274, 4037, 8, 274, 10, 274, 12, 274, 4040, 9, 274, 3, 274, 4042, 8, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 4049, 8, 275, 1, 275, 3, 275, 4052, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 4062, 8, 275, 1, 275, 1, 275, 1, 275, 5, 275, 4067, 8, 275, 10, 275, 12, 275, 4070, 9, 275, 3, 275, 4072, 8, 275, 3, 275, 4074, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 4085, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 4095, 8, 275, 3, 275, 4097, 8, 275, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 278, 1, 278, 3, 278, 4106, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 4111, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 4120, 8, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 4, 281, 4131, 8, 281, 11, 281, 12, 281, 4132, 1, 281, 1, 281, 3, 281, 4137, 8, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 4, 282, 4147, 8, 282, 11, 282, 12, 282, 4148, 1, 282, 1, 282, 3, 282, 4153, 8, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 4162, 8, 283, 1, 283, 1, 283, 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, 285, 1, 285, 3, 285, 4181, 8, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 5, 286, 4197, 8, 286, 10, 286, 12, 286, 4200, 9, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 4211, 8, 286, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 3, 288, 4226, 8, 288, 1, 288, 1, 288, 3, 288, 4230, 8, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 4246, 8, 289, 1, 290, 1, 290, 1, 290, 5, 290, 4251, 8, 290, 10, 290, 12, 290, 4254, 9, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 4267, 8, 291, 1, 292, 5, 292, 4270, 8, 292, 10, 292, 12, 292, 4273, 9, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 5, 292, 4282, 8, 292, 10, 292, 12, 292, 4285, 9, 292, 1, 293, 1, 293, 1, 293, 5, 293, 4290, 8, 293, 10, 293, 12, 293, 4293, 9, 293, 1, 294, 1, 294, 1, 294, 5, 294, 4298, 8, 294, 10, 294, 12, 294, 4301, 9, 294, 1, 295, 1, 295, 1, 295, 5, 295, 4306, 8, 295, 10, 295, 12, 295, 4309, 9, 295, 1, 296, 1, 296, 1, 296, 5, 296, 4314, 8, 296, 10, 296, 12, 296, 4317, 9, 296, 1, 297, 1, 297, 1, 297, 5, 297, 4322, 8, 297, 10, 297, 12, 297, 4325, 9, 297, 1, 298, 1, 298, 1, 298, 5, 298, 4330, 8, 298, 10, 298, 12, 298, 4333, 9, 298, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 3, 301, 4343, 8, 301, 1, 301, 1, 301, 3, 301, 4347, 8, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 4355, 8, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 3, 303, 4371, 8, 303, 1, 304, 1, 304, 3, 304, 4375, 8, 304, 1, 305, 1, 305, 1, 305, 3, 305, 4380, 8, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 4393, 8, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 5, 308, 4402, 8, 308, 10, 308, 12, 308, 4405, 9, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 4413, 8, 309, 1, 310, 5, 310, 4416, 8, 310, 10, 310, 12, 310, 4419, 9, 310, 1, 310, 1, 310, 1, 310, 3, 310, 4424, 8, 310, 1, 311, 1, 311, 1, 311, 5, 311, 4429, 8, 311, 10, 311, 12, 311, 4432, 9, 311, 1, 312, 1, 312, 3, 312, 4436, 8, 312, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 5, 313, 4443, 8, 313, 10, 313, 12, 313, 4446, 9, 313, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 3, 314, 4453, 8, 314, 1, 315, 1, 315, 1, 315, 1, 315, 5, 315, 4459, 8, 315, 10, 315, 12, 315, 4462, 9, 315, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 3, 316, 4469, 8, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 3, 319, 4479, 8, 319, 1, 320, 1, 320, 1, 320, 3, 320, 4484, 8, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 4542, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4548, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4557, 8, 325, 3, 325, 4559, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 5, 325, 4573, 8, 325, 10, 325, 12, 325, 4576, 9, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4583, 8, 325, 1, 325, 1, 325, 3, 325, 4587, 8, 325, 3, 325, 4589, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4595, 8, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4600, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4617, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4643, 8, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4648, 8, 325, 3, 325, 4650, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4678, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4695, 8, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4700, 8, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 4709, 8, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 1, 327, 3, 327, 4720, 8, 327, 1, 328, 1, 328, 1, 328, 5, 328, 4725, 8, 328, 10, 328, 12, 328, 4728, 9, 328, 1, 329, 1, 329, 1, 329, 3, 329, 4733, 8, 329, 1, 330, 1, 330, 1, 330, 3, 330, 4738, 8, 330, 1, 331, 1, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 339, 1, 339, 1, 340, 1, 340, 1, 341, 1, 341, 1, 341, 5, 341, 4763, 8, 341, 10, 341, 12, 341, 4766, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 4776, 8, 343, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 1, 344, 3, 344, 4790, 8, 344, 1, 345, 1, 345, 1, 345, 5, 345, 4795, 8, 345, 10, 345, 12, 345, 4798, 9, 345, 1, 345, 1, 813, 0, 346, 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, 0, 60, 2, 0, 57, 57, 172, 172, 4, 0, 91, 91, 121, 121, 226, 226, 325, 325, 2, 0, 50, 50, 346, 346, 2, 0, 34, 34, 282, 282, 1, 0, 89, 90, 2, 0, 139, 139, 154, 154, 2, 0, 67, 67, 295, 295, 2, 0, 68, 68, 296, 296, 1, 0, 155, 156, 2, 0, 114, 114, 307, 307, 11, 0, 7, 7, 9, 9, 58, 58, 86, 86, 101, 101, 155, 155, 161, 161, 190, 190, 299, 299, 309, 309, 365, 365, 3, 0, 4, 4, 101, 101, 326, 326, 3, 0, 15, 15, 128, 128, 170, 170, 1, 0, 141, 142, 2, 0, 30, 30, 351, 351, 2, 0, 217, 217, 373, 373, 2, 0, 214, 214, 272, 272, 2, 0, 18, 18, 89, 89, 2, 0, 130, 130, 177, 177, 2, 0, 39, 39, 376, 376, 4, 0, 112, 112, 164, 164, 205, 205, 356, 356, 2, 0, 7, 7, 96, 96, 2, 0, 125, 125, 350, 350, 2, 0, 225, 225, 391, 391, 2, 0, 42, 42, 315, 315, 2, 0, 189, 189, 196, 196, 2, 0, 426, 426, 431, 431, 2, 0, 140, 140, 285, 285, 3, 0, 12, 12, 231, 231, 300, 300, 2, 0, 241, 241, 292, 292, 2, 0, 198, 198, 268, 268, 2, 0, 260, 260, 292, 292, 2, 0, 354, 354, 431, 431, 2, 0, 133, 133, 247, 247, 2, 0, 152, 152, 281, 281, 3, 0, 413, 414, 418, 418, 420, 420, 2, 0, 412, 412, 415, 417, 1, 0, 413, 414, 4, 0, 184, 184, 270, 270, 286, 286, 408, 411, 2, 0, 7, 7, 13, 13, 3, 0, 7, 7, 13, 13, 313, 313, 3, 0, 184, 184, 270, 270, 286, 286, 4, 0, 125, 125, 219, 219, 350, 350, 360, 360, 2, 0, 405, 405, 407, 411, 24, 0, 11, 11, 16, 16, 25, 28, 35, 35, 100, 100, 131, 132, 151, 151, 154, 154, 162, 163, 184, 184, 198, 198, 216, 216, 228, 228, 264, 264, 270, 270, 286, 286, 311, 311, 323, 324, 340, 340, 357, 357, 383, 383, 405, 417, 419, 421, 423, 423, 85, 0, 1, 6, 8, 8, 10, 10, 15, 15, 18, 20, 22, 24, 30, 31, 33, 34, 37, 38, 40, 44, 46, 47, 49, 50, 52, 53, 56, 57, 59, 59, 66, 66, 68, 68, 72, 77, 79, 79, 83, 85, 87, 89, 91, 95, 97, 99, 103, 104, 106, 107, 109, 111, 114, 116, 118, 121, 127, 130, 137, 138, 142, 142, 147, 150, 152, 152, 155, 156, 158, 160, 168, 170, 172, 177, 182, 183, 185, 187, 189, 193, 195, 197, 199, 202, 204, 204, 206, 209, 211, 212, 214, 215, 217, 218, 220, 220, 222, 223, 226, 227, 232, 233, 235, 236, 238, 240, 243, 246, 252, 252, 254, 255, 257, 259, 261, 262, 265, 267, 271, 282, 284, 284, 287, 288, 293, 298, 300, 303, 305, 310, 312, 312, 314, 317, 319, 325, 327, 328, 330, 330, 332, 334, 339, 340, 342, 342, 344, 346, 349, 349, 352, 353, 355, 355, 357, 357, 360, 364, 366, 368, 371, 373, 375, 375, 377, 382, 385, 385, 388, 394, 13, 0, 16, 16, 26, 28, 63, 64, 71, 71, 100, 100, 131, 131, 145, 145, 151, 151, 162, 163, 198, 198, 264, 264, 311, 311, 337, 337, 2, 0, 4, 4, 101, 101, 2, 0, 9, 9, 58, 58, 3, 0, 14, 14, 144, 144, 369, 369, 1, 0, 106, 107, 1, 0, 94, 95, 1, 0, 392, 393, 1, 0, 208, 209, 1, 0, 381, 382, 1, 0, 73, 74, 1, 0, 148, 149, 1, 0, 206, 207, 1, 0, 297, 298, 1, 0, 80, 82, 5390, 0, 695, 1, 0, 0, 0, 2, 702, 1, 0, 0, 0, 4, 707, 1, 0, 0, 0, 6, 741, 1, 0, 0, 0, 8, 743, 1, 0, 0, 0, 10, 816, 1, 0, 0, 0, 12, 818, 1, 0, 0, 0, 14, 834, 1, 0, 0, 0, 16, 843, 1, 0, 0, 0, 18, 851, 1, 0, 0, 0, 20, 864, 1, 0, 0, 0, 22, 875, 1, 0, 0, 0, 24, 880, 1, 0, 0, 0, 26, 891, 1, 0, 0, 0, 28, 954, 1, 0, 0, 0, 30, 956, 1, 0, 0, 0, 32, 959, 1, 0, 0, 0, 34, 963, 1, 0, 0, 0, 36, 965, 1, 0, 0, 0, 38, 968, 1, 0, 0, 0, 40, 971, 1, 0, 0, 0, 42, 1015, 1, 0, 0, 0, 44, 1017, 1, 0, 0, 0, 46, 1020, 1, 0, 0, 0, 48, 1023, 1, 0, 0, 0, 50, 1032, 1, 0, 0, 0, 52, 1035, 1, 0, 0, 0, 54, 1050, 1, 0, 0, 0, 56, 1062, 1, 0, 0, 0, 58, 1067, 1, 0, 0, 0, 60, 1087, 1, 0, 0, 0, 62, 1091, 1, 0, 0, 0, 64, 1098, 1, 0, 0, 0, 66, 1123, 1, 0, 0, 0, 68, 1140, 1, 0, 0, 0, 70, 1142, 1, 0, 0, 0, 72, 1327, 1, 0, 0, 0, 74, 1337, 1, 0, 0, 0, 76, 1339, 1, 0, 0, 0, 78, 1344, 1, 0, 0, 0, 80, 1349, 1, 0, 0, 0, 82, 1351, 1, 0, 0, 0, 84, 1355, 1, 0, 0, 0, 86, 1359, 1, 0, 0, 0, 88, 1363, 1, 0, 0, 0, 90, 1367, 1, 0, 0, 0, 92, 1377, 1, 0, 0, 0, 94, 1388, 1, 0, 0, 0, 96, 1405, 1, 0, 0, 0, 98, 1423, 1, 0, 0, 0, 100, 1428, 1, 0, 0, 0, 102, 1431, 1, 0, 0, 0, 104, 1435, 1, 0, 0, 0, 106, 1442, 1, 0, 0, 0, 108, 1451, 1, 0, 0, 0, 110, 1457, 1, 0, 0, 0, 112, 1459, 1, 0, 0, 0, 114, 1473, 1, 0, 0, 0, 116, 1495, 1, 0, 0, 0, 118, 1497, 1, 0, 0, 0, 120, 1505, 1, 0, 0, 0, 122, 1512, 1, 0, 0, 0, 124, 1514, 1, 0, 0, 0, 126, 1528, 1, 0, 0, 0, 128, 1535, 1, 0, 0, 0, 130, 1537, 1, 0, 0, 0, 132, 1541, 1, 0, 0, 0, 134, 1545, 1, 0, 0, 0, 136, 1549, 1, 0, 0, 0, 138, 1553, 1, 0, 0, 0, 140, 1566, 1, 0, 0, 0, 142, 1574, 1, 0, 0, 0, 144, 1577, 1, 0, 0, 0, 146, 1579, 1, 0, 0, 0, 148, 1591, 1, 0, 0, 0, 150, 1601, 1, 0, 0, 0, 152, 1604, 1, 0, 0, 0, 154, 1615, 1, 0, 0, 0, 156, 1623, 1, 0, 0, 0, 158, 1666, 1, 0, 0, 0, 160, 1675, 1, 0, 0, 0, 162, 1703, 1, 0, 0, 0, 164, 1716, 1, 0, 0, 0, 166, 1718, 1, 0, 0, 0, 168, 1724, 1, 0, 0, 0, 170, 1727, 1, 0, 0, 0, 172, 1733, 1, 0, 0, 0, 174, 1739, 1, 0, 0, 0, 176, 1746, 1, 0, 0, 0, 178, 1780, 1, 0, 0, 0, 180, 1788, 1, 0, 0, 0, 182, 1801, 1, 0, 0, 0, 184, 1806, 1, 0, 0, 0, 186, 1817, 1, 0, 0, 0, 188, 1834, 1, 0, 0, 0, 190, 1836, 1, 0, 0, 0, 192, 1841, 1, 0, 0, 0, 194, 1848, 1, 0, 0, 0, 196, 1850, 1, 0, 0, 0, 198, 1853, 1, 0, 0, 0, 200, 1856, 1, 0, 0, 0, 202, 1870, 1, 0, 0, 0, 204, 1878, 1, 0, 0, 0, 206, 1904, 1, 0, 0, 0, 208, 1906, 1, 0, 0, 0, 210, 1923, 1, 0, 0, 0, 212, 1937, 1, 0, 0, 0, 214, 1939, 1, 0, 0, 0, 216, 1942, 1, 0, 0, 0, 218, 1945, 1, 0, 0, 0, 220, 1954, 1, 0, 0, 0, 222, 1974, 1, 0, 0, 0, 224, 1976, 1, 0, 0, 0, 226, 1979, 1, 0, 0, 0, 228, 1992, 1, 0, 0, 0, 230, 1994, 1, 0, 0, 0, 232, 1998, 1, 0, 0, 0, 234, 2006, 1, 0, 0, 0, 236, 2010, 1, 0, 0, 0, 238, 2019, 1, 0, 0, 0, 240, 2025, 1, 0, 0, 0, 242, 2031, 1, 0, 0, 0, 244, 2036, 1, 0, 0, 0, 246, 2082, 1, 0, 0, 0, 248, 2084, 1, 0, 0, 0, 250, 2092, 1, 0, 0, 0, 252, 2100, 1, 0, 0, 0, 254, 2108, 1, 0, 0, 0, 256, 2118, 1, 0, 0, 0, 258, 2120, 1, 0, 0, 0, 260, 2122, 1, 0, 0, 0, 262, 2135, 1, 0, 0, 0, 264, 2143, 1, 0, 0, 0, 266, 2152, 1, 0, 0, 0, 268, 2156, 1, 0, 0, 0, 270, 2158, 1, 0, 0, 0, 272, 2163, 1, 0, 0, 0, 274, 2165, 1, 0, 0, 0, 276, 2169, 1, 0, 0, 0, 278, 2175, 1, 0, 0, 0, 280, 2183, 1, 0, 0, 0, 282, 2185, 1, 0, 0, 0, 284, 2188, 1, 0, 0, 0, 286, 2195, 1, 0, 0, 0, 288, 2206, 1, 0, 0, 0, 290, 2219, 1, 0, 0, 0, 292, 2221, 1, 0, 0, 0, 294, 2229, 1, 0, 0, 0, 296, 2233, 1, 0, 0, 0, 298, 2241, 1, 0, 0, 0, 300, 2243, 1, 0, 0, 0, 302, 2246, 1, 0, 0, 0, 304, 2253, 1, 0, 0, 0, 306, 2261, 1, 0, 0, 0, 308, 2268, 1, 0, 0, 0, 310, 2276, 1, 0, 0, 0, 312, 2284, 1, 0, 0, 0, 314, 2288, 1, 0, 0, 0, 316, 2290, 1, 0, 0, 0, 318, 2301, 1, 0, 0, 0, 320, 2305, 1, 0, 0, 0, 322, 2317, 1, 0, 0, 0, 324, 2325, 1, 0, 0, 0, 326, 2329, 1, 0, 0, 0, 328, 2341, 1, 0, 0, 0, 330, 2353, 1, 0, 0, 0, 332, 2358, 1, 0, 0, 0, 334, 2363, 1, 0, 0, 0, 336, 2365, 1, 0, 0, 0, 338, 2369, 1, 0, 0, 0, 340, 2373, 1, 0, 0, 0, 342, 2380, 1, 0, 0, 0, 344, 2382, 1, 0, 0, 0, 346, 2395, 1, 0, 0, 0, 348, 2434, 1, 0, 0, 0, 350, 2436, 1, 0, 0, 0, 352, 2441, 1, 0, 0, 0, 354, 2446, 1, 0, 0, 0, 356, 2453, 1, 0, 0, 0, 358, 2458, 1, 0, 0, 0, 360, 2463, 1, 0, 0, 0, 362, 2469, 1, 0, 0, 0, 364, 2471, 1, 0, 0, 0, 366, 2480, 1, 0, 0, 0, 368, 2492, 1, 0, 0, 0, 370, 2572, 1, 0, 0, 0, 372, 2578, 1, 0, 0, 0, 374, 2604, 1, 0, 0, 0, 376, 2606, 1, 0, 0, 0, 378, 2628, 1, 0, 0, 0, 380, 2633, 1, 0, 0, 0, 382, 2637, 1, 0, 0, 0, 384, 2669, 1, 0, 0, 0, 386, 2671, 1, 0, 0, 0, 388, 2682, 1, 0, 0, 0, 390, 2688, 1, 0, 0, 0, 392, 2690, 1, 0, 0, 0, 394, 2722, 1, 0, 0, 0, 396, 2729, 1, 0, 0, 0, 398, 2735, 1, 0, 0, 0, 400, 2741, 1, 0, 0, 0, 402, 2756, 1, 0, 0, 0, 404, 2766, 1, 0, 0, 0, 406, 2774, 1, 0, 0, 0, 408, 2777, 1, 0, 0, 0, 410, 2780, 1, 0, 0, 0, 412, 2783, 1, 0, 0, 0, 414, 2905, 1, 0, 0, 0, 416, 3039, 1, 0, 0, 0, 418, 3067, 1, 0, 0, 0, 420, 3084, 1, 0, 0, 0, 422, 3101, 1, 0, 0, 0, 424, 3103, 1, 0, 0, 0, 426, 3106, 1, 0, 0, 0, 428, 3132, 1, 0, 0, 0, 430, 3137, 1, 0, 0, 0, 432, 3164, 1, 0, 0, 0, 434, 3175, 1, 0, 0, 0, 436, 3312, 1, 0, 0, 0, 438, 3314, 1, 0, 0, 0, 440, 3337, 1, 0, 0, 0, 442, 3349, 1, 0, 0, 0, 444, 3354, 1, 0, 0, 0, 446, 3362, 1, 0, 0, 0, 448, 3370, 1, 0, 0, 0, 450, 3382, 1, 0, 0, 0, 452, 3416, 1, 0, 0, 0, 454, 3418, 1, 0, 0, 0, 456, 3436, 1, 0, 0, 0, 458, 3445, 1, 0, 0, 0, 460, 3475, 1, 0, 0, 0, 462, 3534, 1, 0, 0, 0, 464, 3536, 1, 0, 0, 0, 466, 3565, 1, 0, 0, 0, 468, 3567, 1, 0, 0, 0, 470, 3583, 1, 0, 0, 0, 472, 3595, 1, 0, 0, 0, 474, 3597, 1, 0, 0, 0, 476, 3601, 1, 0, 0, 0, 478, 3611, 1, 0, 0, 0, 480, 3621, 1, 0, 0, 0, 482, 3626, 1, 0, 0, 0, 484, 3633, 1, 0, 0, 0, 486, 3637, 1, 0, 0, 0, 488, 3658, 1, 0, 0, 0, 490, 3663, 1, 0, 0, 0, 492, 3665, 1, 0, 0, 0, 494, 3693, 1, 0, 0, 0, 496, 3696, 1, 0, 0, 0, 498, 3717, 1, 0, 0, 0, 500, 3758, 1, 0, 0, 0, 502, 3760, 1, 0, 0, 0, 504, 3807, 1, 0, 0, 0, 506, 3809, 1, 0, 0, 0, 508, 3834, 1, 0, 0, 0, 510, 3836, 1, 0, 0, 0, 512, 3844, 1, 0, 0, 0, 514, 3870, 1, 0, 0, 0, 516, 3872, 1, 0, 0, 0, 518, 3892, 1, 0, 0, 0, 520, 3894, 1, 0, 0, 0, 522, 3905, 1, 0, 0, 0, 524, 3918, 1, 0, 0, 0, 526, 3953, 1, 0, 0, 0, 528, 3955, 1, 0, 0, 0, 530, 3958, 1, 0, 0, 0, 532, 3963, 1, 0, 0, 0, 534, 3965, 1, 0, 0, 0, 536, 3987, 1, 0, 0, 0, 538, 3989, 1, 0, 0, 0, 540, 3993, 1, 0, 0, 0, 542, 4002, 1, 0, 0, 0, 544, 4012, 1, 0, 0, 0, 546, 4016, 1, 0, 0, 0, 548, 4020, 1, 0, 0, 0, 550, 4096, 1, 0, 0, 0, 552, 4098, 1, 0, 0, 0, 554, 4101, 1, 0, 0, 0, 556, 4105, 1, 0, 0, 0, 558, 4110, 1, 0, 0, 0, 560, 4112, 1, 0, 0, 0, 562, 4123, 1, 0, 0, 0, 564, 4140, 1, 0, 0, 0, 566, 4156, 1, 0, 0, 0, 568, 4165, 1, 0, 0, 0, 570, 4180, 1, 0, 0, 0, 572, 4210, 1, 0, 0, 0, 574, 4212, 1, 0, 0, 0, 576, 4229, 1, 0, 0, 0, 578, 4245, 1, 0, 0, 0, 580, 4247, 1, 0, 0, 0, 582, 4266, 1, 0, 0, 0, 584, 4271, 1, 0, 0, 0, 586, 4286, 1, 0, 0, 0, 588, 4294, 1, 0, 0, 0, 590, 4302, 1, 0, 0, 0, 592, 4310, 1, 0, 0, 0, 594, 4318, 1, 0, 0, 0, 596, 4326, 1, 0, 0, 0, 598, 4334, 1, 0, 0, 0, 600, 4336, 1, 0, 0, 0, 602, 4346, 1, 0, 0, 0, 604, 4354, 1, 0, 0, 0, 606, 4370, 1, 0, 0, 0, 608, 4374, 1, 0, 0, 0, 610, 4379, 1, 0, 0, 0, 612, 4381, 1, 0, 0, 0, 614, 4392, 1, 0, 0, 0, 616, 4394, 1, 0, 0, 0, 618, 4412, 1, 0, 0, 0, 620, 4417, 1, 0, 0, 0, 622, 4425, 1, 0, 0, 0, 624, 4433, 1, 0, 0, 0, 626, 4437, 1, 0, 0, 0, 628, 4449, 1, 0, 0, 0, 630, 4454, 1, 0, 0, 0, 632, 4465, 1, 0, 0, 0, 634, 4472, 1, 0, 0, 0, 636, 4474, 1, 0, 0, 0, 638, 4478, 1, 0, 0, 0, 640, 4480, 1, 0, 0, 0, 642, 4485, 1, 0, 0, 0, 644, 4487, 1, 0, 0, 0, 646, 4489, 1, 0, 0, 0, 648, 4541, 1, 0, 0, 0, 650, 4708, 1, 0, 0, 0, 652, 4710, 1, 0, 0, 0, 654, 4719, 1, 0, 0, 0, 656, 4721, 1, 0, 0, 0, 658, 4732, 1, 0, 0, 0, 660, 4734, 1, 0, 0, 0, 662, 4739, 1, 0, 0, 0, 664, 4741, 1, 0, 0, 0, 666, 4743, 1, 0, 0, 0, 668, 4745, 1, 0, 0, 0, 670, 4747, 1, 0, 0, 0, 672, 4749, 1, 0, 0, 0, 674, 4751, 1, 0, 0, 0, 676, 4753, 1, 0, 0, 0, 678, 4755, 1, 0, 0, 0, 680, 4757, 1, 0, 0, 0, 682, 4759, 1, 0, 0, 0, 684, 4767, 1, 0, 0, 0, 686, 4775, 1, 0, 0, 0, 688, 4789, 1, 0, 0, 0, 690, 4791, 1, 0, 0, 0, 692, 694, 3, 2, 1, 0, 693, 692, 1, 0, 0, 0, 694, 697, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 698, 1, 0, 0, 0, 697, 695, 1, 0, 0, 0, 698, 699, 5, 0, 0, 1, 699, 1, 1, 0, 0, 0, 700, 703, 3, 4, 2, 0, 701, 703, 3, 10, 5, 0, 702, 700, 1, 0, 0, 0, 702, 701, 1, 0, 0, 0, 703, 705, 1, 0, 0, 0, 704, 706, 5, 398, 0, 0, 705, 704, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 3, 1, 0, 0, 0, 707, 717, 5, 119, 0, 0, 708, 710, 3, 6, 3, 0, 709, 708, 1, 0, 0, 0, 710, 713, 1, 0, 0, 0, 711, 709, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 714, 1, 0, 0, 0, 713, 711, 1, 0, 0, 0, 714, 718, 3, 10, 5, 0, 715, 716, 5, 284, 0, 0, 716, 718, 3, 360, 180, 0, 717, 711, 1, 0, 0, 0, 717, 715, 1, 0, 0, 0, 718, 5, 1, 0, 0, 0, 719, 742, 5, 122, 0, 0, 720, 742, 5, 138, 0, 0, 721, 742, 5, 88, 0, 0, 722, 724, 5, 37, 0, 0, 723, 725, 7, 0, 0, 0, 724, 723, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 742, 1, 0, 0, 0, 726, 742, 5, 192, 0, 0, 727, 742, 5, 21, 0, 0, 728, 742, 5, 10, 0, 0, 729, 742, 5, 275, 0, 0, 730, 742, 5, 191, 0, 0, 731, 742, 5, 19, 0, 0, 732, 734, 5, 377, 0, 0, 733, 735, 5, 225, 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 737, 1, 0, 0, 0, 736, 738, 3, 8, 4, 0, 737, 736, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 742, 1, 0, 0, 0, 739, 742, 5, 79, 0, 0, 740, 742, 5, 78, 0, 0, 741, 719, 1, 0, 0, 0, 741, 720, 1, 0, 0, 0, 741, 721, 1, 0, 0, 0, 741, 722, 1, 0, 0, 0, 741, 726, 1, 0, 0, 0, 741, 727, 1, 0, 0, 0, 741, 728, 1, 0, 0, 0, 741, 729, 1, 0, 0, 0, 741, 730, 1, 0, 0, 0, 741, 731, 1, 0, 0, 0, 741, 732, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 741, 740, 1, 0, 0, 0, 742, 7, 1, 0, 0, 0, 743, 744, 7, 1, 0, 0, 744, 9, 1, 0, 0, 0, 745, 817, 3, 360, 180, 0, 746, 817, 3, 12, 6, 0, 747, 817, 3, 16, 8, 0, 748, 817, 3, 18, 9, 0, 749, 817, 3, 20, 10, 0, 750, 817, 3, 24, 12, 0, 751, 752, 5, 277, 0, 0, 752, 753, 5, 320, 0, 0, 753, 756, 3, 472, 236, 0, 754, 755, 5, 387, 0, 0, 755, 757, 3, 230, 115, 0, 756, 754, 1, 0, 0, 0, 756, 757, 1, 0, 0, 0, 757, 817, 1, 0, 0, 0, 758, 817, 3, 28, 14, 0, 759, 760, 5, 86, 0, 0, 760, 761, 5, 139, 0, 0, 761, 763, 3, 478, 239, 0, 762, 764, 3, 494, 247, 0, 763, 762, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 817, 1, 0, 0, 0, 765, 766, 5, 365, 0, 0, 766, 767, 3, 478, 239, 0, 767, 769, 3, 392, 196, 0, 768, 770, 3, 494, 247, 0, 769, 768, 1, 0, 0, 0, 769, 770, 1, 0, 0, 0, 770, 817, 1, 0, 0, 0, 771, 817, 3, 394, 197, 0, 772, 774, 5, 203, 0, 0, 773, 775, 5, 436, 0, 0, 774, 773, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 1, 0, 0, 0, 776, 777, 5, 166, 0, 0, 777, 782, 3, 478, 239, 0, 778, 780, 5, 17, 0, 0, 779, 778, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 781, 1, 0, 0, 0, 781, 783, 3, 638, 319, 0, 782, 779, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 5, 370, 0, 0, 785, 786, 3, 456, 228, 0, 786, 787, 5, 224, 0, 0, 787, 788, 3, 580, 290, 0, 788, 789, 3, 398, 199, 0, 789, 817, 1, 0, 0, 0, 790, 791, 5, 249, 0, 0, 791, 792, 3, 638, 319, 0, 792, 793, 5, 139, 0, 0, 793, 794, 3, 360, 180, 0, 794, 817, 1, 0, 0, 0, 795, 796, 5, 115, 0, 0, 796, 797, 3, 638, 319, 0, 797, 798, 5, 370, 0, 0, 798, 799, 3, 296, 148, 0, 799, 817, 1, 0, 0, 0, 800, 801, 5, 304, 0, 0, 801, 806, 3, 648, 324, 0, 802, 803, 5, 395, 0, 0, 803, 805, 3, 648, 324, 0, 804, 802, 1, 0, 0, 0, 805, 808, 1, 0, 0, 0, 806, 804, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 809, 813, 5, 405, 0, 0, 810, 812, 9, 0, 0, 0, 811, 810, 1, 0, 0, 0, 812, 815, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 813, 811, 1, 0, 0, 0, 814, 817, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 816, 745, 1, 0, 0, 0, 816, 746, 1, 0, 0, 0, 816, 747, 1, 0, 0, 0, 816, 748, 1, 0, 0, 0, 816, 749, 1, 0, 0, 0, 816, 750, 1, 0, 0, 0, 816, 751, 1, 0, 0, 0, 816, 758, 1, 0, 0, 0, 816, 759, 1, 0, 0, 0, 816, 765, 1, 0, 0, 0, 816, 771, 1, 0, 0, 0, 816, 772, 1, 0, 0, 0, 816, 790, 1, 0, 0, 0, 816, 795, 1, 0, 0, 0, 816, 800, 1, 0, 0, 0, 817, 11, 1, 0, 0, 0, 818, 819, 5, 187, 0, 0, 819, 821, 5, 66, 0, 0, 820, 822, 5, 188, 0, 0, 821, 820, 1, 0, 0, 0, 821, 822, 1, 0, 0, 0, 822, 823, 1, 0, 0, 0, 823, 824, 5, 158, 0, 0, 824, 826, 5, 426, 0, 0, 825, 827, 5, 235, 0, 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 166, 0, 0, 829, 830, 5, 329, 0, 0, 830, 832, 3, 624, 312, 0, 831, 833, 3, 56, 28, 0, 832, 831, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 13, 1, 0, 0, 0, 834, 836, 5, 134, 0, 0, 835, 837, 5, 204, 0, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 279, 0, 0, 839, 840, 5, 399, 0, 0, 840, 841, 5, 426, 0, 0, 841, 842, 5, 400, 0, 0, 842, 15, 1, 0, 0, 0, 843, 844, 5, 120, 0, 0, 844, 845, 5, 329, 0, 0, 845, 846, 3, 624, 312, 0, 846, 847, 5, 341, 0, 0, 847, 849, 5, 426, 0, 0, 848, 850, 3, 14, 7, 0, 849, 848, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 17, 1, 0, 0, 0, 851, 857, 5, 153, 0, 0, 852, 854, 5, 123, 0, 0, 853, 852, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 329, 0, 0, 856, 858, 3, 624, 312, 0, 857, 853, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 860, 5, 139, 0, 0, 860, 862, 5, 426, 0, 0, 861, 863, 3, 424, 212, 0, 862, 861, 1, 0, 0, 0, 862, 863, 1, 0, 0, 0, 863, 19, 1, 0, 0, 0, 864, 865, 5, 277, 0, 0, 865, 866, 5, 103, 0, 0, 866, 869, 3, 22, 11, 0, 867, 868, 5, 278, 0, 0, 868, 870, 3, 22, 11, 0, 869, 867, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 873, 1, 0, 0, 0, 871, 872, 5, 387, 0, 0, 872, 874, 3, 230, 115, 0, 873, 871, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 21, 1, 0, 0, 0, 875, 878, 3, 472, 236, 0, 876, 877, 5, 395, 0, 0, 877, 879, 3, 26, 13, 0, 878, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 23, 1, 0, 0, 0, 880, 881, 5, 277, 0, 0, 881, 882, 5, 187, 0, 0, 882, 885, 3, 22, 11, 0, 883, 884, 5, 166, 0, 0, 884, 886, 3, 472, 236, 0, 885, 883, 1, 0, 0, 0, 885, 886, 1, 0, 0, 0, 886, 889, 1, 0, 0, 0, 887, 888, 5, 387, 0, 0, 888, 890, 3, 230, 115, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 25, 1, 0, 0, 0, 891, 894, 5, 426, 0, 0, 892, 893, 5, 395, 0, 0, 893, 895, 5, 426, 0, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 27, 1, 0, 0, 0, 896, 955, 3, 42, 21, 0, 897, 955, 3, 46, 23, 0, 898, 955, 3, 48, 24, 0, 899, 955, 3, 436, 218, 0, 900, 955, 3, 54, 27, 0, 901, 955, 3, 52, 26, 0, 902, 955, 3, 412, 206, 0, 903, 955, 3, 64, 32, 0, 904, 955, 3, 72, 36, 0, 905, 955, 3, 138, 69, 0, 906, 955, 3, 160, 80, 0, 907, 955, 3, 176, 88, 0, 908, 955, 3, 180, 90, 0, 909, 955, 3, 184, 92, 0, 910, 955, 3, 182, 91, 0, 911, 955, 3, 174, 87, 0, 912, 955, 3, 178, 89, 0, 913, 955, 3, 146, 73, 0, 914, 955, 3, 152, 76, 0, 915, 955, 3, 148, 74, 0, 916, 955, 3, 150, 75, 0, 917, 955, 3, 154, 77, 0, 918, 955, 3, 156, 78, 0, 919, 955, 3, 158, 79, 0, 920, 955, 3, 66, 33, 0, 921, 955, 3, 76, 38, 0, 922, 955, 3, 82, 41, 0, 923, 955, 3, 78, 39, 0, 924, 955, 3, 84, 42, 0, 925, 955, 3, 86, 43, 0, 926, 955, 3, 88, 44, 0, 927, 955, 3, 90, 45, 0, 928, 955, 3, 92, 46, 0, 929, 955, 3, 106, 53, 0, 930, 955, 3, 98, 49, 0, 931, 955, 3, 108, 54, 0, 932, 955, 3, 100, 50, 0, 933, 955, 3, 94, 47, 0, 934, 955, 3, 96, 48, 0, 935, 955, 3, 104, 52, 0, 936, 955, 3, 102, 51, 0, 937, 938, 5, 1, 0, 0, 938, 940, 7, 2, 0, 0, 939, 941, 5, 431, 0, 0, 940, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 940, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 955, 1, 0, 0, 0, 944, 945, 5, 176, 0, 0, 945, 947, 5, 258, 0, 0, 946, 948, 5, 426, 0, 0, 947, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 947, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 955, 1, 0, 0, 0, 951, 955, 3, 650, 325, 0, 952, 955, 3, 438, 219, 0, 953, 955, 3, 440, 220, 0, 954, 896, 1, 0, 0, 0, 954, 897, 1, 0, 0, 0, 954, 898, 1, 0, 0, 0, 954, 899, 1, 0, 0, 0, 954, 900, 1, 0, 0, 0, 954, 901, 1, 0, 0, 0, 954, 902, 1, 0, 0, 0, 954, 903, 1, 0, 0, 0, 954, 904, 1, 0, 0, 0, 954, 905, 1, 0, 0, 0, 954, 906, 1, 0, 0, 0, 954, 907, 1, 0, 0, 0, 954, 908, 1, 0, 0, 0, 954, 909, 1, 0, 0, 0, 954, 910, 1, 0, 0, 0, 954, 911, 1, 0, 0, 0, 954, 912, 1, 0, 0, 0, 954, 913, 1, 0, 0, 0, 954, 914, 1, 0, 0, 0, 954, 915, 1, 0, 0, 0, 954, 916, 1, 0, 0, 0, 954, 917, 1, 0, 0, 0, 954, 918, 1, 0, 0, 0, 954, 919, 1, 0, 0, 0, 954, 920, 1, 0, 0, 0, 954, 921, 1, 0, 0, 0, 954, 922, 1, 0, 0, 0, 954, 923, 1, 0, 0, 0, 954, 924, 1, 0, 0, 0, 954, 925, 1, 0, 0, 0, 954, 926, 1, 0, 0, 0, 954, 927, 1, 0, 0, 0, 954, 928, 1, 0, 0, 0, 954, 929, 1, 0, 0, 0, 954, 930, 1, 0, 0, 0, 954, 931, 1, 0, 0, 0, 954, 932, 1, 0, 0, 0, 954, 933, 1, 0, 0, 0, 954, 934, 1, 0, 0, 0, 954, 935, 1, 0, 0, 0, 954, 936, 1, 0, 0, 0, 954, 937, 1, 0, 0, 0, 954, 944, 1, 0, 0, 0, 954, 951, 1, 0, 0, 0, 954, 952, 1, 0, 0, 0, 954, 953, 1, 0, 0, 0, 955, 29, 1, 0, 0, 0, 956, 957, 5, 151, 0, 0, 957, 958, 5, 117, 0, 0, 958, 31, 1, 0, 0, 0, 959, 960, 5, 151, 0, 0, 960, 961, 5, 216, 0, 0, 961, 962, 5, 117, 0, 0, 962, 33, 1, 0, 0, 0, 963, 964, 7, 3, 0, 0, 964, 35, 1, 0, 0, 0, 965, 966, 3, 662, 331, 0, 966, 967, 5, 284, 0, 0, 967, 37, 1, 0, 0, 0, 968, 969, 3, 664, 332, 0, 969, 970, 5, 284, 0, 0, 970, 39, 1, 0, 0, 0, 971, 972, 5, 321, 0, 0, 972, 973, 5, 17, 0, 0, 973, 974, 5, 92, 0, 0, 974, 41, 1, 0, 0, 0, 975, 977, 5, 58, 0, 0, 976, 978, 5, 273, 0, 0, 977, 976, 1, 0, 0, 0, 977, 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 981, 3, 70, 35, 0, 980, 982, 3, 32, 16, 0, 981, 980, 1, 0, 0, 0, 981, 982, 1, 0, 0, 0, 982, 983, 1, 0, 0, 0, 983, 985, 3, 474, 237, 0, 984, 986, 3, 50, 25, 0, 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 988, 1, 0, 0, 0, 987, 989, 3, 424, 212, 0, 988, 987, 1, 0, 0, 0, 988, 989, 1, 0, 0, 0, 989, 992, 1, 0, 0, 0, 990, 991, 5, 196, 0, 0, 991, 993, 5, 426, 0, 0, 992, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, 997, 1, 0, 0, 0, 994, 995, 5, 387, 0, 0, 995, 996, 5, 76, 0, 0, 996, 998, 3, 230, 115, 0, 997, 994, 1, 0, 0, 0, 997, 998, 1, 0, 0, 0, 998, 1016, 1, 0, 0, 0, 999, 1000, 5, 58, 0, 0, 1000, 1001, 5, 273, 0, 0, 1001, 1003, 3, 70, 35, 0, 1002, 1004, 3, 32, 16, 0, 1003, 1002, 1, 0, 0, 0, 1003, 1004, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1007, 3, 474, 237, 0, 1006, 1008, 3, 50, 25, 0, 1007, 1006, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1013, 3, 44, 22, 0, 1010, 1011, 5, 387, 0, 0, 1011, 1012, 5, 76, 0, 0, 1012, 1014, 3, 230, 115, 0, 1013, 1010, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, 1, 0, 0, 0, 1015, 975, 1, 0, 0, 0, 1015, 999, 1, 0, 0, 0, 1016, 43, 1, 0, 0, 0, 1017, 1018, 5, 370, 0, 0, 1018, 1019, 3, 472, 236, 0, 1019, 45, 1, 0, 0, 0, 1020, 1021, 5, 368, 0, 0, 1021, 1022, 3, 472, 236, 0, 1022, 47, 1, 0, 0, 0, 1023, 1024, 5, 101, 0, 0, 1024, 1026, 3, 70, 35, 0, 1025, 1027, 3, 30, 15, 0, 1026, 1025, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1030, 3, 472, 236, 0, 1029, 1031, 3, 34, 17, 0, 1030, 1029, 1, 0, 0, 0, 1030, 1031, 1, 0, 0, 0, 1031, 49, 1, 0, 0, 0, 1032, 1033, 5, 47, 0, 0, 1033, 1034, 5, 426, 0, 0, 1034, 51, 1, 0, 0, 0, 1035, 1037, 5, 351, 0, 0, 1036, 1038, 5, 329, 0, 0, 1037, 1036, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1039, 1, 0, 0, 0, 1039, 1045, 3, 624, 312, 0, 1040, 1041, 5, 46, 0, 0, 1041, 1042, 5, 399, 0, 0, 1042, 1043, 3, 254, 127, 0, 1043, 1044, 5, 400, 0, 0, 1044, 1046, 1, 0, 0, 0, 1045, 1040, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1049, 5, 135, 0, 0, 1048, 1047, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 53, 1, 0, 0, 0, 1050, 1051, 5, 101, 0, 0, 1051, 1053, 5, 329, 0, 0, 1052, 1054, 3, 30, 15, 0, 1053, 1052, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1057, 3, 478, 239, 0, 1056, 1058, 5, 255, 0, 0, 1057, 1056, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1061, 3, 14, 7, 0, 1060, 1059, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 55, 1, 0, 0, 0, 1062, 1063, 5, 160, 0, 0, 1063, 1064, 5, 426, 0, 0, 1064, 1065, 5, 301, 0, 0, 1065, 1066, 5, 426, 0, 0, 1066, 57, 1, 0, 0, 0, 1067, 1070, 3, 638, 319, 0, 1068, 1069, 5, 395, 0, 0, 1069, 1071, 3, 638, 319, 0, 1070, 1068, 1, 0, 0, 0, 1070, 1071, 1, 0, 0, 0, 1071, 1085, 1, 0, 0, 0, 1072, 1082, 3, 638, 319, 0, 1073, 1078, 5, 395, 0, 0, 1074, 1079, 5, 104, 0, 0, 1075, 1079, 5, 175, 0, 0, 1076, 1079, 5, 375, 0, 0, 1077, 1079, 3, 638, 319, 0, 1078, 1074, 1, 0, 0, 0, 1078, 1075, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1081, 1, 0, 0, 0, 1080, 1073, 1, 0, 0, 0, 1081, 1084, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1085, 1072, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 59, 1, 0, 0, 0, 1087, 1089, 3, 58, 29, 0, 1088, 1090, 3, 626, 313, 0, 1089, 1088, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 61, 1, 0, 0, 0, 1091, 1093, 3, 476, 238, 0, 1092, 1094, 3, 626, 313, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1096, 1, 0, 0, 0, 1095, 1097, 3, 260, 130, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 63, 1, 0, 0, 0, 1098, 1121, 7, 4, 0, 0, 1099, 1101, 3, 70, 35, 0, 1100, 1102, 5, 122, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1104, 3, 472, 236, 0, 1104, 1122, 1, 0, 0, 0, 1105, 1107, 5, 69, 0, 0, 1106, 1108, 5, 122, 0, 0, 1107, 1106, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1122, 3, 472, 236, 0, 1110, 1112, 5, 141, 0, 0, 1111, 1113, 5, 122, 0, 0, 1112, 1111, 1, 0, 0, 0, 1112, 1113, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1122, 3, 556, 278, 0, 1115, 1118, 5, 138, 0, 0, 1116, 1118, 5, 122, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1122, 3, 62, 31, 0, 1120, 1122, 3, 62, 31, 0, 1121, 1099, 1, 0, 0, 0, 1121, 1105, 1, 0, 0, 0, 1121, 1110, 1, 0, 0, 0, 1121, 1117, 1, 0, 0, 0, 1121, 1120, 1, 0, 0, 0, 1122, 65, 1, 0, 0, 0, 1123, 1124, 5, 10, 0, 0, 1124, 1125, 5, 329, 0, 0, 1125, 1138, 3, 624, 312, 0, 1126, 1127, 5, 52, 0, 0, 1127, 1134, 5, 319, 0, 0, 1128, 1135, 5, 215, 0, 0, 1129, 1130, 5, 134, 0, 0, 1130, 1132, 5, 46, 0, 0, 1131, 1133, 3, 254, 127, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1135, 1, 0, 0, 0, 1134, 1128, 1, 0, 0, 0, 1134, 1129, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1139, 1, 0, 0, 0, 1136, 1137, 5, 33, 0, 0, 1137, 1139, 5, 204, 0, 0, 1138, 1126, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 67, 1, 0, 0, 0, 1140, 1141, 7, 5, 0, 0, 1141, 69, 1, 0, 0, 0, 1142, 1143, 7, 6, 0, 0, 1143, 71, 1, 0, 0, 0, 1144, 1145, 5, 308, 0, 0, 1145, 1148, 7, 7, 0, 0, 1146, 1147, 5, 184, 0, 0, 1147, 1149, 3, 194, 97, 0, 1148, 1146, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 1328, 1, 0, 0, 0, 1150, 1152, 5, 308, 0, 0, 1151, 1153, 5, 122, 0, 0, 1152, 1151, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1158, 5, 330, 0, 0, 1155, 1156, 3, 68, 34, 0, 1156, 1157, 3, 472, 236, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1155, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1161, 1, 0, 0, 0, 1160, 1162, 3, 74, 37, 0, 1161, 1160, 1, 0, 0, 0, 1161, 1162, 1, 0, 0, 0, 1162, 1328, 1, 0, 0, 0, 1163, 1164, 5, 308, 0, 0, 1164, 1168, 5, 379, 0, 0, 1165, 1166, 3, 68, 34, 0, 1166, 1167, 3, 472, 236, 0, 1167, 1169, 1, 0, 0, 0, 1168, 1165, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1173, 1, 0, 0, 0, 1170, 1171, 5, 184, 0, 0, 1171, 1174, 3, 194, 97, 0, 1172, 1174, 3, 194, 97, 0, 1173, 1170, 1, 0, 0, 0, 1173, 1172, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1328, 1, 0, 0, 0, 1175, 1176, 5, 308, 0, 0, 1176, 1177, 5, 202, 0, 0, 1177, 1181, 5, 379, 0, 0, 1178, 1179, 3, 68, 34, 0, 1179, 1180, 3, 472, 236, 0, 1180, 1182, 1, 0, 0, 0, 1181, 1178, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1186, 1, 0, 0, 0, 1183, 1184, 5, 184, 0, 0, 1184, 1187, 3, 194, 97, 0, 1185, 1187, 3, 194, 97, 0, 1186, 1183, 1, 0, 0, 0, 1186, 1185, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1328, 1, 0, 0, 0, 1188, 1190, 5, 308, 0, 0, 1189, 1191, 5, 315, 0, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 5, 46, 0, 0, 1193, 1194, 3, 68, 34, 0, 1194, 1198, 3, 476, 238, 0, 1195, 1196, 3, 68, 34, 0, 1196, 1197, 3, 472, 236, 0, 1197, 1199, 1, 0, 0, 0, 1198, 1195, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1203, 1, 0, 0, 0, 1200, 1201, 5, 184, 0, 0, 1201, 1204, 3, 194, 97, 0, 1202, 1204, 3, 194, 97, 0, 1203, 1200, 1, 0, 0, 0, 1203, 1202, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1328, 1, 0, 0, 0, 1205, 1206, 5, 308, 0, 0, 1206, 1209, 5, 142, 0, 0, 1207, 1208, 5, 184, 0, 0, 1208, 1210, 3, 556, 278, 0, 1209, 1207, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1328, 1, 0, 0, 0, 1211, 1212, 5, 308, 0, 0, 1212, 1213, 5, 239, 0, 0, 1213, 1215, 3, 476, 238, 0, 1214, 1216, 3, 626, 313, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 1, 0, 0, 0, 1217, 1219, 3, 494, 247, 0, 1218, 1217, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1221, 1, 0, 0, 0, 1220, 1222, 3, 542, 271, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1225, 3, 386, 193, 0, 1224, 1223, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1328, 1, 0, 0, 0, 1226, 1227, 5, 308, 0, 0, 1227, 1233, 5, 58, 0, 0, 1228, 1229, 3, 70, 35, 0, 1229, 1230, 3, 472, 236, 0, 1230, 1234, 1, 0, 0, 0, 1231, 1232, 5, 329, 0, 0, 1232, 1234, 3, 478, 239, 0, 1233, 1228, 1, 0, 0, 0, 1233, 1231, 1, 0, 0, 0, 1234, 1328, 1, 0, 0, 0, 1235, 1236, 5, 308, 0, 0, 1236, 1237, 5, 329, 0, 0, 1237, 1241, 5, 122, 0, 0, 1238, 1239, 3, 68, 34, 0, 1239, 1240, 3, 472, 236, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1238, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 1, 0, 0, 0, 1243, 1244, 5, 184, 0, 0, 1244, 1246, 3, 194, 97, 0, 1245, 1247, 3, 626, 313, 0, 1246, 1245, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 1328, 1, 0, 0, 0, 1248, 1249, 5, 308, 0, 0, 1249, 1250, 5, 332, 0, 0, 1250, 1254, 3, 478, 239, 0, 1251, 1252, 5, 399, 0, 0, 1252, 1253, 5, 426, 0, 0, 1253, 1255, 5, 400, 0, 0, 1254, 1251, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1328, 1, 0, 0, 0, 1256, 1257, 5, 308, 0, 0, 1257, 1269, 5, 191, 0, 0, 1258, 1259, 3, 70, 35, 0, 1259, 1261, 3, 472, 236, 0, 1260, 1262, 5, 122, 0, 0, 1261, 1260, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1270, 1, 0, 0, 0, 1263, 1265, 3, 60, 30, 0, 1264, 1263, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1267, 1, 0, 0, 0, 1266, 1268, 5, 122, 0, 0, 1267, 1266, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 1, 0, 0, 0, 1269, 1258, 1, 0, 0, 0, 1269, 1264, 1, 0, 0, 0, 1270, 1328, 1, 0, 0, 0, 1271, 1272, 5, 308, 0, 0, 1272, 1299, 5, 50, 0, 0, 1273, 1274, 5, 51, 0, 0, 1274, 1275, 5, 405, 0, 0, 1275, 1300, 5, 431, 0, 0, 1276, 1277, 3, 70, 35, 0, 1277, 1278, 3, 472, 236, 0, 1278, 1283, 1, 0, 0, 0, 1279, 1281, 3, 60, 30, 0, 1280, 1279, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1283, 1, 0, 0, 0, 1282, 1276, 1, 0, 0, 0, 1282, 1280, 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1286, 3, 406, 203, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1288, 1, 0, 0, 0, 1287, 1289, 3, 408, 204, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1291, 1, 0, 0, 0, 1290, 1292, 3, 410, 205, 0, 1291, 1290, 1, 0, 0, 0, 1291, 1292, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1295, 3, 542, 271, 0, 1294, 1293, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1297, 1, 0, 0, 0, 1296, 1298, 3, 386, 193, 0, 1297, 1296, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1300, 1, 0, 0, 0, 1299, 1273, 1, 0, 0, 0, 1299, 1282, 1, 0, 0, 0, 1300, 1328, 1, 0, 0, 0, 1301, 1302, 5, 308, 0, 0, 1302, 1328, 5, 346, 0, 0, 1303, 1304, 5, 308, 0, 0, 1304, 1305, 5, 54, 0, 0, 1305, 1328, 5, 426, 0, 0, 1306, 1307, 5, 308, 0, 0, 1307, 1311, 5, 280, 0, 0, 1308, 1309, 5, 243, 0, 0, 1309, 1312, 3, 638, 319, 0, 1310, 1312, 5, 244, 0, 0, 1311, 1308, 1, 0, 0, 0, 1311, 1310, 1, 0, 0, 0, 1312, 1328, 1, 0, 0, 0, 1313, 1314, 5, 308, 0, 0, 1314, 1328, 5, 70, 0, 0, 1315, 1317, 5, 308, 0, 0, 1316, 1318, 5, 138, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 7, 8, 0, 0, 1320, 1321, 5, 224, 0, 0, 1321, 1325, 3, 478, 239, 0, 1322, 1323, 3, 68, 34, 0, 1323, 1324, 3, 472, 236, 0, 1324, 1326, 1, 0, 0, 0, 1325, 1322, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1328, 1, 0, 0, 0, 1327, 1144, 1, 0, 0, 0, 1327, 1150, 1, 0, 0, 0, 1327, 1163, 1, 0, 0, 0, 1327, 1175, 1, 0, 0, 0, 1327, 1188, 1, 0, 0, 0, 1327, 1205, 1, 0, 0, 0, 1327, 1211, 1, 0, 0, 0, 1327, 1226, 1, 0, 0, 0, 1327, 1235, 1, 0, 0, 0, 1327, 1248, 1, 0, 0, 0, 1327, 1256, 1, 0, 0, 0, 1327, 1271, 1, 0, 0, 0, 1327, 1301, 1, 0, 0, 0, 1327, 1303, 1, 0, 0, 0, 1327, 1306, 1, 0, 0, 0, 1327, 1313, 1, 0, 0, 0, 1327, 1315, 1, 0, 0, 0, 1328, 73, 1, 0, 0, 0, 1329, 1330, 5, 384, 0, 0, 1330, 1331, 3, 638, 319, 0, 1331, 1332, 5, 405, 0, 0, 1332, 1333, 5, 426, 0, 0, 1333, 1338, 1, 0, 0, 0, 1334, 1335, 5, 184, 0, 0, 1335, 1338, 3, 194, 97, 0, 1336, 1338, 3, 194, 97, 0, 1337, 1329, 1, 0, 0, 0, 1337, 1334, 1, 0, 0, 0, 1337, 1336, 1, 0, 0, 0, 1338, 75, 1, 0, 0, 0, 1339, 1340, 5, 190, 0, 0, 1340, 1341, 5, 329, 0, 0, 1341, 1342, 3, 624, 312, 0, 1342, 1343, 3, 80, 40, 0, 1343, 77, 1, 0, 0, 0, 1344, 1345, 5, 190, 0, 0, 1345, 1346, 3, 70, 35, 0, 1346, 1347, 3, 472, 236, 0, 1347, 1348, 3, 80, 40, 0, 1348, 79, 1, 0, 0, 0, 1349, 1350, 7, 9, 0, 0, 1350, 81, 1, 0, 0, 0, 1351, 1352, 5, 361, 0, 0, 1352, 1353, 5, 329, 0, 0, 1353, 1354, 3, 624, 312, 0, 1354, 83, 1, 0, 0, 0, 1355, 1356, 5, 361, 0, 0, 1356, 1357, 3, 70, 35, 0, 1357, 1358, 3, 472, 236, 0, 1358, 85, 1, 0, 0, 0, 1359, 1360, 5, 58, 0, 0, 1360, 1361, 5, 287, 0, 0, 1361, 1362, 3, 638, 319, 0, 1362, 87, 1, 0, 0, 0, 1363, 1364, 5, 101, 0, 0, 1364, 1365, 5, 287, 0, 0, 1365, 1366, 3, 638, 319, 0, 1366, 89, 1, 0, 0, 0, 1367, 1368, 5, 143, 0, 0, 1368, 1370, 3, 118, 59, 0, 1369, 1371, 3, 112, 56, 0, 1370, 1369, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 5, 341, 0, 0, 1373, 1375, 3, 124, 62, 0, 1374, 1376, 3, 130, 65, 0, 1375, 1374, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 91, 1, 0, 0, 0, 1377, 1379, 5, 283, 0, 0, 1378, 1380, 3, 132, 66, 0, 1379, 1378, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1383, 3, 118, 59, 0, 1382, 1384, 3, 112, 56, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1386, 5, 139, 0, 0, 1386, 1387, 3, 124, 62, 0, 1387, 93, 1, 0, 0, 0, 1388, 1390, 5, 143, 0, 0, 1389, 1391, 5, 287, 0, 0, 1390, 1389, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1392, 1, 0, 0, 0, 1392, 1397, 3, 638, 319, 0, 1393, 1394, 5, 397, 0, 0, 1394, 1396, 3, 638, 319, 0, 1395, 1393, 1, 0, 0, 0, 1396, 1399, 1, 0, 0, 0, 1397, 1395, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1400, 1, 0, 0, 0, 1399, 1397, 1, 0, 0, 0, 1400, 1401, 5, 341, 0, 0, 1401, 1403, 3, 124, 62, 0, 1402, 1404, 3, 136, 68, 0, 1403, 1402, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 95, 1, 0, 0, 0, 1405, 1407, 5, 283, 0, 0, 1406, 1408, 3, 134, 67, 0, 1407, 1406, 1, 0, 0, 0, 1407, 1408, 1, 0, 0, 0, 1408, 1410, 1, 0, 0, 0, 1409, 1411, 5, 287, 0, 0, 1410, 1409, 1, 0, 0, 0, 1410, 1411, 1, 0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 1417, 3, 638, 319, 0, 1413, 1414, 5, 397, 0, 0, 1414, 1416, 3, 638, 319, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1419, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1420, 1, 0, 0, 0, 1419, 1417, 1, 0, 0, 0, 1420, 1421, 5, 139, 0, 0, 1421, 1422, 3, 124, 62, 0, 1422, 97, 1, 0, 0, 0, 1423, 1424, 5, 308, 0, 0, 1424, 1425, 5, 287, 0, 0, 1425, 1426, 5, 143, 0, 0, 1426, 1427, 3, 126, 63, 0, 1427, 99, 1, 0, 0, 0, 1428, 1429, 5, 308, 0, 0, 1429, 1430, 5, 288, 0, 0, 1430, 101, 1, 0, 0, 0, 1431, 1432, 5, 308, 0, 0, 1432, 1433, 5, 62, 0, 0, 1433, 1434, 5, 288, 0, 0, 1434, 103, 1, 0, 0, 0, 1435, 1436, 5, 304, 0, 0, 1436, 1440, 5, 287, 0, 0, 1437, 1441, 5, 7, 0, 0, 1438, 1441, 5, 213, 0, 0, 1439, 1441, 3, 638, 319, 0, 1440, 1437, 1, 0, 0, 0, 1440, 1438, 1, 0, 0, 0, 1440, 1439, 1, 0, 0, 0, 1441, 105, 1, 0, 0, 0, 1442, 1443, 5, 308, 0, 0, 1443, 1445, 5, 143, 0, 0, 1444, 1446, 3, 126, 63, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1449, 1, 0, 0, 0, 1447, 1448, 5, 224, 0, 0, 1448, 1450, 3, 110, 55, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 107, 1, 0, 0, 0, 1451, 1452, 5, 308, 0, 0, 1452, 1453, 5, 252, 0, 0, 1453, 1454, 3, 638, 319, 0, 1454, 109, 1, 0, 0, 0, 1455, 1458, 5, 7, 0, 0, 1456, 1458, 3, 116, 58, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1456, 1, 0, 0, 0, 1458, 111, 1, 0, 0, 0, 1459, 1460, 5, 224, 0, 0, 1460, 1461, 3, 114, 57, 0, 1461, 113, 1, 0, 0, 0, 1462, 1463, 3, 70, 35, 0, 1463, 1464, 3, 472, 236, 0, 1464, 1474, 1, 0, 0, 0, 1465, 1467, 5, 329, 0, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1474, 3, 624, 312, 0, 1469, 1470, 5, 366, 0, 0, 1470, 1474, 5, 426, 0, 0, 1471, 1472, 5, 303, 0, 0, 1472, 1474, 3, 638, 319, 0, 1473, 1462, 1, 0, 0, 0, 1473, 1466, 1, 0, 0, 0, 1473, 1469, 1, 0, 0, 0, 1473, 1471, 1, 0, 0, 0, 1474, 115, 1, 0, 0, 0, 1475, 1476, 3, 70, 35, 0, 1476, 1477, 3, 472, 236, 0, 1477, 1496, 1, 0, 0, 0, 1478, 1480, 5, 329, 0, 0, 1479, 1478, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1486, 3, 478, 239, 0, 1482, 1483, 5, 399, 0, 0, 1483, 1484, 3, 254, 127, 0, 1484, 1485, 5, 400, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1482, 1, 0, 0, 0, 1486, 1487, 1, 0, 0, 0, 1487, 1489, 1, 0, 0, 0, 1488, 1490, 3, 626, 313, 0, 1489, 1488, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1496, 1, 0, 0, 0, 1491, 1492, 5, 366, 0, 0, 1492, 1496, 5, 426, 0, 0, 1493, 1494, 5, 303, 0, 0, 1494, 1496, 3, 638, 319, 0, 1495, 1475, 1, 0, 0, 0, 1495, 1479, 1, 0, 0, 0, 1495, 1491, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 117, 1, 0, 0, 0, 1497, 1502, 3, 120, 60, 0, 1498, 1499, 5, 397, 0, 0, 1499, 1501, 3, 120, 60, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1504, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 119, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1510, 3, 122, 61, 0, 1506, 1507, 5, 399, 0, 0, 1507, 1508, 3, 254, 127, 0, 1508, 1509, 5, 400, 0, 0, 1509, 1511, 1, 0, 0, 0, 1510, 1506, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 121, 1, 0, 0, 0, 1512, 1513, 7, 10, 0, 0, 1513, 123, 1, 0, 0, 0, 1514, 1519, 3, 126, 63, 0, 1515, 1516, 5, 397, 0, 0, 1516, 1518, 3, 126, 63, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 125, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 369, 0, 0, 1523, 1529, 3, 642, 321, 0, 1524, 1525, 5, 144, 0, 0, 1525, 1529, 3, 642, 321, 0, 1526, 1527, 5, 287, 0, 0, 1527, 1529, 3, 638, 319, 0, 1528, 1522, 1, 0, 0, 0, 1528, 1524, 1, 0, 0, 0, 1528, 1526, 1, 0, 0, 0, 1529, 127, 1, 0, 0, 0, 1530, 1531, 5, 369, 0, 0, 1531, 1536, 3, 642, 321, 0, 1532, 1533, 5, 287, 0, 0, 1533, 1536, 3, 638, 319, 0, 1534, 1536, 3, 638, 319, 0, 1535, 1530, 1, 0, 0, 0, 1535, 1532, 1, 0, 0, 0, 1535, 1534, 1, 0, 0, 0, 1536, 129, 1, 0, 0, 0, 1537, 1538, 5, 387, 0, 0, 1538, 1539, 5, 143, 0, 0, 1539, 1540, 5, 227, 0, 0, 1540, 131, 1, 0, 0, 0, 1541, 1542, 5, 143, 0, 0, 1542, 1543, 5, 227, 0, 0, 1543, 1544, 5, 134, 0, 0, 1544, 133, 1, 0, 0, 0, 1545, 1546, 5, 5, 0, 0, 1546, 1547, 5, 227, 0, 0, 1547, 1548, 5, 134, 0, 0, 1548, 135, 1, 0, 0, 0, 1549, 1550, 5, 387, 0, 0, 1550, 1551, 5, 5, 0, 0, 1551, 1552, 5, 227, 0, 0, 1552, 137, 1, 0, 0, 0, 1553, 1555, 5, 212, 0, 0, 1554, 1556, 5, 276, 0, 0, 1555, 1554, 1, 0, 0, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 5, 329, 0, 0, 1558, 1564, 3, 478, 239, 0, 1559, 1560, 7, 11, 0, 0, 1560, 1562, 5, 239, 0, 0, 1561, 1563, 3, 630, 315, 0, 1562, 1561, 1, 0, 0, 0, 1562, 1563, 1, 0, 0, 0, 1563, 1565, 1, 0, 0, 0, 1564, 1559, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 139, 1, 0, 0, 0, 1566, 1571, 3, 142, 71, 0, 1567, 1568, 5, 397, 0, 0, 1568, 1570, 3, 142, 71, 0, 1569, 1567, 1, 0, 0, 0, 1570, 1573, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 141, 1, 0, 0, 0, 1573, 1571, 1, 0, 0, 0, 1574, 1575, 3, 144, 72, 0, 1575, 1576, 5, 426, 0, 0, 1576, 143, 1, 0, 0, 0, 1577, 1578, 7, 12, 0, 0, 1578, 145, 1, 0, 0, 0, 1579, 1581, 5, 58, 0, 0, 1580, 1582, 5, 333, 0, 0, 1581, 1580, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1583, 1, 0, 0, 0, 1583, 1584, 5, 141, 0, 0, 1584, 1585, 3, 554, 277, 0, 1585, 1586, 5, 17, 0, 0, 1586, 1589, 5, 426, 0, 0, 1587, 1588, 5, 370, 0, 0, 1588, 1590, 3, 140, 70, 0, 1589, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 147, 1, 0, 0, 0, 1591, 1593, 5, 101, 0, 0, 1592, 1594, 5, 333, 0, 0, 1593, 1592, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1597, 5, 141, 0, 0, 1596, 1598, 3, 30, 15, 0, 1597, 1596, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1599, 1, 0, 0, 0, 1599, 1600, 3, 556, 278, 0, 1600, 149, 1, 0, 0, 0, 1601, 1602, 5, 271, 0, 0, 1602, 1603, 7, 13, 0, 0, 1603, 151, 1, 0, 0, 0, 1604, 1605, 5, 58, 0, 0, 1605, 1606, 5, 333, 0, 0, 1606, 1607, 5, 194, 0, 0, 1607, 1608, 5, 432, 0, 0, 1608, 1610, 5, 399, 0, 0, 1609, 1611, 3, 248, 124, 0, 1610, 1609, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1613, 5, 400, 0, 0, 1613, 1614, 3, 580, 290, 0, 1614, 153, 1, 0, 0, 0, 1615, 1616, 5, 101, 0, 0, 1616, 1617, 5, 333, 0, 0, 1617, 1619, 5, 194, 0, 0, 1618, 1620, 3, 30, 15, 0, 1619, 1618, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1622, 5, 432, 0, 0, 1622, 155, 1, 0, 0, 0, 1623, 1624, 5, 58, 0, 0, 1624, 1625, 5, 155, 0, 0, 1625, 1626, 3, 638, 319, 0, 1626, 1627, 5, 224, 0, 0, 1627, 1628, 5, 329, 0, 0, 1628, 1629, 3, 478, 239, 0, 1629, 1630, 3, 264, 132, 0, 1630, 1631, 5, 17, 0, 0, 1631, 1635, 5, 426, 0, 0, 1632, 1633, 5, 387, 0, 0, 1633, 1634, 5, 84, 0, 0, 1634, 1636, 5, 265, 0, 0, 1635, 1632, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1639, 1, 0, 0, 0, 1637, 1638, 5, 150, 0, 0, 1638, 1640, 3, 226, 113, 0, 1639, 1637, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 1644, 1, 0, 0, 0, 1641, 1642, 5, 154, 0, 0, 1642, 1643, 5, 329, 0, 0, 1643, 1645, 3, 478, 239, 0, 1644, 1641, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1649, 1, 0, 0, 0, 1646, 1647, 5, 238, 0, 0, 1647, 1648, 5, 32, 0, 0, 1648, 1650, 3, 264, 132, 0, 1649, 1646, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1655, 1, 0, 0, 0, 1651, 1653, 3, 222, 111, 0, 1652, 1651, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1656, 3, 246, 123, 0, 1655, 1652, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1658, 1, 0, 0, 0, 1657, 1659, 3, 424, 212, 0, 1658, 1657, 1, 0, 0, 0, 1658, 1659, 1, 0, 0, 0, 1659, 1661, 1, 0, 0, 0, 1660, 1662, 3, 224, 112, 0, 1661, 1660, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662, 1664, 1, 0, 0, 0, 1663, 1665, 3, 196, 98, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 157, 1, 0, 0, 0, 1666, 1667, 5, 101, 0, 0, 1667, 1669, 5, 155, 0, 0, 1668, 1670, 3, 30, 15, 0, 1669, 1668, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 1671, 1, 0, 0, 0, 1671, 1672, 3, 638, 319, 0, 1672, 1673, 5, 224, 0, 0, 1673, 1674, 3, 478, 239, 0, 1674, 159, 1, 0, 0, 0, 1675, 1678, 5, 58, 0, 0, 1676, 1677, 5, 228, 0, 0, 1677, 1679, 5, 278, 0, 0, 1678, 1676, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1682, 5, 378, 0, 0, 1681, 1683, 3, 32, 16, 0, 1682, 1681, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1689, 3, 484, 242, 0, 1685, 1686, 5, 399, 0, 0, 1686, 1687, 3, 304, 152, 0, 1687, 1688, 5, 400, 0, 0, 1688, 1690, 1, 0, 0, 0, 1689, 1685, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1692, 1, 0, 0, 0, 1691, 1693, 3, 196, 98, 0, 1692, 1691, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1695, 1, 0, 0, 0, 1694, 1696, 3, 162, 81, 0, 1695, 1694, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1698, 1, 0, 0, 0, 1697, 1699, 3, 224, 112, 0, 1698, 1697, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 5, 17, 0, 0, 1701, 1702, 3, 380, 190, 0, 1702, 161, 1, 0, 0, 0, 1703, 1704, 5, 238, 0, 0, 1704, 1710, 5, 224, 0, 0, 1705, 1706, 5, 399, 0, 0, 1706, 1711, 3, 254, 127, 0, 1707, 1708, 5, 316, 0, 0, 1708, 1709, 5, 399, 0, 0, 1709, 1711, 3, 204, 102, 0, 1710, 1705, 1, 0, 0, 0, 1710, 1707, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1713, 5, 400, 0, 0, 1713, 163, 1, 0, 0, 0, 1714, 1717, 3, 166, 83, 0, 1715, 1717, 3, 168, 84, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1715, 1, 0, 0, 0, 1717, 165, 1, 0, 0, 0, 1718, 1719, 5, 42, 0, 0, 1719, 1720, 5, 224, 0, 0, 1720, 1721, 5, 399, 0, 0, 1721, 1722, 3, 254, 127, 0, 1722, 1723, 5, 400, 0, 0, 1723, 167, 1, 0, 0, 0, 1724, 1725, 3, 170, 85, 0, 1725, 1726, 3, 172, 86, 0, 1726, 169, 1, 0, 0, 0, 1727, 1728, 5, 98, 0, 0, 1728, 1729, 5, 224, 0, 0, 1729, 1730, 5, 399, 0, 0, 1730, 1731, 3, 254, 127, 0, 1731, 1732, 5, 400, 0, 0, 1732, 171, 1, 0, 0, 0, 1733, 1734, 5, 315, 0, 0, 1734, 1735, 5, 224, 0, 0, 1735, 1736, 5, 399, 0, 0, 1736, 1737, 3, 254, 127, 0, 1737, 1738, 5, 400, 0, 0, 1738, 173, 1, 0, 0, 0, 1739, 1740, 5, 101, 0, 0, 1740, 1742, 5, 378, 0, 0, 1741, 1743, 3, 30, 15, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1745, 3, 482, 241, 0, 1745, 175, 1, 0, 0, 0, 1746, 1747, 5, 58, 0, 0, 1747, 1748, 5, 202, 0, 0, 1748, 1750, 5, 378, 0, 0, 1749, 1751, 3, 32, 16, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1754, 3, 484, 242, 0, 1753, 1755, 3, 38, 19, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1758, 3, 196, 98, 0, 1757, 1756, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 1, 0, 0, 0, 1759, 1761, 3, 162, 81, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1763, 1, 0, 0, 0, 1762, 1764, 3, 164, 82, 0, 1763, 1762, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1766, 1, 0, 0, 0, 1765, 1767, 3, 222, 111, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1769, 1, 0, 0, 0, 1768, 1770, 3, 246, 123, 0, 1769, 1768, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1772, 1, 0, 0, 0, 1771, 1773, 3, 424, 212, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1775, 1, 0, 0, 0, 1774, 1776, 3, 224, 112, 0, 1775, 1774, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 5, 17, 0, 0, 1778, 1779, 3, 380, 190, 0, 1779, 177, 1, 0, 0, 0, 1780, 1781, 5, 101, 0, 0, 1781, 1782, 5, 202, 0, 0, 1782, 1784, 5, 378, 0, 0, 1783, 1785, 3, 30, 15, 0, 1784, 1783, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1787, 3, 482, 241, 0, 1787, 179, 1, 0, 0, 0, 1788, 1789, 5, 58, 0, 0, 1789, 1790, 5, 293, 0, 0, 1790, 1791, 5, 258, 0, 0, 1791, 1792, 3, 638, 319, 0, 1792, 1794, 3, 188, 94, 0, 1793, 1795, 3, 190, 95, 0, 1794, 1793, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 1797, 1, 0, 0, 0, 1796, 1798, 3, 268, 134, 0, 1797, 1796, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 1, 0, 0, 0, 1799, 1800, 3, 192, 96, 0, 1800, 181, 1, 0, 0, 0, 1801, 1802, 5, 101, 0, 0, 1802, 1803, 5, 293, 0, 0, 1803, 1804, 5, 258, 0, 0, 1804, 1805, 3, 638, 319, 0, 1805, 183, 1, 0, 0, 0, 1806, 1807, 5, 9, 0, 0, 1807, 1808, 5, 293, 0, 0, 1808, 1809, 5, 258, 0, 0, 1809, 1810, 3, 638, 319, 0, 1810, 1811, 3, 186, 93, 0, 1811, 185, 1, 0, 0, 0, 1812, 1818, 3, 188, 94, 0, 1813, 1818, 3, 190, 95, 0, 1814, 1818, 3, 268, 134, 0, 1815, 1818, 3, 192, 96, 0, 1816, 1818, 5, 115, 0, 0, 1817, 1812, 1, 0, 0, 0, 1817, 1813, 1, 0, 0, 0, 1817, 1814, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1816, 1, 0, 0, 0, 1818, 187, 1, 0, 0, 0, 1819, 1820, 5, 59, 0, 0, 1820, 1835, 5, 426, 0, 0, 1821, 1823, 5, 111, 0, 0, 1822, 1824, 5, 431, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1832, 3, 578, 289, 0, 1826, 1830, 5, 20, 0, 0, 1827, 1828, 5, 223, 0, 0, 1828, 1830, 5, 32, 0, 0, 1829, 1826, 1, 0, 0, 0, 1829, 1827, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1833, 5, 426, 0, 0, 1832, 1829, 1, 0, 0, 0, 1832, 1833, 1, 0, 0, 0, 1833, 1835, 1, 0, 0, 0, 1834, 1819, 1, 0, 0, 0, 1834, 1821, 1, 0, 0, 0, 1835, 189, 1, 0, 0, 0, 1836, 1837, 5, 116, 0, 0, 1837, 1838, 5, 17, 0, 0, 1838, 1839, 5, 426, 0, 0, 1839, 191, 1, 0, 0, 0, 1840, 1842, 5, 85, 0, 0, 1841, 1840, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 5, 17, 0, 0, 1844, 1845, 3, 2, 1, 0, 1845, 193, 1, 0, 0, 0, 1846, 1849, 3, 638, 319, 0, 1847, 1849, 5, 426, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1847, 1, 0, 0, 0, 1849, 195, 1, 0, 0, 0, 1850, 1851, 5, 47, 0, 0, 1851, 1852, 5, 426, 0, 0, 1852, 197, 1, 0, 0, 0, 1853, 1854, 5, 183, 0, 0, 1854, 1855, 5, 431, 0, 0, 1855, 199, 1, 0, 0, 0, 1856, 1857, 5, 238, 0, 0, 1857, 1866, 5, 32, 0, 0, 1858, 1861, 5, 399, 0, 0, 1859, 1862, 3, 202, 101, 0, 1860, 1862, 3, 254, 127, 0, 1861, 1859, 1, 0, 0, 0, 1861, 1860, 1, 0, 0, 0, 1862, 1867, 1, 0, 0, 0, 1863, 1864, 5, 316, 0, 0, 1864, 1865, 5, 399, 0, 0, 1865, 1867, 3, 204, 102, 0, 1866, 1858, 1, 0, 0, 0, 1866, 1863, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1869, 5, 400, 0, 0, 1869, 201, 1, 0, 0, 0, 1870, 1875, 3, 316, 158, 0, 1871, 1872, 5, 397, 0, 0, 1872, 1874, 3, 316, 158, 0, 1873, 1871, 1, 0, 0, 0, 1874, 1877, 1, 0, 0, 0, 1875, 1873, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 203, 1, 0, 0, 0, 1877, 1875, 1, 0, 0, 0, 1878, 1883, 3, 206, 103, 0, 1879, 1880, 5, 397, 0, 0, 1880, 1882, 3, 206, 103, 0, 1881, 1879, 1, 0, 0, 0, 1882, 1885, 1, 0, 0, 0, 1883, 1881, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 205, 1, 0, 0, 0, 1885, 1883, 1, 0, 0, 0, 1886, 1905, 3, 256, 128, 0, 1887, 1892, 3, 666, 333, 0, 1888, 1892, 3, 668, 334, 0, 1889, 1892, 3, 672, 336, 0, 1890, 1892, 3, 674, 337, 0, 1891, 1887, 1, 0, 0, 0, 1891, 1888, 1, 0, 0, 0, 1891, 1889, 1, 0, 0, 0, 1891, 1890, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1894, 5, 399, 0, 0, 1894, 1895, 3, 256, 128, 0, 1895, 1896, 5, 400, 0, 0, 1896, 1905, 1, 0, 0, 0, 1897, 1898, 7, 14, 0, 0, 1898, 1899, 5, 399, 0, 0, 1899, 1900, 5, 431, 0, 0, 1900, 1901, 5, 397, 0, 0, 1901, 1902, 3, 256, 128, 0, 1902, 1903, 5, 400, 0, 0, 1903, 1905, 1, 0, 0, 0, 1904, 1886, 1, 0, 0, 0, 1904, 1891, 1, 0, 0, 0, 1904, 1897, 1, 0, 0, 0, 1905, 207, 1, 0, 0, 0, 1906, 1907, 5, 42, 0, 0, 1907, 1908, 5, 32, 0, 0, 1908, 1909, 5, 399, 0, 0, 1909, 1910, 3, 254, 127, 0, 1910, 1917, 5, 400, 0, 0, 1911, 1912, 5, 315, 0, 0, 1912, 1913, 5, 32, 0, 0, 1913, 1914, 5, 399, 0, 0, 1914, 1915, 3, 262, 131, 0, 1915, 1916, 5, 400, 0, 0, 1916, 1918, 1, 0, 0, 0, 1917, 1911, 1, 0, 0, 0, 1917, 1918, 1, 0, 0, 0, 1918, 1919, 1, 0, 0, 0, 1919, 1920, 5, 166, 0, 0, 1920, 1921, 5, 431, 0, 0, 1921, 1922, 5, 31, 0, 0, 1922, 209, 1, 0, 0, 0, 1923, 1924, 5, 310, 0, 0, 1924, 1925, 5, 32, 0, 0, 1925, 1926, 5, 399, 0, 0, 1926, 1927, 3, 254, 127, 0, 1927, 1928, 5, 400, 0, 0, 1928, 1929, 5, 224, 0, 0, 1929, 1930, 5, 399, 0, 0, 1930, 1931, 3, 290, 145, 0, 1931, 1933, 5, 400, 0, 0, 1932, 1934, 3, 40, 20, 0, 1933, 1932, 1, 0, 0, 0, 1933, 1934, 1, 0, 0, 0, 1934, 211, 1, 0, 0, 0, 1935, 1938, 3, 218, 109, 0, 1936, 1938, 3, 220, 110, 0, 1937, 1935, 1, 0, 0, 0, 1937, 1936, 1, 0, 0, 0, 1938, 213, 1, 0, 0, 0, 1939, 1940, 5, 266, 0, 0, 1940, 1941, 5, 426, 0, 0, 1941, 215, 1, 0, 0, 0, 1942, 1943, 5, 267, 0, 0, 1943, 1944, 5, 426, 0, 0, 1944, 217, 1, 0, 0, 0, 1945, 1946, 5, 291, 0, 0, 1946, 1947, 5, 137, 0, 0, 1947, 1948, 5, 301, 0, 0, 1948, 1952, 5, 426, 0, 0, 1949, 1950, 5, 387, 0, 0, 1950, 1951, 5, 302, 0, 0, 1951, 1953, 3, 226, 113, 0, 1952, 1949, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 219, 1, 0, 0, 0, 1954, 1955, 5, 291, 0, 0, 1955, 1956, 5, 137, 0, 0, 1956, 1958, 5, 87, 0, 0, 1957, 1959, 3, 236, 118, 0, 1958, 1957, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1961, 1, 0, 0, 0, 1960, 1962, 3, 238, 119, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1964, 1, 0, 0, 0, 1963, 1965, 3, 240, 120, 0, 1964, 1963, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1967, 1, 0, 0, 0, 1966, 1968, 3, 242, 121, 0, 1967, 1966, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1970, 1, 0, 0, 0, 1969, 1971, 3, 244, 122, 0, 1970, 1969, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 221, 1, 0, 0, 0, 1972, 1975, 3, 220, 110, 0, 1973, 1975, 3, 218, 109, 0, 1974, 1972, 1, 0, 0, 0, 1974, 1973, 1, 0, 0, 0, 1975, 223, 1, 0, 0, 0, 1976, 1977, 5, 332, 0, 0, 1977, 1978, 3, 226, 113, 0, 1978, 225, 1, 0, 0, 0, 1979, 1980, 5, 399, 0, 0, 1980, 1981, 3, 228, 114, 0, 1981, 1982, 5, 400, 0, 0, 1982, 227, 1, 0, 0, 0, 1983, 1993, 3, 232, 116, 0, 1984, 1989, 5, 426, 0, 0, 1985, 1986, 5, 397, 0, 0, 1986, 1988, 5, 426, 0, 0, 1987, 1985, 1, 0, 0, 0, 1988, 1991, 1, 0, 0, 0, 1989, 1987, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1993, 1, 0, 0, 0, 1991, 1989, 1, 0, 0, 0, 1992, 1983, 1, 0, 0, 0, 1992, 1984, 1, 0, 0, 0, 1993, 229, 1, 0, 0, 0, 1994, 1995, 5, 399, 0, 0, 1995, 1996, 3, 232, 116, 0, 1996, 1997, 5, 400, 0, 0, 1997, 231, 1, 0, 0, 0, 1998, 2003, 3, 234, 117, 0, 1999, 2000, 5, 397, 0, 0, 2000, 2002, 3, 234, 117, 0, 2001, 1999, 1, 0, 0, 0, 2002, 2005, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 233, 1, 0, 0, 0, 2005, 2003, 1, 0, 0, 0, 2006, 2007, 5, 426, 0, 0, 2007, 2008, 5, 405, 0, 0, 2008, 2009, 5, 426, 0, 0, 2009, 235, 1, 0, 0, 0, 2010, 2011, 5, 127, 0, 0, 2011, 2012, 5, 334, 0, 0, 2012, 2013, 5, 32, 0, 0, 2013, 2017, 5, 426, 0, 0, 2014, 2015, 5, 110, 0, 0, 2015, 2016, 5, 32, 0, 0, 2016, 2018, 5, 426, 0, 0, 2017, 2014, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 237, 1, 0, 0, 0, 2019, 2020, 5, 44, 0, 0, 2020, 2021, 5, 169, 0, 0, 2021, 2022, 5, 334, 0, 0, 2022, 2023, 5, 32, 0, 0, 2023, 2024, 5, 426, 0, 0, 2024, 239, 1, 0, 0, 0, 2025, 2026, 5, 198, 0, 0, 2026, 2027, 5, 174, 0, 0, 2027, 2028, 5, 334, 0, 0, 2028, 2029, 5, 32, 0, 0, 2029, 2030, 5, 426, 0, 0, 2030, 241, 1, 0, 0, 0, 2031, 2032, 5, 186, 0, 0, 2032, 2033, 5, 334, 0, 0, 2033, 2034, 5, 32, 0, 0, 2034, 2035, 5, 426, 0, 0, 2035, 243, 1, 0, 0, 0, 2036, 2037, 5, 219, 0, 0, 2037, 2038, 5, 85, 0, 0, 2038, 2039, 5, 17, 0, 0, 2039, 2040, 5, 426, 0, 0, 2040, 245, 1, 0, 0, 0, 2041, 2042, 5, 321, 0, 0, 2042, 2043, 5, 17, 0, 0, 2043, 2044, 5, 160, 0, 0, 2044, 2045, 5, 426, 0, 0, 2045, 2046, 5, 233, 0, 0, 2046, 2051, 5, 426, 0, 0, 2047, 2048, 5, 159, 0, 0, 2048, 2049, 5, 426, 0, 0, 2049, 2050, 5, 232, 0, 0, 2050, 2052, 5, 426, 0, 0, 2051, 2047, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2083, 1, 0, 0, 0, 2053, 2054, 5, 321, 0, 0, 2054, 2055, 5, 32, 0, 0, 2055, 2059, 5, 426, 0, 0, 2056, 2057, 5, 387, 0, 0, 2057, 2058, 5, 302, 0, 0, 2058, 2060, 3, 226, 113, 0, 2059, 2056, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2064, 1, 0, 0, 0, 2061, 2062, 5, 321, 0, 0, 2062, 2063, 5, 17, 0, 0, 2063, 2065, 3, 638, 319, 0, 2064, 2061, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2083, 1, 0, 0, 0, 2066, 2067, 5, 321, 0, 0, 2067, 2068, 5, 32, 0, 0, 2068, 2072, 3, 638, 319, 0, 2069, 2070, 5, 387, 0, 0, 2070, 2071, 5, 302, 0, 0, 2071, 2073, 3, 226, 113, 0, 2072, 2069, 1, 0, 0, 0, 2072, 2073, 1, 0, 0, 0, 2073, 2077, 1, 0, 0, 0, 2074, 2075, 5, 321, 0, 0, 2075, 2076, 5, 17, 0, 0, 2076, 2078, 3, 638, 319, 0, 2077, 2074, 1, 0, 0, 0, 2077, 2078, 1, 0, 0, 0, 2078, 2083, 1, 0, 0, 0, 2079, 2080, 5, 321, 0, 0, 2080, 2081, 5, 17, 0, 0, 2081, 2083, 3, 638, 319, 0, 2082, 2041, 1, 0, 0, 0, 2082, 2053, 1, 0, 0, 0, 2082, 2066, 1, 0, 0, 0, 2082, 2079, 1, 0, 0, 0, 2083, 247, 1, 0, 0, 0, 2084, 2089, 3, 310, 155, 0, 2085, 2086, 5, 397, 0, 0, 2086, 2088, 3, 310, 155, 0, 2087, 2085, 1, 0, 0, 0, 2088, 2091, 1, 0, 0, 0, 2089, 2087, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 249, 1, 0, 0, 0, 2091, 2089, 1, 0, 0, 0, 2092, 2097, 3, 312, 156, 0, 2093, 2094, 5, 397, 0, 0, 2094, 2096, 3, 312, 156, 0, 2095, 2093, 1, 0, 0, 0, 2096, 2099, 1, 0, 0, 0, 2097, 2095, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 251, 1, 0, 0, 0, 2099, 2097, 1, 0, 0, 0, 2100, 2105, 3, 340, 170, 0, 2101, 2102, 5, 397, 0, 0, 2102, 2104, 3, 340, 170, 0, 2103, 2101, 1, 0, 0, 0, 2104, 2107, 1, 0, 0, 0, 2105, 2103, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 253, 1, 0, 0, 0, 2107, 2105, 1, 0, 0, 0, 2108, 2113, 3, 256, 128, 0, 2109, 2110, 5, 397, 0, 0, 2110, 2112, 3, 256, 128, 0, 2111, 2109, 1, 0, 0, 0, 2112, 2115, 1, 0, 0, 0, 2113, 2111, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 255, 1, 0, 0, 0, 2115, 2113, 1, 0, 0, 0, 2116, 2119, 3, 682, 341, 0, 2117, 2119, 4, 128, 0, 0, 2118, 2116, 1, 0, 0, 0, 2118, 2117, 1, 0, 0, 0, 2119, 257, 1, 0, 0, 0, 2120, 2121, 3, 638, 319, 0, 2121, 259, 1, 0, 0, 0, 2122, 2132, 3, 256, 128, 0, 2123, 2128, 5, 395, 0, 0, 2124, 2129, 5, 104, 0, 0, 2125, 2129, 5, 175, 0, 0, 2126, 2129, 5, 375, 0, 0, 2127, 2129, 3, 638, 319, 0, 2128, 2124, 1, 0, 0, 0, 2128, 2125, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2128, 2127, 1, 0, 0, 0, 2129, 2131, 1, 0, 0, 0, 2130, 2123, 1, 0, 0, 0, 2131, 2134, 1, 0, 0, 0, 2132, 2130, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 261, 1, 0, 0, 0, 2134, 2132, 1, 0, 0, 0, 2135, 2140, 3, 302, 151, 0, 2136, 2137, 5, 397, 0, 0, 2137, 2139, 3, 302, 151, 0, 2138, 2136, 1, 0, 0, 0, 2139, 2142, 1, 0, 0, 0, 2140, 2138, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 263, 1, 0, 0, 0, 2142, 2140, 1, 0, 0, 0, 2143, 2144, 5, 399, 0, 0, 2144, 2145, 3, 254, 127, 0, 2145, 2146, 5, 400, 0, 0, 2146, 265, 1, 0, 0, 0, 2147, 2149, 3, 268, 134, 0, 2148, 2150, 3, 270, 135, 0, 2149, 2148, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2153, 1, 0, 0, 0, 2151, 2153, 3, 272, 136, 0, 2152, 2147, 1, 0, 0, 0, 2152, 2151, 1, 0, 0, 0, 2153, 267, 1, 0, 0, 0, 2154, 2157, 3, 662, 331, 0, 2155, 2157, 3, 664, 332, 0, 2156, 2154, 1, 0, 0, 0, 2156, 2155, 1, 0, 0, 0, 2157, 269, 1, 0, 0, 0, 2158, 2159, 7, 15, 0, 0, 2159, 271, 1, 0, 0, 0, 2160, 2164, 5, 109, 0, 0, 2161, 2162, 5, 216, 0, 0, 2162, 2164, 5, 109, 0, 0, 2163, 2160, 1, 0, 0, 0, 2163, 2161, 1, 0, 0, 0, 2164, 273, 1, 0, 0, 0, 2165, 2166, 7, 16, 0, 0, 2166, 275, 1, 0, 0, 0, 2167, 2168, 5, 55, 0, 0, 2168, 2170, 3, 638, 319, 0, 2169, 2167, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2173, 3, 280, 140, 0, 2172, 2174, 3, 336, 168, 0, 2173, 2172, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 277, 1, 0, 0, 0, 2175, 2176, 5, 55, 0, 0, 2176, 2177, 3, 638, 319, 0, 2177, 2179, 3, 280, 140, 0, 2178, 2180, 3, 338, 169, 0, 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 279, 1, 0, 0, 0, 2181, 2184, 3, 282, 141, 0, 2182, 2184, 3, 284, 142, 0, 2183, 2181, 1, 0, 0, 0, 2183, 2182, 1, 0, 0, 0, 2184, 281, 1, 0, 0, 0, 2185, 2186, 3, 334, 167, 0, 2186, 2187, 3, 264, 132, 0, 2187, 283, 1, 0, 0, 0, 2188, 2189, 5, 40, 0, 0, 2189, 2190, 5, 399, 0, 0, 2190, 2191, 3, 580, 290, 0, 2191, 2192, 5, 400, 0, 0, 2192, 285, 1, 0, 0, 0, 2193, 2194, 5, 55, 0, 0, 2194, 2196, 3, 638, 319, 0, 2195, 2193, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 5, 136, 0, 0, 2198, 2199, 5, 173, 0, 0, 2199, 2200, 3, 264, 132, 0, 2200, 2201, 5, 269, 0, 0, 2201, 2202, 3, 478, 239, 0, 2202, 2204, 3, 264, 132, 0, 2203, 2205, 3, 336, 168, 0, 2204, 2203, 1, 0, 0, 0, 2204, 2205, 1, 0, 0, 0, 2205, 287, 1, 0, 0, 0, 2206, 2207, 5, 55, 0, 0, 2207, 2208, 3, 638, 319, 0, 2208, 2209, 5, 136, 0, 0, 2209, 2210, 5, 173, 0, 0, 2210, 2211, 3, 264, 132, 0, 2211, 2212, 5, 269, 0, 0, 2212, 2213, 3, 478, 239, 0, 2213, 2215, 3, 264, 132, 0, 2214, 2216, 3, 338, 169, 0, 2215, 2214, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 289, 1, 0, 0, 0, 2217, 2220, 3, 296, 148, 0, 2218, 2220, 3, 292, 146, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2218, 1, 0, 0, 0, 2220, 291, 1, 0, 0, 0, 2221, 2226, 3, 294, 147, 0, 2222, 2223, 5, 397, 0, 0, 2223, 2225, 3, 294, 147, 0, 2224, 2222, 1, 0, 0, 0, 2225, 2228, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 293, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2229, 2230, 5, 399, 0, 0, 2230, 2231, 3, 296, 148, 0, 2231, 2232, 5, 400, 0, 0, 2232, 295, 1, 0, 0, 0, 2233, 2238, 3, 572, 286, 0, 2234, 2235, 5, 397, 0, 0, 2235, 2237, 3, 572, 286, 0, 2236, 2234, 1, 0, 0, 0, 2237, 2240, 1, 0, 0, 0, 2238, 2236, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 297, 1, 0, 0, 0, 2240, 2238, 1, 0, 0, 0, 2241, 2242, 7, 17, 0, 0, 2242, 299, 1, 0, 0, 0, 2243, 2244, 5, 220, 0, 0, 2244, 2245, 7, 18, 0, 0, 2245, 301, 1, 0, 0, 0, 2246, 2248, 3, 256, 128, 0, 2247, 2249, 3, 298, 149, 0, 2248, 2247, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2251, 1, 0, 0, 0, 2250, 2252, 3, 300, 150, 0, 2251, 2250, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 303, 1, 0, 0, 0, 2253, 2258, 3, 306, 153, 0, 2254, 2255, 5, 397, 0, 0, 2255, 2257, 3, 306, 153, 0, 2256, 2254, 1, 0, 0, 0, 2257, 2260, 1, 0, 0, 0, 2258, 2256, 1, 0, 0, 0, 2258, 2259, 1, 0, 0, 0, 2259, 305, 1, 0, 0, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2264, 3, 258, 129, 0, 2262, 2263, 5, 47, 0, 0, 2263, 2265, 5, 426, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 307, 1, 0, 0, 0, 2266, 2269, 3, 256, 128, 0, 2267, 2269, 3, 580, 290, 0, 2268, 2266, 1, 0, 0, 0, 2268, 2267, 1, 0, 0, 0, 2269, 2271, 1, 0, 0, 0, 2270, 2272, 3, 298, 149, 0, 2271, 2270, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2274, 1, 0, 0, 0, 2273, 2275, 3, 300, 150, 0, 2274, 2273, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 309, 1, 0, 0, 0, 2276, 2277, 3, 258, 129, 0, 2277, 2280, 3, 342, 171, 0, 2278, 2279, 5, 47, 0, 0, 2279, 2281, 5, 426, 0, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 311, 1, 0, 0, 0, 2282, 2285, 3, 314, 157, 0, 2283, 2285, 3, 316, 158, 0, 2284, 2282, 1, 0, 0, 0, 2284, 2283, 1, 0, 0, 0, 2285, 313, 1, 0, 0, 0, 2286, 2289, 3, 286, 143, 0, 2287, 2289, 3, 276, 138, 0, 2288, 2286, 1, 0, 0, 0, 2288, 2287, 1, 0, 0, 0, 2289, 315, 1, 0, 0, 0, 2290, 2291, 3, 258, 129, 0, 2291, 2293, 3, 342, 171, 0, 2292, 2294, 3, 318, 159, 0, 2293, 2292, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2297, 1, 0, 0, 0, 2295, 2296, 5, 47, 0, 0, 2296, 2298, 5, 426, 0, 0, 2297, 2295, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 317, 1, 0, 0, 0, 2299, 2302, 3, 320, 160, 0, 2300, 2302, 3, 322, 161, 0, 2301, 2299, 1, 0, 0, 0, 2301, 2300, 1, 0, 0, 0, 2302, 319, 1, 0, 0, 0, 2303, 2304, 5, 55, 0, 0, 2304, 2306, 3, 638, 319, 0, 2305, 2303, 1, 0, 0, 0, 2305, 2306, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2308, 5, 269, 0, 0, 2308, 2309, 3, 478, 239, 0, 2309, 2310, 5, 399, 0, 0, 2310, 2311, 3, 256, 128, 0, 2311, 2313, 5, 400, 0, 0, 2312, 2314, 3, 336, 168, 0, 2313, 2312, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 321, 1, 0, 0, 0, 2315, 2316, 5, 55, 0, 0, 2316, 2318, 3, 638, 319, 0, 2317, 2315, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2319, 1, 0, 0, 0, 2319, 2321, 3, 330, 165, 0, 2320, 2322, 3, 336, 168, 0, 2321, 2320, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 323, 1, 0, 0, 0, 2323, 2326, 3, 326, 163, 0, 2324, 2326, 3, 328, 164, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2324, 1, 0, 0, 0, 2326, 325, 1, 0, 0, 0, 2327, 2328, 5, 55, 0, 0, 2328, 2330, 3, 638, 319, 0, 2329, 2327, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2332, 5, 269, 0, 0, 2332, 2333, 3, 478, 239, 0, 2333, 2334, 5, 399, 0, 0, 2334, 2335, 3, 256, 128, 0, 2335, 2337, 5, 400, 0, 0, 2336, 2338, 3, 338, 169, 0, 2337, 2336, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 327, 1, 0, 0, 0, 2339, 2340, 5, 55, 0, 0, 2340, 2342, 3, 638, 319, 0, 2341, 2339, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2345, 3, 330, 165, 0, 2344, 2346, 3, 338, 169, 0, 2345, 2344, 1, 0, 0, 0, 2345, 2346, 1, 0, 0, 0, 2346, 329, 1, 0, 0, 0, 2347, 2348, 5, 216, 0, 0, 2348, 2354, 5, 219, 0, 0, 2349, 2350, 5, 83, 0, 0, 2350, 2354, 3, 332, 166, 0, 2351, 2354, 3, 284, 142, 0, 2352, 2354, 3, 334, 167, 0, 2353, 2347, 1, 0, 0, 0, 2353, 2349, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2352, 1, 0, 0, 0, 2354, 331, 1, 0, 0, 0, 2355, 2359, 3, 572, 286, 0, 2356, 2359, 3, 550, 275, 0, 2357, 2359, 3, 560, 280, 0, 2358, 2355, 1, 0, 0, 0, 2358, 2356, 1, 0, 0, 0, 2358, 2357, 1, 0, 0, 0, 2359, 333, 1, 0, 0, 0, 2360, 2361, 5, 251, 0, 0, 2361, 2364, 5, 173, 0, 0, 2362, 2364, 5, 358, 0, 0, 2363, 2360, 1, 0, 0, 0, 2363, 2362, 1, 0, 0, 0, 2364, 335, 1, 0, 0, 0, 2365, 2367, 3, 266, 133, 0, 2366, 2368, 3, 274, 137, 0, 2367, 2366, 1, 0, 0, 0, 2367, 2368, 1, 0, 0, 0, 2368, 337, 1, 0, 0, 0, 2369, 2371, 3, 266, 133, 0, 2370, 2372, 3, 274, 137, 0, 2371, 2370, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 339, 1, 0, 0, 0, 2373, 2374, 3, 258, 129, 0, 2374, 2375, 5, 396, 0, 0, 2375, 2378, 3, 342, 171, 0, 2376, 2377, 5, 47, 0, 0, 2377, 2379, 5, 426, 0, 0, 2378, 2376, 1, 0, 0, 0, 2378, 2379, 1, 0, 0, 0, 2379, 341, 1, 0, 0, 0, 2380, 2381, 3, 346, 173, 0, 2381, 343, 1, 0, 0, 0, 2382, 2387, 3, 342, 171, 0, 2383, 2384, 5, 397, 0, 0, 2384, 2386, 3, 342, 171, 0, 2385, 2383, 1, 0, 0, 0, 2386, 2389, 1, 0, 0, 0, 2387, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 345, 1, 0, 0, 0, 2389, 2387, 1, 0, 0, 0, 2390, 2396, 3, 348, 174, 0, 2391, 2396, 3, 350, 175, 0, 2392, 2396, 3, 352, 176, 0, 2393, 2396, 3, 354, 177, 0, 2394, 2396, 3, 356, 178, 0, 2395, 2390, 1, 0, 0, 0, 2395, 2391, 1, 0, 0, 0, 2395, 2392, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2395, 2394, 1, 0, 0, 0, 2396, 347, 1, 0, 0, 0, 2397, 2435, 5, 340, 0, 0, 2398, 2435, 5, 311, 0, 0, 2399, 2435, 5, 162, 0, 0, 2400, 2435, 5, 163, 0, 0, 2401, 2435, 5, 26, 0, 0, 2402, 2435, 5, 28, 0, 0, 2403, 2435, 5, 131, 0, 0, 2404, 2435, 5, 264, 0, 0, 2405, 2407, 5, 100, 0, 0, 2406, 2408, 5, 248, 0, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2435, 1, 0, 0, 0, 2409, 2435, 5, 71, 0, 0, 2410, 2435, 5, 72, 0, 0, 2411, 2435, 5, 337, 0, 0, 2412, 2435, 5, 338, 0, 0, 2413, 2414, 5, 337, 0, 0, 2414, 2415, 5, 387, 0, 0, 2415, 2416, 5, 188, 0, 0, 2416, 2417, 5, 336, 0, 0, 2417, 2435, 5, 394, 0, 0, 2418, 2435, 5, 323, 0, 0, 2419, 2435, 5, 27, 0, 0, 2420, 2428, 3, 680, 340, 0, 2421, 2422, 5, 399, 0, 0, 2422, 2425, 5, 431, 0, 0, 2423, 2424, 5, 397, 0, 0, 2424, 2426, 5, 431, 0, 0, 2425, 2423, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2429, 5, 400, 0, 0, 2428, 2421, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2435, 1, 0, 0, 0, 2430, 2431, 7, 19, 0, 0, 2431, 2432, 5, 399, 0, 0, 2432, 2433, 5, 431, 0, 0, 2433, 2435, 5, 400, 0, 0, 2434, 2397, 1, 0, 0, 0, 2434, 2398, 1, 0, 0, 0, 2434, 2399, 1, 0, 0, 0, 2434, 2400, 1, 0, 0, 0, 2434, 2401, 1, 0, 0, 0, 2434, 2402, 1, 0, 0, 0, 2434, 2403, 1, 0, 0, 0, 2434, 2404, 1, 0, 0, 0, 2434, 2405, 1, 0, 0, 0, 2434, 2409, 1, 0, 0, 0, 2434, 2410, 1, 0, 0, 0, 2434, 2411, 1, 0, 0, 0, 2434, 2412, 1, 0, 0, 0, 2434, 2413, 1, 0, 0, 0, 2434, 2418, 1, 0, 0, 0, 2434, 2419, 1, 0, 0, 0, 2434, 2420, 1, 0, 0, 0, 2434, 2430, 1, 0, 0, 0, 2435, 349, 1, 0, 0, 0, 2436, 2437, 5, 16, 0, 0, 2437, 2438, 5, 409, 0, 0, 2438, 2439, 3, 346, 173, 0, 2439, 2440, 5, 411, 0, 0, 2440, 351, 1, 0, 0, 0, 2441, 2442, 5, 324, 0, 0, 2442, 2443, 5, 409, 0, 0, 2443, 2444, 3, 252, 126, 0, 2444, 2445, 5, 411, 0, 0, 2445, 353, 1, 0, 0, 0, 2446, 2447, 5, 198, 0, 0, 2447, 2448, 5, 409, 0, 0, 2448, 2449, 3, 348, 174, 0, 2449, 2450, 5, 397, 0, 0, 2450, 2451, 3, 346, 173, 0, 2451, 2452, 5, 411, 0, 0, 2452, 355, 1, 0, 0, 0, 2453, 2454, 5, 357, 0, 0, 2454, 2455, 5, 409, 0, 0, 2455, 2456, 3, 344, 172, 0, 2456, 2457, 5, 411, 0, 0, 2457, 357, 1, 0, 0, 0, 2458, 2460, 7, 20, 0, 0, 2459, 2461, 7, 21, 0, 0, 2460, 2459, 1, 0, 0, 0, 2460, 2461, 1, 0, 0, 0, 2461, 359, 1, 0, 0, 0, 2462, 2464, 3, 364, 182, 0, 2463, 2462, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2466, 3, 362, 181, 0, 2466, 361, 1, 0, 0, 0, 2467, 2470, 3, 368, 184, 0, 2468, 2470, 3, 372, 186, 0, 2469, 2467, 1, 0, 0, 0, 2469, 2468, 1, 0, 0, 0, 2470, 363, 1, 0, 0, 0, 2471, 2472, 5, 387, 0, 0, 2472, 2477, 3, 366, 183, 0, 2473, 2474, 5, 397, 0, 0, 2474, 2476, 3, 366, 183, 0, 2475, 2473, 1, 0, 0, 0, 2476, 2479, 1, 0, 0, 0, 2477, 2475, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 365, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2480, 2485, 3, 638, 319, 0, 2481, 2482, 5, 399, 0, 0, 2482, 2483, 3, 254, 127, 0, 2483, 2484, 5, 400, 0, 0, 2484, 2486, 1, 0, 0, 0, 2485, 2481, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2488, 5, 17, 0, 0, 2488, 2489, 5, 399, 0, 0, 2489, 2490, 3, 360, 180, 0, 2490, 2491, 5, 400, 0, 0, 2491, 367, 1, 0, 0, 0, 2492, 2498, 3, 370, 185, 0, 2493, 2494, 3, 358, 179, 0, 2494, 2495, 3, 370, 185, 0, 2495, 2497, 1, 0, 0, 0, 2496, 2493, 1, 0, 0, 0, 2497, 2500, 1, 0, 0, 0, 2498, 2496, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 369, 1, 0, 0, 0, 2500, 2498, 1, 0, 0, 0, 2501, 2502, 3, 448, 224, 0, 2502, 2503, 3, 382, 191, 0, 2503, 2505, 3, 500, 250, 0, 2504, 2506, 3, 462, 231, 0, 2505, 2504, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2508, 1, 0, 0, 0, 2507, 2509, 3, 494, 247, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2511, 1, 0, 0, 0, 2510, 2512, 3, 520, 260, 0, 2511, 2510, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2514, 1, 0, 0, 0, 2513, 2515, 3, 528, 264, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2518, 3, 512, 256, 0, 2517, 2516, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2520, 1, 0, 0, 0, 2519, 2521, 3, 530, 265, 0, 2520, 2519, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2523, 1, 0, 0, 0, 2522, 2524, 3, 542, 271, 0, 2523, 2522, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 2526, 1, 0, 0, 0, 2525, 2527, 3, 544, 272, 0, 2526, 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2529, 1, 0, 0, 0, 2528, 2530, 3, 546, 273, 0, 2529, 2528, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2532, 1, 0, 0, 0, 2531, 2533, 3, 548, 274, 0, 2532, 2531, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2535, 1, 0, 0, 0, 2534, 2536, 3, 386, 193, 0, 2535, 2534, 1, 0, 0, 0, 2535, 2536, 1, 0, 0, 0, 2536, 2573, 1, 0, 0, 0, 2537, 2538, 3, 448, 224, 0, 2538, 2540, 3, 500, 250, 0, 2539, 2541, 3, 462, 231, 0, 2540, 2539, 1, 0, 0, 0, 2540, 2541, 1, 0, 0, 0, 2541, 2543, 1, 0, 0, 0, 2542, 2544, 3, 494, 247, 0, 2543, 2542, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2546, 1, 0, 0, 0, 2545, 2547, 3, 520, 260, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2549, 1, 0, 0, 0, 2548, 2550, 3, 528, 264, 0, 2549, 2548, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2553, 3, 512, 256, 0, 2552, 2551, 1, 0, 0, 0, 2552, 2553, 1, 0, 0, 0, 2553, 2555, 1, 0, 0, 0, 2554, 2556, 3, 530, 265, 0, 2555, 2554, 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2558, 1, 0, 0, 0, 2557, 2559, 3, 542, 271, 0, 2558, 2557, 1, 0, 0, 0, 2558, 2559, 1, 0, 0, 0, 2559, 2561, 1, 0, 0, 0, 2560, 2562, 3, 544, 272, 0, 2561, 2560, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2564, 1, 0, 0, 0, 2563, 2565, 3, 546, 273, 0, 2564, 2563, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2567, 1, 0, 0, 0, 2566, 2568, 3, 548, 274, 0, 2567, 2566, 1, 0, 0, 0, 2567, 2568, 1, 0, 0, 0, 2568, 2570, 1, 0, 0, 0, 2569, 2571, 3, 386, 193, 0, 2570, 2569, 1, 0, 0, 0, 2570, 2571, 1, 0, 0, 0, 2571, 2573, 1, 0, 0, 0, 2572, 2501, 1, 0, 0, 0, 2572, 2537, 1, 0, 0, 0, 2573, 371, 1, 0, 0, 0, 2574, 2575, 3, 382, 191, 0, 2575, 2576, 3, 376, 188, 0, 2576, 2579, 1, 0, 0, 0, 2577, 2579, 3, 376, 188, 0, 2578, 2574, 1, 0, 0, 0, 2578, 2577, 1, 0, 0, 0, 2579, 373, 1, 0, 0, 0, 2580, 2582, 3, 500, 250, 0, 2581, 2583, 3, 448, 224, 0, 2582, 2581, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2585, 1, 0, 0, 0, 2584, 2586, 3, 494, 247, 0, 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2588, 1, 0, 0, 0, 2587, 2589, 3, 520, 260, 0, 2588, 2587, 1, 0, 0, 0, 2588, 2589, 1, 0, 0, 0, 2589, 2591, 1, 0, 0, 0, 2590, 2592, 3, 528, 264, 0, 2591, 2590, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2594, 1, 0, 0, 0, 2593, 2595, 3, 512, 256, 0, 2594, 2593, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2597, 1, 0, 0, 0, 2596, 2598, 3, 530, 265, 0, 2597, 2596, 1, 0, 0, 0, 2597, 2598, 1, 0, 0, 0, 2598, 2605, 1, 0, 0, 0, 2599, 2600, 5, 399, 0, 0, 2600, 2601, 3, 376, 188, 0, 2601, 2602, 5, 400, 0, 0, 2602, 2605, 1, 0, 0, 0, 2603, 2605, 3, 496, 248, 0, 2604, 2580, 1, 0, 0, 0, 2604, 2599, 1, 0, 0, 0, 2604, 2603, 1, 0, 0, 0, 2605, 375, 1, 0, 0, 0, 2606, 2608, 3, 374, 187, 0, 2607, 2609, 3, 378, 189, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2611, 1, 0, 0, 0, 2610, 2612, 3, 542, 271, 0, 2611, 2610, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 2614, 1, 0, 0, 0, 2613, 2615, 3, 544, 272, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2617, 1, 0, 0, 0, 2616, 2618, 3, 546, 273, 0, 2617, 2616, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 2620, 1, 0, 0, 0, 2619, 2621, 3, 548, 274, 0, 2620, 2619, 1, 0, 0, 0, 2620, 2621, 1, 0, 0, 0, 2621, 2623, 1, 0, 0, 0, 2622, 2624, 3, 386, 193, 0, 2623, 2622, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 377, 1, 0, 0, 0, 2625, 2626, 3, 358, 179, 0, 2626, 2627, 3, 374, 187, 0, 2627, 2629, 1, 0, 0, 0, 2628, 2625, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 379, 1, 0, 0, 0, 2632, 2634, 3, 364, 182, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 3, 376, 188, 0, 2636, 381, 1, 0, 0, 0, 2637, 2654, 5, 161, 0, 0, 2638, 2639, 5, 235, 0, 0, 2639, 2641, 3, 384, 192, 0, 2640, 2642, 3, 32, 16, 0, 2641, 2640, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2655, 1, 0, 0, 0, 2643, 2645, 5, 166, 0, 0, 2644, 2646, 5, 329, 0, 0, 2645, 2644, 1, 0, 0, 0, 2645, 2646, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2652, 3, 624, 312, 0, 2648, 2649, 5, 399, 0, 0, 2649, 2650, 3, 254, 127, 0, 2650, 2651, 5, 400, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2648, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2655, 1, 0, 0, 0, 2654, 2638, 1, 0, 0, 0, 2654, 2643, 1, 0, 0, 0, 2655, 383, 1, 0, 0, 0, 2656, 2658, 5, 188, 0, 0, 2657, 2656, 1, 0, 0, 0, 2657, 2658, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2660, 5, 93, 0, 0, 2660, 2662, 5, 426, 0, 0, 2661, 2663, 3, 222, 111, 0, 2662, 2661, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 2665, 1, 0, 0, 0, 2664, 2666, 3, 246, 123, 0, 2665, 2664, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2670, 1, 0, 0, 0, 2667, 2668, 5, 329, 0, 0, 2668, 2670, 3, 624, 312, 0, 2669, 2657, 1, 0, 0, 0, 2669, 2667, 1, 0, 0, 0, 2670, 385, 1, 0, 0, 0, 2671, 2680, 5, 185, 0, 0, 2672, 2673, 5, 431, 0, 0, 2673, 2675, 5, 397, 0, 0, 2674, 2672, 1, 0, 0, 0, 2674, 2675, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2681, 5, 431, 0, 0, 2677, 2678, 5, 431, 0, 0, 2678, 2679, 5, 223, 0, 0, 2679, 2681, 5, 431, 0, 0, 2680, 2674, 1, 0, 0, 0, 2680, 2677, 1, 0, 0, 0, 2681, 387, 1, 0, 0, 0, 2682, 2683, 3, 256, 128, 0, 2683, 2684, 5, 405, 0, 0, 2684, 2685, 3, 390, 195, 0, 2685, 389, 1, 0, 0, 0, 2686, 2689, 5, 83, 0, 0, 2687, 2689, 3, 590, 295, 0, 2688, 2686, 1, 0, 0, 0, 2688, 2687, 1, 0, 0, 0, 2689, 391, 1, 0, 0, 0, 2690, 2691, 5, 304, 0, 0, 2691, 2696, 3, 388, 194, 0, 2692, 2693, 5, 397, 0, 0, 2693, 2695, 3, 388, 194, 0, 2694, 2692, 1, 0, 0, 0, 2695, 2698, 1, 0, 0, 0, 2696, 2694, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 393, 1, 0, 0, 0, 2698, 2696, 1, 0, 0, 0, 2699, 2700, 5, 318, 0, 0, 2700, 2709, 5, 344, 0, 0, 2701, 2706, 3, 396, 198, 0, 2702, 2703, 5, 397, 0, 0, 2703, 2705, 3, 396, 198, 0, 2704, 2702, 1, 0, 0, 0, 2705, 2708, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 2710, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2709, 2701, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2723, 1, 0, 0, 0, 2711, 2713, 5, 48, 0, 0, 2712, 2714, 5, 389, 0, 0, 2713, 2712, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2723, 1, 0, 0, 0, 2715, 2717, 5, 289, 0, 0, 2716, 2718, 5, 389, 0, 0, 2717, 2716, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2723, 1, 0, 0, 0, 2719, 2720, 5, 304, 0, 0, 2720, 2721, 5, 22, 0, 0, 2721, 2723, 7, 22, 0, 0, 2722, 2699, 1, 0, 0, 0, 2722, 2711, 1, 0, 0, 0, 2722, 2715, 1, 0, 0, 0, 2722, 2719, 1, 0, 0, 0, 2723, 395, 1, 0, 0, 0, 2724, 2725, 5, 168, 0, 0, 2725, 2726, 5, 182, 0, 0, 2726, 2730, 5, 312, 0, 0, 2727, 2728, 5, 261, 0, 0, 2728, 2730, 7, 23, 0, 0, 2729, 2724, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2730, 397, 1, 0, 0, 0, 2731, 2734, 3, 402, 201, 0, 2732, 2734, 3, 404, 202, 0, 2733, 2731, 1, 0, 0, 0, 2733, 2732, 1, 0, 0, 0, 2734, 2737, 1, 0, 0, 0, 2735, 2733, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2739, 1, 0, 0, 0, 2737, 2735, 1, 0, 0, 0, 2738, 2740, 3, 400, 200, 0, 2739, 2738, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 399, 1, 0, 0, 0, 2741, 2742, 5, 383, 0, 0, 2742, 2743, 5, 216, 0, 0, 2743, 2746, 5, 201, 0, 0, 2744, 2745, 5, 11, 0, 0, 2745, 2747, 3, 580, 290, 0, 2746, 2744, 1, 0, 0, 0, 2746, 2747, 1, 0, 0, 0, 2747, 2748, 1, 0, 0, 0, 2748, 2749, 5, 335, 0, 0, 2749, 2751, 5, 161, 0, 0, 2750, 2752, 3, 264, 132, 0, 2751, 2750, 1, 0, 0, 0, 2751, 2752, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2754, 5, 374, 0, 0, 2754, 2755, 3, 538, 269, 0, 2755, 401, 1, 0, 0, 0, 2756, 2757, 5, 383, 0, 0, 2757, 2758, 5, 201, 0, 0, 2758, 2759, 5, 11, 0, 0, 2759, 2760, 3, 580, 290, 0, 2760, 2764, 5, 335, 0, 0, 2761, 2762, 5, 365, 0, 0, 2762, 2765, 3, 392, 196, 0, 2763, 2765, 5, 86, 0, 0, 2764, 2761, 1, 0, 0, 0, 2764, 2763, 1, 0, 0, 0, 2765, 403, 1, 0, 0, 0, 2766, 2767, 5, 383, 0, 0, 2767, 2768, 5, 201, 0, 0, 2768, 2772, 5, 335, 0, 0, 2769, 2770, 5, 365, 0, 0, 2770, 2773, 3, 392, 196, 0, 2771, 2773, 5, 86, 0, 0, 2772, 2769, 1, 0, 0, 0, 2772, 2771, 1, 0, 0, 0, 2773, 405, 1, 0, 0, 0, 2774, 2775, 5, 246, 0, 0, 2775, 2776, 5, 426, 0, 0, 2776, 407, 1, 0, 0, 0, 2777, 2778, 5, 352, 0, 0, 2778, 2779, 5, 426, 0, 0, 2779, 409, 1, 0, 0, 0, 2780, 2781, 5, 320, 0, 0, 2781, 2782, 5, 426, 0, 0, 2782, 411, 1, 0, 0, 0, 2783, 2814, 5, 9, 0, 0, 2784, 2785, 5, 329, 0, 0, 2785, 2786, 3, 478, 239, 0, 2786, 2787, 3, 414, 207, 0, 2787, 2815, 1, 0, 0, 0, 2788, 2789, 5, 378, 0, 0, 2789, 2791, 3, 482, 241, 0, 2790, 2792, 5, 17, 0, 0, 2791, 2790, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2794, 3, 418, 209, 0, 2794, 2815, 1, 0, 0, 0, 2795, 2796, 5, 202, 0, 0, 2796, 2797, 5, 378, 0, 0, 2797, 2801, 3, 482, 241, 0, 2798, 2802, 3, 36, 18, 0, 2799, 2802, 3, 38, 19, 0, 2800, 2802, 5, 265, 0, 0, 2801, 2798, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2801, 2800, 1, 0, 0, 0, 2802, 2815, 1, 0, 0, 0, 2803, 2804, 3, 70, 35, 0, 2804, 2805, 3, 420, 210, 0, 2805, 2815, 1, 0, 0, 0, 2806, 2807, 5, 69, 0, 0, 2807, 2815, 3, 422, 211, 0, 2808, 2809, 5, 155, 0, 0, 2809, 2810, 3, 638, 319, 0, 2810, 2811, 5, 224, 0, 0, 2811, 2812, 3, 624, 312, 0, 2812, 2813, 5, 265, 0, 0, 2813, 2815, 1, 0, 0, 0, 2814, 2784, 1, 0, 0, 0, 2814, 2788, 1, 0, 0, 0, 2814, 2795, 1, 0, 0, 0, 2814, 2803, 1, 0, 0, 0, 2814, 2806, 1, 0, 0, 0, 2814, 2808, 1, 0, 0, 0, 2815, 413, 1, 0, 0, 0, 2816, 2817, 5, 274, 0, 0, 2817, 2818, 5, 341, 0, 0, 2818, 2906, 3, 480, 240, 0, 2819, 2820, 5, 102, 0, 0, 2820, 2906, 5, 239, 0, 0, 2821, 2906, 3, 426, 213, 0, 2822, 2824, 5, 4, 0, 0, 2823, 2825, 3, 32, 16, 0, 2824, 2823, 1, 0, 0, 0, 2824, 2825, 1, 0, 0, 0, 2825, 2830, 1, 0, 0, 0, 2826, 2828, 3, 626, 313, 0, 2827, 2829, 3, 424, 212, 0, 2828, 2827, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2831, 1, 0, 0, 0, 2830, 2826, 1, 0, 0, 0, 2831, 2832, 1, 0, 0, 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 2906, 1, 0, 0, 0, 2834, 2838, 5, 342, 0, 0, 2835, 2837, 3, 626, 313, 0, 2836, 2835, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2906, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2845, 5, 15, 0, 0, 2842, 2844, 3, 626, 313, 0, 2843, 2842, 1, 0, 0, 0, 2844, 2847, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2845, 2846, 1, 0, 0, 0, 2846, 2906, 1, 0, 0, 0, 2847, 2845, 1, 0, 0, 0, 2848, 2852, 5, 353, 0, 0, 2849, 2851, 3, 626, 313, 0, 2850, 2849, 1, 0, 0, 0, 2851, 2854, 1, 0, 0, 0, 2852, 2850, 1, 0, 0, 0, 2852, 2853, 1, 0, 0, 0, 2853, 2906, 1, 0, 0, 0, 2854, 2852, 1, 0, 0, 0, 2855, 2856, 5, 304, 0, 0, 2856, 2857, 5, 332, 0, 0, 2857, 2906, 3, 226, 113, 0, 2858, 2859, 5, 363, 0, 0, 2859, 2861, 5, 332, 0, 0, 2860, 2862, 3, 30, 15, 0, 2861, 2860, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2906, 3, 226, 113, 0, 2864, 2906, 3, 210, 105, 0, 2865, 2868, 5, 216, 0, 0, 2866, 2869, 5, 310, 0, 0, 2867, 2869, 3, 40, 20, 0, 2868, 2866, 1, 0, 0, 0, 2868, 2867, 1, 0, 0, 0, 2869, 2906, 1, 0, 0, 0, 2870, 2871, 5, 113, 0, 0, 2871, 2872, 3, 626, 313, 0, 2872, 2873, 5, 387, 0, 0, 2873, 2874, 5, 329, 0, 0, 2874, 2875, 3, 478, 239, 0, 2875, 2906, 1, 0, 0, 0, 2876, 2877, 5, 237, 0, 0, 2877, 2878, 5, 45, 0, 0, 2878, 2879, 5, 399, 0, 0, 2879, 2880, 3, 310, 155, 0, 2880, 2881, 5, 400, 0, 0, 2881, 2906, 1, 0, 0, 0, 2882, 2883, 5, 101, 0, 0, 2883, 2884, 5, 55, 0, 0, 2884, 2906, 3, 638, 319, 0, 2885, 2888, 5, 4, 0, 0, 2886, 2889, 3, 288, 144, 0, 2887, 2889, 3, 278, 139, 0, 2888, 2886, 1, 0, 0, 0, 2888, 2887, 1, 0, 0, 0, 2889, 2906, 1, 0, 0, 0, 2890, 2892, 3, 626, 313, 0, 2891, 2890, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 2906, 3, 416, 208, 0, 2894, 2895, 5, 304, 0, 0, 2895, 2896, 5, 236, 0, 0, 2896, 2906, 3, 126, 63, 0, 2897, 2898, 5, 304, 0, 0, 2898, 2899, 5, 237, 0, 0, 2899, 2900, 5, 316, 0, 0, 2900, 2901, 5, 399, 0, 0, 2901, 2902, 3, 204, 102, 0, 2902, 2903, 5, 400, 0, 0, 2903, 2906, 1, 0, 0, 0, 2904, 2906, 3, 430, 215, 0, 2905, 2816, 1, 0, 0, 0, 2905, 2819, 1, 0, 0, 0, 2905, 2821, 1, 0, 0, 0, 2905, 2822, 1, 0, 0, 0, 2905, 2834, 1, 0, 0, 0, 2905, 2841, 1, 0, 0, 0, 2905, 2848, 1, 0, 0, 0, 2905, 2855, 1, 0, 0, 0, 2905, 2858, 1, 0, 0, 0, 2905, 2864, 1, 0, 0, 0, 2905, 2865, 1, 0, 0, 0, 2905, 2870, 1, 0, 0, 0, 2905, 2876, 1, 0, 0, 0, 2905, 2882, 1, 0, 0, 0, 2905, 2885, 1, 0, 0, 0, 2905, 2891, 1, 0, 0, 0, 2905, 2894, 1, 0, 0, 0, 2905, 2897, 1, 0, 0, 0, 2905, 2904, 1, 0, 0, 0, 2906, 415, 1, 0, 0, 0, 2907, 2908, 5, 304, 0, 0, 2908, 2909, 5, 129, 0, 0, 2909, 3040, 3, 432, 216, 0, 2910, 2911, 5, 304, 0, 0, 2911, 2912, 5, 189, 0, 0, 2912, 3040, 5, 426, 0, 0, 2913, 3040, 5, 53, 0, 0, 2914, 2924, 5, 304, 0, 0, 2915, 2916, 5, 301, 0, 0, 2916, 2920, 5, 426, 0, 0, 2917, 2918, 5, 387, 0, 0, 2918, 2919, 5, 302, 0, 0, 2919, 2921, 3, 226, 113, 0, 2920, 2917, 1, 0, 0, 0, 2920, 2921, 1, 0, 0, 0, 2921, 2925, 1, 0, 0, 0, 2922, 2923, 5, 302, 0, 0, 2923, 2925, 3, 226, 113, 0, 2924, 2915, 1, 0, 0, 0, 2924, 2922, 1, 0, 0, 0, 2925, 3040, 1, 0, 0, 0, 2926, 2927, 5, 363, 0, 0, 2927, 2928, 5, 302, 0, 0, 2928, 3040, 3, 226, 113, 0, 2929, 2930, 5, 274, 0, 0, 2930, 2931, 5, 341, 0, 0, 2931, 3040, 3, 626, 313, 0, 2932, 2933, 5, 166, 0, 0, 2933, 2934, 5, 431, 0, 0, 2934, 3040, 5, 31, 0, 0, 2935, 2936, 5, 304, 0, 0, 2936, 2937, 5, 310, 0, 0, 2937, 2938, 5, 189, 0, 0, 2938, 2939, 5, 399, 0, 0, 2939, 2944, 3, 428, 214, 0, 2940, 2941, 5, 397, 0, 0, 2941, 2943, 3, 428, 214, 0, 2942, 2940, 1, 0, 0, 0, 2943, 2946, 1, 0, 0, 0, 2944, 2942, 1, 0, 0, 0, 2944, 2945, 1, 0, 0, 0, 2945, 2947, 1, 0, 0, 0, 2946, 2944, 1, 0, 0, 0, 2947, 2948, 5, 400, 0, 0, 2948, 3040, 1, 0, 0, 0, 2949, 2950, 5, 216, 0, 0, 2950, 3040, 7, 24, 0, 0, 2951, 3040, 3, 208, 104, 0, 2952, 2953, 5, 49, 0, 0, 2953, 2956, 5, 426, 0, 0, 2954, 2955, 5, 11, 0, 0, 2955, 2957, 5, 380, 0, 0, 2956, 2954, 1, 0, 0, 0, 2956, 2957, 1, 0, 0, 0, 2957, 2962, 1, 0, 0, 0, 2958, 2959, 5, 42, 0, 0, 2959, 2960, 5, 166, 0, 0, 2960, 2961, 5, 431, 0, 0, 2961, 2963, 5, 31, 0, 0, 2962, 2958, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2965, 1, 0, 0, 0, 2964, 2966, 3, 542, 271, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2968, 1, 0, 0, 0, 2967, 2969, 3, 406, 203, 0, 2968, 2967, 1, 0, 0, 0, 2968, 2969, 1, 0, 0, 0, 2969, 2974, 1, 0, 0, 0, 2970, 2971, 5, 387, 0, 0, 2971, 2972, 5, 235, 0, 0, 2972, 2973, 5, 332, 0, 0, 2973, 2975, 3, 226, 113, 0, 2974, 2970, 1, 0, 0, 0, 2974, 2975, 1, 0, 0, 0, 2975, 3040, 1, 0, 0, 0, 2976, 2977, 5, 365, 0, 0, 2977, 2978, 5, 319, 0, 0, 2978, 2980, 5, 134, 0, 0, 2979, 2981, 5, 45, 0, 0, 2980, 2979, 1, 0, 0, 0, 2980, 2981, 1, 0, 0, 0, 2981, 2982, 1, 0, 0, 0, 2982, 2983, 3, 256, 128, 0, 2983, 2984, 5, 304, 0, 0, 2984, 2987, 3, 226, 113, 0, 2985, 2986, 5, 47, 0, 0, 2986, 2988, 5, 426, 0, 0, 2987, 2985, 1, 0, 0, 0, 2987, 2988, 1, 0, 0, 0, 2988, 3040, 1, 0, 0, 0, 2989, 2990, 5, 365, 0, 0, 2990, 2991, 5, 319, 0, 0, 2991, 2992, 5, 304, 0, 0, 2992, 3040, 3, 226, 113, 0, 2993, 2995, 5, 38, 0, 0, 2994, 2996, 5, 45, 0, 0, 2995, 2994, 1, 0, 0, 0, 2995, 2996, 1, 0, 0, 0, 2996, 2997, 1, 0, 0, 0, 2997, 2998, 3, 256, 128, 0, 2998, 2999, 3, 258, 129, 0, 2999, 3001, 3, 342, 171, 0, 3000, 3002, 3, 324, 162, 0, 3001, 3000, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3005, 1, 0, 0, 0, 3003, 3004, 5, 47, 0, 0, 3004, 3006, 5, 426, 0, 0, 3005, 3003, 1, 0, 0, 0, 3005, 3006, 1, 0, 0, 0, 3006, 3010, 1, 0, 0, 0, 3007, 3011, 5, 130, 0, 0, 3008, 3009, 5, 6, 0, 0, 3009, 3011, 3, 638, 319, 0, 3010, 3007, 1, 0, 0, 0, 3010, 3008, 1, 0, 0, 0, 3010, 3011, 1, 0, 0, 0, 3011, 3013, 1, 0, 0, 0, 3012, 3014, 3, 34, 17, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3040, 1, 0, 0, 0, 3015, 3018, 5, 4, 0, 0, 3016, 3018, 5, 278, 0, 0, 3017, 3015, 1, 0, 0, 0, 3017, 3016, 1, 0, 0, 0, 3018, 3019, 1, 0, 0, 0, 3019, 3020, 5, 46, 0, 0, 3020, 3021, 5, 399, 0, 0, 3021, 3022, 3, 248, 124, 0, 3022, 3024, 5, 400, 0, 0, 3023, 3025, 3, 34, 17, 0, 3024, 3023, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3040, 1, 0, 0, 0, 3026, 3027, 5, 365, 0, 0, 3027, 3029, 5, 46, 0, 0, 3028, 3030, 3, 34, 17, 0, 3029, 3028, 1, 0, 0, 0, 3029, 3030, 1, 0, 0, 0, 3030, 3040, 1, 0, 0, 0, 3031, 3037, 3, 268, 134, 0, 3032, 3034, 5, 218, 0, 0, 3033, 3035, 5, 34, 0, 0, 3034, 3033, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3038, 1, 0, 0, 0, 3036, 3038, 5, 222, 0, 0, 3037, 3032, 1, 0, 0, 0, 3037, 3036, 1, 0, 0, 0, 3038, 3040, 1, 0, 0, 0, 3039, 2907, 1, 0, 0, 0, 3039, 2910, 1, 0, 0, 0, 3039, 2913, 1, 0, 0, 0, 3039, 2914, 1, 0, 0, 0, 3039, 2926, 1, 0, 0, 0, 3039, 2929, 1, 0, 0, 0, 3039, 2932, 1, 0, 0, 0, 3039, 2935, 1, 0, 0, 0, 3039, 2949, 1, 0, 0, 0, 3039, 2951, 1, 0, 0, 0, 3039, 2952, 1, 0, 0, 0, 3039, 2976, 1, 0, 0, 0, 3039, 2989, 1, 0, 0, 0, 3039, 2993, 1, 0, 0, 0, 3039, 3017, 1, 0, 0, 0, 3039, 3026, 1, 0, 0, 0, 3039, 3031, 1, 0, 0, 0, 3040, 417, 1, 0, 0, 0, 3041, 3042, 5, 304, 0, 0, 3042, 3043, 5, 332, 0, 0, 3043, 3068, 3, 226, 113, 0, 3044, 3045, 5, 363, 0, 0, 3045, 3047, 5, 332, 0, 0, 3046, 3048, 3, 30, 15, 0, 3047, 3046, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3049, 1, 0, 0, 0, 3049, 3068, 3, 226, 113, 0, 3050, 3051, 5, 274, 0, 0, 3051, 3052, 5, 341, 0, 0, 3052, 3068, 3, 480, 240, 0, 3053, 3055, 5, 4, 0, 0, 3054, 3056, 3, 32, 16, 0, 3055, 3054, 1, 0, 0, 0, 3055, 3056, 1, 0, 0, 0, 3056, 3061, 1, 0, 0, 0, 3057, 3059, 3, 626, 313, 0, 3058, 3060, 3, 424, 212, 0, 3059, 3058, 1, 0, 0, 0, 3059, 3060, 1, 0, 0, 0, 3060, 3062, 1, 0, 0, 0, 3061, 3057, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 3061, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3068, 1, 0, 0, 0, 3065, 3068, 3, 426, 213, 0, 3066, 3068, 3, 380, 190, 0, 3067, 3041, 1, 0, 0, 0, 3067, 3044, 1, 0, 0, 0, 3067, 3050, 1, 0, 0, 0, 3067, 3053, 1, 0, 0, 0, 3067, 3065, 1, 0, 0, 0, 3067, 3066, 1, 0, 0, 0, 3068, 419, 1, 0, 0, 0, 3069, 3070, 3, 472, 236, 0, 3070, 3071, 5, 304, 0, 0, 3071, 3072, 5, 76, 0, 0, 3072, 3073, 3, 230, 115, 0, 3073, 3085, 1, 0, 0, 0, 3074, 3075, 3, 472, 236, 0, 3075, 3076, 5, 304, 0, 0, 3076, 3077, 5, 236, 0, 0, 3077, 3078, 3, 128, 64, 0, 3078, 3085, 1, 0, 0, 0, 3079, 3080, 3, 472, 236, 0, 3080, 3081, 5, 304, 0, 0, 3081, 3082, 7, 25, 0, 0, 3082, 3083, 5, 426, 0, 0, 3083, 3085, 1, 0, 0, 0, 3084, 3069, 1, 0, 0, 0, 3084, 3074, 1, 0, 0, 0, 3084, 3079, 1, 0, 0, 0, 3085, 421, 1, 0, 0, 0, 3086, 3087, 3, 472, 236, 0, 3087, 3088, 5, 304, 0, 0, 3088, 3089, 5, 77, 0, 0, 3089, 3090, 3, 230, 115, 0, 3090, 3102, 1, 0, 0, 0, 3091, 3092, 3, 472, 236, 0, 3092, 3093, 5, 304, 0, 0, 3093, 3094, 5, 236, 0, 0, 3094, 3095, 3, 128, 64, 0, 3095, 3102, 1, 0, 0, 0, 3096, 3097, 3, 472, 236, 0, 3097, 3098, 5, 304, 0, 0, 3098, 3099, 5, 367, 0, 0, 3099, 3100, 5, 426, 0, 0, 3100, 3102, 1, 0, 0, 0, 3101, 3086, 1, 0, 0, 0, 3101, 3091, 1, 0, 0, 0, 3101, 3096, 1, 0, 0, 0, 3102, 423, 1, 0, 0, 0, 3103, 3104, 5, 189, 0, 0, 3104, 3105, 5, 426, 0, 0, 3105, 425, 1, 0, 0, 0, 3106, 3108, 5, 101, 0, 0, 3107, 3109, 3, 30, 15, 0, 3108, 3107, 1, 0, 0, 0, 3108, 3109, 1, 0, 0, 0, 3109, 3110, 1, 0, 0, 0, 3110, 3111, 5, 237, 0, 0, 3111, 3117, 3, 630, 315, 0, 3112, 3113, 5, 397, 0, 0, 3113, 3114, 5, 237, 0, 0, 3114, 3116, 3, 630, 315, 0, 3115, 3112, 1, 0, 0, 0, 3116, 3119, 1, 0, 0, 0, 3117, 3115, 1, 0, 0, 0, 3117, 3118, 1, 0, 0, 0, 3118, 3122, 1, 0, 0, 0, 3119, 3117, 1, 0, 0, 0, 3120, 3121, 5, 152, 0, 0, 3121, 3123, 5, 254, 0, 0, 3122, 3120, 1, 0, 0, 0, 3122, 3123, 1, 0, 0, 0, 3123, 3125, 1, 0, 0, 0, 3124, 3126, 5, 255, 0, 0, 3125, 3124, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, 0, 3126, 3128, 1, 0, 0, 0, 3127, 3129, 3, 14, 7, 0, 3128, 3127, 1, 0, 0, 0, 3128, 3129, 1, 0, 0, 0, 3129, 427, 1, 0, 0, 0, 3130, 3133, 3, 572, 286, 0, 3131, 3133, 3, 294, 147, 0, 3132, 3130, 1, 0, 0, 0, 3132, 3131, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3135, 5, 405, 0, 0, 3135, 3136, 5, 426, 0, 0, 3136, 429, 1, 0, 0, 0, 3137, 3147, 5, 115, 0, 0, 3138, 3139, 5, 289, 0, 0, 3139, 3140, 5, 399, 0, 0, 3140, 3148, 7, 26, 0, 0, 3141, 3142, 5, 118, 0, 0, 3142, 3143, 5, 399, 0, 0, 3143, 3148, 5, 426, 0, 0, 3144, 3145, 5, 306, 0, 0, 3145, 3146, 5, 399, 0, 0, 3146, 3148, 5, 431, 0, 0, 3147, 3138, 1, 0, 0, 0, 3147, 3141, 1, 0, 0, 0, 3147, 3144, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3150, 5, 400, 0, 0, 3150, 431, 1, 0, 0, 0, 3151, 3152, 5, 160, 0, 0, 3152, 3153, 5, 426, 0, 0, 3153, 3154, 5, 233, 0, 0, 3154, 3155, 5, 426, 0, 0, 3155, 3156, 5, 301, 0, 0, 3156, 3161, 5, 426, 0, 0, 3157, 3158, 5, 159, 0, 0, 3158, 3159, 5, 426, 0, 0, 3159, 3160, 5, 232, 0, 0, 3160, 3162, 5, 426, 0, 0, 3161, 3157, 1, 0, 0, 0, 3161, 3162, 1, 0, 0, 0, 3162, 3165, 1, 0, 0, 0, 3163, 3165, 3, 638, 319, 0, 3164, 3151, 1, 0, 0, 0, 3164, 3163, 1, 0, 0, 0, 3165, 433, 1, 0, 0, 0, 3166, 3167, 5, 184, 0, 0, 3167, 3176, 5, 128, 0, 0, 3168, 3169, 5, 184, 0, 0, 3169, 3170, 5, 128, 0, 0, 3170, 3171, 3, 638, 319, 0, 3171, 3172, 5, 426, 0, 0, 3172, 3176, 1, 0, 0, 0, 3173, 3174, 5, 184, 0, 0, 3174, 3176, 3, 478, 239, 0, 3175, 3166, 1, 0, 0, 0, 3175, 3168, 1, 0, 0, 0, 3175, 3173, 1, 0, 0, 0, 3176, 435, 1, 0, 0, 0, 3177, 3179, 5, 58, 0, 0, 3178, 3180, 5, 333, 0, 0, 3179, 3178, 1, 0, 0, 0, 3179, 3180, 1, 0, 0, 0, 3180, 3182, 1, 0, 0, 0, 3181, 3183, 5, 345, 0, 0, 3182, 3181, 1, 0, 0, 0, 3182, 3183, 1, 0, 0, 0, 3183, 3185, 1, 0, 0, 0, 3184, 3186, 5, 123, 0, 0, 3185, 3184, 1, 0, 0, 0, 3185, 3186, 1, 0, 0, 0, 3186, 3187, 1, 0, 0, 0, 3187, 3189, 5, 329, 0, 0, 3188, 3190, 3, 32, 16, 0, 3189, 3188, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 3191, 1, 0, 0, 0, 3191, 3248, 3, 480, 240, 0, 3192, 3194, 3, 434, 217, 0, 3193, 3195, 3, 200, 100, 0, 3194, 3193, 1, 0, 0, 0, 3194, 3195, 1, 0, 0, 0, 3195, 3197, 1, 0, 0, 0, 3196, 3198, 3, 222, 111, 0, 3197, 3196, 1, 0, 0, 0, 3197, 3198, 1, 0, 0, 0, 3198, 3200, 1, 0, 0, 0, 3199, 3201, 3, 246, 123, 0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3203, 1, 0, 0, 0, 3202, 3204, 3, 424, 212, 0, 3203, 3202, 1, 0, 0, 0, 3203, 3204, 1, 0, 0, 0, 3204, 3206, 1, 0, 0, 0, 3205, 3207, 3, 224, 112, 0, 3206, 3205, 1, 0, 0, 0, 3206, 3207, 1, 0, 0, 0, 3207, 3209, 1, 0, 0, 0, 3208, 3210, 3, 198, 99, 0, 3209, 3208, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3249, 1, 0, 0, 0, 3211, 3212, 5, 399, 0, 0, 3212, 3213, 3, 250, 125, 0, 3213, 3214, 5, 400, 0, 0, 3214, 3216, 1, 0, 0, 0, 3215, 3211, 1, 0, 0, 0, 3215, 3216, 1, 0, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3219, 3, 196, 98, 0, 3218, 3217, 1, 0, 0, 0, 3218, 3219, 1, 0, 0, 0, 3219, 3221, 1, 0, 0, 0, 3220, 3222, 3, 200, 100, 0, 3221, 3220, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3224, 1, 0, 0, 0, 3223, 3225, 3, 208, 104, 0, 3224, 3223, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3227, 1, 0, 0, 0, 3226, 3228, 3, 210, 105, 0, 3227, 3226, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3230, 1, 0, 0, 0, 3229, 3231, 3, 222, 111, 0, 3230, 3229, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3233, 1, 0, 0, 0, 3232, 3234, 3, 246, 123, 0, 3233, 3232, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 3236, 1, 0, 0, 0, 3235, 3237, 3, 424, 212, 0, 3236, 3235, 1, 0, 0, 0, 3236, 3237, 1, 0, 0, 0, 3237, 3239, 1, 0, 0, 0, 3238, 3240, 3, 224, 112, 0, 3239, 3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3242, 1, 0, 0, 0, 3241, 3243, 3, 198, 99, 0, 3242, 3241, 1, 0, 0, 0, 3242, 3243, 1, 0, 0, 0, 3243, 3246, 1, 0, 0, 0, 3244, 3245, 5, 17, 0, 0, 3245, 3247, 3, 380, 190, 0, 3246, 3244, 1, 0, 0, 0, 3246, 3247, 1, 0, 0, 0, 3247, 3249, 1, 0, 0, 0, 3248, 3192, 1, 0, 0, 0, 3248, 3215, 1, 0, 0, 0, 3249, 3313, 1, 0, 0, 0, 3250, 3251, 5, 58, 0, 0, 3251, 3252, 5, 195, 0, 0, 3252, 3254, 5, 329, 0, 0, 3253, 3255, 3, 32, 16, 0, 3254, 3253, 1, 0, 0, 0, 3254, 3255, 1, 0, 0, 0, 3255, 3256, 1, 0, 0, 0, 3256, 3310, 3, 480, 240, 0, 3257, 3259, 3, 434, 217, 0, 3258, 3260, 3, 222, 111, 0, 3259, 3258, 1, 0, 0, 0, 3259, 3260, 1, 0, 0, 0, 3260, 3262, 1, 0, 0, 0, 3261, 3263, 3, 246, 123, 0, 3262, 3261, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3265, 1, 0, 0, 0, 3264, 3266, 3, 424, 212, 0, 3265, 3264, 1, 0, 0, 0, 3265, 3266, 1, 0, 0, 0, 3266, 3268, 1, 0, 0, 0, 3267, 3269, 3, 224, 112, 0, 3268, 3267, 1, 0, 0, 0, 3268, 3269, 1, 0, 0, 0, 3269, 3271, 1, 0, 0, 0, 3270, 3272, 3, 198, 99, 0, 3271, 3270, 1, 0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3311, 1, 0, 0, 0, 3273, 3274, 5, 399, 0, 0, 3274, 3275, 3, 250, 125, 0, 3275, 3276, 5, 400, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3273, 1, 0, 0, 0, 3277, 3278, 1, 0, 0, 0, 3278, 3280, 1, 0, 0, 0, 3279, 3281, 3, 196, 98, 0, 3280, 3279, 1, 0, 0, 0, 3280, 3281, 1, 0, 0, 0, 3281, 3283, 1, 0, 0, 0, 3282, 3284, 3, 200, 100, 0, 3283, 3282, 1, 0, 0, 0, 3283, 3284, 1, 0, 0, 0, 3284, 3286, 1, 0, 0, 0, 3285, 3287, 3, 208, 104, 0, 3286, 3285, 1, 0, 0, 0, 3286, 3287, 1, 0, 0, 0, 3287, 3289, 1, 0, 0, 0, 3288, 3290, 3, 210, 105, 0, 3289, 3288, 1, 0, 0, 0, 3289, 3290, 1, 0, 0, 0, 3290, 3292, 1, 0, 0, 0, 3291, 3293, 3, 222, 111, 0, 3292, 3291, 1, 0, 0, 0, 3292, 3293, 1, 0, 0, 0, 3293, 3295, 1, 0, 0, 0, 3294, 3296, 3, 246, 123, 0, 3295, 3294, 1, 0, 0, 0, 3295, 3296, 1, 0, 0, 0, 3296, 3298, 1, 0, 0, 0, 3297, 3299, 3, 424, 212, 0, 3298, 3297, 1, 0, 0, 0, 3298, 3299, 1, 0, 0, 0, 3299, 3301, 1, 0, 0, 0, 3300, 3302, 3, 224, 112, 0, 3301, 3300, 1, 0, 0, 0, 3301, 3302, 1, 0, 0, 0, 3302, 3304, 1, 0, 0, 0, 3303, 3305, 3, 198, 99, 0, 3304, 3303, 1, 0, 0, 0, 3304, 3305, 1, 0, 0, 0, 3305, 3308, 1, 0, 0, 0, 3306, 3307, 5, 17, 0, 0, 3307, 3309, 3, 380, 190, 0, 3308, 3306, 1, 0, 0, 0, 3308, 3309, 1, 0, 0, 0, 3309, 3311, 1, 0, 0, 0, 3310, 3257, 1, 0, 0, 0, 3310, 3277, 1, 0, 0, 0, 3311, 3313, 1, 0, 0, 0, 3312, 3177, 1, 0, 0, 0, 3312, 3250, 1, 0, 0, 0, 3313, 437, 1, 0, 0, 0, 3314, 3315, 5, 58, 0, 0, 3315, 3317, 5, 69, 0, 0, 3316, 3318, 3, 32, 16, 0, 3317, 3316, 1, 0, 0, 0, 3317, 3318, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3322, 3, 638, 319, 0, 3320, 3321, 5, 352, 0, 0, 3321, 3323, 5, 426, 0, 0, 3322, 3320, 1, 0, 0, 0, 3322, 3323, 1, 0, 0, 0, 3323, 3326, 1, 0, 0, 0, 3324, 3325, 5, 367, 0, 0, 3325, 3327, 5, 426, 0, 0, 3326, 3324, 1, 0, 0, 0, 3326, 3327, 1, 0, 0, 0, 3327, 3330, 1, 0, 0, 0, 3328, 3329, 5, 47, 0, 0, 3329, 3331, 5, 426, 0, 0, 3330, 3328, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3335, 1, 0, 0, 0, 3332, 3333, 5, 387, 0, 0, 3333, 3334, 5, 77, 0, 0, 3334, 3336, 3, 230, 115, 0, 3335, 3332, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 439, 1, 0, 0, 0, 3337, 3338, 5, 101, 0, 0, 3338, 3340, 5, 69, 0, 0, 3339, 3341, 3, 30, 15, 0, 3340, 3339, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3343, 3, 638, 319, 0, 3343, 441, 1, 0, 0, 0, 3344, 3345, 3, 638, 319, 0, 3345, 3346, 5, 395, 0, 0, 3346, 3348, 1, 0, 0, 0, 3347, 3344, 1, 0, 0, 0, 3348, 3351, 1, 0, 0, 0, 3349, 3347, 1, 0, 0, 0, 3349, 3350, 1, 0, 0, 0, 3350, 3352, 1, 0, 0, 0, 3351, 3349, 1, 0, 0, 0, 3352, 3353, 5, 415, 0, 0, 3353, 443, 1, 0, 0, 0, 3354, 3359, 3, 580, 290, 0, 3355, 3356, 5, 397, 0, 0, 3356, 3358, 3, 580, 290, 0, 3357, 3355, 1, 0, 0, 0, 3358, 3361, 1, 0, 0, 0, 3359, 3357, 1, 0, 0, 0, 3359, 3360, 1, 0, 0, 0, 3360, 445, 1, 0, 0, 0, 3361, 3359, 1, 0, 0, 0, 3362, 3367, 3, 638, 319, 0, 3363, 3364, 5, 397, 0, 0, 3364, 3366, 3, 638, 319, 0, 3365, 3363, 1, 0, 0, 0, 3366, 3369, 1, 0, 0, 0, 3367, 3365, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 447, 1, 0, 0, 0, 3369, 3367, 1, 0, 0, 0, 3370, 3371, 5, 139, 0, 0, 3371, 3372, 3, 450, 225, 0, 3372, 449, 1, 0, 0, 0, 3373, 3374, 5, 359, 0, 0, 3374, 3377, 3, 458, 229, 0, 3375, 3376, 5, 397, 0, 0, 3376, 3378, 3, 458, 229, 0, 3377, 3375, 1, 0, 0, 0, 3378, 3379, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3383, 1, 0, 0, 0, 3381, 3383, 3, 454, 227, 0, 3382, 3373, 1, 0, 0, 0, 3382, 3381, 1, 0, 0, 0, 3383, 451, 1, 0, 0, 0, 3384, 3388, 3, 468, 234, 0, 3385, 3387, 3, 462, 231, 0, 3386, 3385, 1, 0, 0, 0, 3387, 3390, 1, 0, 0, 0, 3388, 3386, 1, 0, 0, 0, 3388, 3389, 1, 0, 0, 0, 3389, 3417, 1, 0, 0, 0, 3390, 3388, 1, 0, 0, 0, 3391, 3395, 3, 498, 249, 0, 3392, 3394, 3, 462, 231, 0, 3393, 3392, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3417, 1, 0, 0, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3402, 3, 486, 243, 0, 3399, 3401, 3, 462, 231, 0, 3400, 3399, 1, 0, 0, 0, 3401, 3404, 1, 0, 0, 0, 3402, 3400, 1, 0, 0, 0, 3402, 3403, 1, 0, 0, 0, 3403, 3417, 1, 0, 0, 0, 3404, 3402, 1, 0, 0, 0, 3405, 3409, 3, 492, 246, 0, 3406, 3408, 3, 462, 231, 0, 3407, 3406, 1, 0, 0, 0, 3408, 3411, 1, 0, 0, 0, 3409, 3407, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3417, 1, 0, 0, 0, 3411, 3409, 1, 0, 0, 0, 3412, 3413, 5, 399, 0, 0, 3413, 3414, 3, 454, 227, 0, 3414, 3415, 5, 400, 0, 0, 3415, 3417, 1, 0, 0, 0, 3416, 3384, 1, 0, 0, 0, 3416, 3391, 1, 0, 0, 0, 3416, 3398, 1, 0, 0, 0, 3416, 3405, 1, 0, 0, 0, 3416, 3412, 1, 0, 0, 0, 3417, 453, 1, 0, 0, 0, 3418, 3429, 3, 452, 226, 0, 3419, 3420, 3, 460, 230, 0, 3420, 3425, 3, 456, 228, 0, 3421, 3422, 5, 224, 0, 0, 3422, 3426, 3, 580, 290, 0, 3423, 3424, 5, 370, 0, 0, 3424, 3426, 3, 264, 132, 0, 3425, 3421, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3428, 1, 0, 0, 0, 3427, 3419, 1, 0, 0, 0, 3428, 3431, 1, 0, 0, 0, 3429, 3427, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 455, 1, 0, 0, 0, 3431, 3429, 1, 0, 0, 0, 3432, 3437, 3, 468, 234, 0, 3433, 3437, 3, 498, 249, 0, 3434, 3437, 3, 486, 243, 0, 3435, 3437, 3, 492, 246, 0, 3436, 3432, 1, 0, 0, 0, 3436, 3433, 1, 0, 0, 0, 3436, 3434, 1, 0, 0, 0, 3436, 3435, 1, 0, 0, 0, 3437, 3441, 1, 0, 0, 0, 3438, 3440, 3, 462, 231, 0, 3439, 3438, 1, 0, 0, 0, 3440, 3443, 1, 0, 0, 0, 3441, 3439, 1, 0, 0, 0, 3441, 3442, 1, 0, 0, 0, 3442, 457, 1, 0, 0, 0, 3443, 3441, 1, 0, 0, 0, 3444, 3446, 5, 250, 0, 0, 3445, 3444, 1, 0, 0, 0, 3445, 3446, 1, 0, 0, 0, 3446, 3447, 1, 0, 0, 0, 3447, 3449, 3, 476, 238, 0, 3448, 3450, 3, 466, 233, 0, 3449, 3448, 1, 0, 0, 0, 3449, 3450, 1, 0, 0, 0, 3450, 3455, 1, 0, 0, 0, 3451, 3453, 5, 17, 0, 0, 3452, 3451, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3454, 1, 0, 0, 0, 3454, 3456, 3, 638, 319, 0, 3455, 3452, 1, 0, 0, 0, 3455, 3456, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3458, 5, 399, 0, 0, 3458, 3459, 3, 444, 222, 0, 3459, 3460, 5, 400, 0, 0, 3460, 459, 1, 0, 0, 0, 3461, 3476, 5, 397, 0, 0, 3462, 3473, 5, 157, 0, 0, 3463, 3473, 5, 60, 0, 0, 3464, 3466, 7, 27, 0, 0, 3465, 3467, 5, 231, 0, 0, 3466, 3465, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3473, 1, 0, 0, 0, 3468, 3470, 5, 180, 0, 0, 3469, 3471, 7, 28, 0, 0, 3470, 3469, 1, 0, 0, 0, 3470, 3471, 1, 0, 0, 0, 3471, 3473, 1, 0, 0, 0, 3472, 3462, 1, 0, 0, 0, 3472, 3463, 1, 0, 0, 0, 3472, 3464, 1, 0, 0, 0, 3472, 3468, 1, 0, 0, 0, 3472, 3473, 1, 0, 0, 0, 3473, 3474, 1, 0, 0, 0, 3474, 3476, 5, 171, 0, 0, 3475, 3461, 1, 0, 0, 0, 3475, 3472, 1, 0, 0, 0, 3476, 461, 1, 0, 0, 0, 3477, 3478, 5, 178, 0, 0, 3478, 3479, 5, 378, 0, 0, 3479, 3480, 5, 231, 0, 0, 3480, 3481, 3, 550, 275, 0, 3481, 3491, 3, 464, 232, 0, 3482, 3483, 5, 17, 0, 0, 3483, 3488, 3, 638, 319, 0, 3484, 3485, 5, 397, 0, 0, 3485, 3487, 3, 638, 319, 0, 3486, 3484, 1, 0, 0, 0, 3487, 3490, 1, 0, 0, 0, 3488, 3486, 1, 0, 0, 0, 3488, 3489, 1, 0, 0, 0, 3489, 3492, 1, 0, 0, 0, 3490, 3488, 1, 0, 0, 0, 3491, 3482, 1, 0, 0, 0, 3491, 3492, 1, 0, 0, 0, 3492, 3535, 1, 0, 0, 0, 3493, 3495, 5, 397, 0, 0, 3494, 3493, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3496, 1, 0, 0, 0, 3496, 3532, 5, 178, 0, 0, 3497, 3498, 5, 378, 0, 0, 3498, 3499, 3, 550, 275, 0, 3499, 3509, 3, 464, 232, 0, 3500, 3501, 5, 17, 0, 0, 3501, 3506, 3, 638, 319, 0, 3502, 3503, 5, 397, 0, 0, 3503, 3505, 3, 638, 319, 0, 3504, 3502, 1, 0, 0, 0, 3505, 3508, 1, 0, 0, 0, 3506, 3504, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 3510, 1, 0, 0, 0, 3508, 3506, 1, 0, 0, 0, 3509, 3500, 1, 0, 0, 0, 3509, 3510, 1, 0, 0, 0, 3510, 3533, 1, 0, 0, 0, 3511, 3512, 5, 329, 0, 0, 3512, 3513, 5, 399, 0, 0, 3513, 3514, 3, 496, 248, 0, 3514, 3516, 5, 400, 0, 0, 3515, 3517, 5, 17, 0, 0, 3516, 3515, 1, 0, 0, 0, 3516, 3517, 1, 0, 0, 0, 3517, 3518, 1, 0, 0, 0, 3518, 3530, 3, 464, 232, 0, 3519, 3520, 5, 399, 0, 0, 3520, 3525, 3, 638, 319, 0, 3521, 3522, 5, 397, 0, 0, 3522, 3524, 3, 638, 319, 0, 3523, 3521, 1, 0, 0, 0, 3524, 3527, 1, 0, 0, 0, 3525, 3523, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3528, 1, 0, 0, 0, 3527, 3525, 1, 0, 0, 0, 3528, 3529, 5, 400, 0, 0, 3529, 3531, 1, 0, 0, 0, 3530, 3519, 1, 0, 0, 0, 3530, 3531, 1, 0, 0, 0, 3531, 3533, 1, 0, 0, 0, 3532, 3497, 1, 0, 0, 0, 3532, 3511, 1, 0, 0, 0, 3533, 3535, 1, 0, 0, 0, 3534, 3477, 1, 0, 0, 0, 3534, 3494, 1, 0, 0, 0, 3535, 463, 1, 0, 0, 0, 3536, 3537, 3, 638, 319, 0, 3537, 465, 1, 0, 0, 0, 3538, 3539, 5, 331, 0, 0, 3539, 3540, 5, 399, 0, 0, 3540, 3541, 5, 30, 0, 0, 3541, 3542, 5, 431, 0, 0, 3542, 3543, 5, 230, 0, 0, 3543, 3544, 5, 221, 0, 0, 3544, 3554, 5, 431, 0, 0, 3545, 3546, 5, 224, 0, 0, 3546, 3551, 3, 580, 290, 0, 3547, 3548, 5, 397, 0, 0, 3548, 3550, 3, 580, 290, 0, 3549, 3547, 1, 0, 0, 0, 3550, 3553, 1, 0, 0, 0, 3551, 3549, 1, 0, 0, 0, 3551, 3552, 1, 0, 0, 0, 3552, 3555, 1, 0, 0, 0, 3553, 3551, 1, 0, 0, 0, 3554, 3545, 1, 0, 0, 0, 3554, 3555, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3566, 5, 400, 0, 0, 3557, 3558, 5, 331, 0, 0, 3558, 3562, 5, 399, 0, 0, 3559, 3560, 5, 431, 0, 0, 3560, 3563, 7, 29, 0, 0, 3561, 3563, 5, 430, 0, 0, 3562, 3559, 1, 0, 0, 0, 3562, 3561, 1, 0, 0, 0, 3563, 3564, 1, 0, 0, 0, 3564, 3566, 5, 400, 0, 0, 3565, 3538, 1, 0, 0, 0, 3565, 3557, 1, 0, 0, 0, 3566, 467, 1, 0, 0, 0, 3567, 3569, 3, 476, 238, 0, 3568, 3570, 3, 226, 113, 0, 3569, 3568, 1, 0, 0, 0, 3569, 3570, 1, 0, 0, 0, 3570, 3572, 1, 0, 0, 0, 3571, 3573, 3, 466, 233, 0, 3572, 3571, 1, 0, 0, 0, 3572, 3573, 1, 0, 0, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3576, 3, 470, 235, 0, 3575, 3574, 1, 0, 0, 0, 3575, 3576, 1, 0, 0, 0, 3576, 3581, 1, 0, 0, 0, 3577, 3579, 5, 17, 0, 0, 3578, 3577, 1, 0, 0, 0, 3578, 3579, 1, 0, 0, 0, 3579, 3580, 1, 0, 0, 0, 3580, 3582, 3, 638, 319, 0, 3581, 3578, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 469, 1, 0, 0, 0, 3583, 3593, 5, 134, 0, 0, 3584, 3585, 5, 327, 0, 0, 3585, 3586, 5, 17, 0, 0, 3586, 3587, 5, 221, 0, 0, 3587, 3594, 3, 580, 290, 0, 3588, 3589, 5, 134, 0, 0, 3589, 3590, 5, 328, 0, 0, 3590, 3591, 5, 17, 0, 0, 3591, 3592, 5, 221, 0, 0, 3592, 3594, 5, 431, 0, 0, 3593, 3584, 1, 0, 0, 0, 3593, 3588, 1, 0, 0, 0, 3594, 471, 1, 0, 0, 0, 3595, 3596, 3, 638, 319, 0, 3596, 473, 1, 0, 0, 0, 3597, 3598, 3, 638, 319, 0, 3598, 475, 1, 0, 0, 0, 3599, 3602, 3, 478, 239, 0, 3600, 3602, 3, 482, 241, 0, 3601, 3599, 1, 0, 0, 0, 3601, 3600, 1, 0, 0, 0, 3602, 477, 1, 0, 0, 0, 3603, 3604, 3, 638, 319, 0, 3604, 3605, 5, 395, 0, 0, 3605, 3608, 3, 638, 319, 0, 3606, 3607, 5, 395, 0, 0, 3607, 3609, 3, 638, 319, 0, 3608, 3606, 1, 0, 0, 0, 3608, 3609, 1, 0, 0, 0, 3609, 3612, 1, 0, 0, 0, 3610, 3612, 3, 638, 319, 0, 3611, 3603, 1, 0, 0, 0, 3611, 3610, 1, 0, 0, 0, 3612, 479, 1, 0, 0, 0, 3613, 3614, 3, 638, 319, 0, 3614, 3615, 5, 395, 0, 0, 3615, 3618, 3, 638, 319, 0, 3616, 3617, 5, 395, 0, 0, 3617, 3619, 3, 638, 319, 0, 3618, 3616, 1, 0, 0, 0, 3618, 3619, 1, 0, 0, 0, 3619, 3622, 1, 0, 0, 0, 3620, 3622, 3, 638, 319, 0, 3621, 3613, 1, 0, 0, 0, 3621, 3620, 1, 0, 0, 0, 3622, 481, 1, 0, 0, 0, 3623, 3624, 3, 638, 319, 0, 3624, 3625, 5, 395, 0, 0, 3625, 3627, 1, 0, 0, 0, 3626, 3623, 1, 0, 0, 0, 3626, 3627, 1, 0, 0, 0, 3627, 3628, 1, 0, 0, 0, 3628, 3629, 3, 638, 319, 0, 3629, 483, 1, 0, 0, 0, 3630, 3631, 3, 638, 319, 0, 3631, 3632, 5, 395, 0, 0, 3632, 3634, 1, 0, 0, 0, 3633, 3630, 1, 0, 0, 0, 3633, 3634, 1, 0, 0, 0, 3634, 3635, 1, 0, 0, 0, 3635, 3636, 3, 638, 319, 0, 3636, 485, 1, 0, 0, 0, 3637, 3638, 5, 399, 0, 0, 3638, 3639, 3, 360, 180, 0, 3639, 3641, 5, 400, 0, 0, 3640, 3642, 5, 17, 0, 0, 3641, 3640, 1, 0, 0, 0, 3641, 3642, 1, 0, 0, 0, 3642, 3643, 1, 0, 0, 0, 3643, 3644, 3, 638, 319, 0, 3644, 487, 1, 0, 0, 0, 3645, 3646, 5, 237, 0, 0, 3646, 3647, 5, 32, 0, 0, 3647, 3649, 3, 536, 268, 0, 3648, 3650, 3, 542, 271, 0, 3649, 3648, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3659, 1, 0, 0, 0, 3651, 3659, 3, 542, 271, 0, 3652, 3654, 3, 546, 273, 0, 3653, 3655, 3, 548, 274, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3659, 1, 0, 0, 0, 3656, 3659, 3, 548, 274, 0, 3657, 3659, 3, 544, 272, 0, 3658, 3645, 1, 0, 0, 0, 3658, 3651, 1, 0, 0, 0, 3658, 3652, 1, 0, 0, 0, 3658, 3656, 1, 0, 0, 0, 3658, 3657, 1, 0, 0, 0, 3659, 489, 1, 0, 0, 0, 3660, 3664, 3, 486, 243, 0, 3661, 3664, 3, 468, 234, 0, 3662, 3664, 3, 492, 246, 0, 3663, 3660, 1, 0, 0, 0, 3663, 3661, 1, 0, 0, 0, 3663, 3662, 1, 0, 0, 0, 3664, 491, 1, 0, 0, 0, 3665, 3666, 3, 638, 319, 0, 3666, 3667, 5, 399, 0, 0, 3667, 3668, 5, 224, 0, 0, 3668, 3670, 3, 490, 245, 0, 3669, 3671, 3, 488, 244, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3687, 1, 0, 0, 0, 3672, 3673, 5, 432, 0, 0, 3673, 3674, 5, 399, 0, 0, 3674, 3675, 3, 580, 290, 0, 3675, 3684, 5, 400, 0, 0, 3676, 3677, 5, 397, 0, 0, 3677, 3678, 5, 432, 0, 0, 3678, 3679, 5, 399, 0, 0, 3679, 3680, 3, 580, 290, 0, 3680, 3681, 5, 400, 0, 0, 3681, 3683, 1, 0, 0, 0, 3682, 3676, 1, 0, 0, 0, 3683, 3686, 1, 0, 0, 0, 3684, 3682, 1, 0, 0, 0, 3684, 3685, 1, 0, 0, 0, 3685, 3688, 1, 0, 0, 0, 3686, 3684, 1, 0, 0, 0, 3687, 3672, 1, 0, 0, 0, 3687, 3688, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3691, 5, 400, 0, 0, 3690, 3692, 3, 638, 319, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 493, 1, 0, 0, 0, 3693, 3694, 5, 384, 0, 0, 3694, 3695, 3, 580, 290, 0, 3695, 495, 1, 0, 0, 0, 3696, 3715, 5, 374, 0, 0, 3697, 3702, 3, 538, 269, 0, 3698, 3699, 5, 397, 0, 0, 3699, 3701, 3, 538, 269, 0, 3700, 3698, 1, 0, 0, 0, 3701, 3704, 1, 0, 0, 0, 3702, 3700, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3716, 1, 0, 0, 0, 3704, 3702, 1, 0, 0, 0, 3705, 3706, 5, 399, 0, 0, 3706, 3707, 3, 534, 267, 0, 3707, 3712, 5, 400, 0, 0, 3708, 3709, 5, 397, 0, 0, 3709, 3711, 3, 538, 269, 0, 3710, 3708, 1, 0, 0, 0, 3711, 3714, 1, 0, 0, 0, 3712, 3710, 1, 0, 0, 0, 3712, 3713, 1, 0, 0, 0, 3713, 3716, 1, 0, 0, 0, 3714, 3712, 1, 0, 0, 0, 3715, 3697, 1, 0, 0, 0, 3715, 3705, 1, 0, 0, 0, 3716, 497, 1, 0, 0, 0, 3717, 3718, 5, 329, 0, 0, 3718, 3719, 5, 399, 0, 0, 3719, 3720, 3, 496, 248, 0, 3720, 3722, 5, 400, 0, 0, 3721, 3723, 5, 17, 0, 0, 3722, 3721, 1, 0, 0, 0, 3722, 3723, 1, 0, 0, 0, 3723, 3724, 1, 0, 0, 0, 3724, 3734, 3, 464, 232, 0, 3725, 3726, 5, 399, 0, 0, 3726, 3731, 3, 638, 319, 0, 3727, 3728, 5, 397, 0, 0, 3728, 3730, 3, 638, 319, 0, 3729, 3727, 1, 0, 0, 0, 3730, 3733, 1, 0, 0, 0, 3731, 3729, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3734, 3725, 1, 0, 0, 0, 3734, 3735, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3737, 5, 400, 0, 0, 3737, 499, 1, 0, 0, 0, 3738, 3740, 5, 299, 0, 0, 3739, 3741, 5, 436, 0, 0, 3740, 3739, 1, 0, 0, 0, 3740, 3741, 1, 0, 0, 0, 3741, 3755, 1, 0, 0, 0, 3742, 3744, 7, 21, 0, 0, 3743, 3742, 1, 0, 0, 0, 3743, 3744, 1, 0, 0, 0, 3744, 3745, 1, 0, 0, 0, 3745, 3750, 3, 504, 252, 0, 3746, 3747, 5, 397, 0, 0, 3747, 3749, 3, 504, 252, 0, 3748, 3746, 1, 0, 0, 0, 3749, 3752, 1, 0, 0, 0, 3750, 3748, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 3756, 1, 0, 0, 0, 3752, 3750, 1, 0, 0, 0, 3753, 3754, 5, 347, 0, 0, 3754, 3756, 3, 502, 251, 0, 3755, 3743, 1, 0, 0, 0, 3755, 3753, 1, 0, 0, 0, 3756, 3759, 1, 0, 0, 0, 3757, 3759, 3, 506, 253, 0, 3758, 3738, 1, 0, 0, 0, 3758, 3757, 1, 0, 0, 0, 3759, 501, 1, 0, 0, 0, 3760, 3761, 5, 399, 0, 0, 3761, 3762, 3, 510, 255, 0, 3762, 3763, 5, 400, 0, 0, 3763, 3764, 3, 212, 106, 0, 3764, 3765, 3, 216, 108, 0, 3765, 3766, 5, 370, 0, 0, 3766, 3779, 5, 426, 0, 0, 3767, 3777, 5, 17, 0, 0, 3768, 3771, 5, 399, 0, 0, 3769, 3772, 3, 446, 223, 0, 3770, 3772, 3, 248, 124, 0, 3771, 3769, 1, 0, 0, 0, 3771, 3770, 1, 0, 0, 0, 3772, 3773, 1, 0, 0, 0, 3773, 3774, 5, 400, 0, 0, 3774, 3778, 1, 0, 0, 0, 3775, 3778, 3, 446, 223, 0, 3776, 3778, 3, 248, 124, 0, 3777, 3768, 1, 0, 0, 0, 3777, 3775, 1, 0, 0, 0, 3777, 3776, 1, 0, 0, 0, 3778, 3780, 1, 0, 0, 0, 3779, 3767, 1, 0, 0, 0, 3779, 3780, 1, 0, 0, 0, 3780, 3781, 1, 0, 0, 0, 3781, 3782, 3, 212, 106, 0, 3782, 3783, 3, 214, 107, 0, 3783, 503, 1, 0, 0, 0, 3784, 3808, 3, 442, 221, 0, 3785, 3788, 3, 256, 128, 0, 3786, 3788, 3, 580, 290, 0, 3787, 3785, 1, 0, 0, 0, 3787, 3786, 1, 0, 0, 0, 3788, 3805, 1, 0, 0, 0, 3789, 3791, 5, 17, 0, 0, 3790, 3789, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3806, 3, 638, 319, 0, 3793, 3794, 5, 17, 0, 0, 3794, 3795, 5, 399, 0, 0, 3795, 3800, 3, 638, 319, 0, 3796, 3797, 5, 397, 0, 0, 3797, 3799, 3, 638, 319, 0, 3798, 3796, 1, 0, 0, 0, 3799, 3802, 1, 0, 0, 0, 3800, 3798, 1, 0, 0, 0, 3800, 3801, 1, 0, 0, 0, 3801, 3803, 1, 0, 0, 0, 3802, 3800, 1, 0, 0, 0, 3803, 3804, 5, 400, 0, 0, 3804, 3806, 1, 0, 0, 0, 3805, 3790, 1, 0, 0, 0, 3805, 3793, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3808, 1, 0, 0, 0, 3807, 3784, 1, 0, 0, 0, 3807, 3787, 1, 0, 0, 0, 3808, 505, 1, 0, 0, 0, 3809, 3810, 7, 30, 0, 0, 3810, 3811, 3, 510, 255, 0, 3811, 3812, 3, 212, 106, 0, 3812, 3813, 3, 216, 108, 0, 3813, 3814, 5, 370, 0, 0, 3814, 3827, 5, 426, 0, 0, 3815, 3825, 5, 17, 0, 0, 3816, 3819, 5, 399, 0, 0, 3817, 3820, 3, 446, 223, 0, 3818, 3820, 3, 248, 124, 0, 3819, 3817, 1, 0, 0, 0, 3819, 3818, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 3822, 5, 400, 0, 0, 3822, 3826, 1, 0, 0, 0, 3823, 3826, 3, 446, 223, 0, 3824, 3826, 3, 248, 124, 0, 3825, 3816, 1, 0, 0, 0, 3825, 3823, 1, 0, 0, 0, 3825, 3824, 1, 0, 0, 0, 3826, 3828, 1, 0, 0, 0, 3827, 3815, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3830, 3, 212, 106, 0, 3830, 3831, 3, 214, 107, 0, 3831, 507, 1, 0, 0, 0, 3832, 3835, 3, 442, 221, 0, 3833, 3835, 3, 580, 290, 0, 3834, 3832, 1, 0, 0, 0, 3834, 3833, 1, 0, 0, 0, 3835, 509, 1, 0, 0, 0, 3836, 3841, 3, 508, 254, 0, 3837, 3838, 5, 397, 0, 0, 3838, 3840, 3, 508, 254, 0, 3839, 3837, 1, 0, 0, 0, 3840, 3843, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3841, 3842, 1, 0, 0, 0, 3842, 511, 1, 0, 0, 0, 3843, 3841, 1, 0, 0, 0, 3844, 3845, 5, 386, 0, 0, 3845, 3846, 3, 638, 319, 0, 3846, 3847, 5, 17, 0, 0, 3847, 3855, 3, 514, 257, 0, 3848, 3849, 5, 397, 0, 0, 3849, 3850, 3, 638, 319, 0, 3850, 3851, 5, 17, 0, 0, 3851, 3852, 3, 514, 257, 0, 3852, 3854, 1, 0, 0, 0, 3853, 3848, 1, 0, 0, 0, 3854, 3857, 1, 0, 0, 0, 3855, 3853, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 513, 1, 0, 0, 0, 3857, 3855, 1, 0, 0, 0, 3858, 3871, 3, 638, 319, 0, 3859, 3861, 5, 399, 0, 0, 3860, 3862, 3, 638, 319, 0, 3861, 3860, 1, 0, 0, 0, 3861, 3862, 1, 0, 0, 0, 3862, 3864, 1, 0, 0, 0, 3863, 3865, 3, 488, 244, 0, 3864, 3863, 1, 0, 0, 0, 3864, 3865, 1, 0, 0, 0, 3865, 3867, 1, 0, 0, 0, 3866, 3868, 3, 516, 258, 0, 3867, 3866, 1, 0, 0, 0, 3867, 3868, 1, 0, 0, 0, 3868, 3869, 1, 0, 0, 0, 3869, 3871, 5, 400, 0, 0, 3870, 3858, 1, 0, 0, 0, 3870, 3859, 1, 0, 0, 0, 3871, 515, 1, 0, 0, 0, 3872, 3886, 7, 31, 0, 0, 3873, 3874, 5, 354, 0, 0, 3874, 3880, 5, 247, 0, 0, 3875, 3876, 5, 62, 0, 0, 3876, 3880, 5, 291, 0, 0, 3877, 3878, 5, 431, 0, 0, 3878, 3880, 5, 247, 0, 0, 3879, 3873, 1, 0, 0, 0, 3879, 3875, 1, 0, 0, 0, 3879, 3877, 1, 0, 0, 0, 3880, 3887, 1, 0, 0, 0, 3881, 3882, 5, 25, 0, 0, 3882, 3883, 3, 518, 259, 0, 3883, 3884, 5, 11, 0, 0, 3884, 3885, 3, 518, 259, 0, 3885, 3887, 1, 0, 0, 0, 3886, 3879, 1, 0, 0, 0, 3886, 3881, 1, 0, 0, 0, 3887, 517, 1, 0, 0, 0, 3888, 3889, 7, 32, 0, 0, 3889, 3893, 7, 33, 0, 0, 3890, 3891, 5, 62, 0, 0, 3891, 3893, 5, 291, 0, 0, 3892, 3888, 1, 0, 0, 0, 3892, 3890, 1, 0, 0, 0, 3893, 519, 1, 0, 0, 0, 3894, 3895, 5, 144, 0, 0, 3895, 3901, 5, 32, 0, 0, 3896, 3902, 3, 256, 128, 0, 3897, 3902, 3, 522, 261, 0, 3898, 3902, 3, 524, 262, 0, 3899, 3900, 5, 399, 0, 0, 3900, 3902, 5, 400, 0, 0, 3901, 3896, 1, 0, 0, 0, 3901, 3897, 1, 0, 0, 0, 3901, 3898, 1, 0, 0, 0, 3901, 3899, 1, 0, 0, 0, 3902, 521, 1, 0, 0, 0, 3903, 3906, 5, 290, 0, 0, 3904, 3906, 5, 61, 0, 0, 3905, 3903, 1, 0, 0, 0, 3905, 3904, 1, 0, 0, 0, 3906, 3907, 1, 0, 0, 0, 3907, 3908, 5, 399, 0, 0, 3908, 3913, 3, 580, 290, 0, 3909, 3910, 5, 397, 0, 0, 3910, 3912, 3, 580, 290, 0, 3911, 3909, 1, 0, 0, 0, 3912, 3915, 1, 0, 0, 0, 3913, 3911, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3916, 1, 0, 0, 0, 3915, 3913, 1, 0, 0, 0, 3916, 3917, 5, 400, 0, 0, 3917, 523, 1, 0, 0, 0, 3918, 3923, 3, 540, 270, 0, 3919, 3920, 5, 387, 0, 0, 3920, 3924, 5, 290, 0, 0, 3921, 3922, 5, 387, 0, 0, 3922, 3924, 5, 61, 0, 0, 3923, 3919, 1, 0, 0, 0, 3923, 3921, 1, 0, 0, 0, 3923, 3924, 1, 0, 0, 0, 3924, 3938, 1, 0, 0, 0, 3925, 3926, 5, 145, 0, 0, 3926, 3927, 5, 305, 0, 0, 3927, 3928, 5, 399, 0, 0, 3928, 3933, 3, 526, 263, 0, 3929, 3930, 5, 397, 0, 0, 3930, 3932, 3, 526, 263, 0, 3931, 3929, 1, 0, 0, 0, 3932, 3935, 1, 0, 0, 0, 3933, 3931, 1, 0, 0, 0, 3933, 3934, 1, 0, 0, 0, 3934, 3936, 1, 0, 0, 0, 3935, 3933, 1, 0, 0, 0, 3936, 3937, 5, 400, 0, 0, 3937, 3939, 1, 0, 0, 0, 3938, 3925, 1, 0, 0, 0, 3938, 3939, 1, 0, 0, 0, 3939, 525, 1, 0, 0, 0, 3940, 3942, 5, 399, 0, 0, 3941, 3943, 3, 580, 290, 0, 3942, 3941, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 3948, 1, 0, 0, 0, 3944, 3945, 5, 397, 0, 0, 3945, 3947, 3, 580, 290, 0, 3946, 3944, 1, 0, 0, 0, 3947, 3950, 1, 0, 0, 0, 3948, 3946, 1, 0, 0, 0, 3948, 3949, 1, 0, 0, 0, 3949, 3951, 1, 0, 0, 0, 3950, 3948, 1, 0, 0, 0, 3951, 3954, 5, 400, 0, 0, 3952, 3954, 3, 580, 290, 0, 3953, 3940, 1, 0, 0, 0, 3953, 3952, 1, 0, 0, 0, 3954, 527, 1, 0, 0, 0, 3955, 3956, 5, 146, 0, 0, 3956, 3957, 3, 580, 290, 0, 3957, 529, 1, 0, 0, 0, 3958, 3959, 5, 256, 0, 0, 3959, 3960, 3, 580, 290, 0, 3960, 531, 1, 0, 0, 0, 3961, 3964, 5, 83, 0, 0, 3962, 3964, 3, 580, 290, 0, 3963, 3961, 1, 0, 0, 0, 3963, 3962, 1, 0, 0, 0, 3964, 533, 1, 0, 0, 0, 3965, 3967, 3, 580, 290, 0, 3966, 3968, 5, 17, 0, 0, 3967, 3966, 1, 0, 0, 0, 3967, 3968, 1, 0, 0, 0, 3968, 3970, 1, 0, 0, 0, 3969, 3971, 3, 638, 319, 0, 3970, 3969, 1, 0, 0, 0, 3970, 3971, 1, 0, 0, 0, 3971, 3982, 1, 0, 0, 0, 3972, 3973, 5, 397, 0, 0, 3973, 3975, 3, 580, 290, 0, 3974, 3976, 5, 17, 0, 0, 3975, 3974, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3978, 1, 0, 0, 0, 3977, 3979, 3, 638, 319, 0, 3978, 3977, 1, 0, 0, 0, 3978, 3979, 1, 0, 0, 0, 3979, 3981, 1, 0, 0, 0, 3980, 3972, 1, 0, 0, 0, 3981, 3984, 1, 0, 0, 0, 3982, 3980, 1, 0, 0, 0, 3982, 3983, 1, 0, 0, 0, 3983, 535, 1, 0, 0, 0, 3984, 3982, 1, 0, 0, 0, 3985, 3988, 3, 538, 269, 0, 3986, 3988, 3, 540, 270, 0, 3987, 3985, 1, 0, 0, 0, 3987, 3986, 1, 0, 0, 0, 3988, 537, 1, 0, 0, 0, 3989, 3990, 5, 399, 0, 0, 3990, 3991, 3, 540, 270, 0, 3991, 3992, 5, 400, 0, 0, 3992, 539, 1, 0, 0, 0, 3993, 4000, 3, 532, 266, 0, 3994, 3995, 5, 397, 0, 0, 3995, 3997, 3, 532, 266, 0, 3996, 3994, 1, 0, 0, 0, 3997, 3998, 1, 0, 0, 0, 3998, 3996, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4001, 1, 0, 0, 0, 4000, 3996, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 541, 1, 0, 0, 0, 4002, 4003, 5, 229, 0, 0, 4003, 4004, 5, 32, 0, 0, 4004, 4009, 3, 308, 154, 0, 4005, 4006, 5, 397, 0, 0, 4006, 4008, 3, 308, 154, 0, 4007, 4005, 1, 0, 0, 0, 4008, 4011, 1, 0, 0, 0, 4009, 4007, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 543, 1, 0, 0, 0, 4011, 4009, 1, 0, 0, 0, 4012, 4013, 5, 41, 0, 0, 4013, 4014, 5, 32, 0, 0, 4014, 4015, 3, 536, 268, 0, 4015, 545, 1, 0, 0, 0, 4016, 4017, 5, 97, 0, 0, 4017, 4018, 5, 32, 0, 0, 4018, 4019, 3, 536, 268, 0, 4019, 547, 1, 0, 0, 0, 4020, 4021, 5, 314, 0, 0, 4021, 4041, 5, 32, 0, 0, 4022, 4023, 5, 399, 0, 0, 4023, 4028, 3, 308, 154, 0, 4024, 4025, 5, 397, 0, 0, 4025, 4027, 3, 308, 154, 0, 4026, 4024, 1, 0, 0, 0, 4027, 4030, 1, 0, 0, 0, 4028, 4026, 1, 0, 0, 0, 4028, 4029, 1, 0, 0, 0, 4029, 4031, 1, 0, 0, 0, 4030, 4028, 1, 0, 0, 0, 4031, 4032, 5, 400, 0, 0, 4032, 4042, 1, 0, 0, 0, 4033, 4038, 3, 308, 154, 0, 4034, 4035, 5, 397, 0, 0, 4035, 4037, 3, 308, 154, 0, 4036, 4034, 1, 0, 0, 0, 4037, 4040, 1, 0, 0, 0, 4038, 4036, 1, 0, 0, 0, 4038, 4039, 1, 0, 0, 0, 4039, 4042, 1, 0, 0, 0, 4040, 4038, 1, 0, 0, 0, 4041, 4022, 1, 0, 0, 0, 4041, 4033, 1, 0, 0, 0, 4042, 549, 1, 0, 0, 0, 4043, 4044, 5, 349, 0, 0, 4044, 4048, 5, 399, 0, 0, 4045, 4049, 5, 179, 0, 0, 4046, 4049, 5, 343, 0, 0, 4047, 4049, 5, 29, 0, 0, 4048, 4045, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4048, 4047, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4051, 1, 0, 0, 0, 4050, 4052, 3, 508, 254, 0, 4051, 4050, 1, 0, 0, 0, 4051, 4052, 1, 0, 0, 0, 4052, 4053, 1, 0, 0, 0, 4053, 4054, 5, 139, 0, 0, 4054, 4055, 3, 508, 254, 0, 4055, 4056, 5, 400, 0, 0, 4056, 4097, 1, 0, 0, 0, 4057, 4058, 3, 558, 279, 0, 4058, 4073, 5, 399, 0, 0, 4059, 4074, 5, 415, 0, 0, 4060, 4062, 7, 21, 0, 0, 4061, 4060, 1, 0, 0, 0, 4061, 4062, 1, 0, 0, 0, 4062, 4071, 1, 0, 0, 0, 4063, 4068, 3, 508, 254, 0, 4064, 4065, 5, 397, 0, 0, 4065, 4067, 3, 508, 254, 0, 4066, 4064, 1, 0, 0, 0, 4067, 4070, 1, 0, 0, 0, 4068, 4066, 1, 0, 0, 0, 4068, 4069, 1, 0, 0, 0, 4069, 4072, 1, 0, 0, 0, 4070, 4068, 1, 0, 0, 0, 4071, 4063, 1, 0, 0, 0, 4071, 4072, 1, 0, 0, 0, 4072, 4074, 1, 0, 0, 0, 4073, 4059, 1, 0, 0, 0, 4073, 4061, 1, 0, 0, 0, 4074, 4094, 1, 0, 0, 0, 4075, 4076, 5, 400, 0, 0, 4076, 4077, 5, 388, 0, 0, 4077, 4078, 5, 144, 0, 0, 4078, 4079, 5, 399, 0, 0, 4079, 4080, 3, 542, 271, 0, 4080, 4081, 5, 400, 0, 0, 4081, 4095, 1, 0, 0, 0, 4082, 4084, 5, 400, 0, 0, 4083, 4085, 3, 552, 276, 0, 4084, 4083, 1, 0, 0, 0, 4084, 4085, 1, 0, 0, 0, 4085, 4086, 1, 0, 0, 0, 4086, 4087, 5, 234, 0, 0, 4087, 4095, 3, 514, 257, 0, 4088, 4089, 3, 552, 276, 0, 4089, 4090, 5, 400, 0, 0, 4090, 4091, 5, 234, 0, 0, 4091, 4092, 3, 514, 257, 0, 4092, 4095, 1, 0, 0, 0, 4093, 4095, 5, 400, 0, 0, 4094, 4075, 1, 0, 0, 0, 4094, 4082, 1, 0, 0, 0, 4094, 4088, 1, 0, 0, 0, 4094, 4093, 1, 0, 0, 0, 4095, 4097, 1, 0, 0, 0, 4096, 4043, 1, 0, 0, 0, 4096, 4057, 1, 0, 0, 0, 4097, 551, 1, 0, 0, 0, 4098, 4099, 7, 34, 0, 0, 4099, 4100, 5, 220, 0, 0, 4100, 553, 1, 0, 0, 0, 4101, 4102, 3, 640, 320, 0, 4102, 555, 1, 0, 0, 0, 4103, 4106, 3, 640, 320, 0, 4104, 4106, 5, 426, 0, 0, 4105, 4103, 1, 0, 0, 0, 4105, 4104, 1, 0, 0, 0, 4106, 557, 1, 0, 0, 0, 4107, 4111, 3, 640, 320, 0, 4108, 4111, 3, 646, 323, 0, 4109, 4111, 3, 636, 318, 0, 4110, 4107, 1, 0, 0, 0, 4110, 4108, 1, 0, 0, 0, 4110, 4109, 1, 0, 0, 0, 4111, 559, 1, 0, 0, 0, 4112, 4113, 5, 36, 0, 0, 4113, 4114, 5, 399, 0, 0, 4114, 4115, 3, 580, 290, 0, 4115, 4116, 5, 17, 0, 0, 4116, 4119, 3, 348, 174, 0, 4117, 4118, 5, 137, 0, 0, 4118, 4120, 5, 426, 0, 0, 4119, 4117, 1, 0, 0, 0, 4119, 4120, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 4122, 5, 400, 0, 0, 4122, 561, 1, 0, 0, 0, 4123, 4124, 5, 35, 0, 0, 4124, 4130, 3, 580, 290, 0, 4125, 4126, 5, 383, 0, 0, 4126, 4127, 3, 580, 290, 0, 4127, 4128, 5, 335, 0, 0, 4128, 4129, 3, 580, 290, 0, 4129, 4131, 1, 0, 0, 0, 4130, 4125, 1, 0, 0, 0, 4131, 4132, 1, 0, 0, 0, 4132, 4130, 1, 0, 0, 0, 4132, 4133, 1, 0, 0, 0, 4133, 4136, 1, 0, 0, 0, 4134, 4135, 5, 105, 0, 0, 4135, 4137, 3, 580, 290, 0, 4136, 4134, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 4138, 1, 0, 0, 0, 4138, 4139, 5, 108, 0, 0, 4139, 563, 1, 0, 0, 0, 4140, 4146, 5, 35, 0, 0, 4141, 4142, 5, 383, 0, 0, 4142, 4143, 3, 580, 290, 0, 4143, 4144, 5, 335, 0, 0, 4144, 4145, 3, 580, 290, 0, 4145, 4147, 1, 0, 0, 0, 4146, 4141, 1, 0, 0, 0, 4147, 4148, 1, 0, 0, 0, 4148, 4146, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4152, 1, 0, 0, 0, 4150, 4151, 5, 105, 0, 0, 4151, 4153, 3, 580, 290, 0, 4152, 4150, 1, 0, 0, 0, 4152, 4153, 1, 0, 0, 0, 4153, 4154, 1, 0, 0, 0, 4154, 4155, 5, 108, 0, 0, 4155, 565, 1, 0, 0, 0, 4156, 4157, 5, 132, 0, 0, 4157, 4158, 5, 399, 0, 0, 4158, 4161, 3, 580, 290, 0, 4159, 4160, 5, 341, 0, 0, 4160, 4162, 3, 570, 285, 0, 4161, 4159, 1, 0, 0, 0, 4161, 4162, 1, 0, 0, 0, 4162, 4163, 1, 0, 0, 0, 4163, 4164, 5, 400, 0, 0, 4164, 567, 1, 0, 0, 0, 4165, 4166, 5, 124, 0, 0, 4166, 4167, 5, 399, 0, 0, 4167, 4168, 3, 570, 285, 0, 4168, 4169, 5, 139, 0, 0, 4169, 4170, 3, 580, 290, 0, 4170, 4171, 5, 400, 0, 0, 4171, 569, 1, 0, 0, 0, 4172, 4181, 3, 666, 333, 0, 4173, 4181, 5, 257, 0, 0, 4174, 4181, 3, 668, 334, 0, 4175, 4181, 3, 670, 335, 0, 4176, 4181, 3, 672, 336, 0, 4177, 4181, 3, 674, 337, 0, 4178, 4181, 3, 676, 338, 0, 4179, 4181, 3, 678, 339, 0, 4180, 4172, 1, 0, 0, 0, 4180, 4173, 1, 0, 0, 0, 4180, 4174, 1, 0, 0, 0, 4180, 4175, 1, 0, 0, 0, 4180, 4176, 1, 0, 0, 0, 4180, 4177, 1, 0, 0, 0, 4180, 4178, 1, 0, 0, 0, 4180, 4179, 1, 0, 0, 0, 4181, 571, 1, 0, 0, 0, 4182, 4183, 3, 574, 287, 0, 4183, 4184, 3, 578, 289, 0, 4184, 4211, 1, 0, 0, 0, 4185, 4211, 5, 431, 0, 0, 4186, 4187, 5, 71, 0, 0, 4187, 4211, 5, 426, 0, 0, 4188, 4211, 5, 63, 0, 0, 4189, 4190, 5, 337, 0, 0, 4190, 4211, 5, 426, 0, 0, 4191, 4211, 5, 64, 0, 0, 4192, 4193, 5, 338, 0, 0, 4193, 4211, 5, 426, 0, 0, 4194, 4198, 5, 426, 0, 0, 4195, 4197, 5, 426, 0, 0, 4196, 4195, 1, 0, 0, 0, 4197, 4200, 1, 0, 0, 0, 4198, 4196, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4211, 1, 0, 0, 0, 4200, 4198, 1, 0, 0, 0, 4201, 4211, 5, 428, 0, 0, 4202, 4211, 5, 429, 0, 0, 4203, 4204, 5, 433, 0, 0, 4204, 4211, 5, 427, 0, 0, 4205, 4211, 5, 350, 0, 0, 4206, 4211, 5, 125, 0, 0, 4207, 4211, 5, 219, 0, 0, 4208, 4211, 5, 424, 0, 0, 4209, 4211, 5, 432, 0, 0, 4210, 4182, 1, 0, 0, 0, 4210, 4185, 1, 0, 0, 0, 4210, 4186, 1, 0, 0, 0, 4210, 4188, 1, 0, 0, 0, 4210, 4189, 1, 0, 0, 0, 4210, 4191, 1, 0, 0, 0, 4210, 4192, 1, 0, 0, 0, 4210, 4194, 1, 0, 0, 0, 4210, 4201, 1, 0, 0, 0, 4210, 4202, 1, 0, 0, 0, 4210, 4203, 1, 0, 0, 0, 4210, 4205, 1, 0, 0, 0, 4210, 4206, 1, 0, 0, 0, 4210, 4207, 1, 0, 0, 0, 4210, 4208, 1, 0, 0, 0, 4210, 4209, 1, 0, 0, 0, 4211, 573, 1, 0, 0, 0, 4212, 4213, 7, 26, 0, 0, 4213, 575, 1, 0, 0, 0, 4214, 4215, 5, 399, 0, 0, 4215, 4216, 3, 574, 287, 0, 4216, 4217, 5, 400, 0, 0, 4217, 4218, 3, 578, 289, 0, 4218, 4230, 1, 0, 0, 0, 4219, 4225, 5, 165, 0, 0, 4220, 4226, 3, 574, 287, 0, 4221, 4222, 5, 399, 0, 0, 4222, 4223, 3, 580, 290, 0, 4223, 4224, 5, 400, 0, 0, 4224, 4226, 1, 0, 0, 0, 4225, 4220, 1, 0, 0, 0, 4225, 4221, 1, 0, 0, 0, 4226, 4227, 1, 0, 0, 0, 4227, 4228, 3, 578, 289, 0, 4228, 4230, 1, 0, 0, 0, 4229, 4214, 1, 0, 0, 0, 4229, 4219, 1, 0, 0, 0, 4230, 577, 1, 0, 0, 0, 4231, 4232, 3, 666, 333, 0, 4232, 4233, 5, 341, 0, 0, 4233, 4234, 3, 668, 334, 0, 4234, 4246, 1, 0, 0, 0, 4235, 4236, 3, 672, 336, 0, 4236, 4237, 5, 341, 0, 0, 4237, 4238, 3, 678, 339, 0, 4238, 4246, 1, 0, 0, 0, 4239, 4246, 3, 666, 333, 0, 4240, 4246, 3, 668, 334, 0, 4241, 4246, 3, 672, 336, 0, 4242, 4246, 3, 674, 337, 0, 4243, 4246, 3, 676, 338, 0, 4244, 4246, 3, 678, 339, 0, 4245, 4231, 1, 0, 0, 0, 4245, 4235, 1, 0, 0, 0, 4245, 4239, 1, 0, 0, 0, 4245, 4240, 1, 0, 0, 0, 4245, 4241, 1, 0, 0, 0, 4245, 4242, 1, 0, 0, 0, 4245, 4243, 1, 0, 0, 0, 4245, 4244, 1, 0, 0, 0, 4246, 579, 1, 0, 0, 0, 4247, 4252, 3, 622, 311, 0, 4248, 4249, 5, 228, 0, 0, 4249, 4251, 3, 622, 311, 0, 4250, 4248, 1, 0, 0, 0, 4251, 4254, 1, 0, 0, 0, 4252, 4250, 1, 0, 0, 0, 4252, 4253, 1, 0, 0, 0, 4253, 581, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4255, 4267, 3, 572, 286, 0, 4256, 4267, 3, 576, 288, 0, 4257, 4267, 3, 560, 280, 0, 4258, 4267, 3, 568, 284, 0, 4259, 4267, 3, 566, 283, 0, 4260, 4267, 3, 562, 281, 0, 4261, 4267, 3, 564, 282, 0, 4262, 4267, 3, 600, 300, 0, 4263, 4267, 3, 550, 275, 0, 4264, 4267, 3, 538, 269, 0, 4265, 4267, 3, 638, 319, 0, 4266, 4255, 1, 0, 0, 0, 4266, 4256, 1, 0, 0, 0, 4266, 4257, 1, 0, 0, 0, 4266, 4258, 1, 0, 0, 0, 4266, 4259, 1, 0, 0, 0, 4266, 4260, 1, 0, 0, 0, 4266, 4261, 1, 0, 0, 0, 4266, 4262, 1, 0, 0, 0, 4266, 4263, 1, 0, 0, 0, 4266, 4264, 1, 0, 0, 0, 4266, 4265, 1, 0, 0, 0, 4267, 583, 1, 0, 0, 0, 4268, 4270, 7, 35, 0, 0, 4269, 4268, 1, 0, 0, 0, 4270, 4273, 1, 0, 0, 0, 4271, 4269, 1, 0, 0, 0, 4271, 4272, 1, 0, 0, 0, 4272, 4274, 1, 0, 0, 0, 4273, 4271, 1, 0, 0, 0, 4274, 4283, 3, 582, 291, 0, 4275, 4276, 5, 401, 0, 0, 4276, 4277, 3, 580, 290, 0, 4277, 4278, 5, 402, 0, 0, 4278, 4282, 1, 0, 0, 0, 4279, 4280, 5, 395, 0, 0, 4280, 4282, 3, 638, 319, 0, 4281, 4275, 1, 0, 0, 0, 4281, 4279, 1, 0, 0, 0, 4282, 4285, 1, 0, 0, 0, 4283, 4281, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 585, 1, 0, 0, 0, 4285, 4283, 1, 0, 0, 0, 4286, 4291, 3, 584, 292, 0, 4287, 4288, 5, 423, 0, 0, 4288, 4290, 3, 584, 292, 0, 4289, 4287, 1, 0, 0, 0, 4290, 4293, 1, 0, 0, 0, 4291, 4289, 1, 0, 0, 0, 4291, 4292, 1, 0, 0, 0, 4292, 587, 1, 0, 0, 0, 4293, 4291, 1, 0, 0, 0, 4294, 4299, 3, 586, 293, 0, 4295, 4296, 7, 36, 0, 0, 4296, 4298, 3, 586, 293, 0, 4297, 4295, 1, 0, 0, 0, 4298, 4301, 1, 0, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 589, 1, 0, 0, 0, 4301, 4299, 1, 0, 0, 0, 4302, 4307, 3, 588, 294, 0, 4303, 4304, 7, 37, 0, 0, 4304, 4306, 3, 588, 294, 0, 4305, 4303, 1, 0, 0, 0, 4306, 4309, 1, 0, 0, 0, 4307, 4305, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 591, 1, 0, 0, 0, 4309, 4307, 1, 0, 0, 0, 4310, 4315, 3, 590, 295, 0, 4311, 4312, 5, 422, 0, 0, 4312, 4314, 3, 590, 295, 0, 4313, 4311, 1, 0, 0, 0, 4314, 4317, 1, 0, 0, 0, 4315, 4313, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316, 593, 1, 0, 0, 0, 4317, 4315, 1, 0, 0, 0, 4318, 4323, 3, 592, 296, 0, 4319, 4320, 5, 419, 0, 0, 4320, 4322, 3, 592, 296, 0, 4321, 4319, 1, 0, 0, 0, 4322, 4325, 1, 0, 0, 0, 4323, 4321, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 595, 1, 0, 0, 0, 4325, 4323, 1, 0, 0, 0, 4326, 4331, 3, 594, 297, 0, 4327, 4328, 5, 421, 0, 0, 4328, 4330, 3, 594, 297, 0, 4329, 4327, 1, 0, 0, 0, 4330, 4333, 1, 0, 0, 0, 4331, 4329, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 597, 1, 0, 0, 0, 4333, 4331, 1, 0, 0, 0, 4334, 4335, 7, 38, 0, 0, 4335, 599, 1, 0, 0, 0, 4336, 4337, 5, 399, 0, 0, 4337, 4338, 3, 376, 188, 0, 4338, 4339, 5, 400, 0, 0, 4339, 601, 1, 0, 0, 0, 4340, 4342, 3, 596, 298, 0, 4341, 4343, 3, 604, 302, 0, 4342, 4341, 1, 0, 0, 0, 4342, 4343, 1, 0, 0, 0, 4343, 4347, 1, 0, 0, 0, 4344, 4345, 5, 117, 0, 0, 4345, 4347, 3, 600, 300, 0, 4346, 4340, 1, 0, 0, 0, 4346, 4344, 1, 0, 0, 0, 4347, 603, 1, 0, 0, 0, 4348, 4349, 3, 598, 299, 0, 4349, 4350, 3, 596, 298, 0, 4350, 4355, 1, 0, 0, 0, 4351, 4355, 3, 606, 303, 0, 4352, 4353, 5, 216, 0, 0, 4353, 4355, 3, 610, 305, 0, 4354, 4348, 1, 0, 0, 0, 4354, 4351, 1, 0, 0, 0, 4354, 4352, 1, 0, 0, 0, 4355, 605, 1, 0, 0, 0, 4356, 4357, 5, 154, 0, 0, 4357, 4371, 3, 608, 304, 0, 4358, 4359, 5, 25, 0, 0, 4359, 4360, 3, 596, 298, 0, 4360, 4361, 5, 11, 0, 0, 4361, 4362, 3, 596, 298, 0, 4362, 4371, 1, 0, 0, 0, 4363, 4364, 5, 184, 0, 0, 4364, 4365, 7, 39, 0, 0, 4365, 4371, 3, 538, 269, 0, 4366, 4367, 3, 634, 317, 0, 4367, 4368, 7, 40, 0, 0, 4368, 4369, 3, 600, 300, 0, 4369, 4371, 1, 0, 0, 0, 4370, 4356, 1, 0, 0, 0, 4370, 4358, 1, 0, 0, 0, 4370, 4363, 1, 0, 0, 0, 4370, 4366, 1, 0, 0, 0, 4371, 607, 1, 0, 0, 0, 4372, 4375, 3, 600, 300, 0, 4373, 4375, 3, 538, 269, 0, 4374, 4372, 1, 0, 0, 0, 4374, 4373, 1, 0, 0, 0, 4375, 609, 1, 0, 0, 0, 4376, 4377, 7, 41, 0, 0, 4377, 4380, 3, 596, 298, 0, 4378, 4380, 3, 606, 303, 0, 4379, 4376, 1, 0, 0, 0, 4379, 4378, 1, 0, 0, 0, 4380, 611, 1, 0, 0, 0, 4381, 4382, 5, 167, 0, 0, 4382, 4383, 5, 96, 0, 0, 4383, 4384, 5, 139, 0, 0, 4384, 613, 1, 0, 0, 0, 4385, 4393, 5, 405, 0, 0, 4386, 4393, 5, 406, 0, 0, 4387, 4393, 5, 407, 0, 0, 4388, 4389, 5, 167, 0, 0, 4389, 4390, 5, 216, 0, 0, 4390, 4391, 5, 96, 0, 0, 4391, 4393, 5, 139, 0, 0, 4392, 4385, 1, 0, 0, 0, 4392, 4386, 1, 0, 0, 0, 4392, 4387, 1, 0, 0, 0, 4392, 4388, 1, 0, 0, 0, 4393, 615, 1, 0, 0, 0, 4394, 4403, 3, 602, 301, 0, 4395, 4396, 3, 614, 307, 0, 4396, 4397, 3, 602, 301, 0, 4397, 4402, 1, 0, 0, 0, 4398, 4399, 3, 612, 306, 0, 4399, 4400, 3, 602, 301, 0, 4400, 4402, 1, 0, 0, 0, 4401, 4395, 1, 0, 0, 0, 4401, 4398, 1, 0, 0, 0, 4402, 4405, 1, 0, 0, 0, 4403, 4401, 1, 0, 0, 0, 4403, 4404, 1, 0, 0, 0, 4404, 617, 1, 0, 0, 0, 4405, 4403, 1, 0, 0, 0, 4406, 4413, 5, 219, 0, 0, 4407, 4413, 5, 350, 0, 0, 4408, 4413, 5, 125, 0, 0, 4409, 4413, 5, 360, 0, 0, 4410, 4411, 5, 216, 0, 0, 4411, 4413, 7, 42, 0, 0, 4412, 4406, 1, 0, 0, 0, 4412, 4407, 1, 0, 0, 0, 4412, 4408, 1, 0, 0, 0, 4412, 4409, 1, 0, 0, 0, 4412, 4410, 1, 0, 0, 0, 4413, 619, 1, 0, 0, 0, 4414, 4416, 5, 216, 0, 0, 4415, 4414, 1, 0, 0, 0, 4416, 4419, 1, 0, 0, 0, 4417, 4415, 1, 0, 0, 0, 4417, 4418, 1, 0, 0, 0, 4418, 4420, 1, 0, 0, 0, 4419, 4417, 1, 0, 0, 0, 4420, 4423, 3, 616, 308, 0, 4421, 4422, 5, 167, 0, 0, 4422, 4424, 3, 618, 309, 0, 4423, 4421, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 621, 1, 0, 0, 0, 4425, 4430, 3, 620, 310, 0, 4426, 4427, 5, 11, 0, 0, 4427, 4429, 3, 620, 310, 0, 4428, 4426, 1, 0, 0, 0, 4429, 4432, 1, 0, 0, 0, 4430, 4428, 1, 0, 0, 0, 4430, 4431, 1, 0, 0, 0, 4431, 623, 1, 0, 0, 0, 4432, 4430, 1, 0, 0, 0, 4433, 4435, 3, 478, 239, 0, 4434, 4436, 3, 626, 313, 0, 4435, 4434, 1, 0, 0, 0, 4435, 4436, 1, 0, 0, 0, 4436, 625, 1, 0, 0, 0, 4437, 4438, 5, 237, 0, 0, 4438, 4439, 5, 399, 0, 0, 4439, 4444, 3, 628, 314, 0, 4440, 4441, 5, 397, 0, 0, 4441, 4443, 3, 628, 314, 0, 4442, 4440, 1, 0, 0, 0, 4443, 4446, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 4447, 1, 0, 0, 0, 4446, 4444, 1, 0, 0, 0, 4447, 4448, 5, 400, 0, 0, 4448, 627, 1, 0, 0, 0, 4449, 4452, 3, 638, 319, 0, 4450, 4451, 5, 405, 0, 0, 4451, 4453, 3, 572, 286, 0, 4452, 4450, 1, 0, 0, 0, 4452, 4453, 1, 0, 0, 0, 4453, 629, 1, 0, 0, 0, 4454, 4455, 5, 399, 0, 0, 4455, 4460, 3, 632, 316, 0, 4456, 4457, 5, 397, 0, 0, 4457, 4459, 3, 632, 316, 0, 4458, 4456, 1, 0, 0, 0, 4459, 4462, 1, 0, 0, 0, 4460, 4458, 1, 0, 0, 0, 4460, 4461, 1, 0, 0, 0, 4461, 4463, 1, 0, 0, 0, 4462, 4460, 1, 0, 0, 0, 4463, 4464, 5, 400, 0, 0, 4464, 631, 1, 0, 0, 0, 4465, 4468, 3, 638, 319, 0, 4466, 4469, 5, 184, 0, 0, 4467, 4469, 3, 634, 317, 0, 4468, 4466, 1, 0, 0, 0, 4468, 4467, 1, 0, 0, 0, 4469, 4470, 1, 0, 0, 0, 4470, 4471, 3, 572, 286, 0, 4471, 633, 1, 0, 0, 0, 4472, 4473, 7, 43, 0, 0, 4473, 635, 1, 0, 0, 0, 4474, 4475, 7, 44, 0, 0, 4475, 637, 1, 0, 0, 0, 4476, 4479, 5, 432, 0, 0, 4477, 4479, 3, 644, 322, 0, 4478, 4476, 1, 0, 0, 0, 4478, 4477, 1, 0, 0, 0, 4479, 639, 1, 0, 0, 0, 4480, 4483, 3, 638, 319, 0, 4481, 4482, 5, 395, 0, 0, 4482, 4484, 3, 638, 319, 0, 4483, 4481, 1, 0, 0, 0, 4483, 4484, 1, 0, 0, 0, 4484, 641, 1, 0, 0, 0, 4485, 4486, 3, 638, 319, 0, 4486, 643, 1, 0, 0, 0, 4487, 4488, 7, 45, 0, 0, 4488, 645, 1, 0, 0, 0, 4489, 4490, 7, 46, 0, 0, 4490, 647, 1, 0, 0, 0, 4491, 4542, 3, 638, 319, 0, 4492, 4542, 5, 171, 0, 0, 4493, 4542, 5, 237, 0, 0, 4494, 4542, 5, 198, 0, 0, 4495, 4542, 5, 268, 0, 0, 4496, 4542, 5, 369, 0, 0, 4497, 4542, 5, 241, 0, 0, 4498, 4542, 5, 165, 0, 0, 4499, 4542, 5, 292, 0, 0, 4500, 4542, 5, 356, 0, 0, 4501, 4542, 5, 144, 0, 0, 4502, 4542, 5, 203, 0, 0, 4503, 4542, 5, 219, 0, 0, 4504, 4542, 5, 126, 0, 0, 4505, 4542, 5, 188, 0, 0, 4506, 4542, 5, 101, 0, 0, 4507, 4542, 5, 329, 0, 0, 4508, 4542, 5, 224, 0, 0, 4509, 4542, 5, 291, 0, 0, 4510, 4542, 5, 145, 0, 0, 4511, 4542, 5, 304, 0, 0, 4512, 4542, 5, 135, 0, 0, 4513, 4542, 5, 318, 0, 0, 4514, 4542, 5, 161, 0, 0, 4515, 4542, 5, 54, 0, 0, 4516, 4542, 5, 166, 0, 0, 4517, 4542, 5, 358, 0, 0, 4518, 4542, 5, 45, 0, 0, 4519, 4542, 5, 347, 0, 0, 4520, 4542, 5, 96, 0, 0, 4521, 4542, 5, 154, 0, 0, 4522, 4542, 5, 269, 0, 0, 4523, 4542, 5, 337, 0, 0, 4524, 4542, 5, 225, 0, 0, 4525, 4542, 5, 108, 0, 0, 4526, 4542, 5, 141, 0, 0, 4527, 4542, 5, 365, 0, 0, 4528, 4542, 5, 21, 0, 0, 4529, 4542, 5, 78, 0, 0, 4530, 4542, 5, 374, 0, 0, 4531, 4542, 5, 336, 0, 0, 4532, 4542, 5, 167, 0, 0, 4533, 4542, 5, 134, 0, 0, 4534, 4542, 5, 216, 0, 0, 4535, 4542, 5, 27, 0, 0, 4536, 4542, 5, 370, 0, 0, 4537, 4542, 5, 263, 0, 0, 4538, 4542, 5, 25, 0, 0, 4539, 4542, 5, 62, 0, 0, 4540, 4542, 5, 17, 0, 0, 4541, 4491, 1, 0, 0, 0, 4541, 4492, 1, 0, 0, 0, 4541, 4493, 1, 0, 0, 0, 4541, 4494, 1, 0, 0, 0, 4541, 4495, 1, 0, 0, 0, 4541, 4496, 1, 0, 0, 0, 4541, 4497, 1, 0, 0, 0, 4541, 4498, 1, 0, 0, 0, 4541, 4499, 1, 0, 0, 0, 4541, 4500, 1, 0, 0, 0, 4541, 4501, 1, 0, 0, 0, 4541, 4502, 1, 0, 0, 0, 4541, 4503, 1, 0, 0, 0, 4541, 4504, 1, 0, 0, 0, 4541, 4505, 1, 0, 0, 0, 4541, 4506, 1, 0, 0, 0, 4541, 4507, 1, 0, 0, 0, 4541, 4508, 1, 0, 0, 0, 4541, 4509, 1, 0, 0, 0, 4541, 4510, 1, 0, 0, 0, 4541, 4511, 1, 0, 0, 0, 4541, 4512, 1, 0, 0, 0, 4541, 4513, 1, 0, 0, 0, 4541, 4514, 1, 0, 0, 0, 4541, 4515, 1, 0, 0, 0, 4541, 4516, 1, 0, 0, 0, 4541, 4517, 1, 0, 0, 0, 4541, 4518, 1, 0, 0, 0, 4541, 4519, 1, 0, 0, 0, 4541, 4520, 1, 0, 0, 0, 4541, 4521, 1, 0, 0, 0, 4541, 4522, 1, 0, 0, 0, 4541, 4523, 1, 0, 0, 0, 4541, 4524, 1, 0, 0, 0, 4541, 4525, 1, 0, 0, 0, 4541, 4526, 1, 0, 0, 0, 4541, 4527, 1, 0, 0, 0, 4541, 4528, 1, 0, 0, 0, 4541, 4529, 1, 0, 0, 0, 4541, 4530, 1, 0, 0, 0, 4541, 4531, 1, 0, 0, 0, 4541, 4532, 1, 0, 0, 0, 4541, 4533, 1, 0, 0, 0, 4541, 4534, 1, 0, 0, 0, 4541, 4535, 1, 0, 0, 0, 4541, 4536, 1, 0, 0, 0, 4541, 4537, 1, 0, 0, 0, 4541, 4538, 1, 0, 0, 0, 4541, 4539, 1, 0, 0, 0, 4541, 4540, 1, 0, 0, 0, 4542, 649, 1, 0, 0, 0, 4543, 4544, 5, 58, 0, 0, 4544, 4545, 5, 280, 0, 0, 4545, 4547, 5, 243, 0, 0, 4546, 4548, 3, 32, 16, 0, 4547, 4546, 1, 0, 0, 0, 4547, 4548, 1, 0, 0, 0, 4548, 4558, 1, 0, 0, 0, 4549, 4550, 3, 638, 319, 0, 4550, 4551, 5, 184, 0, 0, 4551, 4552, 3, 638, 319, 0, 4552, 4559, 1, 0, 0, 0, 4553, 4556, 3, 638, 319, 0, 4554, 4555, 5, 387, 0, 0, 4555, 4557, 3, 656, 328, 0, 4556, 4554, 1, 0, 0, 0, 4556, 4557, 1, 0, 0, 0, 4557, 4559, 1, 0, 0, 0, 4558, 4549, 1, 0, 0, 0, 4558, 4553, 1, 0, 0, 0, 4559, 4709, 1, 0, 0, 0, 4560, 4561, 5, 9, 0, 0, 4561, 4562, 5, 280, 0, 0, 4562, 4563, 5, 243, 0, 0, 4563, 4588, 3, 638, 319, 0, 4564, 4589, 5, 373, 0, 0, 4565, 4589, 3, 664, 332, 0, 4566, 4567, 5, 304, 0, 0, 4567, 4589, 3, 656, 328, 0, 4568, 4569, 5, 363, 0, 0, 4569, 4574, 3, 658, 329, 0, 4570, 4571, 5, 397, 0, 0, 4571, 4573, 3, 658, 329, 0, 4572, 4570, 1, 0, 0, 0, 4573, 4576, 1, 0, 0, 0, 4574, 4572, 1, 0, 0, 0, 4574, 4575, 1, 0, 0, 0, 4575, 4589, 1, 0, 0, 0, 4576, 4574, 1, 0, 0, 0, 4577, 4578, 5, 274, 0, 0, 4578, 4579, 5, 341, 0, 0, 4579, 4589, 3, 638, 319, 0, 4580, 4582, 3, 660, 330, 0, 4581, 4583, 3, 662, 331, 0, 4582, 4581, 1, 0, 0, 0, 4582, 4583, 1, 0, 0, 0, 4583, 4589, 1, 0, 0, 0, 4584, 4586, 3, 662, 331, 0, 4585, 4587, 3, 660, 330, 0, 4586, 4585, 1, 0, 0, 0, 4586, 4587, 1, 0, 0, 0, 4587, 4589, 1, 0, 0, 0, 4588, 4564, 1, 0, 0, 0, 4588, 4565, 1, 0, 0, 0, 4588, 4566, 1, 0, 0, 0, 4588, 4568, 1, 0, 0, 0, 4588, 4577, 1, 0, 0, 0, 4588, 4580, 1, 0, 0, 0, 4588, 4584, 1, 0, 0, 0, 4589, 4709, 1, 0, 0, 0, 4590, 4591, 5, 101, 0, 0, 4591, 4592, 5, 280, 0, 0, 4592, 4594, 5, 243, 0, 0, 4593, 4595, 3, 30, 15, 0, 4594, 4593, 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 4596, 1, 0, 0, 0, 4596, 4709, 3, 638, 319, 0, 4597, 4600, 3, 662, 331, 0, 4598, 4600, 3, 664, 332, 0, 4599, 4597, 1, 0, 0, 0, 4599, 4598, 1, 0, 0, 0, 4600, 4601, 1, 0, 0, 0, 4601, 4602, 5, 390, 0, 0, 4602, 4603, 5, 197, 0, 0, 4603, 4709, 1, 0, 0, 0, 4604, 4616, 5, 278, 0, 0, 4605, 4606, 5, 3, 0, 0, 4606, 4607, 5, 280, 0, 0, 4607, 4608, 5, 243, 0, 0, 4608, 4609, 5, 387, 0, 0, 4609, 4617, 3, 638, 319, 0, 4610, 4611, 5, 280, 0, 0, 4611, 4612, 5, 243, 0, 0, 4612, 4613, 3, 638, 319, 0, 4613, 4614, 5, 387, 0, 0, 4614, 4615, 3, 638, 319, 0, 4615, 4617, 1, 0, 0, 0, 4616, 4605, 1, 0, 0, 0, 4616, 4610, 1, 0, 0, 0, 4617, 4709, 1, 0, 0, 0, 4618, 4619, 5, 58, 0, 0, 4619, 4620, 5, 348, 0, 0, 4620, 4621, 3, 638, 319, 0, 4621, 4622, 5, 395, 0, 0, 4622, 4623, 3, 638, 319, 0, 4623, 4624, 5, 383, 0, 0, 4624, 4625, 3, 684, 342, 0, 4625, 4626, 5, 99, 0, 0, 4626, 4627, 3, 686, 343, 0, 4627, 4709, 1, 0, 0, 0, 4628, 4629, 5, 9, 0, 0, 4629, 4630, 5, 348, 0, 0, 4630, 4631, 3, 638, 319, 0, 4631, 4632, 5, 395, 0, 0, 4632, 4649, 3, 638, 319, 0, 4633, 4634, 5, 383, 0, 0, 4634, 4635, 3, 684, 342, 0, 4635, 4636, 5, 99, 0, 0, 4636, 4637, 3, 686, 343, 0, 4637, 4650, 1, 0, 0, 0, 4638, 4639, 5, 4, 0, 0, 4639, 4643, 5, 341, 0, 0, 4640, 4641, 5, 101, 0, 0, 4641, 4643, 5, 139, 0, 0, 4642, 4638, 1, 0, 0, 0, 4642, 4640, 1, 0, 0, 0, 4643, 4647, 1, 0, 0, 0, 4644, 4645, 5, 246, 0, 0, 4645, 4648, 3, 682, 341, 0, 4646, 4648, 5, 362, 0, 0, 4647, 4644, 1, 0, 0, 0, 4647, 4646, 1, 0, 0, 0, 4648, 4650, 1, 0, 0, 0, 4649, 4633, 1, 0, 0, 0, 4649, 4642, 1, 0, 0, 0, 4650, 4709, 1, 0, 0, 0, 4651, 4652, 5, 101, 0, 0, 4652, 4653, 5, 348, 0, 0, 4653, 4654, 3, 638, 319, 0, 4654, 4655, 5, 395, 0, 0, 4655, 4656, 3, 638, 319, 0, 4656, 4709, 1, 0, 0, 0, 4657, 4658, 5, 58, 0, 0, 4658, 4659, 5, 246, 0, 0, 4659, 4660, 3, 638, 319, 0, 4660, 4661, 5, 395, 0, 0, 4661, 4662, 3, 682, 341, 0, 4662, 4663, 5, 387, 0, 0, 4663, 4664, 3, 690, 345, 0, 4664, 4709, 1, 0, 0, 0, 4665, 4666, 5, 9, 0, 0, 4666, 4667, 5, 246, 0, 0, 4667, 4668, 3, 638, 319, 0, 4668, 4669, 5, 395, 0, 0, 4669, 4677, 3, 682, 341, 0, 4670, 4671, 5, 304, 0, 0, 4671, 4678, 3, 690, 345, 0, 4672, 4673, 5, 363, 0, 0, 4673, 4678, 5, 294, 0, 0, 4674, 4675, 7, 47, 0, 0, 4675, 4676, 5, 348, 0, 0, 4676, 4678, 3, 638, 319, 0, 4677, 4670, 1, 0, 0, 0, 4677, 4672, 1, 0, 0, 0, 4677, 4674, 1, 0, 0, 0, 4678, 4709, 1, 0, 0, 0, 4679, 4680, 5, 101, 0, 0, 4680, 4681, 5, 246, 0, 0, 4681, 4682, 3, 638, 319, 0, 4682, 4683, 5, 395, 0, 0, 4683, 4684, 3, 682, 341, 0, 4684, 4709, 1, 0, 0, 0, 4685, 4686, 7, 48, 0, 0, 4686, 4687, 3, 652, 326, 0, 4687, 4688, 5, 200, 0, 0, 4688, 4689, 5, 426, 0, 0, 4689, 4690, 5, 154, 0, 0, 4690, 4694, 3, 638, 319, 0, 4691, 4692, 5, 341, 0, 0, 4692, 4695, 3, 682, 341, 0, 4693, 4695, 5, 362, 0, 0, 4694, 4691, 1, 0, 0, 0, 4694, 4693, 1, 0, 0, 0, 4695, 4699, 1, 0, 0, 0, 4696, 4697, 5, 387, 0, 0, 4697, 4698, 5, 229, 0, 0, 4698, 4700, 5, 431, 0, 0, 4699, 4696, 1, 0, 0, 0, 4699, 4700, 1, 0, 0, 0, 4700, 4709, 1, 0, 0, 0, 4701, 4702, 5, 101, 0, 0, 4702, 4703, 3, 652, 326, 0, 4703, 4704, 5, 200, 0, 0, 4704, 4705, 5, 426, 0, 0, 4705, 4706, 5, 154, 0, 0, 4706, 4707, 3, 638, 319, 0, 4707, 4709, 1, 0, 0, 0, 4708, 4543, 1, 0, 0, 0, 4708, 4560, 1, 0, 0, 0, 4708, 4590, 1, 0, 0, 0, 4708, 4599, 1, 0, 0, 0, 4708, 4604, 1, 0, 0, 0, 4708, 4618, 1, 0, 0, 0, 4708, 4628, 1, 0, 0, 0, 4708, 4651, 1, 0, 0, 0, 4708, 4657, 1, 0, 0, 0, 4708, 4665, 1, 0, 0, 0, 4708, 4679, 1, 0, 0, 0, 4708, 4685, 1, 0, 0, 0, 4708, 4701, 1, 0, 0, 0, 4709, 651, 1, 0, 0, 0, 4710, 4711, 7, 49, 0, 0, 4711, 653, 1, 0, 0, 0, 4712, 4713, 5, 259, 0, 0, 4713, 4714, 5, 405, 0, 0, 4714, 4720, 5, 431, 0, 0, 4715, 4716, 5, 83, 0, 0, 4716, 4717, 5, 246, 0, 0, 4717, 4718, 5, 405, 0, 0, 4718, 4720, 3, 682, 341, 0, 4719, 4712, 1, 0, 0, 0, 4719, 4715, 1, 0, 0, 0, 4720, 655, 1, 0, 0, 0, 4721, 4726, 3, 654, 327, 0, 4722, 4723, 5, 397, 0, 0, 4723, 4725, 3, 654, 327, 0, 4724, 4722, 1, 0, 0, 0, 4725, 4728, 1, 0, 0, 0, 4726, 4724, 1, 0, 0, 0, 4726, 4727, 1, 0, 0, 0, 4727, 657, 1, 0, 0, 0, 4728, 4726, 1, 0, 0, 0, 4729, 4733, 5, 259, 0, 0, 4730, 4731, 5, 83, 0, 0, 4731, 4733, 5, 246, 0, 0, 4732, 4729, 1, 0, 0, 0, 4732, 4730, 1, 0, 0, 0, 4733, 659, 1, 0, 0, 0, 4734, 4737, 5, 2, 0, 0, 4735, 4736, 5, 387, 0, 0, 4736, 4738, 5, 278, 0, 0, 4737, 4735, 1, 0, 0, 0, 4737, 4738, 1, 0, 0, 0, 4738, 661, 1, 0, 0, 0, 4739, 4740, 7, 50, 0, 0, 4740, 663, 1, 0, 0, 0, 4741, 4742, 7, 51, 0, 0, 4742, 665, 1, 0, 0, 0, 4743, 4744, 7, 52, 0, 0, 4744, 667, 1, 0, 0, 0, 4745, 4746, 7, 53, 0, 0, 4746, 669, 1, 0, 0, 0, 4747, 4748, 7, 54, 0, 0, 4748, 671, 1, 0, 0, 0, 4749, 4750, 7, 55, 0, 0, 4750, 673, 1, 0, 0, 0, 4751, 4752, 7, 56, 0, 0, 4752, 675, 1, 0, 0, 0, 4753, 4754, 7, 57, 0, 0, 4754, 677, 1, 0, 0, 0, 4755, 4756, 7, 58, 0, 0, 4756, 679, 1, 0, 0, 0, 4757, 4758, 7, 59, 0, 0, 4758, 681, 1, 0, 0, 0, 4759, 4764, 3, 638, 319, 0, 4760, 4761, 5, 395, 0, 0, 4761, 4763, 3, 638, 319, 0, 4762, 4760, 1, 0, 0, 0, 4763, 4766, 1, 0, 0, 0, 4764, 4762, 1, 0, 0, 0, 4764, 4765, 1, 0, 0, 0, 4765, 683, 1, 0, 0, 0, 4766, 4764, 1, 0, 0, 0, 4767, 4768, 3, 638, 319, 0, 4768, 4769, 5, 411, 0, 0, 4769, 4770, 7, 26, 0, 0, 4770, 685, 1, 0, 0, 0, 4771, 4776, 5, 176, 0, 0, 4772, 4773, 5, 211, 0, 0, 4773, 4774, 5, 341, 0, 0, 4774, 4776, 3, 682, 341, 0, 4775, 4771, 1, 0, 0, 0, 4775, 4772, 1, 0, 0, 0, 4776, 687, 1, 0, 0, 0, 4777, 4778, 5, 8, 0, 0, 4778, 4779, 5, 405, 0, 0, 4779, 4790, 5, 431, 0, 0, 4780, 4781, 5, 259, 0, 0, 4781, 4782, 5, 405, 0, 0, 4782, 4790, 5, 431, 0, 0, 4783, 4784, 5, 294, 0, 0, 4784, 4785, 5, 405, 0, 0, 4785, 4790, 5, 426, 0, 0, 4786, 4787, 5, 240, 0, 0, 4787, 4788, 5, 405, 0, 0, 4788, 4790, 3, 682, 341, 0, 4789, 4777, 1, 0, 0, 0, 4789, 4780, 1, 0, 0, 0, 4789, 4783, 1, 0, 0, 0, 4789, 4786, 1, 0, 0, 0, 4790, 689, 1, 0, 0, 0, 4791, 4796, 3, 688, 344, 0, 4792, 4793, 5, 397, 0, 0, 4793, 4795, 3, 688, 344, 0, 4794, 4792, 1, 0, 0, 0, 4795, 4798, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4796, 4797, 1, 0, 0, 0, 4797, 691, 1, 0, 0, 0, 4798, 4796, 1, 0, 0, 0, 621, 695, 702, 705, 711, 717, 724, 734, 737, 741, 756, 763, 769, 774, 779, 782, 806, 813, 816, 821, 826, 832, 836, 849, 853, 857, 862, 869, 873, 878, 885, 889, 894, 942, 949, 954, 977, 981, 985, 988, 992, 997, 1003, 1007, 1013, 1015, 1026, 1030, 1037, 1045, 1048, 1053, 1057, 1060, 1070, 1078, 1082, 1085, 1089, 1093, 1096, 1101, 1107, 1112, 1117, 1121, 1132, 1134, 1138, 1148, 1152, 1158, 1161, 1168, 1173, 1181, 1186, 1190, 1198, 1203, 1209, 1215, 1218, 1221, 1224, 1233, 1241, 1246, 1254, 1261, 1264, 1267, 1269, 1280, 1282, 1285, 1288, 1291, 1294, 1297, 1299, 1311, 1317, 1325, 1327, 1337, 1370, 1375, 1379, 1383, 1390, 1397, 1403, 1407, 1410, 1417, 1440, 1445, 1449, 1457, 1466, 1473, 1479, 1486, 1489, 1495, 1502, 1510, 1519, 1528, 1535, 1555, 1562, 1564, 1571, 1581, 1589, 1593, 1597, 1610, 1619, 1635, 1639, 1644, 1649, 1652, 1655, 1658, 1661, 1664, 1669, 1678, 1682, 1689, 1692, 1695, 1698, 1710, 1716, 1742, 1750, 1754, 1757, 1760, 1763, 1766, 1769, 1772, 1775, 1784, 1794, 1797, 1817, 1823, 1829, 1832, 1834, 1841, 1848, 1861, 1866, 1875, 1883, 1891, 1904, 1917, 1933, 1937, 1952, 1958, 1961, 1964, 1967, 1970, 1974, 1989, 1992, 2003, 2017, 2051, 2059, 2064, 2072, 2077, 2082, 2089, 2097, 2105, 2113, 2118, 2128, 2132, 2140, 2149, 2152, 2156, 2163, 2169, 2173, 2179, 2183, 2195, 2204, 2215, 2219, 2226, 2238, 2248, 2251, 2258, 2264, 2268, 2271, 2274, 2280, 2284, 2288, 2293, 2297, 2301, 2305, 2313, 2317, 2321, 2325, 2329, 2337, 2341, 2345, 2353, 2358, 2363, 2367, 2371, 2378, 2387, 2395, 2407, 2425, 2428, 2434, 2460, 2463, 2469, 2477, 2485, 2498, 2505, 2508, 2511, 2514, 2517, 2520, 2523, 2526, 2529, 2532, 2535, 2540, 2543, 2546, 2549, 2552, 2555, 2558, 2561, 2564, 2567, 2570, 2572, 2578, 2582, 2585, 2588, 2591, 2594, 2597, 2604, 2608, 2611, 2614, 2617, 2620, 2623, 2630, 2633, 2641, 2645, 2652, 2654, 2657, 2662, 2665, 2669, 2674, 2680, 2688, 2696, 2706, 2709, 2713, 2717, 2722, 2729, 2733, 2735, 2739, 2746, 2751, 2764, 2772, 2791, 2801, 2814, 2824, 2828, 2832, 2838, 2845, 2852, 2861, 2868, 2888, 2891, 2905, 2920, 2924, 2944, 2956, 2962, 2965, 2968, 2974, 2980, 2987, 2995, 3001, 3005, 3010, 3013, 3017, 3024, 3029, 3034, 3037, 3039, 3047, 3055, 3059, 3063, 3067, 3084, 3101, 3108, 3117, 3122, 3125, 3128, 3132, 3147, 3161, 3164, 3175, 3179, 3182, 3185, 3189, 3194, 3197, 3200, 3203, 3206, 3209, 3215, 3218, 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, 3246, 3248, 3254, 3259, 3262, 3265, 3268, 3271, 3277, 3280, 3283, 3286, 3289, 3292, 3295, 3298, 3301, 3304, 3308, 3310, 3312, 3317, 3322, 3326, 3330, 3335, 3340, 3349, 3359, 3367, 3379, 3382, 3388, 3395, 3402, 3409, 3416, 3425, 3429, 3436, 3441, 3445, 3449, 3452, 3455, 3466, 3470, 3472, 3475, 3488, 3491, 3494, 3506, 3509, 3516, 3525, 3530, 3532, 3534, 3551, 3554, 3562, 3565, 3569, 3572, 3575, 3578, 3581, 3593, 3601, 3608, 3611, 3618, 3621, 3626, 3633, 3641, 3649, 3654, 3658, 3663, 3670, 3684, 3687, 3691, 3702, 3712, 3715, 3722, 3731, 3734, 3740, 3743, 3750, 3755, 3758, 3771, 3777, 3779, 3787, 3790, 3800, 3805, 3807, 3819, 3825, 3827, 3834, 3841, 3855, 3861, 3864, 3867, 3870, 3879, 3886, 3892, 3901, 3905, 3913, 3923, 3933, 3938, 3942, 3948, 3953, 3963, 3967, 3970, 3975, 3978, 3982, 3987, 3998, 4000, 4009, 4028, 4038, 4041, 4048, 4051, 4061, 4068, 4071, 4073, 4084, 4094, 4096, 4105, 4110, 4119, 4132, 4136, 4148, 4152, 4161, 4180, 4198, 4210, 4225, 4229, 4245, 4252, 4266, 4271, 4281, 4283, 4291, 4299, 4307, 4315, 4323, 4331, 4342, 4346, 4354, 4370, 4374, 4379, 4392, 4401, 4403, 4412, 4417, 4423, 4430, 4435, 4444, 4452, 4460, 4468, 4478, 4483, 4541, 4547, 4556, 4558, 4574, 4582, 4586, 4588, 4594, 4599, 4616, 4642, 4647, 4649, 4677, 4694, 4699, 4708, 4719, 4726, 4732, 4737, 4764, 4775, 4789, 4796] \ No newline at end of file diff --git a/src/lib/hive/HiveSqlParser.ts b/src/lib/hive/HiveSqlParser.ts index a51428d..b7caa52 100644 --- a/src/lib/hive/HiveSqlParser.ts +++ b/src/lib/hive/HiveSqlParser.ts @@ -459,523 +459,348 @@ export class HiveSqlParser extends SQLParserBase { public static readonly RULE_statement = 1; public static readonly RULE_explainStatement = 2; public static readonly RULE_explainOption = 3; - public static readonly RULE_vectorizationOnly = 4; - public static readonly RULE_vectorizatonDetail = 5; - public static readonly RULE_execStatement = 6; - public static readonly RULE_loadStatement = 7; - public static readonly RULE_dropPartitionsIgnoreClause = 8; - public static readonly RULE_replicationClause = 9; - public static readonly RULE_exportStatement = 10; - public static readonly RULE_importStatement = 11; - public static readonly RULE_replDumpStatement = 12; - public static readonly RULE_replDbPolicy = 13; - public static readonly RULE_replLoadStatement = 14; - public static readonly RULE_replConfigs = 15; - public static readonly RULE_replConfigsList = 16; - public static readonly RULE_replTableLevelPolicy = 17; - public static readonly RULE_replStatusStatement = 18; - public static readonly RULE_ddlStatement = 19; - public static readonly RULE_ifExists = 20; - public static readonly RULE_restrictOrCascade = 21; - public static readonly RULE_ifNotExists = 22; - public static readonly RULE_force = 23; - public static readonly RULE_rewriteEnabled = 24; - public static readonly RULE_rewriteDisabled = 25; - public static readonly RULE_storedAsDirs = 26; - public static readonly RULE_orReplace = 27; - public static readonly RULE_createDatabaseStatement = 28; - public static readonly RULE_dbLocation = 29; - public static readonly RULE_dbManagedLocation = 30; - public static readonly RULE_dbProperties = 31; - public static readonly RULE_dbPropertiesList = 32; - public static readonly RULE_dbConnectorName = 33; - public static readonly RULE_switchDatabaseStatement = 34; - public static readonly RULE_dropDatabaseStatement = 35; - public static readonly RULE_databaseComment = 36; - public static readonly RULE_truncateTableStatement = 37; - public static readonly RULE_dropTableStatement = 38; - public static readonly RULE_inputFileFormat = 39; - public static readonly RULE_tabTypeExpr = 40; - public static readonly RULE_partTypeExpr = 41; - public static readonly RULE_tabPartColTypeExpr = 42; - public static readonly RULE_descStatement = 43; - public static readonly RULE_analyzeStatement = 44; - public static readonly RULE_from_in = 45; - public static readonly RULE_db_schema = 46; - public static readonly RULE_showStatement = 47; - public static readonly RULE_showTablesFilterExpr = 48; - public static readonly RULE_lockStatement = 49; - public static readonly RULE_lockDatabase = 50; - public static readonly RULE_lockMode = 51; - public static readonly RULE_unlockStatement = 52; - public static readonly RULE_unlockDatabase = 53; - public static readonly RULE_createRoleStatement = 54; - public static readonly RULE_dropRoleStatement = 55; - public static readonly RULE_grantPrivileges = 56; - public static readonly RULE_revokePrivileges = 57; - public static readonly RULE_grantRole = 58; - public static readonly RULE_revokeRole = 59; - public static readonly RULE_showRoleGrants = 60; - public static readonly RULE_showRoles = 61; - public static readonly RULE_showCurrentRole = 62; - public static readonly RULE_setRole = 63; - public static readonly RULE_showGrants = 64; - public static readonly RULE_showRolePrincipals = 65; - public static readonly RULE_privilegeIncludeColObject = 66; - public static readonly RULE_privilegeObject = 67; - public static readonly RULE_privObject = 68; - public static readonly RULE_privObjectCols = 69; - public static readonly RULE_privilegeList = 70; - public static readonly RULE_privlegeDef = 71; - public static readonly RULE_privilegeType = 72; - public static readonly RULE_principalSpecification = 73; - public static readonly RULE_principalName = 74; - public static readonly RULE_principalAlterName = 75; - public static readonly RULE_withGrantOption = 76; - public static readonly RULE_grantOptionFor = 77; - public static readonly RULE_adminOptionFor = 78; - public static readonly RULE_withAdminOption = 79; - public static readonly RULE_metastoreCheck = 80; - public static readonly RULE_resourceList = 81; - public static readonly RULE_resource = 82; - public static readonly RULE_resourceType = 83; - public static readonly RULE_createFunctionStatement = 84; - public static readonly RULE_dropFunctionStatement = 85; - public static readonly RULE_reloadFunctionsStatement = 86; - public static readonly RULE_createMacroStatement = 87; - public static readonly RULE_dropMacroStatement = 88; - public static readonly RULE_createIndexStatement = 89; - public static readonly RULE_dropIndexStatement = 90; - public static readonly RULE_createViewStatement = 91; - public static readonly RULE_viewPartition = 92; - public static readonly RULE_viewOrganization = 93; - public static readonly RULE_viewClusterSpec = 94; - public static readonly RULE_viewComplexSpec = 95; - public static readonly RULE_viewDistSpec = 96; - public static readonly RULE_viewSortSpec = 97; - public static readonly RULE_dropViewStatement = 98; - public static readonly RULE_createMaterializedViewStatement = 99; - public static readonly RULE_dropMaterializedViewStatement = 100; - public static readonly RULE_createScheduledQueryStatement = 101; - public static readonly RULE_dropScheduledQueryStatement = 102; - public static readonly RULE_alterScheduledQueryStatement = 103; - public static readonly RULE_alterScheduledQueryChange = 104; - public static readonly RULE_scheduleSpec = 105; - public static readonly RULE_executedAsSpec = 106; - public static readonly RULE_definedAsSpec = 107; - public static readonly RULE_showStmtIdentifier = 108; - public static readonly RULE_tableComment = 109; - public static readonly RULE_tableLifecycle = 110; - public static readonly RULE_createTablePartitionSpec = 111; - public static readonly RULE_createTablePartitionColumnTypeSpec = 112; - public static readonly RULE_createTablePartitionColumnSpec = 113; - public static readonly RULE_partitionTransformSpec = 114; - public static readonly RULE_columnNameTransformConstraint = 115; - public static readonly RULE_partitionTransformType = 116; - public static readonly RULE_tableBuckets = 117; - public static readonly RULE_tableImplBuckets = 118; - public static readonly RULE_tableSkewed = 119; - public static readonly RULE_rowFormat = 120; - public static readonly RULE_recordReader = 121; - public static readonly RULE_recordWriter = 122; - public static readonly RULE_rowFormatSerde = 123; - public static readonly RULE_rowFormatDelimited = 124; - public static readonly RULE_tableRowFormat = 125; - public static readonly RULE_tablePropertiesPrefixed = 126; - public static readonly RULE_tableProperties = 127; - public static readonly RULE_tablePropertiesList = 128; - public static readonly RULE_keyValueProperty = 129; - public static readonly RULE_keyProperty = 130; - public static readonly RULE_tableRowFormatFieldIdentifier = 131; - public static readonly RULE_tableRowFormatCollItemsIdentifier = 132; - public static readonly RULE_tableRowFormatMapKeysIdentifier = 133; - public static readonly RULE_tableRowFormatLinesIdentifier = 134; - public static readonly RULE_tableRowNullFormat = 135; - public static readonly RULE_tableFileFormat = 136; - public static readonly RULE_tableLocation = 137; - public static readonly RULE_columnNameTypeList = 138; - public static readonly RULE_columnNameTypeOrConstraintList = 139; - public static readonly RULE_columnNameColonTypeList = 140; - public static readonly RULE_columnNameList = 141; - public static readonly RULE_columnName = 142; - public static readonly RULE_columnNameCreate = 143; - public static readonly RULE_extColumnName = 144; - public static readonly RULE_columnNameOrderList = 145; - public static readonly RULE_columnParenthesesList = 146; - public static readonly RULE_enableValidateSpecification = 147; - public static readonly RULE_enableSpecification = 148; - public static readonly RULE_validateSpecification = 149; - public static readonly RULE_enforcedSpecification = 150; - public static readonly RULE_relySpecification = 151; - public static readonly RULE_createConstraint = 152; - public static readonly RULE_alterConstraintWithName = 153; - public static readonly RULE_tableLevelConstraint = 154; - public static readonly RULE_pkUkConstraint = 155; - public static readonly RULE_checkConstraint = 156; - public static readonly RULE_createForeignKey = 157; - public static readonly RULE_alterForeignKeyWithName = 158; - public static readonly RULE_skewedValueElement = 159; - public static readonly RULE_skewedColumnValuePairList = 160; - public static readonly RULE_skewedColumnValuePair = 161; - public static readonly RULE_skewedColumnValues = 162; - public static readonly RULE_skewedColumnValue = 163; - public static readonly RULE_skewedValueLocationElement = 164; - public static readonly RULE_orderSpecification = 165; - public static readonly RULE_nullOrdering = 166; - public static readonly RULE_columnNameOrder = 167; - public static readonly RULE_columnNameCommentList = 168; - public static readonly RULE_columnNameComment = 169; - public static readonly RULE_orderSpecificationRewrite = 170; - public static readonly RULE_columnRefOrder = 171; - public static readonly RULE_columnNameType = 172; - public static readonly RULE_columnNameTypeOrConstraint = 173; - public static readonly RULE_tableConstraint = 174; - public static readonly RULE_columnNameTypeConstraint = 175; - public static readonly RULE_columnConstraint = 176; - public static readonly RULE_foreignKeyConstraint = 177; - public static readonly RULE_colConstraint = 178; - public static readonly RULE_alterColumnConstraint = 179; - public static readonly RULE_alterForeignKeyConstraint = 180; - public static readonly RULE_alterColConstraint = 181; - public static readonly RULE_columnConstraintType = 182; - public static readonly RULE_defaultVal = 183; - public static readonly RULE_tableConstraintType = 184; - public static readonly RULE_constraintOptsCreate = 185; - public static readonly RULE_constraintOptsAlter = 186; - public static readonly RULE_columnNameColonType = 187; - public static readonly RULE_colType = 188; - public static readonly RULE_colTypeList = 189; - public static readonly RULE_type = 190; - public static readonly RULE_primitiveType = 191; - public static readonly RULE_listType = 192; - public static readonly RULE_structType = 193; - public static readonly RULE_mapType = 194; - public static readonly RULE_unionType = 195; - public static readonly RULE_setOperator = 196; - public static readonly RULE_queryStatementExpression = 197; - public static readonly RULE_queryStatementExpressionBody = 198; - public static readonly RULE_withClause = 199; - public static readonly RULE_cteStatement = 200; - public static readonly RULE_fromStatement = 201; - public static readonly RULE_singleFromStatement = 202; - public static readonly RULE_regularBody = 203; - public static readonly RULE_atomSelectStatement = 204; - public static readonly RULE_selectStatement = 205; - public static readonly RULE_setOpSelectStatement = 206; - public static readonly RULE_selectStatementWithCTE = 207; - public static readonly RULE_insertClause = 208; - public static readonly RULE_destination = 209; - public static readonly RULE_limitClause = 210; - public static readonly RULE_deleteStatement = 211; - public static readonly RULE_columnAssignmentClause = 212; - public static readonly RULE_precedencePlusExpressionOrDefault = 213; - public static readonly RULE_setColumnsClause = 214; - public static readonly RULE_updateStatement = 215; - public static readonly RULE_sqlTransactionStatement = 216; - public static readonly RULE_startTransactionStatement = 217; - public static readonly RULE_transactionMode = 218; - public static readonly RULE_transactionAccessMode = 219; - public static readonly RULE_isolationLevel = 220; - public static readonly RULE_levelOfIsolation = 221; - public static readonly RULE_commitStatement = 222; - public static readonly RULE_rollbackStatement = 223; - public static readonly RULE_setAutoCommitStatement = 224; - public static readonly RULE_abortTransactionStatement = 225; - public static readonly RULE_abortCompactionStatement = 226; - public static readonly RULE_mergeStatement = 227; - public static readonly RULE_whenClauses = 228; - public static readonly RULE_whenNotMatchedClause = 229; - public static readonly RULE_whenMatchedAndClause = 230; - public static readonly RULE_whenMatchedThenClause = 231; - public static readonly RULE_updateOrDelete = 232; - public static readonly RULE_killQueryStatement = 233; - public static readonly RULE_compactionId = 234; - public static readonly RULE_compactionPool = 235; - public static readonly RULE_compactionType = 236; - public static readonly RULE_compactionStatus = 237; - public static readonly RULE_alterStatement = 238; - public static readonly RULE_alterTableStatementSuffix = 239; - public static readonly RULE_alterTblPartitionStatementSuffix = 240; - public static readonly RULE_alterStatementPartitionKeyType = 241; - public static readonly RULE_alterViewStatementSuffix = 242; - public static readonly RULE_alterMaterializedViewStatementSuffix = 243; - public static readonly RULE_alterMaterializedViewSuffixRewrite = 244; - public static readonly RULE_alterMaterializedViewSuffixRebuild = 245; - public static readonly RULE_alterDatabaseStatementSuffix = 246; - public static readonly RULE_alterDatabaseSuffixProperties = 247; - public static readonly RULE_alterDatabaseSuffixSetOwner = 248; - public static readonly RULE_alterDatabaseSuffixSetLocation = 249; - public static readonly RULE_alterDatabaseSuffixSetManagedLocation = 250; - public static readonly RULE_alterStatementSuffixRename = 251; - public static readonly RULE_alterStatementSuffixAddCol = 252; - public static readonly RULE_alterStatementSuffixAddConstraint = 253; - public static readonly RULE_alterStatementSuffixUpdateColumns = 254; - public static readonly RULE_alterStatementSuffixProtections = 255; - public static readonly RULE_alterStatementSuffixDropConstraint = 256; - public static readonly RULE_alterStatementSuffixRenameCol = 257; - public static readonly RULE_alterStatementSuffixUpdateStatsCol = 258; - public static readonly RULE_alterStatementSuffixUpdateStats = 259; - public static readonly RULE_alterStatementChangeColPosition = 260; - public static readonly RULE_alterStatementSuffixAddPartitions = 261; - public static readonly RULE_alterStatementSuffixAddPartitionsElement = 262; - public static readonly RULE_alterStatementSuffixTouch = 263; - public static readonly RULE_alterStatementSuffixArchive = 264; - public static readonly RULE_alterStatementSuffixUnArchive = 265; - public static readonly RULE_partitionLocation = 266; - public static readonly RULE_alterStatementSuffixRecoverPartitions = 267; - public static readonly RULE_alterStatementSuffixDropPartitions = 268; - public static readonly RULE_alterStatementSuffixProperties = 269; - public static readonly RULE_alterViewSuffixProperties = 270; - public static readonly RULE_alterStatementSuffixSerdeProperties = 271; - public static readonly RULE_tablePartitionPrefix = 272; - public static readonly RULE_alterStatementSuffixFileFormat = 273; - public static readonly RULE_alterStatementSuffixClusterbySortby = 274; - public static readonly RULE_alterTblPartitionStatementSuffixSkewedLocation = 275; - public static readonly RULE_skewedLocations = 276; - public static readonly RULE_skewedLocationsList = 277; - public static readonly RULE_skewedLocationMap = 278; - public static readonly RULE_alterStatementSuffixLocation = 279; - public static readonly RULE_alterStatementSuffixSkewedby = 280; - public static readonly RULE_alterStatementSuffixExchangePartition = 281; - public static readonly RULE_alterStatementSuffixRenamePart = 282; - public static readonly RULE_alterStatementSuffixStatsPart = 283; - public static readonly RULE_alterStatementSuffixMergeFiles = 284; - public static readonly RULE_alterStatementSuffixBucketNum = 285; - public static readonly RULE_blocking = 286; - public static readonly RULE_compactPool = 287; - public static readonly RULE_alterStatementSuffixCompact = 288; - public static readonly RULE_alterStatementSuffixSetOwner = 289; - public static readonly RULE_alterStatementSuffixSetPartSpec = 290; - public static readonly RULE_alterStatementSuffixExecute = 291; - public static readonly RULE_alterIndexStatementSuffix = 292; - public static readonly RULE_fileFormat = 293; - public static readonly RULE_alterDataConnectorStatementSuffix = 294; - public static readonly RULE_alterDataConnectorSuffixProperties = 295; - public static readonly RULE_alterDataConnectorSuffixSetOwner = 296; - public static readonly RULE_alterDataConnectorSuffixSetUrl = 297; - public static readonly RULE_likeTableOrFile = 298; - public static readonly RULE_createTableStatement = 299; - public static readonly RULE_createDataConnectorStatement = 300; - public static readonly RULE_dataConnectorComment = 301; - public static readonly RULE_dataConnectorUrl = 302; - public static readonly RULE_dataConnectorType = 303; - public static readonly RULE_dcProperties = 304; - public static readonly RULE_dropDataConnectorStatement = 305; - public static readonly RULE_tableAllColumns = 306; - public static readonly RULE_defaultValue = 307; - public static readonly RULE_expressionList = 308; - public static readonly RULE_aliasList = 309; - public static readonly RULE_fromClause = 310; - public static readonly RULE_fromSource = 311; - public static readonly RULE_atomjoinSource = 312; - public static readonly RULE_joinSource = 313; - public static readonly RULE_joinSourcePart = 314; - public static readonly RULE_uniqueJoinSource = 315; - public static readonly RULE_uniqueJoinExpr = 316; - public static readonly RULE_uniqueJoinToken = 317; - public static readonly RULE_joinToken = 318; - public static readonly RULE_lateralView = 319; - public static readonly RULE_tableAlias = 320; - public static readonly RULE_tableBucketSample = 321; - public static readonly RULE_splitSample = 322; - public static readonly RULE_tableSample = 323; - public static readonly RULE_tableSource = 324; - public static readonly RULE_asOfClause = 325; - public static readonly RULE_uniqueJoinTableSource = 326; - public static readonly RULE_dbSchemaName = 327; - public static readonly RULE_dbSchemaNameCreate = 328; - public static readonly RULE_tableOrView = 329; - public static readonly RULE_tableName = 330; - public static readonly RULE_tableNameCreate = 331; - public static readonly RULE_viewName = 332; - public static readonly RULE_viewNameCreate = 333; - public static readonly RULE_subQuerySource = 334; - public static readonly RULE_partitioningSpec = 335; - public static readonly RULE_partitionTableFunctionSource = 336; - public static readonly RULE_partitionedTableFunction = 337; - public static readonly RULE_whereClause = 338; - public static readonly RULE_searchCondition = 339; - public static readonly RULE_valuesSource = 340; - public static readonly RULE_valuesClause = 341; - public static readonly RULE_valuesTableConstructor = 342; - public static readonly RULE_valueRowConstructor = 343; - public static readonly RULE_firstValueRowConstructor = 344; - public static readonly RULE_virtualTableSource = 345; - public static readonly RULE_selectClause = 346; - public static readonly RULE_all_distinct = 347; - public static readonly RULE_selectList = 348; - public static readonly RULE_selectTrfmClause = 349; - public static readonly RULE_selectItem = 350; - public static readonly RULE_trfmClause = 351; - public static readonly RULE_selectExpression = 352; - public static readonly RULE_selectExpressionList = 353; - public static readonly RULE_window_clause = 354; - public static readonly RULE_window_defn = 355; - public static readonly RULE_window_specification = 356; - public static readonly RULE_window_frame = 357; - public static readonly RULE_window_range_expression = 358; - public static readonly RULE_window_value_expression = 359; - public static readonly RULE_window_frame_start_boundary = 360; - public static readonly RULE_window_frame_boundary = 361; - public static readonly RULE_groupByClause = 362; - public static readonly RULE_groupby_expression = 363; - public static readonly RULE_groupByEmpty = 364; - public static readonly RULE_rollupStandard = 365; - public static readonly RULE_rollupOldSyntax = 366; - public static readonly RULE_groupingSetExpression = 367; - public static readonly RULE_groupingSetExpressionMultiple = 368; - public static readonly RULE_groupingExpressionSingle = 369; - public static readonly RULE_havingClause = 370; - public static readonly RULE_qualifyClause = 371; - public static readonly RULE_havingCondition = 372; - public static readonly RULE_expressionsInParenthesis = 373; - public static readonly RULE_expressionsNotInParenthesis = 374; - public static readonly RULE_expressionPart = 375; - public static readonly RULE_expressionOrDefault = 376; - public static readonly RULE_firstExpressionsWithAlias = 377; - public static readonly RULE_expressionWithAlias = 378; - public static readonly RULE_expressions = 379; - public static readonly RULE_columnRefOrderInParenthesis = 380; - public static readonly RULE_columnRefOrderNotInParenthesis = 381; - public static readonly RULE_orderByClause = 382; - public static readonly RULE_clusterByClause = 383; - public static readonly RULE_partitionByClause = 384; - public static readonly RULE_distributeByClause = 385; - public static readonly RULE_sortByClause = 386; - public static readonly RULE_trimFunction = 387; - public static readonly RULE_function_ = 388; - public static readonly RULE_null_treatment = 389; - public static readonly RULE_functionNameCreate = 390; - public static readonly RULE_functionNameForDDL = 391; - public static readonly RULE_functionNameForInvoke = 392; - public static readonly RULE_userDefinedFuncName = 393; - public static readonly RULE_internalFunctionName = 394; - public static readonly RULE_castExpression = 395; - public static readonly RULE_caseExpression = 396; - public static readonly RULE_whenExpression = 397; - public static readonly RULE_floorExpression = 398; - public static readonly RULE_floorDateQualifiers = 399; - public static readonly RULE_extractExpression = 400; - public static readonly RULE_timeQualifiers = 401; - public static readonly RULE_constant = 402; - public static readonly RULE_prepareStmtParam = 403; - public static readonly RULE_parameterIdx = 404; - public static readonly RULE_stringLiteralSequence = 405; - public static readonly RULE_charSetStringLiteral = 406; - public static readonly RULE_dateLiteral = 407; - public static readonly RULE_timestampLiteral = 408; - public static readonly RULE_timestampLocalTZLiteral = 409; - public static readonly RULE_intervalValue = 410; - public static readonly RULE_intervalLiteral = 411; - public static readonly RULE_intervalExpression = 412; - public static readonly RULE_intervalQualifiers = 413; - public static readonly RULE_expression = 414; - public static readonly RULE_atomExpression = 415; - public static readonly RULE_precedenceFieldExpression = 416; - public static readonly RULE_precedenceUnaryOperator = 417; - public static readonly RULE_precedenceUnaryPrefixExpression = 418; - public static readonly RULE_precedenceBitwiseXorOperator = 419; - public static readonly RULE_precedenceBitwiseXorExpression = 420; - public static readonly RULE_precedenceStarOperator = 421; - public static readonly RULE_precedenceStarExpression = 422; - public static readonly RULE_precedencePlusOperator = 423; - public static readonly RULE_precedencePlusExpression = 424; - public static readonly RULE_precedenceConcatenateOperator = 425; - public static readonly RULE_precedenceConcatenateExpression = 426; - public static readonly RULE_precedenceAmpersandOperator = 427; - public static readonly RULE_precedenceAmpersandExpression = 428; - public static readonly RULE_precedenceBitwiseOrOperator = 429; - public static readonly RULE_precedenceBitwiseOrExpression = 430; - public static readonly RULE_precedenceRegexpOperator = 431; - public static readonly RULE_precedenceSimilarOperator = 432; - public static readonly RULE_subQueryExpression = 433; - public static readonly RULE_precedenceSimilarExpression = 434; - public static readonly RULE_precedenceSimilarExpressionMain = 435; - public static readonly RULE_precedenceSimilarExpressionPart = 436; - public static readonly RULE_precedenceSimilarExpressionAtom = 437; - public static readonly RULE_precedenceSimilarExpressionQuantifierPredicate = 438; - public static readonly RULE_quantifierType = 439; - public static readonly RULE_precedenceSimilarExpressionIn = 440; - public static readonly RULE_precedenceSimilarExpressionPartNot = 441; - public static readonly RULE_precedenceDistinctOperator = 442; - public static readonly RULE_precedenceEqualOperator = 443; - public static readonly RULE_precedenceEqualExpression = 444; - public static readonly RULE_isCondition = 445; - public static readonly RULE_precedenceUnarySuffixExpression = 446; - public static readonly RULE_precedenceNotOperator = 447; - public static readonly RULE_precedenceNotExpression = 448; - public static readonly RULE_precedenceAndOperator = 449; - public static readonly RULE_precedenceAndExpression = 450; - public static readonly RULE_precedenceOrOperator = 451; - public static readonly RULE_precedenceOrExpression = 452; - public static readonly RULE_booleanValue = 453; - public static readonly RULE_booleanValueTok = 454; - public static readonly RULE_tableOrPartition = 455; - public static readonly RULE_partitionSpec = 456; - public static readonly RULE_partitionVal = 457; - public static readonly RULE_partitionSelectorSpec = 458; - public static readonly RULE_partitionSelectorVal = 459; - public static readonly RULE_partitionSelectorOperator = 460; - public static readonly RULE_subQuerySelectorOperator = 461; - public static readonly RULE_sysFuncNames = 462; - public static readonly RULE_id_ = 463; - public static readonly RULE_functionIdentifier = 464; - public static readonly RULE_principalIdentifier = 465; - public static readonly RULE_nonReserved = 466; - public static readonly RULE_sql11ReservedKeywordsUsedAsFunctionName = 467; - public static readonly RULE_hint = 468; - public static readonly RULE_hintList = 469; - public static readonly RULE_hintItem = 470; - public static readonly RULE_hintName = 471; - public static readonly RULE_hintArgs = 472; - public static readonly RULE_hintArgName = 473; - public static readonly RULE_prepareStatement = 474; - public static readonly RULE_executeStatement = 475; - public static readonly RULE_executeParamList = 476; - public static readonly RULE_resourcePlanDdlStatements = 477; - public static readonly RULE_rpAssign = 478; - public static readonly RULE_rpAssignList = 479; - public static readonly RULE_rpUnassign = 480; - public static readonly RULE_rpUnassignList = 481; - public static readonly RULE_createResourcePlanStatement = 482; - public static readonly RULE_withReplace = 483; - public static readonly RULE_activate = 484; - public static readonly RULE_enable = 485; - public static readonly RULE_disable = 486; - public static readonly RULE_unmanaged = 487; - public static readonly RULE_year = 488; - public static readonly RULE_month = 489; - public static readonly RULE_week = 490; - public static readonly RULE_day = 491; - public static readonly RULE_hour = 492; - public static readonly RULE_minute = 493; - public static readonly RULE_second = 494; - public static readonly RULE_decimal = 495; - public static readonly RULE_alterResourcePlanStatement = 496; - public static readonly RULE_globalWmStatement = 497; - public static readonly RULE_replaceResourcePlanStatement = 498; - public static readonly RULE_dropResourcePlanStatement = 499; - public static readonly RULE_poolPath = 500; - public static readonly RULE_triggerExpression = 501; - public static readonly RULE_triggerExpressionStandalone = 502; - public static readonly RULE_triggerOrExpression = 503; - public static readonly RULE_triggerAndExpression = 504; - public static readonly RULE_triggerAtomExpression = 505; - public static readonly RULE_triggerLiteral = 506; - public static readonly RULE_comparisionOperator = 507; - public static readonly RULE_triggerActionExpression = 508; - public static readonly RULE_triggerActionExpressionStandalone = 509; - public static readonly RULE_createTriggerStatement = 510; - public static readonly RULE_alterTriggerStatement = 511; - public static readonly RULE_dropTriggerStatement = 512; - public static readonly RULE_poolAssign = 513; - public static readonly RULE_poolAssignList = 514; - public static readonly RULE_createPoolStatement = 515; - public static readonly RULE_alterPoolStatement = 516; - public static readonly RULE_dropPoolStatement = 517; - public static readonly RULE_createMappingStatement = 518; - public static readonly RULE_alterMappingStatement = 519; - public static readonly RULE_dropMappingStatement = 520; + public static readonly RULE_vectorizatonDetail = 4; + public static readonly RULE_execStatement = 5; + public static readonly RULE_loadStatement = 6; + public static readonly RULE_replicationClause = 7; + public static readonly RULE_exportStatement = 8; + public static readonly RULE_importStatement = 9; + public static readonly RULE_replDumpStatement = 10; + public static readonly RULE_replDbPolicy = 11; + public static readonly RULE_replLoadStatement = 12; + public static readonly RULE_replTableLevelPolicy = 13; + public static readonly RULE_ddlStatement = 14; + public static readonly RULE_ifExists = 15; + public static readonly RULE_ifNotExists = 16; + public static readonly RULE_restrictOrCascade = 17; + public static readonly RULE_rewriteEnabled = 18; + public static readonly RULE_rewriteDisabled = 19; + public static readonly RULE_storedAsDirs = 20; + public static readonly RULE_createDatabaseStatement = 21; + public static readonly RULE_dbConnectorName = 22; + public static readonly RULE_switchDatabaseStatement = 23; + public static readonly RULE_dropDatabaseStatement = 24; + public static readonly RULE_databaseComment = 25; + public static readonly RULE_truncateTableStatement = 26; + public static readonly RULE_dropTableStatement = 27; + public static readonly RULE_inputFileFormat = 28; + public static readonly RULE_tabTypeExpr = 29; + public static readonly RULE_partTypeExpr = 30; + public static readonly RULE_tabPartColTypeExpr = 31; + public static readonly RULE_descStatement = 32; + public static readonly RULE_analyzeStatement = 33; + public static readonly RULE_from_in = 34; + public static readonly RULE_db_schema = 35; + public static readonly RULE_showStatement = 36; + public static readonly RULE_showTablesFilterExpr = 37; + public static readonly RULE_lockStatement = 38; + public static readonly RULE_lockDatabase = 39; + public static readonly RULE_lockMode = 40; + public static readonly RULE_unlockStatement = 41; + public static readonly RULE_unlockDatabase = 42; + public static readonly RULE_createRoleStatement = 43; + public static readonly RULE_dropRoleStatement = 44; + public static readonly RULE_grantPrivileges = 45; + public static readonly RULE_revokePrivileges = 46; + public static readonly RULE_grantRole = 47; + public static readonly RULE_revokeRole = 48; + public static readonly RULE_showRoleGrants = 49; + public static readonly RULE_showRoles = 50; + public static readonly RULE_showCurrentRole = 51; + public static readonly RULE_setRole = 52; + public static readonly RULE_showGrants = 53; + public static readonly RULE_showRolePrincipals = 54; + public static readonly RULE_privilegeIncludeColObject = 55; + public static readonly RULE_privilegeObject = 56; + public static readonly RULE_privObject = 57; + public static readonly RULE_privObjectCols = 58; + public static readonly RULE_privilegeList = 59; + public static readonly RULE_privlegeDef = 60; + public static readonly RULE_privilegeType = 61; + public static readonly RULE_principalSpecification = 62; + public static readonly RULE_principalName = 63; + public static readonly RULE_principalAlterName = 64; + public static readonly RULE_withGrantOption = 65; + public static readonly RULE_grantOptionFor = 66; + public static readonly RULE_adminOptionFor = 67; + public static readonly RULE_withAdminOption = 68; + public static readonly RULE_metastoreCheck = 69; + public static readonly RULE_resourceList = 70; + public static readonly RULE_resource = 71; + public static readonly RULE_resourceType = 72; + public static readonly RULE_createFunctionStatement = 73; + public static readonly RULE_dropFunctionStatement = 74; + public static readonly RULE_reloadFunctionsStatement = 75; + public static readonly RULE_createMacroStatement = 76; + public static readonly RULE_dropMacroStatement = 77; + public static readonly RULE_createIndexStatement = 78; + public static readonly RULE_dropIndexStatement = 79; + public static readonly RULE_createViewStatement = 80; + public static readonly RULE_viewPartition = 81; + public static readonly RULE_viewOrganization = 82; + public static readonly RULE_viewClusterSpec = 83; + public static readonly RULE_viewComplexSpec = 84; + public static readonly RULE_viewDistSpec = 85; + public static readonly RULE_viewSortSpec = 86; + public static readonly RULE_dropViewStatement = 87; + public static readonly RULE_createMaterializedViewStatement = 88; + public static readonly RULE_dropMaterializedViewStatement = 89; + public static readonly RULE_createScheduledQueryStatement = 90; + public static readonly RULE_dropScheduledQueryStatement = 91; + public static readonly RULE_alterScheduledQueryStatement = 92; + public static readonly RULE_alterScheduledQueryChange = 93; + public static readonly RULE_scheduleSpec = 94; + public static readonly RULE_executedAsSpec = 95; + public static readonly RULE_definedAsSpec = 96; + public static readonly RULE_showStmtIdentifier = 97; + public static readonly RULE_tableComment = 98; + public static readonly RULE_tableLifecycle = 99; + public static readonly RULE_createTablePartitionSpec = 100; + public static readonly RULE_createTablePartitionColumnTypeSpec = 101; + public static readonly RULE_partitionTransformSpec = 102; + public static readonly RULE_partitionTransformType = 103; + public static readonly RULE_tableBuckets = 104; + public static readonly RULE_tableSkewed = 105; + public static readonly RULE_rowFormat = 106; + public static readonly RULE_recordReader = 107; + public static readonly RULE_recordWriter = 108; + public static readonly RULE_rowFormatSerde = 109; + public static readonly RULE_rowFormatDelimited = 110; + public static readonly RULE_tableRowFormat = 111; + public static readonly RULE_tablePropertiesPrefixed = 112; + public static readonly RULE_tableProperties = 113; + public static readonly RULE_tablePropertiesList = 114; + public static readonly RULE_keyValueProperties = 115; + public static readonly RULE_keyValuePropertyList = 116; + public static readonly RULE_keyValueProperty = 117; + public static readonly RULE_tableRowFormatFieldIdentifier = 118; + public static readonly RULE_tableRowFormatCollItemsIdentifier = 119; + public static readonly RULE_tableRowFormatMapKeysIdentifier = 120; + public static readonly RULE_tableRowFormatLinesIdentifier = 121; + public static readonly RULE_tableRowNullFormat = 122; + public static readonly RULE_tableFileFormat = 123; + public static readonly RULE_columnNameTypeList = 124; + public static readonly RULE_columnNameTypeOrConstraintList = 125; + public static readonly RULE_columnNameColonTypeList = 126; + public static readonly RULE_columnNameList = 127; + public static readonly RULE_columnName = 128; + public static readonly RULE_columnNameCreate = 129; + public static readonly RULE_extColumnName = 130; + public static readonly RULE_columnNameOrderList = 131; + public static readonly RULE_columnParenthesesList = 132; + public static readonly RULE_enableValidateSpecification = 133; + public static readonly RULE_enableSpecification = 134; + public static readonly RULE_validateSpecification = 135; + public static readonly RULE_enforcedSpecification = 136; + public static readonly RULE_relySpecification = 137; + public static readonly RULE_createConstraint = 138; + public static readonly RULE_alterConstraintWithName = 139; + public static readonly RULE_tableLevelConstraint = 140; + public static readonly RULE_pkUkConstraint = 141; + public static readonly RULE_checkConstraint = 142; + public static readonly RULE_createForeignKey = 143; + public static readonly RULE_alterForeignKeyWithName = 144; + public static readonly RULE_skewedValueElement = 145; + public static readonly RULE_skewedColumnValuePairList = 146; + public static readonly RULE_skewedColumnValuePair = 147; + public static readonly RULE_constantList = 148; + public static readonly RULE_orderSpecification = 149; + public static readonly RULE_nullOrdering = 150; + public static readonly RULE_columnNameOrder = 151; + public static readonly RULE_columnNameCommentList = 152; + public static readonly RULE_columnNameComment = 153; + public static readonly RULE_columnRefOrder = 154; + public static readonly RULE_columnNameType = 155; + public static readonly RULE_columnNameTypeOrConstraint = 156; + public static readonly RULE_tableConstraint = 157; + public static readonly RULE_columnNameTypeConstraint = 158; + public static readonly RULE_columnConstraint = 159; + public static readonly RULE_foreignKeyConstraint = 160; + public static readonly RULE_colConstraint = 161; + public static readonly RULE_alterColumnConstraint = 162; + public static readonly RULE_alterForeignKeyConstraint = 163; + public static readonly RULE_alterColConstraint = 164; + public static readonly RULE_columnConstraintType = 165; + public static readonly RULE_defaultVal = 166; + public static readonly RULE_tableConstraintType = 167; + public static readonly RULE_constraintOptsCreate = 168; + public static readonly RULE_constraintOptsAlter = 169; + public static readonly RULE_columnNameColonType = 170; + public static readonly RULE_columnType = 171; + public static readonly RULE_columnTypeList = 172; + public static readonly RULE_type = 173; + public static readonly RULE_primitiveType = 174; + public static readonly RULE_listType = 175; + public static readonly RULE_structType = 176; + public static readonly RULE_mapType = 177; + public static readonly RULE_unionType = 178; + public static readonly RULE_setOperator = 179; + public static readonly RULE_queryStatementExpression = 180; + public static readonly RULE_queryStatementExpressionBody = 181; + public static readonly RULE_withClause = 182; + public static readonly RULE_cteStatement = 183; + public static readonly RULE_fromStatement = 184; + public static readonly RULE_singleFromStatement = 185; + public static readonly RULE_regularBody = 186; + public static readonly RULE_atomSelectStatement = 187; + public static readonly RULE_selectStatement = 188; + public static readonly RULE_setOpSelectStatement = 189; + public static readonly RULE_selectStatementWithCTE = 190; + public static readonly RULE_insertClause = 191; + public static readonly RULE_destination = 192; + public static readonly RULE_limitClause = 193; + public static readonly RULE_columnAssignmentClause = 194; + public static readonly RULE_precedencePlusExpressionOrDefault = 195; + public static readonly RULE_setColumnsClause = 196; + public static readonly RULE_sqlTransactionStatement = 197; + public static readonly RULE_transactionMode = 198; + public static readonly RULE_whenClauses = 199; + public static readonly RULE_whenNotMatchedClause = 200; + public static readonly RULE_whenMatchedAndClause = 201; + public static readonly RULE_whenMatchedThenClause = 202; + public static readonly RULE_compactionPool = 203; + public static readonly RULE_compactionType = 204; + public static readonly RULE_compactionStatus = 205; + public static readonly RULE_alterStatement = 206; + public static readonly RULE_alterTableStatementSuffix = 207; + public static readonly RULE_alterTblPartitionStatementSuffix = 208; + public static readonly RULE_alterViewStatementSuffix = 209; + public static readonly RULE_alterDatabaseStatementSuffix = 210; + public static readonly RULE_alterDataConnectorStatementSuffix = 211; + public static readonly RULE_locationPath = 212; + public static readonly RULE_alterStatementSuffixDropPartitions = 213; + public static readonly RULE_skewedLocationMap = 214; + public static readonly RULE_alterStatementSuffixExecute = 215; + public static readonly RULE_fileFormat = 216; + public static readonly RULE_likeTableOrFile = 217; + public static readonly RULE_createTableStatement = 218; + public static readonly RULE_createDataConnectorStatement = 219; + public static readonly RULE_dropDataConnectorStatement = 220; + public static readonly RULE_tableAllColumns = 221; + public static readonly RULE_expressionList = 222; + public static readonly RULE_aliasList = 223; + public static readonly RULE_fromClause = 224; + public static readonly RULE_fromSource = 225; + public static readonly RULE_atomjoinSource = 226; + public static readonly RULE_joinSource = 227; + public static readonly RULE_joinSourcePart = 228; + public static readonly RULE_uniqueJoinSource = 229; + public static readonly RULE_joinToken = 230; + public static readonly RULE_lateralView = 231; + public static readonly RULE_tableAlias = 232; + public static readonly RULE_tableSample = 233; + public static readonly RULE_tableSource = 234; + public static readonly RULE_asOfClause = 235; + public static readonly RULE_dbSchemaName = 236; + public static readonly RULE_dbSchemaNameCreate = 237; + public static readonly RULE_tableOrView = 238; + public static readonly RULE_tableName = 239; + public static readonly RULE_tableNameCreate = 240; + public static readonly RULE_viewName = 241; + public static readonly RULE_viewNameCreate = 242; + public static readonly RULE_subQuerySource = 243; + public static readonly RULE_partitioningSpec = 244; + public static readonly RULE_partitionTableFunctionSource = 245; + public static readonly RULE_partitionedTableFunction = 246; + public static readonly RULE_whereClause = 247; + public static readonly RULE_valuesClause = 248; + public static readonly RULE_virtualTableSource = 249; + public static readonly RULE_selectClause = 250; + public static readonly RULE_selectTrfmClause = 251; + public static readonly RULE_selectItem = 252; + public static readonly RULE_trfmClause = 253; + public static readonly RULE_selectExpression = 254; + public static readonly RULE_selectExpressionList = 255; + public static readonly RULE_window_clause = 256; + public static readonly RULE_window_specification = 257; + public static readonly RULE_window_frame = 258; + public static readonly RULE_window_frame_boundary = 259; + public static readonly RULE_groupByClause = 260; + public static readonly RULE_rollupStandard = 261; + public static readonly RULE_rollupOldSyntax = 262; + public static readonly RULE_groupingSetExpression = 263; + public static readonly RULE_havingClause = 264; + public static readonly RULE_qualifyClause = 265; + public static readonly RULE_expressionOrDefault = 266; + public static readonly RULE_firstExpressionsWithAlias = 267; + public static readonly RULE_expressions = 268; + public static readonly RULE_expressionsInParenthesis = 269; + public static readonly RULE_expressionsNotInParenthesis = 270; + public static readonly RULE_orderByClause = 271; + public static readonly RULE_clusterByClause = 272; + public static readonly RULE_distributeByClause = 273; + public static readonly RULE_sortByClause = 274; + public static readonly RULE_function_ = 275; + public static readonly RULE_null_treatment = 276; + public static readonly RULE_functionNameCreate = 277; + public static readonly RULE_functionNameForDDL = 278; + public static readonly RULE_functionNameForInvoke = 279; + public static readonly RULE_castExpression = 280; + public static readonly RULE_caseExpression = 281; + public static readonly RULE_whenExpression = 282; + public static readonly RULE_floorExpression = 283; + public static readonly RULE_extractExpression = 284; + public static readonly RULE_timeQualifiers = 285; + public static readonly RULE_constant = 286; + public static readonly RULE_intervalValue = 287; + public static readonly RULE_intervalExpression = 288; + public static readonly RULE_intervalQualifiers = 289; + public static readonly RULE_expression = 290; + public static readonly RULE_atomExpression = 291; + public static readonly RULE_precedenceUnaryPrefixExpression = 292; + public static readonly RULE_precedenceBitwiseXorExpression = 293; + public static readonly RULE_precedenceStarExpression = 294; + public static readonly RULE_precedencePlusExpression = 295; + public static readonly RULE_precedenceConcatenateExpression = 296; + public static readonly RULE_precedenceAmpersandExpression = 297; + public static readonly RULE_precedenceBitwiseOrExpression = 298; + public static readonly RULE_precedenceSimilarOperator = 299; + public static readonly RULE_subQueryExpression = 300; + public static readonly RULE_precedenceSimilarExpression = 301; + public static readonly RULE_precedenceSimilarExpressionPart = 302; + public static readonly RULE_precedenceSimilarExpressionAtom = 303; + public static readonly RULE_precedenceSimilarExpressionIn = 304; + public static readonly RULE_precedenceSimilarExpressionPartNot = 305; + public static readonly RULE_precedenceDistinctOperator = 306; + public static readonly RULE_precedenceEqualOperator = 307; + public static readonly RULE_precedenceEqualExpression = 308; + public static readonly RULE_isCondition = 309; + public static readonly RULE_precedenceNotExpression = 310; + public static readonly RULE_precedenceAndExpression = 311; + public static readonly RULE_tableOrPartition = 312; + public static readonly RULE_partitionSpec = 313; + public static readonly RULE_partitionVal = 314; + public static readonly RULE_partitionSelectorSpec = 315; + public static readonly RULE_partitionSelectorVal = 316; + public static readonly RULE_subQuerySelectorOperator = 317; + public static readonly RULE_sysFuncNames = 318; + public static readonly RULE_id_ = 319; + public static readonly RULE_functionIdentifier = 320; + public static readonly RULE_principalIdentifier = 321; + public static readonly RULE_nonReserved = 322; + public static readonly RULE_sql11ReservedKeywordsUsedAsFunctionName = 323; + public static readonly RULE_configPropertiesItem = 324; + public static readonly RULE_resourcePlanDdlStatements = 325; + public static readonly RULE_mappingTypes = 326; + public static readonly RULE_rpAssign = 327; + public static readonly RULE_rpAssignList = 328; + public static readonly RULE_rpUnassign = 329; + public static readonly RULE_activate = 330; + public static readonly RULE_enable = 331; + public static readonly RULE_disable = 332; + public static readonly RULE_year = 333; + public static readonly RULE_month = 334; + public static readonly RULE_week = 335; + public static readonly RULE_day = 336; + public static readonly RULE_hour = 337; + public static readonly RULE_minute = 338; + public static readonly RULE_second = 339; + public static readonly RULE_decimal = 340; + public static readonly RULE_poolPath = 341; + public static readonly RULE_triggerAtomExpression = 342; + public static readonly RULE_triggerActionExpression = 343; + public static readonly RULE_poolAssign = 344; + public static readonly RULE_poolAssignList = 345; public static readonly literalNames = [ null, "'ABORT'", "'ACTIVATE'", "'ACTIVE'", "'ADD'", "'ADMIN'", "'AFTER'", @@ -1142,27 +967,25 @@ export class HiveSqlParser extends SQLParserBase { "SHOW_HINT", "HIDDEN_HINT" ]; public static readonly ruleNames = [ - "program", "statement", "explainStatement", "explainOption", "vectorizationOnly", - "vectorizatonDetail", "execStatement", "loadStatement", "dropPartitionsIgnoreClause", - "replicationClause", "exportStatement", "importStatement", "replDumpStatement", - "replDbPolicy", "replLoadStatement", "replConfigs", "replConfigsList", - "replTableLevelPolicy", "replStatusStatement", "ddlStatement", "ifExists", - "restrictOrCascade", "ifNotExists", "force", "rewriteEnabled", "rewriteDisabled", - "storedAsDirs", "orReplace", "createDatabaseStatement", "dbLocation", - "dbManagedLocation", "dbProperties", "dbPropertiesList", "dbConnectorName", - "switchDatabaseStatement", "dropDatabaseStatement", "databaseComment", - "truncateTableStatement", "dropTableStatement", "inputFileFormat", - "tabTypeExpr", "partTypeExpr", "tabPartColTypeExpr", "descStatement", - "analyzeStatement", "from_in", "db_schema", "showStatement", "showTablesFilterExpr", - "lockStatement", "lockDatabase", "lockMode", "unlockStatement", - "unlockDatabase", "createRoleStatement", "dropRoleStatement", "grantPrivileges", - "revokePrivileges", "grantRole", "revokeRole", "showRoleGrants", - "showRoles", "showCurrentRole", "setRole", "showGrants", "showRolePrincipals", - "privilegeIncludeColObject", "privilegeObject", "privObject", "privObjectCols", - "privilegeList", "privlegeDef", "privilegeType", "principalSpecification", - "principalName", "principalAlterName", "withGrantOption", "grantOptionFor", - "adminOptionFor", "withAdminOption", "metastoreCheck", "resourceList", - "resource", "resourceType", "createFunctionStatement", "dropFunctionStatement", + "program", "statement", "explainStatement", "explainOption", "vectorizatonDetail", + "execStatement", "loadStatement", "replicationClause", "exportStatement", + "importStatement", "replDumpStatement", "replDbPolicy", "replLoadStatement", + "replTableLevelPolicy", "ddlStatement", "ifExists", "ifNotExists", + "restrictOrCascade", "rewriteEnabled", "rewriteDisabled", "storedAsDirs", + "createDatabaseStatement", "dbConnectorName", "switchDatabaseStatement", + "dropDatabaseStatement", "databaseComment", "truncateTableStatement", + "dropTableStatement", "inputFileFormat", "tabTypeExpr", "partTypeExpr", + "tabPartColTypeExpr", "descStatement", "analyzeStatement", "from_in", + "db_schema", "showStatement", "showTablesFilterExpr", "lockStatement", + "lockDatabase", "lockMode", "unlockStatement", "unlockDatabase", + "createRoleStatement", "dropRoleStatement", "grantPrivileges", "revokePrivileges", + "grantRole", "revokeRole", "showRoleGrants", "showRoles", "showCurrentRole", + "setRole", "showGrants", "showRolePrincipals", "privilegeIncludeColObject", + "privilegeObject", "privObject", "privObjectCols", "privilegeList", + "privlegeDef", "privilegeType", "principalSpecification", "principalName", + "principalAlterName", "withGrantOption", "grantOptionFor", "adminOptionFor", + "withAdminOption", "metastoreCheck", "resourceList", "resource", + "resourceType", "createFunctionStatement", "dropFunctionStatement", "reloadFunctionsStatement", "createMacroStatement", "dropMacroStatement", "createIndexStatement", "dropIndexStatement", "createViewStatement", "viewPartition", "viewOrganization", "viewClusterSpec", "viewComplexSpec", @@ -1171,132 +994,77 @@ export class HiveSqlParser extends SQLParserBase { "dropScheduledQueryStatement", "alterScheduledQueryStatement", "alterScheduledQueryChange", "scheduleSpec", "executedAsSpec", "definedAsSpec", "showStmtIdentifier", "tableComment", "tableLifecycle", "createTablePartitionSpec", "createTablePartitionColumnTypeSpec", - "createTablePartitionColumnSpec", "partitionTransformSpec", "columnNameTransformConstraint", - "partitionTransformType", "tableBuckets", "tableImplBuckets", "tableSkewed", - "rowFormat", "recordReader", "recordWriter", "rowFormatSerde", "rowFormatDelimited", - "tableRowFormat", "tablePropertiesPrefixed", "tableProperties", - "tablePropertiesList", "keyValueProperty", "keyProperty", "tableRowFormatFieldIdentifier", + "partitionTransformSpec", "partitionTransformType", "tableBuckets", + "tableSkewed", "rowFormat", "recordReader", "recordWriter", "rowFormatSerde", + "rowFormatDelimited", "tableRowFormat", "tablePropertiesPrefixed", + "tableProperties", "tablePropertiesList", "keyValueProperties", + "keyValuePropertyList", "keyValueProperty", "tableRowFormatFieldIdentifier", "tableRowFormatCollItemsIdentifier", "tableRowFormatMapKeysIdentifier", "tableRowFormatLinesIdentifier", "tableRowNullFormat", "tableFileFormat", - "tableLocation", "columnNameTypeList", "columnNameTypeOrConstraintList", - "columnNameColonTypeList", "columnNameList", "columnName", "columnNameCreate", - "extColumnName", "columnNameOrderList", "columnParenthesesList", - "enableValidateSpecification", "enableSpecification", "validateSpecification", - "enforcedSpecification", "relySpecification", "createConstraint", - "alterConstraintWithName", "tableLevelConstraint", "pkUkConstraint", - "checkConstraint", "createForeignKey", "alterForeignKeyWithName", - "skewedValueElement", "skewedColumnValuePairList", "skewedColumnValuePair", - "skewedColumnValues", "skewedColumnValue", "skewedValueLocationElement", - "orderSpecification", "nullOrdering", "columnNameOrder", "columnNameCommentList", - "columnNameComment", "orderSpecificationRewrite", "columnRefOrder", - "columnNameType", "columnNameTypeOrConstraint", "tableConstraint", - "columnNameTypeConstraint", "columnConstraint", "foreignKeyConstraint", - "colConstraint", "alterColumnConstraint", "alterForeignKeyConstraint", - "alterColConstraint", "columnConstraintType", "defaultVal", "tableConstraintType", - "constraintOptsCreate", "constraintOptsAlter", "columnNameColonType", - "colType", "colTypeList", "type", "primitiveType", "listType", "structType", - "mapType", "unionType", "setOperator", "queryStatementExpression", - "queryStatementExpressionBody", "withClause", "cteStatement", "fromStatement", - "singleFromStatement", "regularBody", "atomSelectStatement", "selectStatement", - "setOpSelectStatement", "selectStatementWithCTE", "insertClause", - "destination", "limitClause", "deleteStatement", "columnAssignmentClause", - "precedencePlusExpressionOrDefault", "setColumnsClause", "updateStatement", - "sqlTransactionStatement", "startTransactionStatement", "transactionMode", - "transactionAccessMode", "isolationLevel", "levelOfIsolation", "commitStatement", - "rollbackStatement", "setAutoCommitStatement", "abortTransactionStatement", - "abortCompactionStatement", "mergeStatement", "whenClauses", "whenNotMatchedClause", - "whenMatchedAndClause", "whenMatchedThenClause", "updateOrDelete", - "killQueryStatement", "compactionId", "compactionPool", "compactionType", - "compactionStatus", "alterStatement", "alterTableStatementSuffix", - "alterTblPartitionStatementSuffix", "alterStatementPartitionKeyType", - "alterViewStatementSuffix", "alterMaterializedViewStatementSuffix", - "alterMaterializedViewSuffixRewrite", "alterMaterializedViewSuffixRebuild", - "alterDatabaseStatementSuffix", "alterDatabaseSuffixProperties", - "alterDatabaseSuffixSetOwner", "alterDatabaseSuffixSetLocation", - "alterDatabaseSuffixSetManagedLocation", "alterStatementSuffixRename", - "alterStatementSuffixAddCol", "alterStatementSuffixAddConstraint", - "alterStatementSuffixUpdateColumns", "alterStatementSuffixProtections", - "alterStatementSuffixDropConstraint", "alterStatementSuffixRenameCol", - "alterStatementSuffixUpdateStatsCol", "alterStatementSuffixUpdateStats", - "alterStatementChangeColPosition", "alterStatementSuffixAddPartitions", - "alterStatementSuffixAddPartitionsElement", "alterStatementSuffixTouch", - "alterStatementSuffixArchive", "alterStatementSuffixUnArchive", - "partitionLocation", "alterStatementSuffixRecoverPartitions", "alterStatementSuffixDropPartitions", - "alterStatementSuffixProperties", "alterViewSuffixProperties", "alterStatementSuffixSerdeProperties", - "tablePartitionPrefix", "alterStatementSuffixFileFormat", "alterStatementSuffixClusterbySortby", - "alterTblPartitionStatementSuffixSkewedLocation", "skewedLocations", - "skewedLocationsList", "skewedLocationMap", "alterStatementSuffixLocation", - "alterStatementSuffixSkewedby", "alterStatementSuffixExchangePartition", - "alterStatementSuffixRenamePart", "alterStatementSuffixStatsPart", - "alterStatementSuffixMergeFiles", "alterStatementSuffixBucketNum", - "blocking", "compactPool", "alterStatementSuffixCompact", "alterStatementSuffixSetOwner", - "alterStatementSuffixSetPartSpec", "alterStatementSuffixExecute", - "alterIndexStatementSuffix", "fileFormat", "alterDataConnectorStatementSuffix", - "alterDataConnectorSuffixProperties", "alterDataConnectorSuffixSetOwner", - "alterDataConnectorSuffixSetUrl", "likeTableOrFile", "createTableStatement", - "createDataConnectorStatement", "dataConnectorComment", "dataConnectorUrl", - "dataConnectorType", "dcProperties", "dropDataConnectorStatement", - "tableAllColumns", "defaultValue", "expressionList", "aliasList", - "fromClause", "fromSource", "atomjoinSource", "joinSource", "joinSourcePart", - "uniqueJoinSource", "uniqueJoinExpr", "uniqueJoinToken", "joinToken", - "lateralView", "tableAlias", "tableBucketSample", "splitSample", - "tableSample", "tableSource", "asOfClause", "uniqueJoinTableSource", - "dbSchemaName", "dbSchemaNameCreate", "tableOrView", "tableName", - "tableNameCreate", "viewName", "viewNameCreate", "subQuerySource", - "partitioningSpec", "partitionTableFunctionSource", "partitionedTableFunction", - "whereClause", "searchCondition", "valuesSource", "valuesClause", - "valuesTableConstructor", "valueRowConstructor", "firstValueRowConstructor", - "virtualTableSource", "selectClause", "all_distinct", "selectList", - "selectTrfmClause", "selectItem", "trfmClause", "selectExpression", - "selectExpressionList", "window_clause", "window_defn", "window_specification", - "window_frame", "window_range_expression", "window_value_expression", - "window_frame_start_boundary", "window_frame_boundary", "groupByClause", - "groupby_expression", "groupByEmpty", "rollupStandard", "rollupOldSyntax", - "groupingSetExpression", "groupingSetExpressionMultiple", "groupingExpressionSingle", - "havingClause", "qualifyClause", "havingCondition", "expressionsInParenthesis", - "expressionsNotInParenthesis", "expressionPart", "expressionOrDefault", - "firstExpressionsWithAlias", "expressionWithAlias", "expressions", - "columnRefOrderInParenthesis", "columnRefOrderNotInParenthesis", - "orderByClause", "clusterByClause", "partitionByClause", "distributeByClause", - "sortByClause", "trimFunction", "function_", "null_treatment", "functionNameCreate", - "functionNameForDDL", "functionNameForInvoke", "userDefinedFuncName", - "internalFunctionName", "castExpression", "caseExpression", "whenExpression", - "floorExpression", "floorDateQualifiers", "extractExpression", "timeQualifiers", - "constant", "prepareStmtParam", "parameterIdx", "stringLiteralSequence", - "charSetStringLiteral", "dateLiteral", "timestampLiteral", "timestampLocalTZLiteral", - "intervalValue", "intervalLiteral", "intervalExpression", "intervalQualifiers", - "expression", "atomExpression", "precedenceFieldExpression", "precedenceUnaryOperator", - "precedenceUnaryPrefixExpression", "precedenceBitwiseXorOperator", - "precedenceBitwiseXorExpression", "precedenceStarOperator", "precedenceStarExpression", - "precedencePlusOperator", "precedencePlusExpression", "precedenceConcatenateOperator", - "precedenceConcatenateExpression", "precedenceAmpersandOperator", - "precedenceAmpersandExpression", "precedenceBitwiseOrOperator", - "precedenceBitwiseOrExpression", "precedenceRegexpOperator", "precedenceSimilarOperator", - "subQueryExpression", "precedenceSimilarExpression", "precedenceSimilarExpressionMain", + "columnNameTypeList", "columnNameTypeOrConstraintList", "columnNameColonTypeList", + "columnNameList", "columnName", "columnNameCreate", "extColumnName", + "columnNameOrderList", "columnParenthesesList", "enableValidateSpecification", + "enableSpecification", "validateSpecification", "enforcedSpecification", + "relySpecification", "createConstraint", "alterConstraintWithName", + "tableLevelConstraint", "pkUkConstraint", "checkConstraint", "createForeignKey", + "alterForeignKeyWithName", "skewedValueElement", "skewedColumnValuePairList", + "skewedColumnValuePair", "constantList", "orderSpecification", "nullOrdering", + "columnNameOrder", "columnNameCommentList", "columnNameComment", + "columnRefOrder", "columnNameType", "columnNameTypeOrConstraint", + "tableConstraint", "columnNameTypeConstraint", "columnConstraint", + "foreignKeyConstraint", "colConstraint", "alterColumnConstraint", + "alterForeignKeyConstraint", "alterColConstraint", "columnConstraintType", + "defaultVal", "tableConstraintType", "constraintOptsCreate", "constraintOptsAlter", + "columnNameColonType", "columnType", "columnTypeList", "type", "primitiveType", + "listType", "structType", "mapType", "unionType", "setOperator", + "queryStatementExpression", "queryStatementExpressionBody", "withClause", + "cteStatement", "fromStatement", "singleFromStatement", "regularBody", + "atomSelectStatement", "selectStatement", "setOpSelectStatement", + "selectStatementWithCTE", "insertClause", "destination", "limitClause", + "columnAssignmentClause", "precedencePlusExpressionOrDefault", "setColumnsClause", + "sqlTransactionStatement", "transactionMode", "whenClauses", "whenNotMatchedClause", + "whenMatchedAndClause", "whenMatchedThenClause", "compactionPool", + "compactionType", "compactionStatus", "alterStatement", "alterTableStatementSuffix", + "alterTblPartitionStatementSuffix", "alterViewStatementSuffix", + "alterDatabaseStatementSuffix", "alterDataConnectorStatementSuffix", + "locationPath", "alterStatementSuffixDropPartitions", "skewedLocationMap", + "alterStatementSuffixExecute", "fileFormat", "likeTableOrFile", + "createTableStatement", "createDataConnectorStatement", "dropDataConnectorStatement", + "tableAllColumns", "expressionList", "aliasList", "fromClause", + "fromSource", "atomjoinSource", "joinSource", "joinSourcePart", + "uniqueJoinSource", "joinToken", "lateralView", "tableAlias", "tableSample", + "tableSource", "asOfClause", "dbSchemaName", "dbSchemaNameCreate", + "tableOrView", "tableName", "tableNameCreate", "viewName", "viewNameCreate", + "subQuerySource", "partitioningSpec", "partitionTableFunctionSource", + "partitionedTableFunction", "whereClause", "valuesClause", "virtualTableSource", + "selectClause", "selectTrfmClause", "selectItem", "trfmClause", + "selectExpression", "selectExpressionList", "window_clause", "window_specification", + "window_frame", "window_frame_boundary", "groupByClause", "rollupStandard", + "rollupOldSyntax", "groupingSetExpression", "havingClause", "qualifyClause", + "expressionOrDefault", "firstExpressionsWithAlias", "expressions", + "expressionsInParenthesis", "expressionsNotInParenthesis", "orderByClause", + "clusterByClause", "distributeByClause", "sortByClause", "function_", + "null_treatment", "functionNameCreate", "functionNameForDDL", "functionNameForInvoke", + "castExpression", "caseExpression", "whenExpression", "floorExpression", + "extractExpression", "timeQualifiers", "constant", "intervalValue", + "intervalExpression", "intervalQualifiers", "expression", "atomExpression", + "precedenceUnaryPrefixExpression", "precedenceBitwiseXorExpression", + "precedenceStarExpression", "precedencePlusExpression", "precedenceConcatenateExpression", + "precedenceAmpersandExpression", "precedenceBitwiseOrExpression", + "precedenceSimilarOperator", "subQueryExpression", "precedenceSimilarExpression", "precedenceSimilarExpressionPart", "precedenceSimilarExpressionAtom", - "precedenceSimilarExpressionQuantifierPredicate", "quantifierType", "precedenceSimilarExpressionIn", "precedenceSimilarExpressionPartNot", "precedenceDistinctOperator", "precedenceEqualOperator", "precedenceEqualExpression", - "isCondition", "precedenceUnarySuffixExpression", "precedenceNotOperator", - "precedenceNotExpression", "precedenceAndOperator", "precedenceAndExpression", - "precedenceOrOperator", "precedenceOrExpression", "booleanValue", - "booleanValueTok", "tableOrPartition", "partitionSpec", "partitionVal", - "partitionSelectorSpec", "partitionSelectorVal", "partitionSelectorOperator", - "subQuerySelectorOperator", "sysFuncNames", "id_", "functionIdentifier", - "principalIdentifier", "nonReserved", "sql11ReservedKeywordsUsedAsFunctionName", - "hint", "hintList", "hintItem", "hintName", "hintArgs", "hintArgName", - "prepareStatement", "executeStatement", "executeParamList", "resourcePlanDdlStatements", - "rpAssign", "rpAssignList", "rpUnassign", "rpUnassignList", "createResourcePlanStatement", - "withReplace", "activate", "enable", "disable", "unmanaged", "year", - "month", "week", "day", "hour", "minute", "second", "decimal", "alterResourcePlanStatement", - "globalWmStatement", "replaceResourcePlanStatement", "dropResourcePlanStatement", - "poolPath", "triggerExpression", "triggerExpressionStandalone", - "triggerOrExpression", "triggerAndExpression", "triggerAtomExpression", - "triggerLiteral", "comparisionOperator", "triggerActionExpression", - "triggerActionExpressionStandalone", "createTriggerStatement", "alterTriggerStatement", - "dropTriggerStatement", "poolAssign", "poolAssignList", "createPoolStatement", - "alterPoolStatement", "dropPoolStatement", "createMappingStatement", - "alterMappingStatement", "dropMappingStatement", + "isCondition", "precedenceNotExpression", "precedenceAndExpression", + "tableOrPartition", "partitionSpec", "partitionVal", "partitionSelectorSpec", + "partitionSelectorVal", "subQuerySelectorOperator", "sysFuncNames", + "id_", "functionIdentifier", "principalIdentifier", "nonReserved", + "sql11ReservedKeywordsUsedAsFunctionName", "configPropertiesItem", + "resourcePlanDdlStatements", "mappingTypes", "rpAssign", "rpAssignList", + "rpUnassign", "activate", "enable", "disable", "year", "month", + "week", "day", "hour", "minute", "second", "decimal", "poolPath", + "triggerAtomExpression", "triggerActionExpression", "poolAssign", + "poolAssignList", ]; public get grammarFileName(): string { return "HiveSqlParser.g4"; } @@ -1320,21 +1088,21 @@ export class HiveSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1045; + this.state = 695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1538) !== 0) || _la === 48 || _la === 58 || ((((_la - 86)) & ~0x1F) === 0 && ((1 << (_la - 86)) & 540050201) !== 0) || ((((_la - 119)) & ~0x1F) === 0 && ((1 << (_la - 119)) & 17825795) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8388865) !== 0) || ((((_la - 187)) & ~0x1F) === 0 && ((1 << (_la - 187)) & 33622025) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 810024961) !== 0) || ((((_la - 283)) & ~0x1F) === 0 && ((1 << (_la - 283)) & 35717185) !== 0) || _la === 318 || ((((_la - 351)) & ~0x1F) === 0 && ((1 << (_la - 351)) & 8537089) !== 0) || _la === 387 || _la === 399) { { { - this.state = 1042; + this.state = 692; this.statement(); } } - this.state = 1047; + this.state = 697; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1048; + this.state = 698; this.match(HiveSqlParser.EOF); } } @@ -1358,12 +1126,12 @@ export class HiveSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1052; + this.state = 702; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_EXPLAIN: { - this.state = 1050; + this.state = 700; this.explainStatement(); } break; @@ -1411,19 +1179,19 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_WITH: case HiveSqlParser.LPAREN: { - this.state = 1051; + this.state = 701; this.execStatement(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1055; + this.state = 705; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 2, this.context) ) { case 1: { - this.state = 1054; + this.state = 704; this.match(HiveSqlParser.SEMICOLON); } break; @@ -1451,9 +1219,9 @@ export class HiveSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1057; + this.state = 707; this.match(HiveSqlParser.KW_EXPLAIN); - this.state = 1067; + this.state = 717; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ABORT: @@ -1512,31 +1280,31 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_WITH: case HiveSqlParser.LPAREN: { - this.state = 1061; + this.state = 711; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1058; + this.state = 708; this.explainOption(); } } } - this.state = 1063; + this.state = 713; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 3, this.context); } - this.state = 1064; + this.state = 714; this.execStatement(); } break; case HiveSqlParser.KW_REWRITE: { - this.state = 1065; + this.state = 715; this.match(HiveSqlParser.KW_REWRITE); - this.state = 1066; + this.state = 716; this.queryStatementExpression(); } break; @@ -1564,41 +1332,41 @@ export class HiveSqlParser extends SQLParserBase { this.enterRule(localContext, 6, HiveSqlParser.RULE_explainOption); let _la: number; try { - this.state = 1091; + this.state = 741; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_EXTENDED: this.enterOuterAlt(localContext, 1); { - this.state = 1069; + this.state = 719; this.match(HiveSqlParser.KW_EXTENDED); } break; case HiveSqlParser.KW_FORMATTED: this.enterOuterAlt(localContext, 2); { - this.state = 1070; + this.state = 720; this.match(HiveSqlParser.KW_FORMATTED); } break; case HiveSqlParser.KW_DEPENDENCY: this.enterOuterAlt(localContext, 3); { - this.state = 1071; + this.state = 721; this.match(HiveSqlParser.KW_DEPENDENCY); } break; case HiveSqlParser.KW_CBO: this.enterOuterAlt(localContext, 4); { - this.state = 1072; + this.state = 722; this.match(HiveSqlParser.KW_CBO); - this.state = 1074; + this.state = 724; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 57 || _la === 172) { { - this.state = 1073; + this.state = 723; _la = this.tokenStream.LA(1); if(!(_la === 57 || _la === 172)) { this.errorHandler.recoverInline(this); @@ -1615,66 +1383,66 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_LOGICAL: this.enterOuterAlt(localContext, 5); { - this.state = 1076; + this.state = 726; this.match(HiveSqlParser.KW_LOGICAL); } break; case HiveSqlParser.KW_AUTHORIZATION: this.enterOuterAlt(localContext, 6); { - this.state = 1077; + this.state = 727; this.match(HiveSqlParser.KW_AUTHORIZATION); } break; case HiveSqlParser.KW_ANALYZE: this.enterOuterAlt(localContext, 7); { - this.state = 1078; + this.state = 728; this.match(HiveSqlParser.KW_ANALYZE); } break; case HiveSqlParser.KW_REOPTIMIZATION: this.enterOuterAlt(localContext, 8); { - this.state = 1079; + this.state = 729; this.match(HiveSqlParser.KW_REOPTIMIZATION); } break; case HiveSqlParser.KW_LOCKS: this.enterOuterAlt(localContext, 9); { - this.state = 1080; + this.state = 730; this.match(HiveSqlParser.KW_LOCKS); } break; case HiveSqlParser.KW_AST: this.enterOuterAlt(localContext, 10); { - this.state = 1081; + this.state = 731; this.match(HiveSqlParser.KW_AST); } break; case HiveSqlParser.KW_VECTORIZATION: this.enterOuterAlt(localContext, 11); { - this.state = 1082; + this.state = 732; this.match(HiveSqlParser.KW_VECTORIZATION); - this.state = 1084; + this.state = 734; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 225) { { - this.state = 1083; - this.vectorizationOnly(); + this.state = 733; + this.match(HiveSqlParser.KW_ONLY); } } - this.state = 1087; + this.state = 737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 91 || _la === 121 || _la === 226 || _la === 325) { { - this.state = 1086; + this.state = 736; this.vectorizatonDetail(); } } @@ -1684,14 +1452,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_DEBUG: this.enterOuterAlt(localContext, 12); { - this.state = 1089; + this.state = 739; this.match(HiveSqlParser.KW_DEBUG); } break; case HiveSqlParser.KW_DDL: this.enterOuterAlt(localContext, 13); { - this.state = 1090; + this.state = 740; this.match(HiveSqlParser.KW_DDL); } break; @@ -1713,38 +1481,14 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public vectorizationOnly(): VectorizationOnlyContext { - let localContext = new VectorizationOnlyContext(this.context, this.state); - this.enterRule(localContext, 8, HiveSqlParser.RULE_vectorizationOnly); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1093; - this.match(HiveSqlParser.KW_ONLY); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public vectorizatonDetail(): VectorizatonDetailContext { let localContext = new VectorizatonDetailContext(this.context, this.state); - this.enterRule(localContext, 10, HiveSqlParser.RULE_vectorizatonDetail); + this.enterRule(localContext, 8, HiveSqlParser.RULE_vectorizatonDetail); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1095; + this.state = 743; _la = this.tokenStream.LA(1); if(!(_la === 91 || _la === 121 || _la === 226 || _la === 325)) { this.errorHandler.recoverInline(this); @@ -1771,107 +1515,252 @@ export class HiveSqlParser extends SQLParserBase { } public execStatement(): ExecStatementContext { let localContext = new ExecStatementContext(this.context, this.state); - this.enterRule(localContext, 12, HiveSqlParser.RULE_execStatement); + this.enterRule(localContext, 10, HiveSqlParser.RULE_execStatement); + let _la: number; try { - this.state = 1111; + let alternative: number; + this.state = 816; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 17, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1097; + this.state = 745; this.queryStatementExpression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1098; + this.state = 746; this.loadStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1099; + this.state = 747; this.exportStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1100; + this.state = 748; this.importStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1101; + this.state = 749; this.replDumpStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1102; + this.state = 750; this.replLoadStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1103; - this.replStatusStatement(); + this.state = 751; + this.match(HiveSqlParser.KW_REPL); + this.state = 752; + this.match(HiveSqlParser.KW_STATUS); + this.state = 753; + localContext._dbName = this.dbSchemaName(); + this.state = 756; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { + case 1: + { + this.state = 754; + this.match(HiveSqlParser.KW_WITH); + this.state = 755; + localContext._replConf = this.keyValueProperties(); + } + break; + } } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1104; + this.state = 758; this.ddlStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1105; - this.deleteStatement(); + this.state = 759; + this.match(HiveSqlParser.KW_DELETE); + this.state = 760; + this.match(HiveSqlParser.KW_FROM); + this.state = 761; + this.tableName(); + this.state = 763; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 384) { + { + this.state = 762; + this.whereClause(); + } + } + } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1106; - this.updateStatement(); + this.state = 765; + this.match(HiveSqlParser.KW_UPDATE); + this.state = 766; + this.tableName(); + this.state = 767; + this.setColumnsClause(); + this.state = 769; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 384) { + { + this.state = 768; + this.whereClause(); + } + } + } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1107; + this.state = 771; this.sqlTransactionStatement(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1108; - this.mergeStatement(); + this.state = 772; + this.match(HiveSqlParser.KW_MERGE); + this.state = 774; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 436) { + { + this.state = 773; + this.match(HiveSqlParser.QUERY_HINT); + } + } + + this.state = 776; + this.match(HiveSqlParser.KW_INTO); + this.state = 777; + this.tableName(); + this.state = 782; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { + { + this.state = 779; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 17) { + { + this.state = 778; + this.match(HiveSqlParser.KW_AS); + } + } + + this.state = 781; + this.id_(); + } + } + + this.state = 784; + this.match(HiveSqlParser.KW_USING); + this.state = 785; + this.joinSourcePart(); + this.state = 786; + this.match(HiveSqlParser.KW_ON); + this.state = 787; + this.expression(); + this.state = 788; + this.whenClauses(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1109; - this.prepareStatement(); + this.state = 790; + this.match(HiveSqlParser.KW_PREPARE); + this.state = 791; + this.id_(); + this.state = 792; + this.match(HiveSqlParser.KW_FROM); + this.state = 793; + this.queryStatementExpression(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1110; - this.executeStatement(); + this.state = 795; + this.match(HiveSqlParser.KW_EXECUTE); + this.state = 796; + this.id_(); + this.state = 797; + this.match(HiveSqlParser.KW_USING); + this.state = 798; + this.constantList(); + } + break; + case 15: + this.enterOuterAlt(localContext, 15); + { + this.state = 800; + this.match(HiveSqlParser.KW_SET); + this.state = 801; + this.configPropertiesItem(); + this.state = 806; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 395) { + { + { + this.state = 802; + this.match(HiveSqlParser.DOT); + this.state = 803; + this.configPropertiesItem(); + } + } + this.state = 808; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 809; + this.match(HiveSqlParser.EQUAL); + this.state = 813; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 16, this.context); + while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1 + 1) { + { + { + this.state = 810; + this.matchWildcard(); + } + } + } + this.state = 815; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 16, this.context); + } } break; } @@ -1892,51 +1781,51 @@ export class HiveSqlParser extends SQLParserBase { } public loadStatement(): LoadStatementContext { let localContext = new LoadStatementContext(this.context, this.state); - this.enterRule(localContext, 14, HiveSqlParser.RULE_loadStatement); + this.enterRule(localContext, 12, HiveSqlParser.RULE_loadStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1113; + this.state = 818; this.match(HiveSqlParser.KW_LOAD); - this.state = 1114; + this.state = 819; this.match(HiveSqlParser.KW_DATA); - this.state = 1116; + this.state = 821; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1115; + this.state = 820; this.match(HiveSqlParser.KW_LOCAL); } } - this.state = 1118; + this.state = 823; this.match(HiveSqlParser.KW_INPATH); - this.state = 1119; + this.state = 824; this.match(HiveSqlParser.StringLiteral); - this.state = 1121; + this.state = 826; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 235) { { - this.state = 1120; + this.state = 825; this.match(HiveSqlParser.KW_OVERWRITE); } } - this.state = 1123; + this.state = 828; this.match(HiveSqlParser.KW_INTO); - this.state = 1124; + this.state = 829; this.match(HiveSqlParser.KW_TABLE); - this.state = 1125; + this.state = 830; this.tableOrPartition(); - this.state = 1127; + this.state = 832; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 160) { { - this.state = 1126; + this.state = 831; this.inputFileFormat(); } } @@ -1957,58 +1846,32 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext { - let localContext = new DropPartitionsIgnoreClauseContext(this.context, this.state); - this.enterRule(localContext, 16, HiveSqlParser.RULE_dropPartitionsIgnoreClause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1129; - this.match(HiveSqlParser.KW_IGNORE); - this.state = 1130; - this.match(HiveSqlParser.KW_PROTECTION); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public replicationClause(): ReplicationClauseContext { let localContext = new ReplicationClauseContext(this.context, this.state); - this.enterRule(localContext, 18, HiveSqlParser.RULE_replicationClause); + this.enterRule(localContext, 14, HiveSqlParser.RULE_replicationClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1132; + this.state = 834; this.match(HiveSqlParser.KW_FOR); - this.state = 1134; + this.state = 836; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 204) { { - this.state = 1133; + this.state = 835; this.match(HiveSqlParser.KW_METADATA); } } - this.state = 1136; + this.state = 838; this.match(HiveSqlParser.KW_REPLICATION); - this.state = 1137; + this.state = 839; this.match(HiveSqlParser.LPAREN); - this.state = 1138; + this.state = 840; this.match(HiveSqlParser.StringLiteral); - this.state = 1139; + this.state = 841; this.match(HiveSqlParser.RPAREN); } } @@ -2028,27 +1891,27 @@ export class HiveSqlParser extends SQLParserBase { } public exportStatement(): ExportStatementContext { let localContext = new ExportStatementContext(this.context, this.state); - this.enterRule(localContext, 20, HiveSqlParser.RULE_exportStatement); + this.enterRule(localContext, 16, HiveSqlParser.RULE_exportStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1141; + this.state = 843; this.match(HiveSqlParser.KW_EXPORT); - this.state = 1142; + this.state = 844; this.match(HiveSqlParser.KW_TABLE); - this.state = 1143; + this.state = 845; this.tableOrPartition(); - this.state = 1144; + this.state = 846; this.match(HiveSqlParser.KW_TO); - this.state = 1145; + this.state = 847; this.match(HiveSqlParser.StringLiteral); - this.state = 1147; + this.state = 849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134) { { - this.state = 1146; + this.state = 848; this.replicationClause(); } } @@ -2071,46 +1934,46 @@ export class HiveSqlParser extends SQLParserBase { } public importStatement(): ImportStatementContext { let localContext = new ImportStatementContext(this.context, this.state); - this.enterRule(localContext, 22, HiveSqlParser.RULE_importStatement); + this.enterRule(localContext, 18, HiveSqlParser.RULE_importStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1149; + this.state = 851; this.match(HiveSqlParser.KW_IMPORT); - this.state = 1155; + this.state = 857; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123 || _la === 329) { { - this.state = 1151; + this.state = 853; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 1150; + this.state = 852; this.match(HiveSqlParser.KW_EXTERNAL); } } - this.state = 1153; + this.state = 855; this.match(HiveSqlParser.KW_TABLE); - this.state = 1154; + this.state = 856; this.tableOrPartition(); } } - this.state = 1157; + this.state = 859; this.match(HiveSqlParser.KW_FROM); - this.state = 1158; + this.state = 860; localContext._path = this.match(HiveSqlParser.StringLiteral); - this.state = 1160; + this.state = 862; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 1159; - this.tableLocation(); + this.state = 861; + this.locationPath(); } } @@ -2132,37 +1995,37 @@ export class HiveSqlParser extends SQLParserBase { } public replDumpStatement(): ReplDumpStatementContext { let localContext = new ReplDumpStatementContext(this.context, this.state); - this.enterRule(localContext, 24, HiveSqlParser.RULE_replDumpStatement); + this.enterRule(localContext, 20, HiveSqlParser.RULE_replDumpStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1162; + this.state = 864; this.match(HiveSqlParser.KW_REPL); - this.state = 1163; + this.state = 865; this.match(HiveSqlParser.KW_DUMP); - this.state = 1164; + this.state = 866; localContext._dbPolicy = this.replDbPolicy(); - this.state = 1167; + this.state = 869; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { case 1: { - this.state = 1165; + this.state = 867; this.match(HiveSqlParser.KW_REPLACE); - this.state = 1166; + this.state = 868; localContext._oldDbPolicy = this.replDbPolicy(); } break; } - this.state = 1171; + this.state = 873; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 19, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 27, this.context) ) { case 1: { - this.state = 1169; + this.state = 871; this.match(HiveSqlParser.KW_WITH); - this.state = 1170; - localContext._replConf = this.replConfigs(); + this.state = 872; + localContext._replConf = this.keyValueProperties(); } break; } @@ -2184,21 +2047,21 @@ export class HiveSqlParser extends SQLParserBase { } public replDbPolicy(): ReplDbPolicyContext { let localContext = new ReplDbPolicyContext(this.context, this.state); - this.enterRule(localContext, 26, HiveSqlParser.RULE_replDbPolicy); + this.enterRule(localContext, 22, HiveSqlParser.RULE_replDbPolicy); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1173; + this.state = 875; localContext._dbName = this.dbSchemaName(); - this.state = 1176; + this.state = 878; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 395) { { - this.state = 1174; + this.state = 876; this.match(HiveSqlParser.DOT); - this.state = 1175; + this.state = 877; localContext._tablePolicy = this.replTableLevelPolicy(); } } @@ -2221,38 +2084,38 @@ export class HiveSqlParser extends SQLParserBase { } public replLoadStatement(): ReplLoadStatementContext { let localContext = new ReplLoadStatementContext(this.context, this.state); - this.enterRule(localContext, 28, HiveSqlParser.RULE_replLoadStatement); + this.enterRule(localContext, 24, HiveSqlParser.RULE_replLoadStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1178; + this.state = 880; this.match(HiveSqlParser.KW_REPL); - this.state = 1179; + this.state = 881; this.match(HiveSqlParser.KW_LOAD); - this.state = 1180; + this.state = 882; localContext._sourceDbPolicy = this.replDbPolicy(); - this.state = 1183; + this.state = 885; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 166) { { - this.state = 1181; + this.state = 883; this.match(HiveSqlParser.KW_INTO); - this.state = 1182; + this.state = 884; localContext._dbName = this.dbSchemaName(); } } - this.state = 1187; + this.state = 889; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { case 1: { - this.state = 1185; + this.state = 887; this.match(HiveSqlParser.KW_WITH); - this.state = 1186; - localContext._replConf = this.replConfigs(); + this.state = 888; + localContext._replConf = this.keyValueProperties(); } break; } @@ -2272,92 +2135,23 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public replConfigs(): ReplConfigsContext { - let localContext = new ReplConfigsContext(this.context, this.state); - this.enterRule(localContext, 30, HiveSqlParser.RULE_replConfigs); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1189; - this.match(HiveSqlParser.LPAREN); - this.state = 1190; - this.replConfigsList(); - this.state = 1191; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public replConfigsList(): ReplConfigsListContext { - let localContext = new ReplConfigsListContext(this.context, this.state); - this.enterRule(localContext, 32, HiveSqlParser.RULE_replConfigsList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1193; - this.keyValueProperty(); - this.state = 1198; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 1194; - this.match(HiveSqlParser.COMMA); - this.state = 1195; - this.keyValueProperty(); - } - } - this.state = 1200; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public replTableLevelPolicy(): ReplTableLevelPolicyContext { let localContext = new ReplTableLevelPolicyContext(this.context, this.state); - this.enterRule(localContext, 34, HiveSqlParser.RULE_replTableLevelPolicy); + this.enterRule(localContext, 26, HiveSqlParser.RULE_replTableLevelPolicy); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1201; + this.state = 891; localContext._replTablesIncludeList = this.match(HiveSqlParser.StringLiteral); - this.state = 1204; + this.state = 894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 395) { { - this.state = 1202; + this.state = 892; this.match(HiveSqlParser.DOT); - this.state = 1203; + this.state = 893; localContext._replTablesExcludeList = this.match(HiveSqlParser.StringLiteral); } } @@ -2378,379 +2172,372 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public replStatusStatement(): ReplStatusStatementContext { - let localContext = new ReplStatusStatementContext(this.context, this.state); - this.enterRule(localContext, 36, HiveSqlParser.RULE_replStatusStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1206; - this.match(HiveSqlParser.KW_REPL); - this.state = 1207; - this.match(HiveSqlParser.KW_STATUS); - this.state = 1208; - localContext._dbName = this.dbSchemaName(); - this.state = 1211; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { - case 1: - { - this.state = 1209; - this.match(HiveSqlParser.KW_WITH); - this.state = 1210; - localContext._replConf = this.replConfigs(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public ddlStatement(): DdlStatementContext { let localContext = new DdlStatementContext(this.context, this.state); - this.enterRule(localContext, 38, HiveSqlParser.RULE_ddlStatement); + this.enterRule(localContext, 28, HiveSqlParser.RULE_ddlStatement); + let _la: number; try { - this.state = 1260; + this.state = 954; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1213; + this.state = 896; this.createDatabaseStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1214; + this.state = 897; this.switchDatabaseStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1215; + this.state = 898; this.dropDatabaseStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1216; + this.state = 899; this.createTableStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1217; + this.state = 900; this.dropTableStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1218; + this.state = 901; this.truncateTableStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1219; + this.state = 902; this.alterStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1220; + this.state = 903; this.descStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1221; + this.state = 904; this.showStatement(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1222; + this.state = 905; this.metastoreCheck(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1223; + this.state = 906; this.createViewStatement(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1224; + this.state = 907; this.createMaterializedViewStatement(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1225; + this.state = 908; this.createScheduledQueryStatement(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1226; + this.state = 909; this.alterScheduledQueryStatement(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1227; + this.state = 910; this.dropScheduledQueryStatement(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1228; + this.state = 911; this.dropViewStatement(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1229; + this.state = 912; this.dropMaterializedViewStatement(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1230; + this.state = 913; this.createFunctionStatement(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1231; + this.state = 914; this.createMacroStatement(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1232; + this.state = 915; this.dropFunctionStatement(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1233; + this.state = 916; this.reloadFunctionsStatement(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1234; + this.state = 917; this.dropMacroStatement(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1235; + this.state = 918; this.createIndexStatement(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1236; + this.state = 919; this.dropIndexStatement(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 1237; + this.state = 920; this.analyzeStatement(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 1238; + this.state = 921; this.lockStatement(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 1239; + this.state = 922; this.unlockStatement(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 1240; + this.state = 923; this.lockDatabase(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 1241; + this.state = 924; this.unlockDatabase(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 1242; + this.state = 925; this.createRoleStatement(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 1243; + this.state = 926; this.dropRoleStatement(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 1244; + this.state = 927; this.grantPrivileges(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 1245; + this.state = 928; this.revokePrivileges(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 1246; + this.state = 929; this.showGrants(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 1247; + this.state = 930; this.showRoleGrants(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 1248; + this.state = 931; this.showRolePrincipals(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 1249; + this.state = 932; this.showRoles(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 1250; + this.state = 933; this.grantRole(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 1251; + this.state = 934; this.revokeRole(); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 1252; + this.state = 935; this.setRole(); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 1253; + this.state = 936; this.showCurrentRole(); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 1254; - this.abortTransactionStatement(); + this.state = 937; + this.match(HiveSqlParser.KW_ABORT); + this.state = 938; + _la = this.tokenStream.LA(1); + if(!(_la === 50 || _la === 346)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 940; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 939; + this.match(HiveSqlParser.Number); + } + } + this.state = 942; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 431); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 1255; - this.abortCompactionStatement(); + this.state = 944; + this.match(HiveSqlParser.KW_KILL); + this.state = 945; + this.match(HiveSqlParser.KW_QUERY); + this.state = 947; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 946; + this.match(HiveSqlParser.StringLiteral); + } + } + this.state = 949; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 426); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 1256; - this.killQueryStatement(); + this.state = 951; + this.resourcePlanDdlStatements(); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 1257; - this.resourcePlanDdlStatements(); + this.state = 952; + this.createDataConnectorStatement(); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 1258; - this.createDataConnectorStatement(); - } - break; - case 47: - this.enterOuterAlt(localContext, 47); - { - this.state = 1259; + this.state = 953; this.dropDataConnectorStatement(); } break; @@ -2772,13 +2559,41 @@ export class HiveSqlParser extends SQLParserBase { } public ifExists(): IfExistsContext { let localContext = new IfExistsContext(this.context, this.state); - this.enterRule(localContext, 40, HiveSqlParser.RULE_ifExists); + this.enterRule(localContext, 30, HiveSqlParser.RULE_ifExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 1262; + this.state = 956; this.match(HiveSqlParser.KW_IF); - this.state = 1263; + this.state = 957; + this.match(HiveSqlParser.KW_EXISTS); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public ifNotExists(): IfNotExistsContext { + let localContext = new IfNotExistsContext(this.context, this.state); + this.enterRule(localContext, 32, HiveSqlParser.RULE_ifNotExists); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 959; + this.match(HiveSqlParser.KW_IF); + this.state = 960; + this.match(HiveSqlParser.KW_NOT); + this.state = 961; this.match(HiveSqlParser.KW_EXISTS); } } @@ -2798,12 +2613,12 @@ export class HiveSqlParser extends SQLParserBase { } public restrictOrCascade(): RestrictOrCascadeContext { let localContext = new RestrictOrCascadeContext(this.context, this.state); - this.enterRule(localContext, 42, HiveSqlParser.RULE_restrictOrCascade); + this.enterRule(localContext, 34, HiveSqlParser.RULE_restrictOrCascade); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1265; + this.state = 963; _la = this.tokenStream.LA(1); if(!(_la === 34 || _la === 282)) { this.errorHandler.recoverInline(this); @@ -2828,67 +2643,15 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public ifNotExists(): IfNotExistsContext { - let localContext = new IfNotExistsContext(this.context, this.state); - this.enterRule(localContext, 44, HiveSqlParser.RULE_ifNotExists); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1267; - this.match(HiveSqlParser.KW_IF); - this.state = 1268; - this.match(HiveSqlParser.KW_NOT); - this.state = 1269; - this.match(HiveSqlParser.KW_EXISTS); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public force(): ForceContext { - let localContext = new ForceContext(this.context, this.state); - this.enterRule(localContext, 46, HiveSqlParser.RULE_force); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1271; - this.match(HiveSqlParser.KW_FORCE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public rewriteEnabled(): RewriteEnabledContext { let localContext = new RewriteEnabledContext(this.context, this.state); - this.enterRule(localContext, 48, HiveSqlParser.RULE_rewriteEnabled); + this.enterRule(localContext, 36, HiveSqlParser.RULE_rewriteEnabled); try { this.enterOuterAlt(localContext, 1); { - this.state = 1273; + this.state = 965; this.enable(); - this.state = 1274; + this.state = 966; this.match(HiveSqlParser.KW_REWRITE); } } @@ -2908,13 +2671,13 @@ export class HiveSqlParser extends SQLParserBase { } public rewriteDisabled(): RewriteDisabledContext { let localContext = new RewriteDisabledContext(this.context, this.state); - this.enterRule(localContext, 50, HiveSqlParser.RULE_rewriteDisabled); + this.enterRule(localContext, 38, HiveSqlParser.RULE_rewriteDisabled); try { this.enterOuterAlt(localContext, 1); { - this.state = 1276; + this.state = 968; this.disable(); - this.state = 1277; + this.state = 969; this.match(HiveSqlParser.KW_REWRITE); } } @@ -2934,15 +2697,15 @@ export class HiveSqlParser extends SQLParserBase { } public storedAsDirs(): StoredAsDirsContext { let localContext = new StoredAsDirsContext(this.context, this.state); - this.enterRule(localContext, 52, HiveSqlParser.RULE_storedAsDirs); + this.enterRule(localContext, 40, HiveSqlParser.RULE_storedAsDirs); try { this.enterOuterAlt(localContext, 1); { - this.state = 1279; + this.state = 971; this.match(HiveSqlParser.KW_STORED); - this.state = 1280; + this.state = 972; this.match(HiveSqlParser.KW_AS); - this.state = 1281; + this.state = 973; this.match(HiveSqlParser.KW_DIRECTORIES); } } @@ -2960,110 +2723,86 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public orReplace(): OrReplaceContext { - let localContext = new OrReplaceContext(this.context, this.state); - this.enterRule(localContext, 54, HiveSqlParser.RULE_orReplace); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1283; - this.match(HiveSqlParser.KW_OR); - this.state = 1284; - this.match(HiveSqlParser.KW_REPLACE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public createDatabaseStatement(): CreateDatabaseStatementContext { let localContext = new CreateDatabaseStatementContext(this.context, this.state); - this.enterRule(localContext, 56, HiveSqlParser.RULE_createDatabaseStatement); + this.enterRule(localContext, 42, HiveSqlParser.RULE_createDatabaseStatement); let _la: number; try { - this.state = 1325; + this.state = 1015; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1286; + this.state = 975; this.match(HiveSqlParser.KW_CREATE); - this.state = 1288; + this.state = 977; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 273) { { - this.state = 1287; + this.state = 976; this.match(HiveSqlParser.KW_REMOTE); } } - this.state = 1290; + this.state = 979; this.db_schema(); - this.state = 1292; + this.state = 981; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1291; + this.state = 980; this.ifNotExists(); } } - this.state = 1294; + this.state = 983; localContext._name = this.dbSchemaNameCreate(); - this.state = 1296; + this.state = 985; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 1295; + this.state = 984; this.databaseComment(); } } - this.state = 1299; + this.state = 988; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 1298; - this.dbLocation(); + this.state = 987; + this.locationPath(); } } - this.state = 1302; + this.state = 992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 196) { { - this.state = 1301; - this.dbManagedLocation(); + this.state = 990; + this.match(HiveSqlParser.KW_MANAGEDLOCATION); + this.state = 991; + localContext._locn = this.match(HiveSqlParser.StringLiteral); } } - this.state = 1307; + this.state = 997; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 40, this.context) ) { case 1: { - this.state = 1304; + this.state = 994; this.match(HiveSqlParser.KW_WITH); - this.state = 1305; + this.state = 995; this.match(HiveSqlParser.KW_DBPROPERTIES); - this.state = 1306; - localContext._dbprops = this.dbProperties(); + this.state = 996; + localContext._dbprops = this.keyValueProperties(); } break; } @@ -3072,47 +2811,47 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1309; + this.state = 999; this.match(HiveSqlParser.KW_CREATE); - this.state = 1310; + this.state = 1000; this.match(HiveSqlParser.KW_REMOTE); - this.state = 1311; + this.state = 1001; this.db_schema(); - this.state = 1313; + this.state = 1003; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1312; + this.state = 1002; this.ifNotExists(); } } - this.state = 1315; + this.state = 1005; localContext._name = this.dbSchemaNameCreate(); - this.state = 1317; + this.state = 1007; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 1316; + this.state = 1006; this.databaseComment(); } } - this.state = 1319; + this.state = 1009; this.dbConnectorName(); - this.state = 1323; + this.state = 1013; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 35, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) { case 1: { - this.state = 1320; + this.state = 1010; this.match(HiveSqlParser.KW_WITH); - this.state = 1321; + this.state = 1011; this.match(HiveSqlParser.KW_DBPROPERTIES); - this.state = 1322; - localContext._dbprops = this.dbProperties(); + this.state = 1012; + localContext._dbprops = this.keyValueProperties(); } break; } @@ -3134,136 +2873,15 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public dbLocation(): DbLocationContext { - let localContext = new DbLocationContext(this.context, this.state); - this.enterRule(localContext, 58, HiveSqlParser.RULE_dbLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1327; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 1328; - localContext._locn = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dbManagedLocation(): DbManagedLocationContext { - let localContext = new DbManagedLocationContext(this.context, this.state); - this.enterRule(localContext, 60, HiveSqlParser.RULE_dbManagedLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1330; - this.match(HiveSqlParser.KW_MANAGEDLOCATION); - this.state = 1331; - localContext._locn = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dbProperties(): DbPropertiesContext { - let localContext = new DbPropertiesContext(this.context, this.state); - this.enterRule(localContext, 62, HiveSqlParser.RULE_dbProperties); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1333; - this.match(HiveSqlParser.LPAREN); - this.state = 1334; - this.dbPropertiesList(); - this.state = 1335; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dbPropertiesList(): DbPropertiesListContext { - let localContext = new DbPropertiesListContext(this.context, this.state); - this.enterRule(localContext, 64, HiveSqlParser.RULE_dbPropertiesList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1337; - this.keyValueProperty(); - this.state = 1342; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 1338; - this.match(HiveSqlParser.COMMA); - this.state = 1339; - this.keyValueProperty(); - } - } - this.state = 1344; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public dbConnectorName(): DbConnectorNameContext { let localContext = new DbConnectorNameContext(this.context, this.state); - this.enterRule(localContext, 66, HiveSqlParser.RULE_dbConnectorName); + this.enterRule(localContext, 44, HiveSqlParser.RULE_dbConnectorName); try { this.enterOuterAlt(localContext, 1); { - this.state = 1345; + this.state = 1017; this.match(HiveSqlParser.KW_USING); - this.state = 1346; + this.state = 1018; localContext._dcName = this.dbSchemaName(); } } @@ -3283,13 +2901,13 @@ export class HiveSqlParser extends SQLParserBase { } public switchDatabaseStatement(): SwitchDatabaseStatementContext { let localContext = new SwitchDatabaseStatementContext(this.context, this.state); - this.enterRule(localContext, 68, HiveSqlParser.RULE_switchDatabaseStatement); + this.enterRule(localContext, 46, HiveSqlParser.RULE_switchDatabaseStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1348; + this.state = 1020; this.match(HiveSqlParser.KW_USE); - this.state = 1349; + this.state = 1021; this.dbSchemaName(); } } @@ -3309,33 +2927,33 @@ export class HiveSqlParser extends SQLParserBase { } public dropDatabaseStatement(): DropDatabaseStatementContext { let localContext = new DropDatabaseStatementContext(this.context, this.state); - this.enterRule(localContext, 70, HiveSqlParser.RULE_dropDatabaseStatement); + this.enterRule(localContext, 48, HiveSqlParser.RULE_dropDatabaseStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1351; + this.state = 1023; this.match(HiveSqlParser.KW_DROP); - this.state = 1352; + this.state = 1024; this.db_schema(); - this.state = 1354; + this.state = 1026; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1353; + this.state = 1025; this.ifExists(); } } - this.state = 1356; + this.state = 1028; this.dbSchemaName(); - this.state = 1358; + this.state = 1030; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 34 || _la === 282) { { - this.state = 1357; + this.state = 1029; this.restrictOrCascade(); } } @@ -3358,13 +2976,13 @@ export class HiveSqlParser extends SQLParserBase { } public databaseComment(): DatabaseCommentContext { let localContext = new DatabaseCommentContext(this.context, this.state); - this.enterRule(localContext, 72, HiveSqlParser.RULE_databaseComment); + this.enterRule(localContext, 50, HiveSqlParser.RULE_databaseComment); try { this.enterOuterAlt(localContext, 1); { - this.state = 1360; + this.state = 1032; this.match(HiveSqlParser.KW_COMMENT); - this.state = 1361; + this.state = 1033; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -3384,48 +3002,48 @@ export class HiveSqlParser extends SQLParserBase { } public truncateTableStatement(): TruncateTableStatementContext { let localContext = new TruncateTableStatementContext(this.context, this.state); - this.enterRule(localContext, 74, HiveSqlParser.RULE_truncateTableStatement); + this.enterRule(localContext, 52, HiveSqlParser.RULE_truncateTableStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1363; + this.state = 1035; this.match(HiveSqlParser.KW_TRUNCATE); - this.state = 1365; + this.state = 1037; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 329) { { - this.state = 1364; + this.state = 1036; this.match(HiveSqlParser.KW_TABLE); } } - this.state = 1367; - this.tablePartitionPrefix(); - this.state = 1373; + this.state = 1039; + this.tableOrPartition(); + this.state = 1045; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 46) { { - this.state = 1368; + this.state = 1040; this.match(HiveSqlParser.KW_COLUMNS); - this.state = 1369; + this.state = 1041; this.match(HiveSqlParser.LPAREN); - this.state = 1370; + this.state = 1042; this.columnNameList(); - this.state = 1371; + this.state = 1043; this.match(HiveSqlParser.RPAREN); } } - this.state = 1376; + this.state = 1048; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 135) { { - this.state = 1375; - this.force(); + this.state = 1047; + this.match(HiveSqlParser.KW_FORCE); } } @@ -3447,43 +3065,43 @@ export class HiveSqlParser extends SQLParserBase { } public dropTableStatement(): DropTableStatementContext { let localContext = new DropTableStatementContext(this.context, this.state); - this.enterRule(localContext, 76, HiveSqlParser.RULE_dropTableStatement); + this.enterRule(localContext, 54, HiveSqlParser.RULE_dropTableStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1378; + this.state = 1050; this.match(HiveSqlParser.KW_DROP); - this.state = 1379; + this.state = 1051; this.match(HiveSqlParser.KW_TABLE); - this.state = 1381; + this.state = 1053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1380; + this.state = 1052; this.ifExists(); } } - this.state = 1383; + this.state = 1055; this.tableName(); - this.state = 1385; + this.state = 1057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 255) { { - this.state = 1384; + this.state = 1056; this.match(HiveSqlParser.KW_PURGE); } } - this.state = 1388; + this.state = 1060; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134) { { - this.state = 1387; + this.state = 1059; this.replicationClause(); } } @@ -3506,17 +3124,17 @@ export class HiveSqlParser extends SQLParserBase { } public inputFileFormat(): InputFileFormatContext { let localContext = new InputFileFormatContext(this.context, this.state); - this.enterRule(localContext, 78, HiveSqlParser.RULE_inputFileFormat); + this.enterRule(localContext, 56, HiveSqlParser.RULE_inputFileFormat); try { this.enterOuterAlt(localContext, 1); { - this.state = 1390; + this.state = 1062; this.match(HiveSqlParser.KW_INPUTFORMAT); - this.state = 1391; + this.state = 1063; localContext._inFmt = this.match(HiveSqlParser.StringLiteral); - this.state = 1392; + this.state = 1064; this.match(HiveSqlParser.KW_SERDE); - this.state = 1393; + this.state = 1065; localContext._serdeCls = this.match(HiveSqlParser.StringLiteral); } } @@ -3536,71 +3154,71 @@ export class HiveSqlParser extends SQLParserBase { } public tabTypeExpr(): TabTypeExprContext { let localContext = new TabTypeExprContext(this.context, this.state); - this.enterRule(localContext, 80, HiveSqlParser.RULE_tabTypeExpr); + this.enterRule(localContext, 58, HiveSqlParser.RULE_tabTypeExpr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1395; + this.state = 1067; this.id_(); - this.state = 1398; + this.state = 1070; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 395) { { - this.state = 1396; + this.state = 1068; this.match(HiveSqlParser.DOT); - this.state = 1397; + this.state = 1069; this.id_(); } } - this.state = 1413; + this.state = 1085; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 56, this.context) ) { case 1: { - this.state = 1400; + this.state = 1072; this.id_(); - this.state = 1410; + this.state = 1082; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 395) { { { - this.state = 1401; + this.state = 1073; this.match(HiveSqlParser.DOT); - this.state = 1406; + this.state = 1078; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { case 1: { - this.state = 1402; + this.state = 1074; this.match(HiveSqlParser.KW_ELEM_TYPE); } break; case 2: { - this.state = 1403; + this.state = 1075; this.match(HiveSqlParser.KW_KEY_TYPE); } break; case 3: { - this.state = 1404; + this.state = 1076; this.match(HiveSqlParser.KW_VALUE_TYPE); } break; case 4: { - this.state = 1405; + this.state = 1077; this.id_(); } break; } } } - this.state = 1412; + this.state = 1084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3625,19 +3243,19 @@ export class HiveSqlParser extends SQLParserBase { } public partTypeExpr(): PartTypeExprContext { let localContext = new PartTypeExprContext(this.context, this.state); - this.enterRule(localContext, 82, HiveSqlParser.RULE_partTypeExpr); + this.enterRule(localContext, 60, HiveSqlParser.RULE_partTypeExpr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1415; + this.state = 1087; this.tabTypeExpr(); - this.state = 1417; + this.state = 1089; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 237) { { - this.state = 1416; + this.state = 1088; this.partitionSpec(); } } @@ -3660,28 +3278,28 @@ export class HiveSqlParser extends SQLParserBase { } public tabPartColTypeExpr(): TabPartColTypeExprContext { let localContext = new TabPartColTypeExprContext(this.context, this.state); - this.enterRule(localContext, 84, HiveSqlParser.RULE_tabPartColTypeExpr); + this.enterRule(localContext, 62, HiveSqlParser.RULE_tabPartColTypeExpr); try { this.enterOuterAlt(localContext, 1); { - this.state = 1419; + this.state = 1091; this.tableOrView(); - this.state = 1421; + this.state = 1093; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { case 1: { - this.state = 1420; + this.state = 1092; this.partitionSpec(); } break; } - this.state = 1424; + this.state = 1096; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) { case 1: { - this.state = 1423; + this.state = 1095; this.extColumnName(); } break; @@ -3704,12 +3322,12 @@ export class HiveSqlParser extends SQLParserBase { } public descStatement(): DescStatementContext { let localContext = new DescStatementContext(this.context, this.state); - this.enterRule(localContext, 86, HiveSqlParser.RULE_descStatement); + this.enterRule(localContext, 64, HiveSqlParser.RULE_descStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1426; + this.state = 1098; _la = this.tokenStream.LA(1); if(!(_la === 89 || _la === 90)) { this.errorHandler.recoverInline(this); @@ -3718,90 +3336,90 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1449; + this.state = 1121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context) ) { case 1: { - this.state = 1427; + this.state = 1099; this.db_schema(); - this.state = 1429; + this.state = 1101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1428; + this.state = 1100; this.match(HiveSqlParser.KW_EXTENDED); } } - this.state = 1431; + this.state = 1103; localContext._dbName = this.dbSchemaName(); } break; case 2: { - this.state = 1433; + this.state = 1105; this.match(HiveSqlParser.KW_DATACONNECTOR); - this.state = 1435; + this.state = 1107; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1434; + this.state = 1106; this.match(HiveSqlParser.KW_EXTENDED); } } - this.state = 1437; + this.state = 1109; localContext._dcName = this.dbSchemaName(); } break; case 3: { - this.state = 1438; + this.state = 1110; this.match(HiveSqlParser.KW_FUNCTION); - this.state = 1440; + this.state = 1112; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1439; + this.state = 1111; this.match(HiveSqlParser.KW_EXTENDED); } } - this.state = 1442; + this.state = 1114; localContext._name = this.functionNameForDDL(); } break; case 4: { - this.state = 1445; + this.state = 1117; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_FORMATTED: { - this.state = 1443; + this.state = 1115; localContext._descOptions = this.match(HiveSqlParser.KW_FORMATTED); } break; case HiveSqlParser.KW_EXTENDED: { - this.state = 1444; + this.state = 1116; localContext._descOptions = this.match(HiveSqlParser.KW_EXTENDED); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1447; + this.state = 1119; localContext._parttype = this.tabPartColTypeExpr(); } break; case 5: { - this.state = 1448; + this.state = 1120; localContext._parttype = this.tabPartColTypeExpr(); } break; @@ -3824,46 +3442,46 @@ export class HiveSqlParser extends SQLParserBase { } public analyzeStatement(): AnalyzeStatementContext { let localContext = new AnalyzeStatementContext(this.context, this.state); - this.enterRule(localContext, 88, HiveSqlParser.RULE_analyzeStatement); + this.enterRule(localContext, 66, HiveSqlParser.RULE_analyzeStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1451; + this.state = 1123; this.match(HiveSqlParser.KW_ANALYZE); - this.state = 1452; + this.state = 1124; this.match(HiveSqlParser.KW_TABLE); - this.state = 1453; + this.state = 1125; localContext._parttype = this.tableOrPartition(); - this.state = 1466; + this.state = 1138; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_COMPUTE: { - this.state = 1454; + this.state = 1126; this.match(HiveSqlParser.KW_COMPUTE); - this.state = 1455; + this.state = 1127; this.match(HiveSqlParser.KW_STATISTICS); - this.state = 1462; + this.state = 1134; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_NOSCAN: { - this.state = 1456; + this.state = 1128; localContext._noscan = this.match(HiveSqlParser.KW_NOSCAN); } break; case HiveSqlParser.KW_FOR: { - this.state = 1457; + this.state = 1129; this.match(HiveSqlParser.KW_FOR); - this.state = 1458; + this.state = 1130; this.match(HiveSqlParser.KW_COLUMNS); - this.state = 1460; + this.state = 1132; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { case 1: { - this.state = 1459; + this.state = 1131; localContext._statsColumnName = this.columnNameList(); } break; @@ -3924,9 +3542,9 @@ export class HiveSqlParser extends SQLParserBase { break; case HiveSqlParser.KW_CACHE: { - this.state = 1464; + this.state = 1136; this.match(HiveSqlParser.KW_CACHE); - this.state = 1465; + this.state = 1137; this.match(HiveSqlParser.KW_METADATA); } break; @@ -3951,12 +3569,12 @@ export class HiveSqlParser extends SQLParserBase { } public from_in(): From_inContext { let localContext = new From_inContext(this.context, this.state); - this.enterRule(localContext, 90, HiveSqlParser.RULE_from_in); + this.enterRule(localContext, 68, HiveSqlParser.RULE_from_in); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1468; + this.state = 1140; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 154)) { this.errorHandler.recoverInline(this); @@ -3983,12 +3601,12 @@ export class HiveSqlParser extends SQLParserBase { } public db_schema(): Db_schemaContext { let localContext = new Db_schemaContext(this.context, this.state); - this.enterRule(localContext, 92, HiveSqlParser.RULE_db_schema); + this.enterRule(localContext, 70, HiveSqlParser.RULE_db_schema); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1470; + this.state = 1142; _la = this.tokenStream.LA(1); if(!(_la === 67 || _la === 295)) { this.errorHandler.recoverInline(this); @@ -4015,18 +3633,18 @@ export class HiveSqlParser extends SQLParserBase { } public showStatement(): ShowStatementContext { let localContext = new ShowStatementContext(this.context, this.state); - this.enterRule(localContext, 94, HiveSqlParser.RULE_showStatement); + this.enterRule(localContext, 72, HiveSqlParser.RULE_showStatement); let _la: number; try { - this.state = 1665; + this.state = 1327; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 100, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 103, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1472; + this.state = 1144; this.match(HiveSqlParser.KW_SHOW); - this.state = 1473; + this.state = 1145; _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 296)) { this.errorHandler.recoverInline(this); @@ -4035,14 +3653,14 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1476; + this.state = 1148; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 184) { { - this.state = 1474; + this.state = 1146; this.match(HiveSqlParser.KW_LIKE); - this.state = 1475; + this.state = 1147; this.showStmtIdentifier(); } } @@ -4052,38 +3670,38 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1478; + this.state = 1150; this.match(HiveSqlParser.KW_SHOW); - this.state = 1480; + this.state = 1152; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1479; + this.state = 1151; localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED); } } - this.state = 1482; + this.state = 1154; this.match(HiveSqlParser.KW_TABLES); - this.state = 1486; + this.state = 1158; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { case 1: { - this.state = 1483; + this.state = 1155; this.from_in(); - this.state = 1484; + this.state = 1156; localContext._db_name = this.dbSchemaName(); } break; } - this.state = 1489; + this.state = 1161; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 64, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { case 1: { - this.state = 1488; + this.state = 1160; localContext._filter = this.showTablesFilterExpr(); } break; @@ -4093,36 +3711,36 @@ export class HiveSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1491; + this.state = 1163; this.match(HiveSqlParser.KW_SHOW); - this.state = 1492; + this.state = 1164; this.match(HiveSqlParser.KW_VIEWS); - this.state = 1496; + this.state = 1168; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: { - this.state = 1493; + this.state = 1165; this.from_in(); - this.state = 1494; + this.state = 1166; localContext._db_name = this.dbSchemaName(); } break; } - this.state = 1501; + this.state = 1173; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 73, this.context) ) { case 1: { - this.state = 1498; + this.state = 1170; this.match(HiveSqlParser.KW_LIKE); - this.state = 1499; + this.state = 1171; this.showStmtIdentifier(); } break; case 2: { - this.state = 1500; + this.state = 1172; this.showStmtIdentifier(); } break; @@ -4132,38 +3750,38 @@ export class HiveSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1503; + this.state = 1175; this.match(HiveSqlParser.KW_SHOW); - this.state = 1504; + this.state = 1176; this.match(HiveSqlParser.KW_MATERIALIZED); - this.state = 1505; + this.state = 1177; this.match(HiveSqlParser.KW_VIEWS); - this.state = 1509; + this.state = 1181; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 67, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { case 1: { - this.state = 1506; + this.state = 1178; this.from_in(); - this.state = 1507; + this.state = 1179; localContext._db_name = this.dbSchemaName(); } break; } - this.state = 1514; + this.state = 1186; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context) ) { case 1: { - this.state = 1511; + this.state = 1183; this.match(HiveSqlParser.KW_LIKE); - this.state = 1512; + this.state = 1184; this.showStmtIdentifier(); } break; case 2: { - this.state = 1513; + this.state = 1185; this.showStmtIdentifier(); } break; @@ -4173,50 +3791,50 @@ export class HiveSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1516; + this.state = 1188; this.match(HiveSqlParser.KW_SHOW); - this.state = 1518; + this.state = 1190; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 315) { { - this.state = 1517; + this.state = 1189; this.match(HiveSqlParser.KW_SORTED); } } - this.state = 1520; + this.state = 1192; this.match(HiveSqlParser.KW_COLUMNS); - this.state = 1521; + this.state = 1193; this.from_in(); - this.state = 1522; + this.state = 1194; this.tableOrView(); - this.state = 1526; + this.state = 1198; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context) ) { case 1: { - this.state = 1523; + this.state = 1195; this.from_in(); - this.state = 1524; + this.state = 1196; localContext._db_name = this.dbSchemaName(); } break; } - this.state = 1531; + this.state = 1203; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 78, this.context) ) { case 1: { - this.state = 1528; + this.state = 1200; this.match(HiveSqlParser.KW_LIKE); - this.state = 1529; + this.state = 1201; this.showStmtIdentifier(); } break; case 2: { - this.state = 1530; + this.state = 1202; this.showStmtIdentifier(); } break; @@ -4226,18 +3844,18 @@ export class HiveSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1533; + this.state = 1205; this.match(HiveSqlParser.KW_SHOW); - this.state = 1534; + this.state = 1206; this.match(HiveSqlParser.KW_FUNCTIONS); - this.state = 1537; + this.state = 1209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 184) { { - this.state = 1535; + this.state = 1207; this.match(HiveSqlParser.KW_LIKE); - this.state = 1536; + this.state = 1208; this.functionNameForDDL(); } } @@ -4247,48 +3865,48 @@ export class HiveSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1539; + this.state = 1211; this.match(HiveSqlParser.KW_SHOW); - this.state = 1540; + this.state = 1212; this.match(HiveSqlParser.KW_PARTITIONS); - this.state = 1541; + this.state = 1213; localContext._tabOrViewName = this.tableOrView(); - this.state = 1543; + this.state = 1215; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 237) { { - this.state = 1542; + this.state = 1214; this.partitionSpec(); } } - this.state = 1546; + this.state = 1218; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 384) { { - this.state = 1545; + this.state = 1217; this.whereClause(); } } - this.state = 1549; + this.state = 1221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 1548; + this.state = 1220; this.orderByClause(); } } - this.state = 1552; + this.state = 1224; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 185) { { - this.state = 1551; + this.state = 1223; this.limitClause(); } } @@ -4298,27 +3916,27 @@ export class HiveSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1554; + this.state = 1226; this.match(HiveSqlParser.KW_SHOW); - this.state = 1555; + this.state = 1227; this.match(HiveSqlParser.KW_CREATE); - this.state = 1561; + this.state = 1233; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_DATABASE: case HiveSqlParser.KW_SCHEMA: { - this.state = 1556; + this.state = 1228; this.db_schema(); - this.state = 1557; + this.state = 1229; localContext._db_name = this.dbSchemaName(); } break; case HiveSqlParser.KW_TABLE: { - this.state = 1559; + this.state = 1231; this.match(HiveSqlParser.KW_TABLE); - this.state = 1560; + this.state = 1232; localContext._tabName = this.tableName(); } break; @@ -4330,34 +3948,34 @@ export class HiveSqlParser extends SQLParserBase { case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1563; + this.state = 1235; this.match(HiveSqlParser.KW_SHOW); - this.state = 1564; + this.state = 1236; this.match(HiveSqlParser.KW_TABLE); - this.state = 1565; + this.state = 1237; this.match(HiveSqlParser.KW_EXTENDED); - this.state = 1569; + this.state = 1241; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139 || _la === 154) { { - this.state = 1566; + this.state = 1238; this.from_in(); - this.state = 1567; + this.state = 1239; localContext._db_name = this.dbSchemaName(); } } - this.state = 1571; + this.state = 1243; this.match(HiveSqlParser.KW_LIKE); - this.state = 1572; + this.state = 1244; this.showStmtIdentifier(); - this.state = 1574; + this.state = 1246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 237) { { - this.state = 1573; + this.state = 1245; this.partitionSpec(); } } @@ -4367,22 +3985,22 @@ export class HiveSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1576; + this.state = 1248; this.match(HiveSqlParser.KW_SHOW); - this.state = 1577; + this.state = 1249; this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 1578; + this.state = 1250; this.tableName(); - this.state = 1582; + this.state = 1254; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) { case 1: { - this.state = 1579; + this.state = 1251; this.match(HiveSqlParser.LPAREN); - this.state = 1580; + this.state = 1252; localContext._prptyName = this.match(HiveSqlParser.StringLiteral); - this.state = 1581; + this.state = 1253; this.match(HiveSqlParser.RPAREN); } break; @@ -4392,25 +4010,25 @@ export class HiveSqlParser extends SQLParserBase { case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1584; + this.state = 1256; this.match(HiveSqlParser.KW_SHOW); - this.state = 1585; + this.state = 1257; this.match(HiveSqlParser.KW_LOCKS); - this.state = 1597; + this.state = 1269; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { case 1: { - this.state = 1586; + this.state = 1258; this.db_schema(); - this.state = 1587; + this.state = 1259; localContext._dbName = this.dbSchemaName(); - this.state = 1589; + this.state = 1261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1588; + this.state = 1260; localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED); } } @@ -4419,22 +4037,22 @@ export class HiveSqlParser extends SQLParserBase { break; case 2: { - this.state = 1592; + this.state = 1264; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 82, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 89, this.context) ) { case 1: { - this.state = 1591; + this.state = 1263; localContext._parttype = this.partTypeExpr(); } break; } - this.state = 1595; + this.state = 1267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 122) { { - this.state = 1594; + this.state = 1266; localContext._isExtended = this.match(HiveSqlParser.KW_EXTENDED); } } @@ -4447,185 +4065,418 @@ export class HiveSqlParser extends SQLParserBase { case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1599; + this.state = 1271; this.match(HiveSqlParser.KW_SHOW); - this.state = 1600; + this.state = 1272; this.match(HiveSqlParser.KW_COMPACTIONS); - this.state = 1637; + this.state = 1299; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_COMPACT_ID: { - this.state = 1601; - this.compactionId(); + this.state = 1273; + this.match(HiveSqlParser.KW_COMPACT_ID); + this.state = 1274; + this.match(HiveSqlParser.EQUAL); + this.state = 1275; + localContext._compactId = this.match(HiveSqlParser.Number); } break; - case 2: + case HiveSqlParser.EOF: + case HiveSqlParser.KW_ABORT: + case HiveSqlParser.KW_ACTIVATE: + case HiveSqlParser.KW_ACTIVE: + case HiveSqlParser.KW_ADD: + case HiveSqlParser.KW_ADMIN: + case HiveSqlParser.KW_AFTER: + case HiveSqlParser.KW_ALLOC_FRACTION: + case HiveSqlParser.KW_ALTER: + case HiveSqlParser.KW_ANALYZE: + case HiveSqlParser.KW_ARCHIVE: + case HiveSqlParser.KW_ASC: + case HiveSqlParser.KW_AST: + case HiveSqlParser.KW_AT: + case HiveSqlParser.KW_AUTOCOMMIT: + case HiveSqlParser.KW_BATCH: + case HiveSqlParser.KW_BEFORE: + case HiveSqlParser.KW_BUCKET: + case HiveSqlParser.KW_BUCKETS: + case HiveSqlParser.KW_CACHE: + case HiveSqlParser.KW_CASCADE: + case HiveSqlParser.KW_CBO: + case HiveSqlParser.KW_CHANGE: + case HiveSqlParser.KW_CHECK: + case HiveSqlParser.KW_CLUSTER: + case HiveSqlParser.KW_CLUSTERED: + case HiveSqlParser.KW_CLUSTERSTATUS: + case HiveSqlParser.KW_COLLECTION: + case HiveSqlParser.KW_COLUMNS: + case HiveSqlParser.KW_COMMENT: + case HiveSqlParser.KW_COMMIT: + case HiveSqlParser.KW_COMPACT: + case HiveSqlParser.KW_COMPACTIONS: + case HiveSqlParser.KW_COMPUTE: + case HiveSqlParser.KW_CONCATENATE: + case HiveSqlParser.KW_CONTINUE: + case HiveSqlParser.KW_COST: + case HiveSqlParser.KW_CREATE: + case HiveSqlParser.KW_CRON: + case HiveSqlParser.KW_DATA: + case HiveSqlParser.KW_DATABASE: + case HiveSqlParser.KW_DATABASES: + case HiveSqlParser.KW_DATETIME: + case HiveSqlParser.KW_DAY: + case HiveSqlParser.KW_DAYS: + case HiveSqlParser.KW_DAYOFWEEK: + case HiveSqlParser.KW_DBPROPERTIES: + case HiveSqlParser.KW_DCPROPERTIES: + case HiveSqlParser.KW_DEBUG: + case HiveSqlParser.KW_DEFAULT: + case HiveSqlParser.KW_DEFERRED: + case HiveSqlParser.KW_DEFINED: + case HiveSqlParser.KW_DELETE: + case HiveSqlParser.KW_DELIMITED: + case HiveSqlParser.KW_DEPENDENCY: + case HiveSqlParser.KW_DESC: + case HiveSqlParser.KW_DESCRIBE: + case HiveSqlParser.KW_DETAIL: + case HiveSqlParser.KW_DIRECTORIES: + case HiveSqlParser.KW_DIRECTORY: + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + case HiveSqlParser.KW_DISTRIBUTE: + case HiveSqlParser.KW_DISTRIBUTED: + case HiveSqlParser.KW_DO: + case HiveSqlParser.KW_DROP: + case HiveSqlParser.KW_DUMP: + case HiveSqlParser.KW_ELEM_TYPE: + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + case HiveSqlParser.KW_ENFORCED: + case HiveSqlParser.KW_ESCAPED: + case HiveSqlParser.KW_EVERY: + case HiveSqlParser.KW_EXCLUSIVE: + case HiveSqlParser.KW_EXECUTE: + case HiveSqlParser.KW_EXECUTED: + case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: + case HiveSqlParser.KW_EXPLAIN: + case HiveSqlParser.KW_EXPORT: + case HiveSqlParser.KW_EXPRESSION: + case HiveSqlParser.KW_FIELDS: + case HiveSqlParser.KW_FILE: + case HiveSqlParser.KW_FILEFORMAT: + case HiveSqlParser.KW_FIRST: + case HiveSqlParser.KW_FORMAT: + case HiveSqlParser.KW_FORMATTED: + case HiveSqlParser.KW_FROM: + case HiveSqlParser.KW_FUNCTIONS: + case HiveSqlParser.KW_GRANT: + case HiveSqlParser.KW_HOLD_DDLTIME: + case HiveSqlParser.KW_HOUR: + case HiveSqlParser.KW_HOURS: + case HiveSqlParser.KW_IDXPROPERTIES: + case HiveSqlParser.KW_IGNORE: + case HiveSqlParser.KW_IMPORT: + case HiveSqlParser.KW_INDEX: + case HiveSqlParser.KW_INDEXES: + case HiveSqlParser.KW_INPATH: + case HiveSqlParser.KW_INPUTDRIVER: + case HiveSqlParser.KW_INPUTFORMAT: + case HiveSqlParser.KW_INSERT: + case HiveSqlParser.KW_ISOLATION: + case HiveSqlParser.KW_ITEMS: + case HiveSqlParser.KW_JAR: + case HiveSqlParser.KW_JOINCOST: + case HiveSqlParser.KW_KEY: + case HiveSqlParser.KW_KEYS: + case HiveSqlParser.KW_KEY_TYPE: + case HiveSqlParser.KW_KILL: + case HiveSqlParser.KW_LAST: + case HiveSqlParser.KW_LEVEL: + case HiveSqlParser.KW_LIFECYCLE: + case HiveSqlParser.KW_LIMIT: + case HiveSqlParser.KW_LINES: + case HiveSqlParser.KW_LOAD: + case HiveSqlParser.KW_LOCATION: + case HiveSqlParser.KW_LOCK: + case HiveSqlParser.KW_LOCKS: + case HiveSqlParser.KW_LOGICAL: + case HiveSqlParser.KW_LONG: + case HiveSqlParser.KW_MANAGED: + case HiveSqlParser.KW_MANAGEDLOCATION: + case HiveSqlParser.KW_MANAGEMENT: + case HiveSqlParser.KW_MAP: + case HiveSqlParser.KW_MAPJOIN: + case HiveSqlParser.KW_MAPPING: + case HiveSqlParser.KW_MATCHED: + case HiveSqlParser.KW_MATERIALIZED: + case HiveSqlParser.KW_MERGE: + case HiveSqlParser.KW_METADATA: + case HiveSqlParser.KW_MINUTE: + case HiveSqlParser.KW_MINUTES: + case HiveSqlParser.KW_MONTH: + case HiveSqlParser.KW_MONTHS: + case HiveSqlParser.KW_MOVE: + case HiveSqlParser.KW_MSCK: + case HiveSqlParser.KW_NORELY: + case HiveSqlParser.KW_NOSCAN: + case HiveSqlParser.KW_NOVALIDATE: + case HiveSqlParser.KW_NO_DROP: + case HiveSqlParser.KW_NULLS: + case HiveSqlParser.KW_OFFLINE: + case HiveSqlParser.KW_OFFSET: + case HiveSqlParser.KW_OPERATOR: + case HiveSqlParser.KW_OPTION: + case HiveSqlParser.KW_ORDER: + case HiveSqlParser.KW_OUTPUTDRIVER: + case HiveSqlParser.KW_OUTPUTFORMAT: + case HiveSqlParser.KW_OVERWRITE: + case HiveSqlParser.KW_OWNER: + case HiveSqlParser.KW_PARTITIONED: + case HiveSqlParser.KW_PARTITIONS: + case HiveSqlParser.KW_PATH: + case HiveSqlParser.KW_PLAN: + case HiveSqlParser.KW_PLANS: + case HiveSqlParser.KW_PLUS: + case HiveSqlParser.KW_POOL: + case HiveSqlParser.KW_PREPARE: + case HiveSqlParser.KW_PRINCIPALS: + case HiveSqlParser.KW_PROTECTION: + case HiveSqlParser.KW_PURGE: + case HiveSqlParser.KW_QUARTER: + case HiveSqlParser.KW_QUERY: + case HiveSqlParser.KW_QUERY_PARALLELISM: + case HiveSqlParser.KW_READ: + case HiveSqlParser.KW_READONLY: + case HiveSqlParser.KW_REBUILD: + case HiveSqlParser.KW_RECORDREADER: + case HiveSqlParser.KW_RECORDWRITER: + case HiveSqlParser.KW_REDUCE: + case HiveSqlParser.KW_RELOAD: + case HiveSqlParser.KW_RELY: + case HiveSqlParser.KW_REMOTE: + case HiveSqlParser.KW_RENAME: + case HiveSqlParser.KW_REOPTIMIZATION: + case HiveSqlParser.KW_REPAIR: + case HiveSqlParser.KW_REPL: + case HiveSqlParser.KW_REPLACE: + case HiveSqlParser.KW_REPLICATION: + case HiveSqlParser.KW_RESOURCE: + case HiveSqlParser.KW_RESPECT: + case HiveSqlParser.KW_RESTRICT: + case HiveSqlParser.KW_REVOKE: + case HiveSqlParser.KW_REWRITE: + case HiveSqlParser.KW_ROLE: + case HiveSqlParser.KW_ROLES: + case HiveSqlParser.KW_ROLLBACK: + case HiveSqlParser.KW_SCHEDULED: + case HiveSqlParser.KW_SCHEDULING_POLICY: + case HiveSqlParser.KW_SCHEMA: + case HiveSqlParser.KW_SCHEMAS: + case HiveSqlParser.KW_SECOND: + case HiveSqlParser.KW_SECONDS: + case HiveSqlParser.KW_SELECT: + case HiveSqlParser.KW_SEMI: + case HiveSqlParser.KW_SERDE: + case HiveSqlParser.KW_SERDEPROPERTIES: + case HiveSqlParser.KW_SERVER: + case HiveSqlParser.KW_SET: + case HiveSqlParser.KW_SETS: + case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: + case HiveSqlParser.KW_SHARED: + case HiveSqlParser.KW_SHOW: + case HiveSqlParser.KW_SHOW_DATABASE: + case HiveSqlParser.KW_SKEWED: + case HiveSqlParser.KW_SNAPSHOT: + case HiveSqlParser.KW_SORT: + case HiveSqlParser.KW_SORTED: + case HiveSqlParser.KW_SPEC: + case HiveSqlParser.KW_SSL: + case HiveSqlParser.KW_START: + case HiveSqlParser.KW_STATISTICS: + case HiveSqlParser.KW_STATUS: + case HiveSqlParser.KW_STORED: + case HiveSqlParser.KW_STREAMTABLE: + case HiveSqlParser.KW_STRING: + case HiveSqlParser.KW_STRUCT: + case HiveSqlParser.KW_SUMMARY: + case HiveSqlParser.KW_SYSTEM_TIME: + case HiveSqlParser.KW_SYSTEM_VERSION: + case HiveSqlParser.KW_TABLES: + case HiveSqlParser.KW_TBLPROPERTIES: + case HiveSqlParser.KW_TEMPORARY: + case HiveSqlParser.KW_TERMINATED: + case HiveSqlParser.KW_TIMESTAMPTZ: + case HiveSqlParser.KW_TINYINT: + case HiveSqlParser.KW_TOUCH: + case HiveSqlParser.KW_TRANSACTION: + case HiveSqlParser.KW_TRANSACTIONAL: + case HiveSqlParser.KW_TRANSACTIONS: + case HiveSqlParser.KW_TRIM: + case HiveSqlParser.KW_TRUNCATE: + case HiveSqlParser.KW_TYPE: + case HiveSqlParser.KW_UNARCHIVE: + case HiveSqlParser.KW_UNDO: + case HiveSqlParser.KW_UNIONTYPE: + case HiveSqlParser.KW_UNKNOWN: + case HiveSqlParser.KW_UNLOCK: + case HiveSqlParser.KW_UNMANAGED: + case HiveSqlParser.KW_UNSET: + case HiveSqlParser.KW_UNSIGNED: + case HiveSqlParser.KW_UPDATE: + case HiveSqlParser.KW_URI: + case HiveSqlParser.KW_URL: + case HiveSqlParser.KW_USE: + case HiveSqlParser.KW_UTC: + case HiveSqlParser.KW_UTCTIMESTAMP: + case HiveSqlParser.KW_VALIDATE: + case HiveSqlParser.KW_VALUES: + case HiveSqlParser.KW_VALUE_TYPE: + case HiveSqlParser.KW_VECTORIZATION: + case HiveSqlParser.KW_VIEW: + case HiveSqlParser.KW_VIEWS: + case HiveSqlParser.KW_WAIT: + case HiveSqlParser.KW_WEEK: + case HiveSqlParser.KW_WEEKS: + case HiveSqlParser.KW_WHILE: + case HiveSqlParser.KW_WITH: + case HiveSqlParser.KW_WITHIN: + case HiveSqlParser.KW_WORK: + case HiveSqlParser.KW_WORKLOAD: + case HiveSqlParser.KW_WRITE: + case HiveSqlParser.KW_YEAR: + case HiveSqlParser.KW_YEARS: + case HiveSqlParser.KW_ZONE: + case HiveSqlParser.SEMICOLON: + case HiveSqlParser.LPAREN: + case HiveSqlParser.Identifier: { - this.state = 1602; - this.db_schema(); - this.state = 1603; - localContext._dbName = this.dbSchemaName(); - this.state = 1605; + this.state = 1282; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 246) { - { - this.state = 1604; - this.compactionPool(); - } - } - - this.state = 1608; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 352) { - { - this.state = 1607; - this.compactionType(); - } - } - - this.state = 1611; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 320) { - { - this.state = 1610; - this.compactionStatus(); - } - } - - this.state = 1614; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 229) { - { - this.state = 1613; - this.orderByClause(); - } - } - - this.state = 1617; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 185) { - { - this.state = 1616; - this.limitClause(); - } - } - - } - break; - case 3: - { - this.state = 1620; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { case 1: { - this.state = 1619; - localContext._parttype = this.partTypeExpr(); + { + this.state = 1276; + this.db_schema(); + this.state = 1277; + localContext._dbName = this.dbSchemaName(); + } + } + break; + case 2: + { + this.state = 1280; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { + case 1: + { + this.state = 1279; + localContext._parttype = this.partTypeExpr(); + } + break; + } } break; } - this.state = 1623; + this.state = 1285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 246) { { - this.state = 1622; + this.state = 1284; this.compactionPool(); } } - this.state = 1626; + this.state = 1288; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 352) { { - this.state = 1625; + this.state = 1287; this.compactionType(); } } - this.state = 1629; + this.state = 1291; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 320) { { - this.state = 1628; + this.state = 1290; this.compactionStatus(); } } - this.state = 1632; + this.state = 1294; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 1631; + this.state = 1293; this.orderByClause(); } } - this.state = 1635; + this.state = 1297; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 185) { { - this.state = 1634; + this.state = 1296; this.limitClause(); } } } break; + default: + throw new antlr.NoViableAltException(this); } } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1639; + this.state = 1301; this.match(HiveSqlParser.KW_SHOW); - this.state = 1640; + this.state = 1302; this.match(HiveSqlParser.KW_TRANSACTIONS); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1641; + this.state = 1303; this.match(HiveSqlParser.KW_SHOW); - this.state = 1642; + this.state = 1304; this.match(HiveSqlParser.KW_CONF); - this.state = 1643; + this.state = 1305; this.match(HiveSqlParser.StringLiteral); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1644; + this.state = 1306; this.match(HiveSqlParser.KW_SHOW); - this.state = 1645; + this.state = 1307; this.match(HiveSqlParser.KW_RESOURCE); - this.state = 1649; + this.state = 1311; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_PLAN: { - this.state = 1646; + this.state = 1308; this.match(HiveSqlParser.KW_PLAN); - this.state = 1647; + this.state = 1309; localContext._rp_name = this.id_(); } break; case HiveSqlParser.KW_PLANS: { - this.state = 1648; + this.state = 1310; this.match(HiveSqlParser.KW_PLANS); } break; @@ -4637,28 +4488,28 @@ export class HiveSqlParser extends SQLParserBase { case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1651; + this.state = 1313; this.match(HiveSqlParser.KW_SHOW); - this.state = 1652; + this.state = 1314; this.match(HiveSqlParser.KW_DATACONNECTORS); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1653; + this.state = 1315; this.match(HiveSqlParser.KW_SHOW); - this.state = 1655; + this.state = 1317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 138) { { - this.state = 1654; + this.state = 1316; this.match(HiveSqlParser.KW_FORMATTED); } } - this.state = 1657; + this.state = 1319; _la = this.tokenStream.LA(1); if(!(_la === 155 || _la === 156)) { this.errorHandler.recoverInline(this); @@ -4667,18 +4518,18 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1658; + this.state = 1320; this.match(HiveSqlParser.KW_ON); - this.state = 1659; + this.state = 1321; this.tableName(); - this.state = 1663; + this.state = 1325; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 1660; + this.state = 1322; this.from_in(); - this.state = 1661; + this.state = 1323; this.dbSchemaName(); } break; @@ -4703,30 +4554,30 @@ export class HiveSqlParser extends SQLParserBase { } public showTablesFilterExpr(): ShowTablesFilterExprContext { let localContext = new ShowTablesFilterExprContext(this.context, this.state); - this.enterRule(localContext, 96, HiveSqlParser.RULE_showTablesFilterExpr); + this.enterRule(localContext, 74, HiveSqlParser.RULE_showTablesFilterExpr); try { - this.state = 1675; + this.state = 1337; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_WHERE: this.enterOuterAlt(localContext, 1); { - this.state = 1667; + this.state = 1329; this.match(HiveSqlParser.KW_WHERE); - this.state = 1668; + this.state = 1330; this.id_(); - this.state = 1669; + this.state = 1331; this.match(HiveSqlParser.EQUAL); - this.state = 1670; + this.state = 1332; this.match(HiveSqlParser.StringLiteral); } break; case HiveSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 2); { - this.state = 1672; + this.state = 1334; this.match(HiveSqlParser.KW_LIKE); - this.state = 1673; + this.state = 1335; this.showStmtIdentifier(); } break; @@ -4973,7 +4824,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 3); { - this.state = 1674; + this.state = 1336; this.showStmtIdentifier(); } break; @@ -4997,28 +4848,17 @@ export class HiveSqlParser extends SQLParserBase { } public lockStatement(): LockStatementContext { let localContext = new LockStatementContext(this.context, this.state); - this.enterRule(localContext, 98, HiveSqlParser.RULE_lockStatement); - let _la: number; + this.enterRule(localContext, 76, HiveSqlParser.RULE_lockStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1677; + this.state = 1339; this.match(HiveSqlParser.KW_LOCK); - this.state = 1678; + this.state = 1340; this.match(HiveSqlParser.KW_TABLE); - this.state = 1679; - this.tableName(); - this.state = 1681; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { - { - this.state = 1680; - this.partitionSpec(); - } - } - - this.state = 1683; + this.state = 1341; + this.tableOrPartition(); + this.state = 1342; this.lockMode(); } } @@ -5038,17 +4878,17 @@ export class HiveSqlParser extends SQLParserBase { } public lockDatabase(): LockDatabaseContext { let localContext = new LockDatabaseContext(this.context, this.state); - this.enterRule(localContext, 100, HiveSqlParser.RULE_lockDatabase); + this.enterRule(localContext, 78, HiveSqlParser.RULE_lockDatabase); try { this.enterOuterAlt(localContext, 1); { - this.state = 1685; + this.state = 1344; this.match(HiveSqlParser.KW_LOCK); - this.state = 1686; + this.state = 1345; this.db_schema(); - this.state = 1687; + this.state = 1346; localContext._dbName = this.dbSchemaName(); - this.state = 1688; + this.state = 1347; this.lockMode(); } } @@ -5068,12 +4908,12 @@ export class HiveSqlParser extends SQLParserBase { } public lockMode(): LockModeContext { let localContext = new LockModeContext(this.context, this.state); - this.enterRule(localContext, 102, HiveSqlParser.RULE_lockMode); + this.enterRule(localContext, 80, HiveSqlParser.RULE_lockMode); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1690; + this.state = 1349; _la = this.tokenStream.LA(1); if(!(_la === 114 || _la === 307)) { this.errorHandler.recoverInline(this); @@ -5100,27 +4940,16 @@ export class HiveSqlParser extends SQLParserBase { } public unlockStatement(): UnlockStatementContext { let localContext = new UnlockStatementContext(this.context, this.state); - this.enterRule(localContext, 104, HiveSqlParser.RULE_unlockStatement); - let _la: number; + this.enterRule(localContext, 82, HiveSqlParser.RULE_unlockStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1692; + this.state = 1351; this.match(HiveSqlParser.KW_UNLOCK); - this.state = 1693; + this.state = 1352; this.match(HiveSqlParser.KW_TABLE); - this.state = 1694; - this.tableName(); - this.state = 1696; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { - { - this.state = 1695; - this.partitionSpec(); - } - } - + this.state = 1353; + this.tableOrPartition(); } } catch (re) { @@ -5139,15 +4968,15 @@ export class HiveSqlParser extends SQLParserBase { } public unlockDatabase(): UnlockDatabaseContext { let localContext = new UnlockDatabaseContext(this.context, this.state); - this.enterRule(localContext, 106, HiveSqlParser.RULE_unlockDatabase); + this.enterRule(localContext, 84, HiveSqlParser.RULE_unlockDatabase); try { this.enterOuterAlt(localContext, 1); { - this.state = 1698; + this.state = 1355; this.match(HiveSqlParser.KW_UNLOCK); - this.state = 1699; + this.state = 1356; this.db_schema(); - this.state = 1700; + this.state = 1357; localContext._dbName = this.dbSchemaName(); } } @@ -5167,15 +4996,15 @@ export class HiveSqlParser extends SQLParserBase { } public createRoleStatement(): CreateRoleStatementContext { let localContext = new CreateRoleStatementContext(this.context, this.state); - this.enterRule(localContext, 108, HiveSqlParser.RULE_createRoleStatement); + this.enterRule(localContext, 86, HiveSqlParser.RULE_createRoleStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1702; + this.state = 1359; this.match(HiveSqlParser.KW_CREATE); - this.state = 1703; + this.state = 1360; this.match(HiveSqlParser.KW_ROLE); - this.state = 1704; + this.state = 1361; localContext._roleName = this.id_(); } } @@ -5195,15 +5024,15 @@ export class HiveSqlParser extends SQLParserBase { } public dropRoleStatement(): DropRoleStatementContext { let localContext = new DropRoleStatementContext(this.context, this.state); - this.enterRule(localContext, 110, HiveSqlParser.RULE_dropRoleStatement); + this.enterRule(localContext, 88, HiveSqlParser.RULE_dropRoleStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1706; + this.state = 1363; this.match(HiveSqlParser.KW_DROP); - this.state = 1707; + this.state = 1364; this.match(HiveSqlParser.KW_ROLE); - this.state = 1708; + this.state = 1365; localContext._roleName = this.id_(); } } @@ -5223,35 +5052,35 @@ export class HiveSqlParser extends SQLParserBase { } public grantPrivileges(): GrantPrivilegesContext { let localContext = new GrantPrivilegesContext(this.context, this.state); - this.enterRule(localContext, 112, HiveSqlParser.RULE_grantPrivileges); + this.enterRule(localContext, 90, HiveSqlParser.RULE_grantPrivileges); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1710; + this.state = 1367; this.match(HiveSqlParser.KW_GRANT); - this.state = 1711; + this.state = 1368; localContext._privList = this.privilegeList(); - this.state = 1713; + this.state = 1370; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 224) { { - this.state = 1712; + this.state = 1369; this.privilegeObject(); } } - this.state = 1715; + this.state = 1372; this.match(HiveSqlParser.KW_TO); - this.state = 1716; + this.state = 1373; this.principalSpecification(); - this.state = 1718; + this.state = 1375; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context) ) { case 1: { - this.state = 1717; + this.state = 1374; this.withGrantOption(); } break; @@ -5274,38 +5103,38 @@ export class HiveSqlParser extends SQLParserBase { } public revokePrivileges(): RevokePrivilegesContext { let localContext = new RevokePrivilegesContext(this.context, this.state); - this.enterRule(localContext, 114, HiveSqlParser.RULE_revokePrivileges); + this.enterRule(localContext, 92, HiveSqlParser.RULE_revokePrivileges); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1720; + this.state = 1377; this.match(HiveSqlParser.KW_REVOKE); - this.state = 1722; + this.state = 1379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 143) { { - this.state = 1721; + this.state = 1378; this.grantOptionFor(); } } - this.state = 1724; + this.state = 1381; this.privilegeList(); - this.state = 1726; + this.state = 1383; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 224) { { - this.state = 1725; + this.state = 1382; this.privilegeObject(); } } - this.state = 1728; + this.state = 1385; this.match(HiveSqlParser.KW_FROM); - this.state = 1729; + this.state = 1386; this.principalSpecification(); } } @@ -5325,51 +5154,51 @@ export class HiveSqlParser extends SQLParserBase { } public grantRole(): GrantRoleContext { let localContext = new GrantRoleContext(this.context, this.state); - this.enterRule(localContext, 116, HiveSqlParser.RULE_grantRole); + this.enterRule(localContext, 94, HiveSqlParser.RULE_grantRole); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1731; + this.state = 1388; this.match(HiveSqlParser.KW_GRANT); - this.state = 1733; + this.state = 1390; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 108, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 109, this.context) ) { case 1: { - this.state = 1732; + this.state = 1389; this.match(HiveSqlParser.KW_ROLE); } break; } - this.state = 1735; + this.state = 1392; this.id_(); - this.state = 1740; + this.state = 1397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 1736; + this.state = 1393; this.match(HiveSqlParser.COMMA); - this.state = 1737; + this.state = 1394; this.id_(); } } - this.state = 1742; + this.state = 1399; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1743; + this.state = 1400; this.match(HiveSqlParser.KW_TO); - this.state = 1744; + this.state = 1401; this.principalSpecification(); - this.state = 1746; + this.state = 1403; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 110, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { case 1: { - this.state = 1745; + this.state = 1402; this.withAdminOption(); } break; @@ -5392,54 +5221,54 @@ export class HiveSqlParser extends SQLParserBase { } public revokeRole(): RevokeRoleContext { let localContext = new RevokeRoleContext(this.context, this.state); - this.enterRule(localContext, 118, HiveSqlParser.RULE_revokeRole); + this.enterRule(localContext, 96, HiveSqlParser.RULE_revokeRole); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1748; + this.state = 1405; this.match(HiveSqlParser.KW_REVOKE); - this.state = 1750; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { - case 1: - { - this.state = 1749; - this.adminOptionFor(); - } - break; - } - this.state = 1753; + this.state = 1407; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context) ) { case 1: { - this.state = 1752; + this.state = 1406; + this.adminOptionFor(); + } + break; + } + this.state = 1410; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 113, this.context) ) { + case 1: + { + this.state = 1409; this.match(HiveSqlParser.KW_ROLE); } break; } - this.state = 1755; + this.state = 1412; this.id_(); - this.state = 1760; + this.state = 1417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 1756; + this.state = 1413; this.match(HiveSqlParser.COMMA); - this.state = 1757; + this.state = 1414; this.id_(); } } - this.state = 1762; + this.state = 1419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1763; + this.state = 1420; this.match(HiveSqlParser.KW_FROM); - this.state = 1764; + this.state = 1421; this.principalSpecification(); } } @@ -5459,17 +5288,17 @@ export class HiveSqlParser extends SQLParserBase { } public showRoleGrants(): ShowRoleGrantsContext { let localContext = new ShowRoleGrantsContext(this.context, this.state); - this.enterRule(localContext, 120, HiveSqlParser.RULE_showRoleGrants); + this.enterRule(localContext, 98, HiveSqlParser.RULE_showRoleGrants); try { this.enterOuterAlt(localContext, 1); { - this.state = 1766; + this.state = 1423; this.match(HiveSqlParser.KW_SHOW); - this.state = 1767; + this.state = 1424; this.match(HiveSqlParser.KW_ROLE); - this.state = 1768; + this.state = 1425; this.match(HiveSqlParser.KW_GRANT); - this.state = 1769; + this.state = 1426; this.principalName(); } } @@ -5489,13 +5318,13 @@ export class HiveSqlParser extends SQLParserBase { } public showRoles(): ShowRolesContext { let localContext = new ShowRolesContext(this.context, this.state); - this.enterRule(localContext, 122, HiveSqlParser.RULE_showRoles); + this.enterRule(localContext, 100, HiveSqlParser.RULE_showRoles); try { this.enterOuterAlt(localContext, 1); { - this.state = 1771; + this.state = 1428; this.match(HiveSqlParser.KW_SHOW); - this.state = 1772; + this.state = 1429; this.match(HiveSqlParser.KW_ROLES); } } @@ -5515,15 +5344,15 @@ export class HiveSqlParser extends SQLParserBase { } public showCurrentRole(): ShowCurrentRoleContext { let localContext = new ShowCurrentRoleContext(this.context, this.state); - this.enterRule(localContext, 124, HiveSqlParser.RULE_showCurrentRole); + this.enterRule(localContext, 102, HiveSqlParser.RULE_showCurrentRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 1774; + this.state = 1431; this.match(HiveSqlParser.KW_SHOW); - this.state = 1775; + this.state = 1432; this.match(HiveSqlParser.KW_CURRENT); - this.state = 1776; + this.state = 1433; this.match(HiveSqlParser.KW_ROLES); } } @@ -5543,26 +5372,26 @@ export class HiveSqlParser extends SQLParserBase { } public setRole(): SetRoleContext { let localContext = new SetRoleContext(this.context, this.state); - this.enterRule(localContext, 126, HiveSqlParser.RULE_setRole); + this.enterRule(localContext, 104, HiveSqlParser.RULE_setRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 1778; + this.state = 1435; this.match(HiveSqlParser.KW_SET); - this.state = 1779; + this.state = 1436; this.match(HiveSqlParser.KW_ROLE); - this.state = 1783; + this.state = 1440; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ALL: { - this.state = 1780; + this.state = 1437; localContext._all = this.match(HiveSqlParser.KW_ALL); } break; case HiveSqlParser.KW_NONE: { - this.state = 1781; + this.state = 1438; localContext._none = this.match(HiveSqlParser.KW_NONE); } break; @@ -5807,7 +5636,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_ZONE: case HiveSqlParser.Identifier: { - this.state = 1782; + this.state = 1439; this.id_(); } break; @@ -5832,33 +5661,33 @@ export class HiveSqlParser extends SQLParserBase { } public showGrants(): ShowGrantsContext { let localContext = new ShowGrantsContext(this.context, this.state); - this.enterRule(localContext, 128, HiveSqlParser.RULE_showGrants); + this.enterRule(localContext, 106, HiveSqlParser.RULE_showGrants); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1785; + this.state = 1442; this.match(HiveSqlParser.KW_SHOW); - this.state = 1786; + this.state = 1443; this.match(HiveSqlParser.KW_GRANT); - this.state = 1788; + this.state = 1445; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144 || _la === 287 || _la === 369) { { - this.state = 1787; + this.state = 1444; this.principalName(); } } - this.state = 1792; + this.state = 1449; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 224) { { - this.state = 1790; + this.state = 1447; this.match(HiveSqlParser.KW_ON); - this.state = 1791; + this.state = 1448; this.privilegeIncludeColObject(); } } @@ -5881,15 +5710,15 @@ export class HiveSqlParser extends SQLParserBase { } public showRolePrincipals(): ShowRolePrincipalsContext { let localContext = new ShowRolePrincipalsContext(this.context, this.state); - this.enterRule(localContext, 130, HiveSqlParser.RULE_showRolePrincipals); + this.enterRule(localContext, 108, HiveSqlParser.RULE_showRolePrincipals); try { this.enterOuterAlt(localContext, 1); { - this.state = 1794; + this.state = 1451; this.match(HiveSqlParser.KW_SHOW); - this.state = 1795; + this.state = 1452; this.match(HiveSqlParser.KW_PRINCIPALS); - this.state = 1796; + this.state = 1453; localContext._roleName = this.id_(); } } @@ -5909,15 +5738,15 @@ export class HiveSqlParser extends SQLParserBase { } public privilegeIncludeColObject(): PrivilegeIncludeColObjectContext { let localContext = new PrivilegeIncludeColObjectContext(this.context, this.state); - this.enterRule(localContext, 132, HiveSqlParser.RULE_privilegeIncludeColObject); + this.enterRule(localContext, 110, HiveSqlParser.RULE_privilegeIncludeColObject); try { - this.state = 1800; + this.state = 1457; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 1798; + this.state = 1455; this.match(HiveSqlParser.KW_ALL); } break; @@ -6165,7 +5994,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 2); { - this.state = 1799; + this.state = 1456; this.privObjectCols(); } break; @@ -6189,13 +6018,13 @@ export class HiveSqlParser extends SQLParserBase { } public privilegeObject(): PrivilegeObjectContext { let localContext = new PrivilegeObjectContext(this.context, this.state); - this.enterRule(localContext, 134, HiveSqlParser.RULE_privilegeObject); + this.enterRule(localContext, 112, HiveSqlParser.RULE_privilegeObject); try { this.enterOuterAlt(localContext, 1); { - this.state = 1802; + this.state = 1459; this.match(HiveSqlParser.KW_ON); - this.state = 1803; + this.state = 1460; this.privObject(); } } @@ -6215,63 +6044,53 @@ export class HiveSqlParser extends SQLParserBase { } public privObject(): PrivObjectContext { let localContext = new PrivObjectContext(this.context, this.state); - this.enterRule(localContext, 136, HiveSqlParser.RULE_privObject); + this.enterRule(localContext, 114, HiveSqlParser.RULE_privObject); let _la: number; try { - this.state = 1819; + this.state = 1473; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 120, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1805; + this.state = 1462; this.db_schema(); - this.state = 1806; + this.state = 1463; this.dbSchemaName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1809; + this.state = 1466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 329) { { - this.state = 1808; + this.state = 1465; this.match(HiveSqlParser.KW_TABLE); } } - this.state = 1811; - this.tableName(); - this.state = 1813; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { - { - this.state = 1812; - this.partitionSpec(); - } - } - + this.state = 1468; + this.tableOrPartition(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1815; + this.state = 1469; this.match(HiveSqlParser.KW_URI); - this.state = 1816; + this.state = 1470; localContext._path = this.match(HiveSqlParser.StringLiteral); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1817; + this.state = 1471; this.match(HiveSqlParser.KW_SERVER); - this.state = 1818; + this.state = 1472; this.id_(); } break; @@ -6293,56 +6112,56 @@ export class HiveSqlParser extends SQLParserBase { } public privObjectCols(): PrivObjectColsContext { let localContext = new PrivObjectColsContext(this.context, this.state); - this.enterRule(localContext, 138, HiveSqlParser.RULE_privObjectCols); + this.enterRule(localContext, 116, HiveSqlParser.RULE_privObjectCols); let _la: number; try { - this.state = 1841; + this.state = 1495; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1821; + this.state = 1475; this.db_schema(); - this.state = 1822; + this.state = 1476; this.dbSchemaName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1825; + this.state = 1479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 329) { { - this.state = 1824; + this.state = 1478; this.match(HiveSqlParser.KW_TABLE); } } - this.state = 1827; + this.state = 1481; this.tableName(); - this.state = 1832; + this.state = 1486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) { case 1: { - this.state = 1828; + this.state = 1482; this.match(HiveSqlParser.LPAREN); - this.state = 1829; + this.state = 1483; localContext._cols = this.columnNameList(); - this.state = 1830; + this.state = 1484; this.match(HiveSqlParser.RPAREN); } break; } - this.state = 1835; + this.state = 1489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 237) { { - this.state = 1834; + this.state = 1488; this.partitionSpec(); } } @@ -6352,18 +6171,18 @@ export class HiveSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1837; + this.state = 1491; this.match(HiveSqlParser.KW_URI); - this.state = 1838; + this.state = 1492; localContext._path = this.match(HiveSqlParser.StringLiteral); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1839; + this.state = 1493; this.match(HiveSqlParser.KW_SERVER); - this.state = 1840; + this.state = 1494; this.id_(); } break; @@ -6385,26 +6204,26 @@ export class HiveSqlParser extends SQLParserBase { } public privilegeList(): PrivilegeListContext { let localContext = new PrivilegeListContext(this.context, this.state); - this.enterRule(localContext, 140, HiveSqlParser.RULE_privilegeList); + this.enterRule(localContext, 118, HiveSqlParser.RULE_privilegeList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1843; + this.state = 1497; this.privlegeDef(); - this.state = 1848; + this.state = 1502; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 1844; + this.state = 1498; this.match(HiveSqlParser.COMMA); - this.state = 1845; + this.state = 1499; this.privlegeDef(); } } - this.state = 1850; + this.state = 1504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6426,23 +6245,23 @@ export class HiveSqlParser extends SQLParserBase { } public privlegeDef(): PrivlegeDefContext { let localContext = new PrivlegeDefContext(this.context, this.state); - this.enterRule(localContext, 142, HiveSqlParser.RULE_privlegeDef); + this.enterRule(localContext, 120, HiveSqlParser.RULE_privlegeDef); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1851; + this.state = 1505; this.privilegeType(); - this.state = 1856; + this.state = 1510; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 1852; + this.state = 1506; this.match(HiveSqlParser.LPAREN); - this.state = 1853; + this.state = 1507; localContext._cols = this.columnNameList(); - this.state = 1854; + this.state = 1508; this.match(HiveSqlParser.RPAREN); } } @@ -6465,12 +6284,12 @@ export class HiveSqlParser extends SQLParserBase { } public privilegeType(): PrivilegeTypeContext { let localContext = new PrivilegeTypeContext(this.context, this.state); - this.enterRule(localContext, 144, HiveSqlParser.RULE_privilegeType); + this.enterRule(localContext, 122, HiveSqlParser.RULE_privilegeType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1858; + this.state = 1512; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 9 || _la === 58 || _la === 86 || _la === 101 || _la === 155 || _la === 161 || _la === 190 || _la === 299 || _la === 309 || _la === 365)) { this.errorHandler.recoverInline(this); @@ -6497,26 +6316,26 @@ export class HiveSqlParser extends SQLParserBase { } public principalSpecification(): PrincipalSpecificationContext { let localContext = new PrincipalSpecificationContext(this.context, this.state); - this.enterRule(localContext, 146, HiveSqlParser.RULE_principalSpecification); + this.enterRule(localContext, 124, HiveSqlParser.RULE_principalSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1860; + this.state = 1514; this.principalName(); - this.state = 1865; + this.state = 1519; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 1861; + this.state = 1515; this.match(HiveSqlParser.COMMA); - this.state = 1862; + this.state = 1516; this.principalName(); } } - this.state = 1867; + this.state = 1521; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6538,35 +6357,35 @@ export class HiveSqlParser extends SQLParserBase { } public principalName(): PrincipalNameContext { let localContext = new PrincipalNameContext(this.context, this.state); - this.enterRule(localContext, 148, HiveSqlParser.RULE_principalName); + this.enterRule(localContext, 126, HiveSqlParser.RULE_principalName); try { - this.state = 1874; + this.state = 1528; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_USER: this.enterOuterAlt(localContext, 1); { - this.state = 1868; + this.state = 1522; this.match(HiveSqlParser.KW_USER); - this.state = 1869; + this.state = 1523; this.principalIdentifier(); } break; case HiveSqlParser.KW_GROUP: this.enterOuterAlt(localContext, 2); { - this.state = 1870; + this.state = 1524; this.match(HiveSqlParser.KW_GROUP); - this.state = 1871; + this.state = 1525; this.principalIdentifier(); } break; case HiveSqlParser.KW_ROLE: this.enterOuterAlt(localContext, 3); { - this.state = 1872; + this.state = 1526; this.match(HiveSqlParser.KW_ROLE); - this.state = 1873; + this.state = 1527; this.id_(); } break; @@ -6590,33 +6409,33 @@ export class HiveSqlParser extends SQLParserBase { } public principalAlterName(): PrincipalAlterNameContext { let localContext = new PrincipalAlterNameContext(this.context, this.state); - this.enterRule(localContext, 150, HiveSqlParser.RULE_principalAlterName); + this.enterRule(localContext, 128, HiveSqlParser.RULE_principalAlterName); try { - this.state = 1881; + this.state = 1535; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1876; + this.state = 1530; this.match(HiveSqlParser.KW_USER); - this.state = 1877; + this.state = 1531; this.principalIdentifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1878; + this.state = 1532; this.match(HiveSqlParser.KW_ROLE); - this.state = 1879; + this.state = 1533; this.id_(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1880; + this.state = 1534; this.id_(); } break; @@ -6638,15 +6457,15 @@ export class HiveSqlParser extends SQLParserBase { } public withGrantOption(): WithGrantOptionContext { let localContext = new WithGrantOptionContext(this.context, this.state); - this.enterRule(localContext, 152, HiveSqlParser.RULE_withGrantOption); + this.enterRule(localContext, 130, HiveSqlParser.RULE_withGrantOption); try { this.enterOuterAlt(localContext, 1); { - this.state = 1883; + this.state = 1537; this.match(HiveSqlParser.KW_WITH); - this.state = 1884; + this.state = 1538; this.match(HiveSqlParser.KW_GRANT); - this.state = 1885; + this.state = 1539; this.match(HiveSqlParser.KW_OPTION); } } @@ -6666,15 +6485,15 @@ export class HiveSqlParser extends SQLParserBase { } public grantOptionFor(): GrantOptionForContext { let localContext = new GrantOptionForContext(this.context, this.state); - this.enterRule(localContext, 154, HiveSqlParser.RULE_grantOptionFor); + this.enterRule(localContext, 132, HiveSqlParser.RULE_grantOptionFor); try { this.enterOuterAlt(localContext, 1); { - this.state = 1887; + this.state = 1541; this.match(HiveSqlParser.KW_GRANT); - this.state = 1888; + this.state = 1542; this.match(HiveSqlParser.KW_OPTION); - this.state = 1889; + this.state = 1543; this.match(HiveSqlParser.KW_FOR); } } @@ -6694,15 +6513,15 @@ export class HiveSqlParser extends SQLParserBase { } public adminOptionFor(): AdminOptionForContext { let localContext = new AdminOptionForContext(this.context, this.state); - this.enterRule(localContext, 156, HiveSqlParser.RULE_adminOptionFor); + this.enterRule(localContext, 134, HiveSqlParser.RULE_adminOptionFor); try { this.enterOuterAlt(localContext, 1); { - this.state = 1891; + this.state = 1545; this.match(HiveSqlParser.KW_ADMIN); - this.state = 1892; + this.state = 1546; this.match(HiveSqlParser.KW_OPTION); - this.state = 1893; + this.state = 1547; this.match(HiveSqlParser.KW_FOR); } } @@ -6722,15 +6541,15 @@ export class HiveSqlParser extends SQLParserBase { } public withAdminOption(): WithAdminOptionContext { let localContext = new WithAdminOptionContext(this.context, this.state); - this.enterRule(localContext, 158, HiveSqlParser.RULE_withAdminOption); + this.enterRule(localContext, 136, HiveSqlParser.RULE_withAdminOption); try { this.enterOuterAlt(localContext, 1); { - this.state = 1895; + this.state = 1549; this.match(HiveSqlParser.KW_WITH); - this.state = 1896; + this.state = 1550; this.match(HiveSqlParser.KW_ADMIN); - this.state = 1897; + this.state = 1551; this.match(HiveSqlParser.KW_OPTION); } } @@ -6750,34 +6569,34 @@ export class HiveSqlParser extends SQLParserBase { } public metastoreCheck(): MetastoreCheckContext { let localContext = new MetastoreCheckContext(this.context, this.state); - this.enterRule(localContext, 160, HiveSqlParser.RULE_metastoreCheck); + this.enterRule(localContext, 138, HiveSqlParser.RULE_metastoreCheck); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1899; + this.state = 1553; this.match(HiveSqlParser.KW_MSCK); - this.state = 1901; + this.state = 1555; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 276) { { - this.state = 1900; + this.state = 1554; localContext._repair = this.match(HiveSqlParser.KW_REPAIR); } } { - this.state = 1903; + this.state = 1557; this.match(HiveSqlParser.KW_TABLE); - this.state = 1904; + this.state = 1558; this.tableName(); - this.state = 1910; + this.state = 1564; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 132, this.context) ) { case 1: { - this.state = 1905; + this.state = 1559; localContext._opt = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 4 || _la === 101 || _la === 326)) { @@ -6787,14 +6606,14 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1906; + this.state = 1560; localContext._parts = this.match(HiveSqlParser.KW_PARTITIONS); - this.state = 1908; + this.state = 1562; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 131, this.context) ) { case 1: { - this.state = 1907; + this.state = 1561; this.partitionSelectorSpec(); } break; @@ -6821,26 +6640,26 @@ export class HiveSqlParser extends SQLParserBase { } public resourceList(): ResourceListContext { let localContext = new ResourceListContext(this.context, this.state); - this.enterRule(localContext, 162, HiveSqlParser.RULE_resourceList); + this.enterRule(localContext, 140, HiveSqlParser.RULE_resourceList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1912; + this.state = 1566; this.resource(); - this.state = 1917; + this.state = 1571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 1913; + this.state = 1567; this.match(HiveSqlParser.COMMA); - this.state = 1914; + this.state = 1568; this.resource(); } } - this.state = 1919; + this.state = 1573; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6862,13 +6681,13 @@ export class HiveSqlParser extends SQLParserBase { } public resource(): ResourceContext { let localContext = new ResourceContext(this.context, this.state); - this.enterRule(localContext, 164, HiveSqlParser.RULE_resource); + this.enterRule(localContext, 142, HiveSqlParser.RULE_resource); try { this.enterOuterAlt(localContext, 1); { - this.state = 1920; + this.state = 1574; localContext._resType = this.resourceType(); - this.state = 1921; + this.state = 1575; localContext._resPath = this.match(HiveSqlParser.StringLiteral); } } @@ -6888,12 +6707,12 @@ export class HiveSqlParser extends SQLParserBase { } public resourceType(): ResourceTypeContext { let localContext = new ResourceTypeContext(this.context, this.state); - this.enterRule(localContext, 166, HiveSqlParser.RULE_resourceType); + this.enterRule(localContext, 144, HiveSqlParser.RULE_resourceType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1923; + this.state = 1577; _la = this.tokenStream.LA(1); if(!(_la === 15 || _la === 128 || _la === 170)) { this.errorHandler.recoverInline(this); @@ -6920,39 +6739,39 @@ export class HiveSqlParser extends SQLParserBase { } public createFunctionStatement(): CreateFunctionStatementContext { let localContext = new CreateFunctionStatementContext(this.context, this.state); - this.enterRule(localContext, 168, HiveSqlParser.RULE_createFunctionStatement); + this.enterRule(localContext, 146, HiveSqlParser.RULE_createFunctionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1925; + this.state = 1579; this.match(HiveSqlParser.KW_CREATE); - this.state = 1927; + this.state = 1581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1926; + this.state = 1580; localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY); } } - this.state = 1929; + this.state = 1583; this.match(HiveSqlParser.KW_FUNCTION); - this.state = 1930; + this.state = 1584; this.functionNameCreate(); - this.state = 1931; + this.state = 1585; this.match(HiveSqlParser.KW_AS); - this.state = 1932; + this.state = 1586; this.match(HiveSqlParser.StringLiteral); - this.state = 1935; + this.state = 1589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 370) { { - this.state = 1933; + this.state = 1587; this.match(HiveSqlParser.KW_USING); - this.state = 1934; + this.state = 1588; localContext._rList = this.resourceList(); } } @@ -6975,36 +6794,36 @@ export class HiveSqlParser extends SQLParserBase { } public dropFunctionStatement(): DropFunctionStatementContext { let localContext = new DropFunctionStatementContext(this.context, this.state); - this.enterRule(localContext, 170, HiveSqlParser.RULE_dropFunctionStatement); + this.enterRule(localContext, 148, HiveSqlParser.RULE_dropFunctionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1937; + this.state = 1591; this.match(HiveSqlParser.KW_DROP); - this.state = 1939; + this.state = 1593; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1938; + this.state = 1592; localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY); } } - this.state = 1941; + this.state = 1595; this.match(HiveSqlParser.KW_FUNCTION); - this.state = 1943; + this.state = 1597; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1942; + this.state = 1596; this.ifExists(); } } - this.state = 1945; + this.state = 1599; this.functionNameForDDL(); } } @@ -7024,14 +6843,14 @@ export class HiveSqlParser extends SQLParserBase { } public reloadFunctionsStatement(): ReloadFunctionsStatementContext { let localContext = new ReloadFunctionsStatementContext(this.context, this.state); - this.enterRule(localContext, 172, HiveSqlParser.RULE_reloadFunctionsStatement); + this.enterRule(localContext, 150, HiveSqlParser.RULE_reloadFunctionsStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1947; + this.state = 1601; this.match(HiveSqlParser.KW_RELOAD); - this.state = 1948; + this.state = 1602; _la = this.tokenStream.LA(1); if(!(_la === 141 || _la === 142)) { this.errorHandler.recoverInline(this); @@ -7058,34 +6877,34 @@ export class HiveSqlParser extends SQLParserBase { } public createMacroStatement(): CreateMacroStatementContext { let localContext = new CreateMacroStatementContext(this.context, this.state); - this.enterRule(localContext, 174, HiveSqlParser.RULE_createMacroStatement); + this.enterRule(localContext, 152, HiveSqlParser.RULE_createMacroStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1950; + this.state = 1604; this.match(HiveSqlParser.KW_CREATE); - this.state = 1951; + this.state = 1605; this.match(HiveSqlParser.KW_TEMPORARY); - this.state = 1952; + this.state = 1606; this.match(HiveSqlParser.KW_MACRO); - this.state = 1953; + this.state = 1607; this.match(HiveSqlParser.Identifier); - this.state = 1954; + this.state = 1608; this.match(HiveSqlParser.LPAREN); - this.state = 1956; + this.state = 1610; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { { - this.state = 1955; + this.state = 1609; this.columnNameTypeList(); } } - this.state = 1958; + this.state = 1612; this.match(HiveSqlParser.RPAREN); - this.state = 1959; + this.state = 1613; this.expression(); } } @@ -7105,28 +6924,28 @@ export class HiveSqlParser extends SQLParserBase { } public dropMacroStatement(): DropMacroStatementContext { let localContext = new DropMacroStatementContext(this.context, this.state); - this.enterRule(localContext, 176, HiveSqlParser.RULE_dropMacroStatement); + this.enterRule(localContext, 154, HiveSqlParser.RULE_dropMacroStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1961; + this.state = 1615; this.match(HiveSqlParser.KW_DROP); - this.state = 1962; + this.state = 1616; this.match(HiveSqlParser.KW_TEMPORARY); - this.state = 1963; + this.state = 1617; this.match(HiveSqlParser.KW_MACRO); - this.state = 1965; + this.state = 1619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 1964; + this.state = 1618; this.ifExists(); } } - this.state = 1967; + this.state = 1621; this.match(HiveSqlParser.Identifier); } } @@ -7146,131 +6965,129 @@ export class HiveSqlParser extends SQLParserBase { } public createIndexStatement(): CreateIndexStatementContext { let localContext = new CreateIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 178, HiveSqlParser.RULE_createIndexStatement); + this.enterRule(localContext, 156, HiveSqlParser.RULE_createIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1969; + this.state = 1623; this.match(HiveSqlParser.KW_CREATE); - this.state = 1970; + this.state = 1624; this.match(HiveSqlParser.KW_INDEX); - this.state = 1971; + this.state = 1625; this.id_(); - this.state = 1972; + this.state = 1626; this.match(HiveSqlParser.KW_ON); - this.state = 1973; + this.state = 1627; this.match(HiveSqlParser.KW_TABLE); - this.state = 1974; + this.state = 1628; this.tableName(); - this.state = 1975; + this.state = 1629; this.columnParenthesesList(); - this.state = 1976; + this.state = 1630; this.match(HiveSqlParser.KW_AS); - this.state = 1977; + this.state = 1631; localContext._indextype = this.match(HiveSqlParser.StringLiteral); - this.state = 1981; + this.state = 1635; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context) ) { case 1: { - this.state = 1978; + this.state = 1632; this.match(HiveSqlParser.KW_WITH); - this.state = 1979; + this.state = 1633; this.match(HiveSqlParser.KW_DEFERRED); - this.state = 1980; + this.state = 1634; this.match(HiveSqlParser.KW_REBUILD); } break; } - this.state = 1985; + this.state = 1639; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 150) { { - this.state = 1983; + this.state = 1637; this.match(HiveSqlParser.KW_IDXPROPERTIES); - this.state = 1984; + this.state = 1638; this.tableProperties(); } } - this.state = 1990; + this.state = 1644; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 154) { { - this.state = 1987; + this.state = 1641; this.match(HiveSqlParser.KW_IN); - this.state = 1988; + this.state = 1642; this.match(HiveSqlParser.KW_TABLE); - this.state = 1989; + this.state = 1643; this.tableName(); } } - this.state = 1995; + this.state = 1649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 1992; + this.state = 1646; this.match(HiveSqlParser.KW_PARTITIONED); - this.state = 1993; + this.state = 1647; this.match(HiveSqlParser.KW_BY); - this.state = 1994; + this.state = 1648; this.columnParenthesesList(); } } - this.state = 2001; + this.state = 1655; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291 || _la === 321) { { - this.state = 1998; + this.state = 1652; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 1997; + this.state = 1651; this.tableRowFormat(); } } - this.state = 2000; + this.state = 1654; this.tableFileFormat(); } } - this.state = 2005; + this.state = 1658; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 2003; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 2004; - localContext._locn = this.match(HiveSqlParser.StringLiteral); + this.state = 1657; + this.locationPath(); } } - this.state = 2008; + this.state = 1661; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 2007; + this.state = 1660; this.tablePropertiesPrefixed(); } } - this.state = 2011; + this.state = 1664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2010; + this.state = 1663; this.tableComment(); } } @@ -7293,30 +7110,30 @@ export class HiveSqlParser extends SQLParserBase { } public dropIndexStatement(): DropIndexStatementContext { let localContext = new DropIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 180, HiveSqlParser.RULE_dropIndexStatement); + this.enterRule(localContext, 158, HiveSqlParser.RULE_dropIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2013; + this.state = 1666; this.match(HiveSqlParser.KW_DROP); - this.state = 2014; + this.state = 1667; this.match(HiveSqlParser.KW_INDEX); - this.state = 2016; + this.state = 1669; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 2015; + this.state = 1668; this.ifExists(); } } - this.state = 2018; + this.state = 1671; this.id_(); - this.state = 2019; + this.state = 1672; this.match(HiveSqlParser.KW_ON); - this.state = 2020; + this.state = 1673; this.tableName(); } } @@ -7336,84 +7153,86 @@ export class HiveSqlParser extends SQLParserBase { } public createViewStatement(): CreateViewStatementContext { let localContext = new CreateViewStatementContext(this.context, this.state); - this.enterRule(localContext, 182, HiveSqlParser.RULE_createViewStatement); + this.enterRule(localContext, 160, HiveSqlParser.RULE_createViewStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2022; + this.state = 1675; this.match(HiveSqlParser.KW_CREATE); - this.state = 2024; + this.state = 1678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 228) { { - this.state = 2023; - this.orReplace(); + this.state = 1676; + this.match(HiveSqlParser.KW_OR); + this.state = 1677; + this.match(HiveSqlParser.KW_REPLACE); } } - this.state = 2026; + this.state = 1680; this.match(HiveSqlParser.KW_VIEW); - this.state = 2028; + this.state = 1682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 2027; + this.state = 1681; this.ifNotExists(); } } - this.state = 2030; + this.state = 1684; localContext._name = this.viewNameCreate(); - this.state = 2035; + this.state = 1689; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 2031; + this.state = 1685; this.match(HiveSqlParser.LPAREN); - this.state = 2032; + this.state = 1686; this.columnNameCommentList(); - this.state = 2033; + this.state = 1687; this.match(HiveSqlParser.RPAREN); } } - this.state = 2038; + this.state = 1692; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2037; + this.state = 1691; this.tableComment(); } } - this.state = 2041; + this.state = 1695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 2040; + this.state = 1694; this.viewPartition(); } } - this.state = 2044; + this.state = 1698; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 2043; + this.state = 1697; this.tablePropertiesPrefixed(); } } - this.state = 2046; + this.state = 1700; this.match(HiveSqlParser.KW_AS); - this.state = 2047; + this.state = 1701; this.selectStatementWithCTE(); } } @@ -7433,39 +7252,39 @@ export class HiveSqlParser extends SQLParserBase { } public viewPartition(): ViewPartitionContext { let localContext = new ViewPartitionContext(this.context, this.state); - this.enterRule(localContext, 184, HiveSqlParser.RULE_viewPartition); + this.enterRule(localContext, 162, HiveSqlParser.RULE_viewPartition); try { this.enterOuterAlt(localContext, 1); { - this.state = 2049; + this.state = 1703; this.match(HiveSqlParser.KW_PARTITIONED); - this.state = 2050; + this.state = 1704; this.match(HiveSqlParser.KW_ON); - this.state = 2056; + this.state = 1710; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.LPAREN: { - this.state = 2051; + this.state = 1705; this.match(HiveSqlParser.LPAREN); - this.state = 2052; + this.state = 1706; this.columnNameList(); } break; case HiveSqlParser.KW_SPEC: { - this.state = 2053; + this.state = 1707; this.match(HiveSqlParser.KW_SPEC); - this.state = 2054; + this.state = 1708; this.match(HiveSqlParser.LPAREN); - this.state = 2055; + this.state = 1709; localContext._spec = this.partitionTransformSpec(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2058; + this.state = 1712; this.match(HiveSqlParser.RPAREN); } } @@ -7485,22 +7304,22 @@ export class HiveSqlParser extends SQLParserBase { } public viewOrganization(): ViewOrganizationContext { let localContext = new ViewOrganizationContext(this.context, this.state); - this.enterRule(localContext, 186, HiveSqlParser.RULE_viewOrganization); + this.enterRule(localContext, 164, HiveSqlParser.RULE_viewOrganization); try { - this.state = 2062; + this.state = 1716; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_CLUSTERED: this.enterOuterAlt(localContext, 1); { - this.state = 2060; + this.state = 1714; this.viewClusterSpec(); } break; case HiveSqlParser.KW_DISTRIBUTED: this.enterOuterAlt(localContext, 2); { - this.state = 2061; + this.state = 1715; this.viewComplexSpec(); } break; @@ -7524,19 +7343,19 @@ export class HiveSqlParser extends SQLParserBase { } public viewClusterSpec(): ViewClusterSpecContext { let localContext = new ViewClusterSpecContext(this.context, this.state); - this.enterRule(localContext, 188, HiveSqlParser.RULE_viewClusterSpec); + this.enterRule(localContext, 166, HiveSqlParser.RULE_viewClusterSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2064; + this.state = 1718; this.match(HiveSqlParser.KW_CLUSTERED); - this.state = 2065; + this.state = 1719; this.match(HiveSqlParser.KW_ON); - this.state = 2066; + this.state = 1720; this.match(HiveSqlParser.LPAREN); - this.state = 2067; + this.state = 1721; this.columnNameList(); - this.state = 2068; + this.state = 1722; this.match(HiveSqlParser.RPAREN); } } @@ -7556,13 +7375,13 @@ export class HiveSqlParser extends SQLParserBase { } public viewComplexSpec(): ViewComplexSpecContext { let localContext = new ViewComplexSpecContext(this.context, this.state); - this.enterRule(localContext, 190, HiveSqlParser.RULE_viewComplexSpec); + this.enterRule(localContext, 168, HiveSqlParser.RULE_viewComplexSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2070; + this.state = 1724; this.viewDistSpec(); - this.state = 2071; + this.state = 1725; this.viewSortSpec(); } } @@ -7582,19 +7401,19 @@ export class HiveSqlParser extends SQLParserBase { } public viewDistSpec(): ViewDistSpecContext { let localContext = new ViewDistSpecContext(this.context, this.state); - this.enterRule(localContext, 192, HiveSqlParser.RULE_viewDistSpec); + this.enterRule(localContext, 170, HiveSqlParser.RULE_viewDistSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2073; + this.state = 1727; this.match(HiveSqlParser.KW_DISTRIBUTED); - this.state = 2074; + this.state = 1728; this.match(HiveSqlParser.KW_ON); - this.state = 2075; + this.state = 1729; this.match(HiveSqlParser.LPAREN); - this.state = 2076; + this.state = 1730; localContext._colList = this.columnNameList(); - this.state = 2077; + this.state = 1731; this.match(HiveSqlParser.RPAREN); } } @@ -7614,19 +7433,19 @@ export class HiveSqlParser extends SQLParserBase { } public viewSortSpec(): ViewSortSpecContext { let localContext = new ViewSortSpecContext(this.context, this.state); - this.enterRule(localContext, 194, HiveSqlParser.RULE_viewSortSpec); + this.enterRule(localContext, 172, HiveSqlParser.RULE_viewSortSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2079; + this.state = 1733; this.match(HiveSqlParser.KW_SORTED); - this.state = 2080; + this.state = 1734; this.match(HiveSqlParser.KW_ON); - this.state = 2081; + this.state = 1735; this.match(HiveSqlParser.LPAREN); - this.state = 2082; + this.state = 1736; localContext._colList = this.columnNameList(); - this.state = 2083; + this.state = 1737; this.match(HiveSqlParser.RPAREN); } } @@ -7646,26 +7465,26 @@ export class HiveSqlParser extends SQLParserBase { } public dropViewStatement(): DropViewStatementContext { let localContext = new DropViewStatementContext(this.context, this.state); - this.enterRule(localContext, 196, HiveSqlParser.RULE_dropViewStatement); + this.enterRule(localContext, 174, HiveSqlParser.RULE_dropViewStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2085; + this.state = 1739; this.match(HiveSqlParser.KW_DROP); - this.state = 2086; + this.state = 1740; this.match(HiveSqlParser.KW_VIEW); - this.state = 2088; + this.state = 1742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 2087; + this.state = 1741; this.ifExists(); } } - this.state = 2090; + this.state = 1744; this.viewName(); } } @@ -7685,112 +7504,112 @@ export class HiveSqlParser extends SQLParserBase { } public createMaterializedViewStatement(): CreateMaterializedViewStatementContext { let localContext = new CreateMaterializedViewStatementContext(this.context, this.state); - this.enterRule(localContext, 198, HiveSqlParser.RULE_createMaterializedViewStatement); + this.enterRule(localContext, 176, HiveSqlParser.RULE_createMaterializedViewStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2092; + this.state = 1746; this.match(HiveSqlParser.KW_CREATE); - this.state = 2093; + this.state = 1747; this.match(HiveSqlParser.KW_MATERIALIZED); - this.state = 2094; + this.state = 1748; this.match(HiveSqlParser.KW_VIEW); - this.state = 2096; + this.state = 1750; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 2095; + this.state = 1749; this.ifNotExists(); } } - this.state = 2098; + this.state = 1752; localContext._name = this.viewNameCreate(); - this.state = 2100; + this.state = 1754; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94 || _la === 95) { { - this.state = 2099; + this.state = 1753; this.rewriteDisabled(); } } - this.state = 2103; + this.state = 1757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2102; + this.state = 1756; this.tableComment(); } } - this.state = 2106; + this.state = 1760; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 2105; + this.state = 1759; this.viewPartition(); } } - this.state = 2109; + this.state = 1763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 98) { { - this.state = 2108; + this.state = 1762; this.viewOrganization(); } } - this.state = 2112; + this.state = 1766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 2111; + this.state = 1765; this.tableRowFormat(); } } - this.state = 2115; + this.state = 1769; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 2114; + this.state = 1768; this.tableFileFormat(); } } - this.state = 2118; + this.state = 1772; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 2117; - this.tableLocation(); + this.state = 1771; + this.locationPath(); } } - this.state = 2121; + this.state = 1775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 2120; + this.state = 1774; this.tablePropertiesPrefixed(); } } - this.state = 2123; + this.state = 1777; this.match(HiveSqlParser.KW_AS); - this.state = 2124; + this.state = 1778; this.selectStatementWithCTE(); } } @@ -7810,28 +7629,28 @@ export class HiveSqlParser extends SQLParserBase { } public dropMaterializedViewStatement(): DropMaterializedViewStatementContext { let localContext = new DropMaterializedViewStatementContext(this.context, this.state); - this.enterRule(localContext, 200, HiveSqlParser.RULE_dropMaterializedViewStatement); + this.enterRule(localContext, 178, HiveSqlParser.RULE_dropMaterializedViewStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2126; + this.state = 1780; this.match(HiveSqlParser.KW_DROP); - this.state = 2127; + this.state = 1781; this.match(HiveSqlParser.KW_MATERIALIZED); - this.state = 2128; + this.state = 1782; this.match(HiveSqlParser.KW_VIEW); - this.state = 2130; + this.state = 1784; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 2129; + this.state = 1783; this.ifExists(); } } - this.state = 2132; + this.state = 1786; this.viewName(); } } @@ -7851,42 +7670,42 @@ export class HiveSqlParser extends SQLParserBase { } public createScheduledQueryStatement(): CreateScheduledQueryStatementContext { let localContext = new CreateScheduledQueryStatementContext(this.context, this.state); - this.enterRule(localContext, 202, HiveSqlParser.RULE_createScheduledQueryStatement); + this.enterRule(localContext, 180, HiveSqlParser.RULE_createScheduledQueryStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2134; + this.state = 1788; this.match(HiveSqlParser.KW_CREATE); - this.state = 2135; + this.state = 1789; this.match(HiveSqlParser.KW_SCHEDULED); - this.state = 2136; + this.state = 1790; this.match(HiveSqlParser.KW_QUERY); - this.state = 2137; + this.state = 1791; localContext._name = this.id_(); - this.state = 2138; + this.state = 1792; this.scheduleSpec(); - this.state = 2140; + this.state = 1794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 116) { { - this.state = 2139; + this.state = 1793; this.executedAsSpec(); } } - this.state = 2143; + this.state = 1797; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 12291) !== 0)) { { - this.state = 2142; + this.state = 1796; this.enableSpecification(); } } - this.state = 2145; + this.state = 1799; this.definedAsSpec(); } } @@ -7906,17 +7725,17 @@ export class HiveSqlParser extends SQLParserBase { } public dropScheduledQueryStatement(): DropScheduledQueryStatementContext { let localContext = new DropScheduledQueryStatementContext(this.context, this.state); - this.enterRule(localContext, 204, HiveSqlParser.RULE_dropScheduledQueryStatement); + this.enterRule(localContext, 182, HiveSqlParser.RULE_dropScheduledQueryStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 2147; + this.state = 1801; this.match(HiveSqlParser.KW_DROP); - this.state = 2148; + this.state = 1802; this.match(HiveSqlParser.KW_SCHEDULED); - this.state = 2149; + this.state = 1803; this.match(HiveSqlParser.KW_QUERY); - this.state = 2150; + this.state = 1804; localContext._name = this.id_(); } } @@ -7936,19 +7755,19 @@ export class HiveSqlParser extends SQLParserBase { } public alterScheduledQueryStatement(): AlterScheduledQueryStatementContext { let localContext = new AlterScheduledQueryStatementContext(this.context, this.state); - this.enterRule(localContext, 206, HiveSqlParser.RULE_alterScheduledQueryStatement); + this.enterRule(localContext, 184, HiveSqlParser.RULE_alterScheduledQueryStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 2152; + this.state = 1806; this.match(HiveSqlParser.KW_ALTER); - this.state = 2153; + this.state = 1807; this.match(HiveSqlParser.KW_SCHEDULED); - this.state = 2154; + this.state = 1808; this.match(HiveSqlParser.KW_QUERY); - this.state = 2155; + this.state = 1809; localContext._name = this.id_(); - this.state = 2156; + this.state = 1810; localContext._mod = this.alterScheduledQueryChange(); } } @@ -7968,23 +7787,23 @@ export class HiveSqlParser extends SQLParserBase { } public alterScheduledQueryChange(): AlterScheduledQueryChangeContext { let localContext = new AlterScheduledQueryChangeContext(this.context, this.state); - this.enterRule(localContext, 208, HiveSqlParser.RULE_alterScheduledQueryChange); + this.enterRule(localContext, 186, HiveSqlParser.RULE_alterScheduledQueryChange); try { - this.state = 2163; + this.state = 1817; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_CRON: case HiveSqlParser.KW_EVERY: this.enterOuterAlt(localContext, 1); { - this.state = 2158; + this.state = 1812; this.scheduleSpec(); } break; case HiveSqlParser.KW_EXECUTED: this.enterOuterAlt(localContext, 2); { - this.state = 2159; + this.state = 1813; this.executedAsSpec(); } break; @@ -7994,7 +7813,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_ENABLED: this.enterOuterAlt(localContext, 3); { - this.state = 2160; + this.state = 1814; this.enableSpecification(); } break; @@ -8002,14 +7821,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_DEFINED: this.enterOuterAlt(localContext, 4); { - this.state = 2161; + this.state = 1815; this.definedAsSpec(); } break; case HiveSqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 5); { - this.state = 2162; + this.state = 1816; this.match(HiveSqlParser.KW_EXECUTE); } break; @@ -8033,64 +7852,64 @@ export class HiveSqlParser extends SQLParserBase { } public scheduleSpec(): ScheduleSpecContext { let localContext = new ScheduleSpecContext(this.context, this.state); - this.enterRule(localContext, 210, HiveSqlParser.RULE_scheduleSpec); + this.enterRule(localContext, 188, HiveSqlParser.RULE_scheduleSpec); let _la: number; try { - this.state = 2180; + this.state = 1834; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_CRON: this.enterOuterAlt(localContext, 1); { - this.state = 2165; + this.state = 1819; this.match(HiveSqlParser.KW_CRON); - this.state = 2166; + this.state = 1820; localContext._cronString = this.match(HiveSqlParser.StringLiteral); } break; case HiveSqlParser.KW_EVERY: this.enterOuterAlt(localContext, 2); { - this.state = 2167; + this.state = 1821; this.match(HiveSqlParser.KW_EVERY); - this.state = 2169; + this.state = 1823; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 431) { { - this.state = 2168; + this.state = 1822; localContext._value = this.match(HiveSqlParser.Number); } } - this.state = 2171; + this.state = 1825; localContext._qualifier = this.intervalQualifiers(); - this.state = 2178; + this.state = 1832; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 20 || _la === 223) { { - this.state = 2175; + this.state = 1829; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_AT: { - this.state = 2172; + this.state = 1826; this.match(HiveSqlParser.KW_AT); } break; case HiveSqlParser.KW_OFFSET: { - this.state = 2173; + this.state = 1827; this.match(HiveSqlParser.KW_OFFSET); - this.state = 2174; + this.state = 1828; this.match(HiveSqlParser.KW_BY); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2177; + this.state = 1831; localContext._offsetTs = this.match(HiveSqlParser.StringLiteral); } } @@ -8117,15 +7936,15 @@ export class HiveSqlParser extends SQLParserBase { } public executedAsSpec(): ExecutedAsSpecContext { let localContext = new ExecutedAsSpecContext(this.context, this.state); - this.enterRule(localContext, 212, HiveSqlParser.RULE_executedAsSpec); + this.enterRule(localContext, 190, HiveSqlParser.RULE_executedAsSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2182; + this.state = 1836; this.match(HiveSqlParser.KW_EXECUTED); - this.state = 2183; + this.state = 1837; this.match(HiveSqlParser.KW_AS); - this.state = 2184; + this.state = 1838; localContext._executedAs = this.match(HiveSqlParser.StringLiteral); } } @@ -8145,24 +7964,24 @@ export class HiveSqlParser extends SQLParserBase { } public definedAsSpec(): DefinedAsSpecContext { let localContext = new DefinedAsSpecContext(this.context, this.state); - this.enterRule(localContext, 214, HiveSqlParser.RULE_definedAsSpec); + this.enterRule(localContext, 192, HiveSqlParser.RULE_definedAsSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2187; + this.state = 1841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 85) { { - this.state = 2186; + this.state = 1840; this.match(HiveSqlParser.KW_DEFINED); } } - this.state = 2189; + this.state = 1843; this.match(HiveSqlParser.KW_AS); - this.state = 2190; + this.state = 1844; this.statement(); } } @@ -8182,9 +8001,9 @@ export class HiveSqlParser extends SQLParserBase { } public showStmtIdentifier(): ShowStmtIdentifierContext { let localContext = new ShowStmtIdentifierContext(this.context, this.state); - this.enterRule(localContext, 216, HiveSqlParser.RULE_showStmtIdentifier); + this.enterRule(localContext, 194, HiveSqlParser.RULE_showStmtIdentifier); try { - this.state = 2194; + this.state = 1848; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ABORT: @@ -8429,14 +8248,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 2192; + this.state = 1846; this.id_(); } break; case HiveSqlParser.StringLiteral: this.enterOuterAlt(localContext, 2); { - this.state = 2193; + this.state = 1847; this.match(HiveSqlParser.StringLiteral); } break; @@ -8460,13 +8279,13 @@ export class HiveSqlParser extends SQLParserBase { } public tableComment(): TableCommentContext { let localContext = new TableCommentContext(this.context, this.state); - this.enterRule(localContext, 218, HiveSqlParser.RULE_tableComment); + this.enterRule(localContext, 196, HiveSqlParser.RULE_tableComment); try { this.enterOuterAlt(localContext, 1); { - this.state = 2196; + this.state = 1850; this.match(HiveSqlParser.KW_COMMENT); - this.state = 2197; + this.state = 1851; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -8486,13 +8305,13 @@ export class HiveSqlParser extends SQLParserBase { } public tableLifecycle(): TableLifecycleContext { let localContext = new TableLifecycleContext(this.context, this.state); - this.enterRule(localContext, 220, HiveSqlParser.RULE_tableLifecycle); + this.enterRule(localContext, 198, HiveSqlParser.RULE_tableLifecycle); try { this.enterOuterAlt(localContext, 1); { - this.state = 2199; + this.state = 1853; this.match(HiveSqlParser.KW_LIFECYCLE); - this.state = 2200; + this.state = 1854; this.match(HiveSqlParser.Number); } } @@ -8512,34 +8331,34 @@ export class HiveSqlParser extends SQLParserBase { } public createTablePartitionSpec(): CreateTablePartitionSpecContext { let localContext = new CreateTablePartitionSpecContext(this.context, this.state); - this.enterRule(localContext, 222, HiveSqlParser.RULE_createTablePartitionSpec); + this.enterRule(localContext, 200, HiveSqlParser.RULE_createTablePartitionSpec); try { this.enterOuterAlt(localContext, 1); { - this.state = 2202; + this.state = 1856; this.match(HiveSqlParser.KW_PARTITIONED); - this.state = 2203; + this.state = 1857; this.match(HiveSqlParser.KW_BY); - this.state = 2212; + this.state = 1866; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.LPAREN: { - this.state = 2204; + this.state = 1858; this.match(HiveSqlParser.LPAREN); - this.state = 2207; + this.state = 1861; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 178, this.context) ) { case 1: { - this.state = 2205; + this.state = 1859; localContext._opt1 = this.createTablePartitionColumnTypeSpec(); } break; case 2: { - this.state = 2206; - localContext._opt2 = this.createTablePartitionColumnSpec(); + this.state = 1860; + localContext._opt2 = this.columnNameList(); } break; } @@ -8547,18 +8366,18 @@ export class HiveSqlParser extends SQLParserBase { break; case HiveSqlParser.KW_SPEC: { - this.state = 2209; + this.state = 1863; this.match(HiveSqlParser.KW_SPEC); - this.state = 2210; + this.state = 1864; this.match(HiveSqlParser.LPAREN); - this.state = 2211; + this.state = 1865; localContext._spec = this.partitionTransformSpec(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2214; + this.state = 1868; this.match(HiveSqlParser.RPAREN); } } @@ -8578,67 +8397,26 @@ export class HiveSqlParser extends SQLParserBase { } public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext { let localContext = new CreateTablePartitionColumnTypeSpecContext(this.context, this.state); - this.enterRule(localContext, 224, HiveSqlParser.RULE_createTablePartitionColumnTypeSpec); + this.enterRule(localContext, 202, HiveSqlParser.RULE_createTablePartitionColumnTypeSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2216; + this.state = 1870; this.columnNameTypeConstraint(); - this.state = 2221; + this.state = 1875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2217; + this.state = 1871; this.match(HiveSqlParser.COMMA); - this.state = 2218; + this.state = 1872; this.columnNameTypeConstraint(); } } - this.state = 2223; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext { - let localContext = new CreateTablePartitionColumnSpecContext(this.context, this.state); - this.enterRule(localContext, 226, HiveSqlParser.RULE_createTablePartitionColumnSpec); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2224; - this.columnName(); - this.state = 2229; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 2225; - this.match(HiveSqlParser.COMMA); - this.state = 2226; - this.columnName(); - } - } - this.state = 2231; + this.state = 1877; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8660,26 +8438,26 @@ export class HiveSqlParser extends SQLParserBase { } public partitionTransformSpec(): PartitionTransformSpecContext { let localContext = new PartitionTransformSpecContext(this.context, this.state); - this.enterRule(localContext, 228, HiveSqlParser.RULE_partitionTransformSpec); + this.enterRule(localContext, 204, HiveSqlParser.RULE_partitionTransformSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2232; - this.columnNameTransformConstraint(); - this.state = 2237; + this.state = 1878; + this.partitionTransformType(); + this.state = 1883; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2233; + this.state = 1879; this.match(HiveSqlParser.COMMA); - this.state = 2234; - this.columnNameTransformConstraint(); + this.state = 1880; + this.partitionTransformType(); } } - this.state = 2239; + this.state = 1885; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8699,94 +8477,70 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public columnNameTransformConstraint(): ColumnNameTransformConstraintContext { - let localContext = new ColumnNameTransformConstraintContext(this.context, this.state); - this.enterRule(localContext, 230, HiveSqlParser.RULE_columnNameTransformConstraint); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2240; - this.partitionTransformType(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public partitionTransformType(): PartitionTransformTypeContext { let localContext = new PartitionTransformTypeContext(this.context, this.state); - this.enterRule(localContext, 232, HiveSqlParser.RULE_partitionTransformType); + this.enterRule(localContext, 206, HiveSqlParser.RULE_partitionTransformType); let _la: number; try { - this.state = 2260; + this.state = 1904; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2242; + this.state = 1886; this.columnName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2247; + this.state = 1891; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_YEAR: case HiveSqlParser.KW_YEARS: { - this.state = 2243; + this.state = 1887; this.year(); } break; case HiveSqlParser.KW_MONTH: case HiveSqlParser.KW_MONTHS: { - this.state = 2244; + this.state = 1888; this.month(); } break; case HiveSqlParser.KW_DAY: case HiveSqlParser.KW_DAYS: { - this.state = 2245; + this.state = 1889; this.day(); } break; case HiveSqlParser.KW_HOUR: case HiveSqlParser.KW_HOURS: { - this.state = 2246; + this.state = 1890; this.hour(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2249; + this.state = 1893; this.match(HiveSqlParser.LPAREN); - this.state = 2250; + this.state = 1894; this.columnName(); - this.state = 2251; + this.state = 1895; this.match(HiveSqlParser.RPAREN); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2253; + this.state = 1897; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 351)) { this.errorHandler.recoverInline(this); @@ -8795,15 +8549,15 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2254; + this.state = 1898; this.match(HiveSqlParser.LPAREN); - this.state = 2255; + this.state = 1899; localContext._value = this.match(HiveSqlParser.Number); - this.state = 2256; + this.state = 1900; this.match(HiveSqlParser.COMMA); - this.state = 2257; + this.state = 1901; this.columnName(); - this.state = 2258; + this.state = 1902; this.match(HiveSqlParser.RPAREN); } break; @@ -8825,74 +8579,44 @@ export class HiveSqlParser extends SQLParserBase { } public tableBuckets(): TableBucketsContext { let localContext = new TableBucketsContext(this.context, this.state); - this.enterRule(localContext, 234, HiveSqlParser.RULE_tableBuckets); + this.enterRule(localContext, 208, HiveSqlParser.RULE_tableBuckets); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2262; + this.state = 1906; this.match(HiveSqlParser.KW_CLUSTERED); - this.state = 2263; + this.state = 1907; this.match(HiveSqlParser.KW_BY); - this.state = 2264; + this.state = 1908; this.match(HiveSqlParser.LPAREN); - this.state = 2265; + this.state = 1909; localContext._bucketCols = this.columnNameList(); - this.state = 2266; + this.state = 1910; this.match(HiveSqlParser.RPAREN); - this.state = 2273; + this.state = 1917; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 315) { { - this.state = 2267; + this.state = 1911; this.match(HiveSqlParser.KW_SORTED); - this.state = 2268; + this.state = 1912; this.match(HiveSqlParser.KW_BY); - this.state = 2269; + this.state = 1913; this.match(HiveSqlParser.LPAREN); - this.state = 2270; + this.state = 1914; localContext._sortCols = this.columnNameOrderList(); - this.state = 2271; + this.state = 1915; this.match(HiveSqlParser.RPAREN); } } - this.state = 2275; + this.state = 1919; this.match(HiveSqlParser.KW_INTO); - this.state = 2276; + this.state = 1920; localContext._num = this.match(HiveSqlParser.Number); - this.state = 2277; - this.match(HiveSqlParser.KW_BUCKETS); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tableImplBuckets(): TableImplBucketsContext { - let localContext = new TableImplBucketsContext(this.context, this.state); - this.enterRule(localContext, 236, HiveSqlParser.RULE_tableImplBuckets); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2279; - this.match(HiveSqlParser.KW_CLUSTERED); - this.state = 2280; - this.match(HiveSqlParser.KW_INTO); - this.state = 2281; - localContext._num = this.match(HiveSqlParser.Number); - this.state = 2282; + this.state = 1921; this.match(HiveSqlParser.KW_BUCKETS); } } @@ -8912,34 +8636,34 @@ export class HiveSqlParser extends SQLParserBase { } public tableSkewed(): TableSkewedContext { let localContext = new TableSkewedContext(this.context, this.state); - this.enterRule(localContext, 238, HiveSqlParser.RULE_tableSkewed); + this.enterRule(localContext, 210, HiveSqlParser.RULE_tableSkewed); try { this.enterOuterAlt(localContext, 1); { - this.state = 2284; + this.state = 1923; this.match(HiveSqlParser.KW_SKEWED); - this.state = 2285; + this.state = 1924; this.match(HiveSqlParser.KW_BY); - this.state = 2286; + this.state = 1925; this.match(HiveSqlParser.LPAREN); - this.state = 2287; + this.state = 1926; localContext._skewedCols = this.columnNameList(); - this.state = 2288; + this.state = 1927; this.match(HiveSqlParser.RPAREN); - this.state = 2289; + this.state = 1928; this.match(HiveSqlParser.KW_ON); - this.state = 2290; + this.state = 1929; this.match(HiveSqlParser.LPAREN); - this.state = 2291; + this.state = 1930; localContext._skewedValues = this.skewedValueElement(); - this.state = 2292; + this.state = 1931; this.match(HiveSqlParser.RPAREN); - this.state = 2294; + this.state = 1933; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 2293; + this.state = 1932; this.storedAsDirs(); } break; @@ -8962,22 +8686,22 @@ export class HiveSqlParser extends SQLParserBase { } public rowFormat(): RowFormatContext { let localContext = new RowFormatContext(this.context, this.state); - this.enterRule(localContext, 240, HiveSqlParser.RULE_rowFormat); + this.enterRule(localContext, 212, HiveSqlParser.RULE_rowFormat); try { - this.state = 2298; + this.state = 1937; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2296; + this.state = 1935; this.rowFormatSerde(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2297; + this.state = 1936; this.rowFormatDelimited(); } break; @@ -8999,13 +8723,13 @@ export class HiveSqlParser extends SQLParserBase { } public recordReader(): RecordReaderContext { let localContext = new RecordReaderContext(this.context, this.state); - this.enterRule(localContext, 242, HiveSqlParser.RULE_recordReader); + this.enterRule(localContext, 214, HiveSqlParser.RULE_recordReader); try { this.enterOuterAlt(localContext, 1); { - this.state = 2300; + this.state = 1939; this.match(HiveSqlParser.KW_RECORDREADER); - this.state = 2301; + this.state = 1940; this.match(HiveSqlParser.StringLiteral); } } @@ -9025,13 +8749,13 @@ export class HiveSqlParser extends SQLParserBase { } public recordWriter(): RecordWriterContext { let localContext = new RecordWriterContext(this.context, this.state); - this.enterRule(localContext, 244, HiveSqlParser.RULE_recordWriter); + this.enterRule(localContext, 216, HiveSqlParser.RULE_recordWriter); try { this.enterOuterAlt(localContext, 1); { - this.state = 2303; + this.state = 1942; this.match(HiveSqlParser.KW_RECORDWRITER); - this.state = 2304; + this.state = 1943; this.match(HiveSqlParser.StringLiteral); } } @@ -9051,28 +8775,28 @@ export class HiveSqlParser extends SQLParserBase { } public rowFormatSerde(): RowFormatSerdeContext { let localContext = new RowFormatSerdeContext(this.context, this.state); - this.enterRule(localContext, 246, HiveSqlParser.RULE_rowFormatSerde); + this.enterRule(localContext, 218, HiveSqlParser.RULE_rowFormatSerde); try { this.enterOuterAlt(localContext, 1); { - this.state = 2306; + this.state = 1945; this.match(HiveSqlParser.KW_ROW); - this.state = 2307; + this.state = 1946; this.match(HiveSqlParser.KW_FORMAT); - this.state = 2308; + this.state = 1947; this.match(HiveSqlParser.KW_SERDE); - this.state = 2309; + this.state = 1948; localContext._name = this.match(HiveSqlParser.StringLiteral); - this.state = 2313; + this.state = 1952; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 188, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 2310; + this.state = 1949; this.match(HiveSqlParser.KW_WITH); - this.state = 2311; + this.state = 1950; this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 2312; + this.state = 1951; localContext._serdeprops = this.tableProperties(); } break; @@ -9095,63 +8819,63 @@ export class HiveSqlParser extends SQLParserBase { } public rowFormatDelimited(): RowFormatDelimitedContext { let localContext = new RowFormatDelimitedContext(this.context, this.state); - this.enterRule(localContext, 248, HiveSqlParser.RULE_rowFormatDelimited); + this.enterRule(localContext, 220, HiveSqlParser.RULE_rowFormatDelimited); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2315; + this.state = 1954; this.match(HiveSqlParser.KW_ROW); - this.state = 2316; + this.state = 1955; this.match(HiveSqlParser.KW_FORMAT); - this.state = 2317; + this.state = 1956; this.match(HiveSqlParser.KW_DELIMITED); - this.state = 2319; + this.state = 1958; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 127) { { - this.state = 2318; + this.state = 1957; this.tableRowFormatFieldIdentifier(); } } - this.state = 2322; + this.state = 1961; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 44) { { - this.state = 2321; + this.state = 1960; this.tableRowFormatCollItemsIdentifier(); } } - this.state = 2325; + this.state = 1964; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 191, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { case 1: { - this.state = 2324; + this.state = 1963; this.tableRowFormatMapKeysIdentifier(); } break; } - this.state = 2328; + this.state = 1967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 186) { { - this.state = 2327; + this.state = 1966; this.tableRowFormatLinesIdentifier(); } } - this.state = 2331; + this.state = 1970; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 219) { { - this.state = 2330; + this.state = 1969; this.tableRowNullFormat(); } } @@ -9174,22 +8898,22 @@ export class HiveSqlParser extends SQLParserBase { } public tableRowFormat(): TableRowFormatContext { let localContext = new TableRowFormatContext(this.context, this.state); - this.enterRule(localContext, 250, HiveSqlParser.RULE_tableRowFormat); + this.enterRule(localContext, 222, HiveSqlParser.RULE_tableRowFormat); try { - this.state = 2335; + this.state = 1974; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 193, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2333; + this.state = 1972; this.rowFormatDelimited(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2334; + this.state = 1973; this.rowFormatSerde(); } break; @@ -9211,13 +8935,13 @@ export class HiveSqlParser extends SQLParserBase { } public tablePropertiesPrefixed(): TablePropertiesPrefixedContext { let localContext = new TablePropertiesPrefixedContext(this.context, this.state); - this.enterRule(localContext, 252, HiveSqlParser.RULE_tablePropertiesPrefixed); + this.enterRule(localContext, 224, HiveSqlParser.RULE_tablePropertiesPrefixed); try { this.enterOuterAlt(localContext, 1); { - this.state = 2337; + this.state = 1976; this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 2338; + this.state = 1977; this.tableProperties(); } } @@ -9237,15 +8961,15 @@ export class HiveSqlParser extends SQLParserBase { } public tableProperties(): TablePropertiesContext { let localContext = new TablePropertiesContext(this.context, this.state); - this.enterRule(localContext, 254, HiveSqlParser.RULE_tableProperties); + this.enterRule(localContext, 226, HiveSqlParser.RULE_tableProperties); try { this.enterOuterAlt(localContext, 1); { - this.state = 2340; + this.state = 1979; this.match(HiveSqlParser.LPAREN); - this.state = 2341; + this.state = 1980; this.tablePropertiesList(); - this.state = 2342; + this.state = 1981; this.match(HiveSqlParser.RPAREN); } } @@ -9265,53 +8989,37 @@ export class HiveSqlParser extends SQLParserBase { } public tablePropertiesList(): TablePropertiesListContext { let localContext = new TablePropertiesListContext(this.context, this.state); - this.enterRule(localContext, 256, HiveSqlParser.RULE_tablePropertiesList); + this.enterRule(localContext, 228, HiveSqlParser.RULE_tablePropertiesList); let _la: number; try { - this.state = 2360; + this.state = 1992; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 195, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2344; - this.keyValueProperty(); - this.state = 2349; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 2345; - this.match(HiveSqlParser.COMMA); - this.state = 2346; - this.keyValueProperty(); - } - } - this.state = 2351; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + this.state = 1983; + this.keyValuePropertyList(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2352; - this.keyProperty(); - this.state = 2357; + this.state = 1984; + localContext._key = this.match(HiveSqlParser.StringLiteral); + this.state = 1989; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2353; + this.state = 1985; this.match(HiveSqlParser.COMMA); - this.state = 2354; - this.keyProperty(); + this.state = 1986; + localContext._key = this.match(HiveSqlParser.StringLiteral); } } - this.state = 2359; + this.state = 1991; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9333,17 +9041,86 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } + public keyValueProperties(): KeyValuePropertiesContext { + let localContext = new KeyValuePropertiesContext(this.context, this.state); + this.enterRule(localContext, 230, HiveSqlParser.RULE_keyValueProperties); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1994; + this.match(HiveSqlParser.LPAREN); + this.state = 1995; + this.keyValuePropertyList(); + this.state = 1996; + this.match(HiveSqlParser.RPAREN); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public keyValuePropertyList(): KeyValuePropertyListContext { + let localContext = new KeyValuePropertyListContext(this.context, this.state); + this.enterRule(localContext, 232, HiveSqlParser.RULE_keyValuePropertyList); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1998; + this.keyValueProperty(); + this.state = 2003; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 1999; + this.match(HiveSqlParser.COMMA); + this.state = 2000; + this.keyValueProperty(); + } + } + this.state = 2005; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public keyValueProperty(): KeyValuePropertyContext { let localContext = new KeyValuePropertyContext(this.context, this.state); - this.enterRule(localContext, 258, HiveSqlParser.RULE_keyValueProperty); + this.enterRule(localContext, 234, HiveSqlParser.RULE_keyValueProperty); try { this.enterOuterAlt(localContext, 1); { - this.state = 2362; + this.state = 2006; localContext._key = this.match(HiveSqlParser.StringLiteral); - this.state = 2363; + this.state = 2007; this.match(HiveSqlParser.EQUAL); - this.state = 2364; + this.state = 2008; localContext._value = this.match(HiveSqlParser.StringLiteral); } } @@ -9361,55 +9138,31 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public keyProperty(): KeyPropertyContext { - let localContext = new KeyPropertyContext(this.context, this.state); - this.enterRule(localContext, 260, HiveSqlParser.RULE_keyProperty); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2366; - localContext._key = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public tableRowFormatFieldIdentifier(): TableRowFormatFieldIdentifierContext { let localContext = new TableRowFormatFieldIdentifierContext(this.context, this.state); - this.enterRule(localContext, 262, HiveSqlParser.RULE_tableRowFormatFieldIdentifier); + this.enterRule(localContext, 236, HiveSqlParser.RULE_tableRowFormatFieldIdentifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2368; + this.state = 2010; this.match(HiveSqlParser.KW_FIELDS); - this.state = 2369; + this.state = 2011; this.match(HiveSqlParser.KW_TERMINATED); - this.state = 2370; + this.state = 2012; this.match(HiveSqlParser.KW_BY); - this.state = 2371; + this.state = 2013; localContext._fldIdnt = this.match(HiveSqlParser.StringLiteral); - this.state = 2375; + this.state = 2017; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 110) { { - this.state = 2372; + this.state = 2014; this.match(HiveSqlParser.KW_ESCAPED); - this.state = 2373; + this.state = 2015; this.match(HiveSqlParser.KW_BY); - this.state = 2374; + this.state = 2016; localContext._fldEscape = this.match(HiveSqlParser.StringLiteral); } } @@ -9432,19 +9185,19 @@ export class HiveSqlParser extends SQLParserBase { } public tableRowFormatCollItemsIdentifier(): TableRowFormatCollItemsIdentifierContext { let localContext = new TableRowFormatCollItemsIdentifierContext(this.context, this.state); - this.enterRule(localContext, 264, HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier); + this.enterRule(localContext, 238, HiveSqlParser.RULE_tableRowFormatCollItemsIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 2377; + this.state = 2019; this.match(HiveSqlParser.KW_COLLECTION); - this.state = 2378; + this.state = 2020; this.match(HiveSqlParser.KW_ITEMS); - this.state = 2379; + this.state = 2021; this.match(HiveSqlParser.KW_TERMINATED); - this.state = 2380; + this.state = 2022; this.match(HiveSqlParser.KW_BY); - this.state = 2381; + this.state = 2023; localContext._collIdnt = this.match(HiveSqlParser.StringLiteral); } } @@ -9464,19 +9217,19 @@ export class HiveSqlParser extends SQLParserBase { } public tableRowFormatMapKeysIdentifier(): TableRowFormatMapKeysIdentifierContext { let localContext = new TableRowFormatMapKeysIdentifierContext(this.context, this.state); - this.enterRule(localContext, 266, HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier); + this.enterRule(localContext, 240, HiveSqlParser.RULE_tableRowFormatMapKeysIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 2383; + this.state = 2025; this.match(HiveSqlParser.KW_MAP); - this.state = 2384; + this.state = 2026; this.match(HiveSqlParser.KW_KEYS); - this.state = 2385; + this.state = 2027; this.match(HiveSqlParser.KW_TERMINATED); - this.state = 2386; + this.state = 2028; this.match(HiveSqlParser.KW_BY); - this.state = 2387; + this.state = 2029; localContext._mapKeysIdnt = this.match(HiveSqlParser.StringLiteral); } } @@ -9496,17 +9249,17 @@ export class HiveSqlParser extends SQLParserBase { } public tableRowFormatLinesIdentifier(): TableRowFormatLinesIdentifierContext { let localContext = new TableRowFormatLinesIdentifierContext(this.context, this.state); - this.enterRule(localContext, 268, HiveSqlParser.RULE_tableRowFormatLinesIdentifier); + this.enterRule(localContext, 242, HiveSqlParser.RULE_tableRowFormatLinesIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 2389; + this.state = 2031; this.match(HiveSqlParser.KW_LINES); - this.state = 2390; + this.state = 2032; this.match(HiveSqlParser.KW_TERMINATED); - this.state = 2391; + this.state = 2033; this.match(HiveSqlParser.KW_BY); - this.state = 2392; + this.state = 2034; localContext._linesIdnt = this.match(HiveSqlParser.StringLiteral); } } @@ -9526,17 +9279,17 @@ export class HiveSqlParser extends SQLParserBase { } public tableRowNullFormat(): TableRowNullFormatContext { let localContext = new TableRowNullFormatContext(this.context, this.state); - this.enterRule(localContext, 270, HiveSqlParser.RULE_tableRowNullFormat); + this.enterRule(localContext, 244, HiveSqlParser.RULE_tableRowNullFormat); try { this.enterOuterAlt(localContext, 1); { - this.state = 2394; + this.state = 2036; this.match(HiveSqlParser.KW_NULL); - this.state = 2395; + this.state = 2037; this.match(HiveSqlParser.KW_DEFINED); - this.state = 2396; + this.state = 2038; this.match(HiveSqlParser.KW_AS); - this.state = 2397; + this.state = 2039; localContext._nullIdnt = this.match(HiveSqlParser.StringLiteral); } } @@ -9556,39 +9309,39 @@ export class HiveSqlParser extends SQLParserBase { } public tableFileFormat(): TableFileFormatContext { let localContext = new TableFileFormatContext(this.context, this.state); - this.enterRule(localContext, 272, HiveSqlParser.RULE_tableFileFormat); + this.enterRule(localContext, 246, HiveSqlParser.RULE_tableFileFormat); let _la: number; try { - this.state = 2440; + this.state = 2082; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 203, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2399; + this.state = 2041; this.match(HiveSqlParser.KW_STORED); - this.state = 2400; + this.state = 2042; this.match(HiveSqlParser.KW_AS); - this.state = 2401; + this.state = 2043; this.match(HiveSqlParser.KW_INPUTFORMAT); - this.state = 2402; + this.state = 2044; localContext._inFmt = this.match(HiveSqlParser.StringLiteral); - this.state = 2403; + this.state = 2045; this.match(HiveSqlParser.KW_OUTPUTFORMAT); - this.state = 2404; + this.state = 2046; localContext._outFmt = this.match(HiveSqlParser.StringLiteral); - this.state = 2409; + this.state = 2051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 159) { { - this.state = 2405; + this.state = 2047; this.match(HiveSqlParser.KW_INPUTDRIVER); - this.state = 2406; + this.state = 2048; localContext._inDriver = this.match(HiveSqlParser.StringLiteral); - this.state = 2407; + this.state = 2049; this.match(HiveSqlParser.KW_OUTPUTDRIVER); - this.state = 2408; + this.state = 2050; localContext._outDriver = this.match(HiveSqlParser.StringLiteral); } } @@ -9598,36 +9351,36 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2411; + this.state = 2053; this.match(HiveSqlParser.KW_STORED); - this.state = 2412; + this.state = 2054; this.match(HiveSqlParser.KW_BY); - this.state = 2413; + this.state = 2055; localContext._storageHandler = this.match(HiveSqlParser.StringLiteral); - this.state = 2417; + this.state = 2059; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 200, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 199, this.context) ) { case 1: { - this.state = 2414; + this.state = 2056; this.match(HiveSqlParser.KW_WITH); - this.state = 2415; + this.state = 2057; this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 2416; + this.state = 2058; localContext._serdeprops = this.tableProperties(); } break; } - this.state = 2422; + this.state = 2064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 2419; + this.state = 2061; this.match(HiveSqlParser.KW_STORED); - this.state = 2420; + this.state = 2062; this.match(HiveSqlParser.KW_AS); - this.state = 2421; + this.state = 2063; localContext._fileformat = this.id_(); } } @@ -9637,36 +9390,36 @@ export class HiveSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2424; + this.state = 2066; this.match(HiveSqlParser.KW_STORED); - this.state = 2425; + this.state = 2067; this.match(HiveSqlParser.KW_BY); - this.state = 2426; + this.state = 2068; localContext._genericSpec = this.id_(); - this.state = 2430; + this.state = 2072; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { case 1: { - this.state = 2427; + this.state = 2069; this.match(HiveSqlParser.KW_WITH); - this.state = 2428; + this.state = 2070; this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 2429; + this.state = 2071; localContext._serdeprops = this.tableProperties(); } break; } - this.state = 2435; + this.state = 2077; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 2432; + this.state = 2074; this.match(HiveSqlParser.KW_STORED); - this.state = 2433; + this.state = 2075; this.match(HiveSqlParser.KW_AS); - this.state = 2434; + this.state = 2076; localContext._fileformat = this.id_(); } } @@ -9676,11 +9429,11 @@ export class HiveSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2437; + this.state = 2079; this.match(HiveSqlParser.KW_STORED); - this.state = 2438; + this.state = 2080; this.match(HiveSqlParser.KW_AS); - this.state = 2439; + this.state = 2081; localContext._genericSpec = this.id_(); } break; @@ -9700,54 +9453,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public tableLocation(): TableLocationContext { - let localContext = new TableLocationContext(this.context, this.state); - this.enterRule(localContext, 274, HiveSqlParser.RULE_tableLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2442; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 2443; - localContext._locn = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public columnNameTypeList(): ColumnNameTypeListContext { let localContext = new ColumnNameTypeListContext(this.context, this.state); - this.enterRule(localContext, 276, HiveSqlParser.RULE_columnNameTypeList); + this.enterRule(localContext, 248, HiveSqlParser.RULE_columnNameTypeList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2445; + this.state = 2084; this.columnNameType(); - this.state = 2450; + this.state = 2089; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2446; + this.state = 2085; this.match(HiveSqlParser.COMMA); - this.state = 2447; + this.state = 2086; this.columnNameType(); } } - this.state = 2452; + this.state = 2091; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9769,26 +9496,26 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameTypeOrConstraintList(): ColumnNameTypeOrConstraintListContext { let localContext = new ColumnNameTypeOrConstraintListContext(this.context, this.state); - this.enterRule(localContext, 278, HiveSqlParser.RULE_columnNameTypeOrConstraintList); + this.enterRule(localContext, 250, HiveSqlParser.RULE_columnNameTypeOrConstraintList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2453; + this.state = 2092; this.columnNameTypeOrConstraint(); - this.state = 2458; + this.state = 2097; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2454; + this.state = 2093; this.match(HiveSqlParser.COMMA); - this.state = 2455; + this.state = 2094; this.columnNameTypeOrConstraint(); } } - this.state = 2460; + this.state = 2099; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9810,26 +9537,26 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameColonTypeList(): ColumnNameColonTypeListContext { let localContext = new ColumnNameColonTypeListContext(this.context, this.state); - this.enterRule(localContext, 280, HiveSqlParser.RULE_columnNameColonTypeList); + this.enterRule(localContext, 252, HiveSqlParser.RULE_columnNameColonTypeList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2461; + this.state = 2100; this.columnNameColonType(); - this.state = 2466; + this.state = 2105; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2462; + this.state = 2101; this.match(HiveSqlParser.COMMA); - this.state = 2463; + this.state = 2102; this.columnNameColonType(); } } - this.state = 2468; + this.state = 2107; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9851,26 +9578,26 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameList(): ColumnNameListContext { let localContext = new ColumnNameListContext(this.context, this.state); - this.enterRule(localContext, 282, HiveSqlParser.RULE_columnNameList); + this.enterRule(localContext, 254, HiveSqlParser.RULE_columnNameList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2469; + this.state = 2108; this.columnName(); - this.state = 2474; + this.state = 2113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2470; + this.state = 2109; this.match(HiveSqlParser.COMMA); - this.state = 2471; + this.state = 2110; this.columnName(); } } - this.state = 2476; + this.state = 2115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9892,41 +9619,22 @@ export class HiveSqlParser extends SQLParserBase { } public columnName(): ColumnNameContext { let localContext = new ColumnNameContext(this.context, this.state); - this.enterRule(localContext, 284, HiveSqlParser.RULE_columnName); + this.enterRule(localContext, 256, HiveSqlParser.RULE_columnName); try { - let alternative: number; - this.state = 2486; + this.state = 2118; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2477; - this.id_(); - this.state = 2482; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2478; - this.match(HiveSqlParser.DOT); - this.state = 2479; - this.id_(); - } - } - } - this.state = 2484; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); - } + this.state = 2116; + this.poolPath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2485; + this.state = 2117; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -9950,11 +9658,11 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameCreate(): ColumnNameCreateContext { let localContext = new ColumnNameCreateContext(this.context, this.state); - this.enterRule(localContext, 286, HiveSqlParser.RULE_columnNameCreate); + this.enterRule(localContext, 258, HiveSqlParser.RULE_columnNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 2488; + this.state = 2120; this.id_(); } } @@ -9974,52 +9682,52 @@ export class HiveSqlParser extends SQLParserBase { } public extColumnName(): ExtColumnNameContext { let localContext = new ExtColumnNameContext(this.context, this.state); - this.enterRule(localContext, 288, HiveSqlParser.RULE_extColumnName); + this.enterRule(localContext, 260, HiveSqlParser.RULE_extColumnName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2490; + this.state = 2122; this.columnName(); - this.state = 2500; + this.state = 2132; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 395) { { { - this.state = 2491; + this.state = 2123; this.match(HiveSqlParser.DOT); - this.state = 2496; + this.state = 2128; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 209, this.context) ) { case 1: { - this.state = 2492; + this.state = 2124; this.match(HiveSqlParser.KW_ELEM_TYPE); } break; case 2: { - this.state = 2493; + this.state = 2125; this.match(HiveSqlParser.KW_KEY_TYPE); } break; case 3: { - this.state = 2494; + this.state = 2126; this.match(HiveSqlParser.KW_VALUE_TYPE); } break; case 4: { - this.state = 2495; + this.state = 2127; this.id_(); } break; } } } - this.state = 2502; + this.state = 2134; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10041,26 +9749,26 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameOrderList(): ColumnNameOrderListContext { let localContext = new ColumnNameOrderListContext(this.context, this.state); - this.enterRule(localContext, 290, HiveSqlParser.RULE_columnNameOrderList); + this.enterRule(localContext, 262, HiveSqlParser.RULE_columnNameOrderList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2503; + this.state = 2135; this.columnNameOrder(); - this.state = 2508; + this.state = 2140; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2504; + this.state = 2136; this.match(HiveSqlParser.COMMA); - this.state = 2505; + this.state = 2137; this.columnNameOrder(); } } - this.state = 2510; + this.state = 2142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10082,15 +9790,15 @@ export class HiveSqlParser extends SQLParserBase { } public columnParenthesesList(): ColumnParenthesesListContext { let localContext = new ColumnParenthesesListContext(this.context, this.state); - this.enterRule(localContext, 292, HiveSqlParser.RULE_columnParenthesesList); + this.enterRule(localContext, 264, HiveSqlParser.RULE_columnParenthesesList); try { this.enterOuterAlt(localContext, 1); { - this.state = 2511; + this.state = 2143; this.match(HiveSqlParser.LPAREN); - this.state = 2512; + this.state = 2144; this.columnNameList(); - this.state = 2513; + this.state = 2145; this.match(HiveSqlParser.RPAREN); } } @@ -10110,10 +9818,10 @@ export class HiveSqlParser extends SQLParserBase { } public enableValidateSpecification(): EnableValidateSpecificationContext { let localContext = new EnableValidateSpecificationContext(this.context, this.state); - this.enterRule(localContext, 294, HiveSqlParser.RULE_enableValidateSpecification); + this.enterRule(localContext, 266, HiveSqlParser.RULE_enableValidateSpecification); let _la: number; try { - this.state = 2520; + this.state = 2152; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_DISABLE: @@ -10122,14 +9830,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_ENABLED: this.enterOuterAlt(localContext, 1); { - this.state = 2515; + this.state = 2147; this.enableSpecification(); - this.state = 2517; + this.state = 2149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 217 || _la === 373) { { - this.state = 2516; + this.state = 2148; this.validateSpecification(); } } @@ -10140,7 +9848,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_NOT: this.enterOuterAlt(localContext, 2); { - this.state = 2519; + this.state = 2151; this.enforcedSpecification(); } break; @@ -10164,16 +9872,16 @@ export class HiveSqlParser extends SQLParserBase { } public enableSpecification(): EnableSpecificationContext { let localContext = new EnableSpecificationContext(this.context, this.state); - this.enterRule(localContext, 296, HiveSqlParser.RULE_enableSpecification); + this.enterRule(localContext, 268, HiveSqlParser.RULE_enableSpecification); try { - this.state = 2524; + this.state = 2156; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ENABLE: case HiveSqlParser.KW_ENABLED: this.enterOuterAlt(localContext, 1); { - this.state = 2522; + this.state = 2154; this.enable(); } break; @@ -10181,7 +9889,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_DISABLED: this.enterOuterAlt(localContext, 2); { - this.state = 2523; + this.state = 2155; this.disable(); } break; @@ -10205,12 +9913,12 @@ export class HiveSqlParser extends SQLParserBase { } public validateSpecification(): ValidateSpecificationContext { let localContext = new ValidateSpecificationContext(this.context, this.state); - this.enterRule(localContext, 298, HiveSqlParser.RULE_validateSpecification); + this.enterRule(localContext, 270, HiveSqlParser.RULE_validateSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2526; + this.state = 2158; _la = this.tokenStream.LA(1); if(!(_la === 217 || _la === 373)) { this.errorHandler.recoverInline(this); @@ -10237,24 +9945,24 @@ export class HiveSqlParser extends SQLParserBase { } public enforcedSpecification(): EnforcedSpecificationContext { let localContext = new EnforcedSpecificationContext(this.context, this.state); - this.enterRule(localContext, 300, HiveSqlParser.RULE_enforcedSpecification); + this.enterRule(localContext, 272, HiveSqlParser.RULE_enforcedSpecification); try { - this.state = 2531; + this.state = 2163; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ENFORCED: this.enterOuterAlt(localContext, 1); { - this.state = 2528; + this.state = 2160; this.match(HiveSqlParser.KW_ENFORCED); } break; case HiveSqlParser.KW_NOT: this.enterOuterAlt(localContext, 2); { - this.state = 2529; + this.state = 2161; this.match(HiveSqlParser.KW_NOT); - this.state = 2530; + this.state = 2162; this.match(HiveSqlParser.KW_ENFORCED); } break; @@ -10278,12 +9986,12 @@ export class HiveSqlParser extends SQLParserBase { } public relySpecification(): RelySpecificationContext { let localContext = new RelySpecificationContext(this.context, this.state); - this.enterRule(localContext, 302, HiveSqlParser.RULE_relySpecification); + this.enterRule(localContext, 274, HiveSqlParser.RULE_relySpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2533; + this.state = 2165; _la = this.tokenStream.LA(1); if(!(_la === 214 || _la === 272)) { this.errorHandler.recoverInline(this); @@ -10310,31 +10018,31 @@ export class HiveSqlParser extends SQLParserBase { } public createConstraint(): CreateConstraintContext { let localContext = new CreateConstraintContext(this.context, this.state); - this.enterRule(localContext, 304, HiveSqlParser.RULE_createConstraint); + this.enterRule(localContext, 276, HiveSqlParser.RULE_createConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2537; + this.state = 2169; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2535; + this.state = 2167; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2536; + this.state = 2168; localContext._constraintName = this.id_(); } } - this.state = 2539; + this.state = 2171; this.tableLevelConstraint(); - this.state = 2541; + this.state = 2173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) { { - this.state = 2540; + this.state = 2172; this.constraintOptsCreate(); } } @@ -10357,22 +10065,22 @@ export class HiveSqlParser extends SQLParserBase { } public alterConstraintWithName(): AlterConstraintWithNameContext { let localContext = new AlterConstraintWithNameContext(this.context, this.state); - this.enterRule(localContext, 306, HiveSqlParser.RULE_alterConstraintWithName); + this.enterRule(localContext, 278, HiveSqlParser.RULE_alterConstraintWithName); try { this.enterOuterAlt(localContext, 1); { - this.state = 2543; + this.state = 2175; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2544; + this.state = 2176; localContext._constraintName = this.id_(); - this.state = 2545; + this.state = 2177; this.tableLevelConstraint(); - this.state = 2547; + this.state = 2179; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { case 1: { - this.state = 2546; + this.state = 2178; this.constraintOptsAlter(); } break; @@ -10395,23 +10103,23 @@ export class HiveSqlParser extends SQLParserBase { } public tableLevelConstraint(): TableLevelConstraintContext { let localContext = new TableLevelConstraintContext(this.context, this.state); - this.enterRule(localContext, 308, HiveSqlParser.RULE_tableLevelConstraint); + this.enterRule(localContext, 280, HiveSqlParser.RULE_tableLevelConstraint); try { - this.state = 2551; + this.state = 2183; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_PRIMARY: case HiveSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 1); { - this.state = 2549; + this.state = 2181; this.pkUkConstraint(); } break; case HiveSqlParser.KW_CHECK: this.enterOuterAlt(localContext, 2); { - this.state = 2550; + this.state = 2182; this.checkConstraint(); } break; @@ -10435,13 +10143,13 @@ export class HiveSqlParser extends SQLParserBase { } public pkUkConstraint(): PkUkConstraintContext { let localContext = new PkUkConstraintContext(this.context, this.state); - this.enterRule(localContext, 310, HiveSqlParser.RULE_pkUkConstraint); + this.enterRule(localContext, 282, HiveSqlParser.RULE_pkUkConstraint); try { this.enterOuterAlt(localContext, 1); { - this.state = 2553; + this.state = 2185; this.tableConstraintType(); - this.state = 2554; + this.state = 2186; localContext._pkCols = this.columnParenthesesList(); } } @@ -10461,17 +10169,17 @@ export class HiveSqlParser extends SQLParserBase { } public checkConstraint(): CheckConstraintContext { let localContext = new CheckConstraintContext(this.context, this.state); - this.enterRule(localContext, 312, HiveSqlParser.RULE_checkConstraint); + this.enterRule(localContext, 284, HiveSqlParser.RULE_checkConstraint); try { this.enterOuterAlt(localContext, 1); { - this.state = 2556; + this.state = 2188; this.match(HiveSqlParser.KW_CHECK); - this.state = 2557; + this.state = 2189; this.match(HiveSqlParser.LPAREN); - this.state = 2558; + this.state = 2190; this.expression(); - this.state = 2559; + this.state = 2191; this.match(HiveSqlParser.RPAREN); } } @@ -10491,41 +10199,41 @@ export class HiveSqlParser extends SQLParserBase { } public createForeignKey(): CreateForeignKeyContext { let localContext = new CreateForeignKeyContext(this.context, this.state); - this.enterRule(localContext, 314, HiveSqlParser.RULE_createForeignKey); + this.enterRule(localContext, 286, HiveSqlParser.RULE_createForeignKey); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2563; + this.state = 2195; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2561; + this.state = 2193; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2562; + this.state = 2194; localContext._constraintName = this.id_(); } } - this.state = 2565; + this.state = 2197; this.match(HiveSqlParser.KW_FOREIGN); - this.state = 2566; + this.state = 2198; this.match(HiveSqlParser.KW_KEY); - this.state = 2567; + this.state = 2199; localContext._fkCols = this.columnParenthesesList(); - this.state = 2568; + this.state = 2200; this.match(HiveSqlParser.KW_REFERENCES); - this.state = 2569; + this.state = 2201; localContext._tabName = this.tableName(); - this.state = 2570; + this.state = 2202; localContext._parCols = this.columnParenthesesList(); - this.state = 2572; + this.state = 2204; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) { { - this.state = 2571; + this.state = 2203; this.constraintOptsCreate(); } } @@ -10548,32 +10256,32 @@ export class HiveSqlParser extends SQLParserBase { } public alterForeignKeyWithName(): AlterForeignKeyWithNameContext { let localContext = new AlterForeignKeyWithNameContext(this.context, this.state); - this.enterRule(localContext, 316, HiveSqlParser.RULE_alterForeignKeyWithName); + this.enterRule(localContext, 288, HiveSqlParser.RULE_alterForeignKeyWithName); try { this.enterOuterAlt(localContext, 1); { - this.state = 2574; + this.state = 2206; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2575; + this.state = 2207; localContext._constraintName = this.id_(); - this.state = 2576; + this.state = 2208; this.match(HiveSqlParser.KW_FOREIGN); - this.state = 2577; + this.state = 2209; this.match(HiveSqlParser.KW_KEY); - this.state = 2578; + this.state = 2210; localContext._fkCols = this.columnParenthesesList(); - this.state = 2579; + this.state = 2211; this.match(HiveSqlParser.KW_REFERENCES); - this.state = 2580; + this.state = 2212; localContext._tabName = this.tableName(); - this.state = 2581; + this.state = 2213; localContext._parCols = this.columnParenthesesList(); - this.state = 2583; + this.state = 2215; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 222, this.context) ) { case 1: { - this.state = 2582; + this.state = 2214; this.constraintOptsAlter(); } break; @@ -10596,9 +10304,9 @@ export class HiveSqlParser extends SQLParserBase { } public skewedValueElement(): SkewedValueElementContext { let localContext = new SkewedValueElementContext(this.context, this.state); - this.enterRule(localContext, 318, HiveSqlParser.RULE_skewedValueElement); + this.enterRule(localContext, 290, HiveSqlParser.RULE_skewedValueElement); try { - this.state = 2587; + this.state = 2219; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_CURRENT_DATE: @@ -10614,17 +10322,18 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.IntegralLiteral: case HiveSqlParser.NumberLiteral: case HiveSqlParser.Number: + case HiveSqlParser.Identifier: case HiveSqlParser.CharSetName: this.enterOuterAlt(localContext, 1); { - this.state = 2585; - this.skewedColumnValues(); + this.state = 2217; + this.constantList(); } break; case HiveSqlParser.LPAREN: this.enterOuterAlt(localContext, 2); { - this.state = 2586; + this.state = 2218; this.skewedColumnValuePairList(); } break; @@ -10648,26 +10357,26 @@ export class HiveSqlParser extends SQLParserBase { } public skewedColumnValuePairList(): SkewedColumnValuePairListContext { let localContext = new SkewedColumnValuePairListContext(this.context, this.state); - this.enterRule(localContext, 320, HiveSqlParser.RULE_skewedColumnValuePairList); + this.enterRule(localContext, 292, HiveSqlParser.RULE_skewedColumnValuePairList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2589; + this.state = 2221; this.skewedColumnValuePair(); - this.state = 2594; + this.state = 2226; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2590; + this.state = 2222; this.match(HiveSqlParser.COMMA); - this.state = 2591; + this.state = 2223; this.skewedColumnValuePair(); } } - this.state = 2596; + this.state = 2228; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10689,15 +10398,15 @@ export class HiveSqlParser extends SQLParserBase { } public skewedColumnValuePair(): SkewedColumnValuePairContext { let localContext = new SkewedColumnValuePairContext(this.context, this.state); - this.enterRule(localContext, 322, HiveSqlParser.RULE_skewedColumnValuePair); + this.enterRule(localContext, 294, HiveSqlParser.RULE_skewedColumnValuePair); try { this.enterOuterAlt(localContext, 1); { - this.state = 2597; + this.state = 2229; this.match(HiveSqlParser.LPAREN); - this.state = 2598; - localContext._colValues = this.skewedColumnValues(); - this.state = 2599; + this.state = 2230; + localContext._colValues = this.constantList(); + this.state = 2231; this.match(HiveSqlParser.RPAREN); } } @@ -10715,28 +10424,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public skewedColumnValues(): SkewedColumnValuesContext { - let localContext = new SkewedColumnValuesContext(this.context, this.state); - this.enterRule(localContext, 324, HiveSqlParser.RULE_skewedColumnValues); + public constantList(): ConstantListContext { + let localContext = new ConstantListContext(this.context, this.state); + this.enterRule(localContext, 296, HiveSqlParser.RULE_constantList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2601; - this.skewedColumnValue(); - this.state = 2606; + this.state = 2233; + this.constant(); + this.state = 2238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2602; + this.state = 2234; this.match(HiveSqlParser.COMMA); - this.state = 2603; - this.skewedColumnValue(); + this.state = 2235; + this.constant(); } } - this.state = 2608; + this.state = 2240; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10756,90 +10465,14 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public skewedColumnValue(): SkewedColumnValueContext { - let localContext = new SkewedColumnValueContext(this.context, this.state); - this.enterRule(localContext, 326, HiveSqlParser.RULE_skewedColumnValue); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2609; - this.constant(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public skewedValueLocationElement(): SkewedValueLocationElementContext { - let localContext = new SkewedValueLocationElementContext(this.context, this.state); - this.enterRule(localContext, 328, HiveSqlParser.RULE_skewedValueLocationElement); - try { - this.state = 2613; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_CURRENT_DATE: - case HiveSqlParser.KW_CURRENT_TIMESTAMP: - case HiveSqlParser.KW_DATE: - case HiveSqlParser.KW_FALSE: - case HiveSqlParser.KW_NULL: - case HiveSqlParser.KW_TIMESTAMP: - case HiveSqlParser.KW_TIMESTAMPLOCALTZ: - case HiveSqlParser.KW_TRUE: - case HiveSqlParser.QUESTION: - case HiveSqlParser.StringLiteral: - case HiveSqlParser.IntegralLiteral: - case HiveSqlParser.NumberLiteral: - case HiveSqlParser.Number: - case HiveSqlParser.CharSetName: - this.enterOuterAlt(localContext, 1); - { - this.state = 2611; - this.skewedColumnValue(); - } - break; - case HiveSqlParser.LPAREN: - this.enterOuterAlt(localContext, 2); - { - this.state = 2612; - this.skewedColumnValuePair(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public orderSpecification(): OrderSpecificationContext { let localContext = new OrderSpecificationContext(this.context, this.state); - this.enterRule(localContext, 330, HiveSqlParser.RULE_orderSpecification); + this.enterRule(localContext, 298, HiveSqlParser.RULE_orderSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2615; + this.state = 2241; _la = this.tokenStream.LA(1); if(!(_la === 18 || _la === 89)) { this.errorHandler.recoverInline(this); @@ -10866,14 +10499,14 @@ export class HiveSqlParser extends SQLParserBase { } public nullOrdering(): NullOrderingContext { let localContext = new NullOrderingContext(this.context, this.state); - this.enterRule(localContext, 332, HiveSqlParser.RULE_nullOrdering); + this.enterRule(localContext, 300, HiveSqlParser.RULE_nullOrdering); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2617; + this.state = 2243; this.match(HiveSqlParser.KW_NULLS); - this.state = 2618; + this.state = 2244; _la = this.tokenStream.LA(1); if(!(_la === 130 || _la === 177)) { this.errorHandler.recoverInline(this); @@ -10900,29 +10533,29 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameOrder(): ColumnNameOrderContext { let localContext = new ColumnNameOrderContext(this.context, this.state); - this.enterRule(localContext, 334, HiveSqlParser.RULE_columnNameOrder); + this.enterRule(localContext, 302, HiveSqlParser.RULE_columnNameOrder); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2620; + this.state = 2246; this.columnName(); - this.state = 2622; + this.state = 2248; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18 || _la === 89) { { - this.state = 2621; + this.state = 2247; localContext._orderSpec = this.orderSpecification(); } } - this.state = 2625; + this.state = 2251; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 2624; + this.state = 2250; localContext._nullSpec = this.nullOrdering(); } } @@ -10945,26 +10578,26 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameCommentList(): ColumnNameCommentListContext { let localContext = new ColumnNameCommentListContext(this.context, this.state); - this.enterRule(localContext, 336, HiveSqlParser.RULE_columnNameCommentList); + this.enterRule(localContext, 304, HiveSqlParser.RULE_columnNameCommentList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2627; + this.state = 2253; this.columnNameComment(); - this.state = 2632; + this.state = 2258; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2628; + this.state = 2254; this.match(HiveSqlParser.COMMA); - this.state = 2629; + this.state = 2255; this.columnNameComment(); } } - this.state = 2634; + this.state = 2260; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -10986,21 +10619,21 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameComment(): ColumnNameCommentContext { let localContext = new ColumnNameCommentContext(this.context, this.state); - this.enterRule(localContext, 338, HiveSqlParser.RULE_columnNameComment); + this.enterRule(localContext, 306, HiveSqlParser.RULE_columnNameComment); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2635; + this.state = 2261; localContext._colName = this.columnNameCreate(); - this.state = 2638; + this.state = 2264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2636; + this.state = 2262; this.match(HiveSqlParser.KW_COMMENT); - this.state = 2637; + this.state = 2263; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -11021,77 +10654,45 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public orderSpecificationRewrite(): OrderSpecificationRewriteContext { - let localContext = new OrderSpecificationRewriteContext(this.context, this.state); - this.enterRule(localContext, 340, HiveSqlParser.RULE_orderSpecificationRewrite); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2640; - _la = this.tokenStream.LA(1); - if(!(_la === 18 || _la === 89)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public columnRefOrder(): ColumnRefOrderContext { let localContext = new ColumnRefOrderContext(this.context, this.state); - this.enterRule(localContext, 342, HiveSqlParser.RULE_columnRefOrder); + this.enterRule(localContext, 308, HiveSqlParser.RULE_columnRefOrder); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2644; + this.state = 2268; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 233, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 2642; + this.state = 2266; this.columnName(); } break; case 2: { - this.state = 2643; + this.state = 2267; this.expression(); } break; } - this.state = 2647; + this.state = 2271; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { case 1: { - this.state = 2646; - localContext._orderSpec = this.orderSpecificationRewrite(); + this.state = 2270; + localContext._orderSpec = this.orderSpecification(); } break; } - this.state = 2650; + this.state = 2274; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 2649; + this.state = 2273; localContext._nullSpec = this.nullOrdering(); } } @@ -11114,23 +10715,23 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameType(): ColumnNameTypeContext { let localContext = new ColumnNameTypeContext(this.context, this.state); - this.enterRule(localContext, 344, HiveSqlParser.RULE_columnNameType); + this.enterRule(localContext, 310, HiveSqlParser.RULE_columnNameType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2652; + this.state = 2276; localContext._colName = this.columnNameCreate(); - this.state = 2653; - this.colType(); - this.state = 2656; + this.state = 2277; + this.columnType(); + this.state = 2280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2654; + this.state = 2278; this.match(HiveSqlParser.KW_COMMENT); - this.state = 2655; + this.state = 2279; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -11153,22 +10754,22 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameTypeOrConstraint(): ColumnNameTypeOrConstraintContext { let localContext = new ColumnNameTypeOrConstraintContext(this.context, this.state); - this.enterRule(localContext, 346, HiveSqlParser.RULE_columnNameTypeOrConstraint); + this.enterRule(localContext, 312, HiveSqlParser.RULE_columnNameTypeOrConstraint); try { - this.state = 2660; + this.state = 2284; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2658; + this.state = 2282; this.tableConstraint(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2659; + this.state = 2283; this.columnNameTypeConstraint(); } break; @@ -11190,22 +10791,22 @@ export class HiveSqlParser extends SQLParserBase { } public tableConstraint(): TableConstraintContext { let localContext = new TableConstraintContext(this.context, this.state); - this.enterRule(localContext, 348, HiveSqlParser.RULE_tableConstraint); + this.enterRule(localContext, 314, HiveSqlParser.RULE_tableConstraint); try { - this.state = 2664; + this.state = 2288; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2662; + this.state = 2286; this.createForeignKey(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2663; + this.state = 2287; this.createConstraint(); } break; @@ -11227,33 +10828,33 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameTypeConstraint(): ColumnNameTypeConstraintContext { let localContext = new ColumnNameTypeConstraintContext(this.context, this.state); - this.enterRule(localContext, 350, HiveSqlParser.RULE_columnNameTypeConstraint); + this.enterRule(localContext, 316, HiveSqlParser.RULE_columnNameTypeConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2666; + this.state = 2290; localContext._colName = this.columnNameCreate(); - this.state = 2667; - this.colType(); - this.state = 2669; + this.state = 2291; + this.columnType(); + this.state = 2293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) { { - this.state = 2668; + this.state = 2292; this.columnConstraint(); } } - this.state = 2673; + this.state = 2297; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2671; + this.state = 2295; this.match(HiveSqlParser.KW_COMMENT); - this.state = 2672; + this.state = 2296; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -11276,22 +10877,22 @@ export class HiveSqlParser extends SQLParserBase { } public columnConstraint(): ColumnConstraintContext { let localContext = new ColumnConstraintContext(this.context, this.state); - this.enterRule(localContext, 352, HiveSqlParser.RULE_columnConstraint); + this.enterRule(localContext, 318, HiveSqlParser.RULE_columnConstraint); try { - this.state = 2677; + this.state = 2301; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2675; + this.state = 2299; this.foreignKeyConstraint(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2676; + this.state = 2300; this.colConstraint(); } break; @@ -11313,39 +10914,39 @@ export class HiveSqlParser extends SQLParserBase { } public foreignKeyConstraint(): ForeignKeyConstraintContext { let localContext = new ForeignKeyConstraintContext(this.context, this.state); - this.enterRule(localContext, 354, HiveSqlParser.RULE_foreignKeyConstraint); + this.enterRule(localContext, 320, HiveSqlParser.RULE_foreignKeyConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2681; + this.state = 2305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2679; + this.state = 2303; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2680; + this.state = 2304; localContext._constraintName = this.id_(); } } - this.state = 2683; + this.state = 2307; this.match(HiveSqlParser.KW_REFERENCES); - this.state = 2684; + this.state = 2308; localContext._tabName = this.tableName(); - this.state = 2685; + this.state = 2309; this.match(HiveSqlParser.LPAREN); - this.state = 2686; + this.state = 2310; localContext._colName = this.columnName(); - this.state = 2687; + this.state = 2311; this.match(HiveSqlParser.RPAREN); - this.state = 2689; + this.state = 2313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) { { - this.state = 2688; + this.state = 2312; this.constraintOptsCreate(); } } @@ -11368,31 +10969,31 @@ export class HiveSqlParser extends SQLParserBase { } public colConstraint(): ColConstraintContext { let localContext = new ColConstraintContext(this.context, this.state); - this.enterRule(localContext, 356, HiveSqlParser.RULE_colConstraint); + this.enterRule(localContext, 322, HiveSqlParser.RULE_colConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2693; + this.state = 2317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2691; + this.state = 2315; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2692; + this.state = 2316; localContext._constraintName = this.id_(); } } - this.state = 2695; + this.state = 2319; this.columnConstraintType(); - this.state = 2697; + this.state = 2321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 45059) !== 0) || _la === 216) { { - this.state = 2696; + this.state = 2320; this.constraintOptsCreate(); } } @@ -11415,22 +11016,22 @@ export class HiveSqlParser extends SQLParserBase { } public alterColumnConstraint(): AlterColumnConstraintContext { let localContext = new AlterColumnConstraintContext(this.context, this.state); - this.enterRule(localContext, 358, HiveSqlParser.RULE_alterColumnConstraint); + this.enterRule(localContext, 324, HiveSqlParser.RULE_alterColumnConstraint); try { - this.state = 2701; + this.state = 2325; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 246, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2699; + this.state = 2323; this.alterForeignKeyConstraint(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2700; + this.state = 2324; this.alterColConstraint(); } break; @@ -11452,39 +11053,39 @@ export class HiveSqlParser extends SQLParserBase { } public alterForeignKeyConstraint(): AlterForeignKeyConstraintContext { let localContext = new AlterForeignKeyConstraintContext(this.context, this.state); - this.enterRule(localContext, 360, HiveSqlParser.RULE_alterForeignKeyConstraint); + this.enterRule(localContext, 326, HiveSqlParser.RULE_alterForeignKeyConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2705; + this.state = 2329; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2703; + this.state = 2327; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2704; + this.state = 2328; localContext._constraintName = this.id_(); } } - this.state = 2707; + this.state = 2331; this.match(HiveSqlParser.KW_REFERENCES); - this.state = 2708; + this.state = 2332; localContext._tabName = this.tableName(); - this.state = 2709; + this.state = 2333; this.match(HiveSqlParser.LPAREN); - this.state = 2710; + this.state = 2334; localContext._colName = this.columnName(); - this.state = 2711; + this.state = 2335; this.match(HiveSqlParser.RPAREN); - this.state = 2713; + this.state = 2337; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { case 1: { - this.state = 2712; + this.state = 2336; this.constraintOptsAlter(); } break; @@ -11507,31 +11108,31 @@ export class HiveSqlParser extends SQLParserBase { } public alterColConstraint(): AlterColConstraintContext { let localContext = new AlterColConstraintContext(this.context, this.state); - this.enterRule(localContext, 362, HiveSqlParser.RULE_alterColConstraint); + this.enterRule(localContext, 328, HiveSqlParser.RULE_alterColConstraint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2717; + this.state = 2341; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 55) { { - this.state = 2715; + this.state = 2339; this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 2716; + this.state = 2340; localContext._constraintName = this.id_(); } } - this.state = 2719; + this.state = 2343; this.columnConstraintType(); - this.state = 2721; + this.state = 2345; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: { - this.state = 2720; + this.state = 2344; this.constraintOptsAlter(); } break; @@ -11554,33 +11155,33 @@ export class HiveSqlParser extends SQLParserBase { } public columnConstraintType(): ColumnConstraintTypeContext { let localContext = new ColumnConstraintTypeContext(this.context, this.state); - this.enterRule(localContext, 364, HiveSqlParser.RULE_columnConstraintType); + this.enterRule(localContext, 330, HiveSqlParser.RULE_columnConstraintType); try { - this.state = 2729; + this.state = 2353; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_NOT: this.enterOuterAlt(localContext, 1); { - this.state = 2723; + this.state = 2347; this.match(HiveSqlParser.KW_NOT); - this.state = 2724; + this.state = 2348; this.match(HiveSqlParser.KW_NULL); } break; case HiveSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 2); { - this.state = 2725; + this.state = 2349; this.match(HiveSqlParser.KW_DEFAULT); - this.state = 2726; + this.state = 2350; this.defaultVal(); } break; case HiveSqlParser.KW_CHECK: this.enterOuterAlt(localContext, 3); { - this.state = 2727; + this.state = 2351; this.checkConstraint(); } break; @@ -11588,7 +11189,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 4); { - this.state = 2728; + this.state = 2352; this.tableConstraintType(); } break; @@ -11612,29 +11213,29 @@ export class HiveSqlParser extends SQLParserBase { } public defaultVal(): DefaultValContext { let localContext = new DefaultValContext(this.context, this.state); - this.enterRule(localContext, 366, HiveSqlParser.RULE_defaultVal); + this.enterRule(localContext, 332, HiveSqlParser.RULE_defaultVal); try { - this.state = 2734; + this.state = 2358; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2731; + this.state = 2355; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2732; + this.state = 2356; this.function_(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2733; + this.state = 2357; this.castExpression(); } break; @@ -11656,24 +11257,24 @@ export class HiveSqlParser extends SQLParserBase { } public tableConstraintType(): TableConstraintTypeContext { let localContext = new TableConstraintTypeContext(this.context, this.state); - this.enterRule(localContext, 368, HiveSqlParser.RULE_tableConstraintType); + this.enterRule(localContext, 334, HiveSqlParser.RULE_tableConstraintType); try { - this.state = 2739; + this.state = 2363; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_PRIMARY: this.enterOuterAlt(localContext, 1); { - this.state = 2736; + this.state = 2360; this.match(HiveSqlParser.KW_PRIMARY); - this.state = 2737; + this.state = 2361; this.match(HiveSqlParser.KW_KEY); } break; case HiveSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 2); { - this.state = 2738; + this.state = 2362; this.match(HiveSqlParser.KW_UNIQUE); } break; @@ -11697,19 +11298,19 @@ export class HiveSqlParser extends SQLParserBase { } public constraintOptsCreate(): ConstraintOptsCreateContext { let localContext = new ConstraintOptsCreateContext(this.context, this.state); - this.enterRule(localContext, 370, HiveSqlParser.RULE_constraintOptsCreate); + this.enterRule(localContext, 336, HiveSqlParser.RULE_constraintOptsCreate); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2741; + this.state = 2365; this.enableValidateSpecification(); - this.state = 2743; + this.state = 2367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 214 || _la === 272) { { - this.state = 2742; + this.state = 2366; this.relySpecification(); } } @@ -11732,19 +11333,19 @@ export class HiveSqlParser extends SQLParserBase { } public constraintOptsAlter(): ConstraintOptsAlterContext { let localContext = new ConstraintOptsAlterContext(this.context, this.state); - this.enterRule(localContext, 372, HiveSqlParser.RULE_constraintOptsAlter); + this.enterRule(localContext, 338, HiveSqlParser.RULE_constraintOptsAlter); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2745; + this.state = 2369; this.enableValidateSpecification(); - this.state = 2747; + this.state = 2371; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 214 || _la === 272) { { - this.state = 2746; + this.state = 2370; this.relySpecification(); } } @@ -11767,25 +11368,25 @@ export class HiveSqlParser extends SQLParserBase { } public columnNameColonType(): ColumnNameColonTypeContext { let localContext = new ColumnNameColonTypeContext(this.context, this.state); - this.enterRule(localContext, 374, HiveSqlParser.RULE_columnNameColonType); + this.enterRule(localContext, 340, HiveSqlParser.RULE_columnNameColonType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2749; + this.state = 2373; localContext._colName = this.columnNameCreate(); - this.state = 2750; + this.state = 2374; this.match(HiveSqlParser.COLON); - this.state = 2751; - this.colType(); - this.state = 2754; + this.state = 2375; + this.columnType(); + this.state = 2378; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 2752; + this.state = 2376; this.match(HiveSqlParser.KW_COMMENT); - this.state = 2753; + this.state = 2377; localContext._comment = this.match(HiveSqlParser.StringLiteral); } } @@ -11806,13 +11407,13 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public colType(): ColTypeContext { - let localContext = new ColTypeContext(this.context, this.state); - this.enterRule(localContext, 376, HiveSqlParser.RULE_colType); + public columnType(): ColumnTypeContext { + let localContext = new ColumnTypeContext(this.context, this.state); + this.enterRule(localContext, 342, HiveSqlParser.RULE_columnType); try { this.enterOuterAlt(localContext, 1); { - this.state = 2756; + this.state = 2380; this.type_(); } } @@ -11830,28 +11431,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public colTypeList(): ColTypeListContext { - let localContext = new ColTypeListContext(this.context, this.state); - this.enterRule(localContext, 378, HiveSqlParser.RULE_colTypeList); + public columnTypeList(): ColumnTypeListContext { + let localContext = new ColumnTypeListContext(this.context, this.state); + this.enterRule(localContext, 344, HiveSqlParser.RULE_columnTypeList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2758; - this.colType(); - this.state = 2763; + this.state = 2382; + this.columnType(); + this.state = 2387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2759; + this.state = 2383; this.match(HiveSqlParser.COMMA); - this.state = 2760; - this.colType(); + this.state = 2384; + this.columnType(); } } - this.state = 2765; + this.state = 2389; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -11873,9 +11474,9 @@ export class HiveSqlParser extends SQLParserBase { } public type_(): TypeContext { let localContext = new TypeContext(this.context, this.state); - this.enterRule(localContext, 380, HiveSqlParser.RULE_type); + this.enterRule(localContext, 346, HiveSqlParser.RULE_type); try { - this.state = 2771; + this.state = 2395; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_BIGINT: @@ -11900,35 +11501,35 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_VARCHAR: this.enterOuterAlt(localContext, 1); { - this.state = 2766; + this.state = 2390; this.primitiveType(); } break; case HiveSqlParser.KW_ARRAY: this.enterOuterAlt(localContext, 2); { - this.state = 2767; + this.state = 2391; this.listType(); } break; case HiveSqlParser.KW_STRUCT: this.enterOuterAlt(localContext, 3); { - this.state = 2768; + this.state = 2392; this.structType(); } break; case HiveSqlParser.KW_MAP: this.enterOuterAlt(localContext, 4); { - this.state = 2769; + this.state = 2393; this.mapType(); } break; case HiveSqlParser.KW_UNIONTYPE: this.enterOuterAlt(localContext, 5); { - this.state = 2770; + this.state = 2394; this.unionType(); } break; @@ -11952,79 +11553,79 @@ export class HiveSqlParser extends SQLParserBase { } public primitiveType(): PrimitiveTypeContext { let localContext = new PrimitiveTypeContext(this.context, this.state); - this.enterRule(localContext, 382, HiveSqlParser.RULE_primitiveType); + this.enterRule(localContext, 348, HiveSqlParser.RULE_primitiveType); let _la: number; try { - this.state = 2810; + this.state = 2434; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2773; + this.state = 2397; this.match(HiveSqlParser.KW_TINYINT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2774; + this.state = 2398; this.match(HiveSqlParser.KW_SMALLINT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2775; + this.state = 2399; this.match(HiveSqlParser.KW_INT); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2776; + this.state = 2400; this.match(HiveSqlParser.KW_INTEGER); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2777; + this.state = 2401; this.match(HiveSqlParser.KW_BIGINT); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2778; + this.state = 2402; this.match(HiveSqlParser.KW_BOOLEAN); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2779; + this.state = 2403; this.match(HiveSqlParser.KW_FLOAT); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2780; + this.state = 2404; this.match(HiveSqlParser.KW_REAL); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2781; + this.state = 2405; this.match(HiveSqlParser.KW_DOUBLE); - this.state = 2783; + this.state = 2407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 248) { { - this.state = 2782; + this.state = 2406; this.match(HiveSqlParser.KW_PRECISION); } } @@ -12034,87 +11635,87 @@ export class HiveSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 2785; + this.state = 2409; this.match(HiveSqlParser.KW_DATE); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 2786; + this.state = 2410; this.match(HiveSqlParser.KW_DATETIME); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 2787; + this.state = 2411; this.match(HiveSqlParser.KW_TIMESTAMP); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 2788; + this.state = 2412; this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 2789; + this.state = 2413; this.match(HiveSqlParser.KW_TIMESTAMP); - this.state = 2790; + this.state = 2414; this.match(HiveSqlParser.KW_WITH); - this.state = 2791; + this.state = 2415; this.match(HiveSqlParser.KW_LOCAL); - this.state = 2792; + this.state = 2416; this.match(HiveSqlParser.KW_TIME); - this.state = 2793; + this.state = 2417; this.match(HiveSqlParser.KW_ZONE); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 2794; + this.state = 2418; this.match(HiveSqlParser.KW_STRING); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 2795; + this.state = 2419; this.match(HiveSqlParser.KW_BINARY); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 2796; + this.state = 2420; this.decimal(); - this.state = 2804; + this.state = 2428; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 261, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { case 1: { - this.state = 2797; + this.state = 2421; this.match(HiveSqlParser.LPAREN); - this.state = 2798; + this.state = 2422; localContext._prec = this.match(HiveSqlParser.Number); - this.state = 2801; + this.state = 2425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 397) { { - this.state = 2799; + this.state = 2423; this.match(HiveSqlParser.COMMA); - this.state = 2800; + this.state = 2424; localContext._scale = this.match(HiveSqlParser.Number); } } - this.state = 2803; + this.state = 2427; this.match(HiveSqlParser.RPAREN); } break; @@ -12124,7 +11725,7 @@ export class HiveSqlParser extends SQLParserBase { case 18: this.enterOuterAlt(localContext, 18); { - this.state = 2806; + this.state = 2430; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 376)) { this.errorHandler.recoverInline(this); @@ -12133,11 +11734,11 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2807; + this.state = 2431; this.match(HiveSqlParser.LPAREN); - this.state = 2808; + this.state = 2432; localContext._length = this.match(HiveSqlParser.Number); - this.state = 2809; + this.state = 2433; this.match(HiveSqlParser.RPAREN); } break; @@ -12159,17 +11760,17 @@ export class HiveSqlParser extends SQLParserBase { } public listType(): ListTypeContext { let localContext = new ListTypeContext(this.context, this.state); - this.enterRule(localContext, 384, HiveSqlParser.RULE_listType); + this.enterRule(localContext, 350, HiveSqlParser.RULE_listType); try { this.enterOuterAlt(localContext, 1); { - this.state = 2812; + this.state = 2436; this.match(HiveSqlParser.KW_ARRAY); - this.state = 2813; + this.state = 2437; this.match(HiveSqlParser.LESSTHAN); - this.state = 2814; + this.state = 2438; this.type_(); - this.state = 2815; + this.state = 2439; this.match(HiveSqlParser.GREATERTHAN); } } @@ -12189,17 +11790,17 @@ export class HiveSqlParser extends SQLParserBase { } public structType(): StructTypeContext { let localContext = new StructTypeContext(this.context, this.state); - this.enterRule(localContext, 386, HiveSqlParser.RULE_structType); + this.enterRule(localContext, 352, HiveSqlParser.RULE_structType); try { this.enterOuterAlt(localContext, 1); { - this.state = 2817; + this.state = 2441; this.match(HiveSqlParser.KW_STRUCT); - this.state = 2818; + this.state = 2442; this.match(HiveSqlParser.LESSTHAN); - this.state = 2819; + this.state = 2443; this.columnNameColonTypeList(); - this.state = 2820; + this.state = 2444; this.match(HiveSqlParser.GREATERTHAN); } } @@ -12219,21 +11820,21 @@ export class HiveSqlParser extends SQLParserBase { } public mapType(): MapTypeContext { let localContext = new MapTypeContext(this.context, this.state); - this.enterRule(localContext, 388, HiveSqlParser.RULE_mapType); + this.enterRule(localContext, 354, HiveSqlParser.RULE_mapType); try { this.enterOuterAlt(localContext, 1); { - this.state = 2822; + this.state = 2446; this.match(HiveSqlParser.KW_MAP); - this.state = 2823; + this.state = 2447; this.match(HiveSqlParser.LESSTHAN); - this.state = 2824; + this.state = 2448; localContext._left = this.primitiveType(); - this.state = 2825; + this.state = 2449; this.match(HiveSqlParser.COMMA); - this.state = 2826; + this.state = 2450; localContext._right = this.type_(); - this.state = 2827; + this.state = 2451; this.match(HiveSqlParser.GREATERTHAN); } } @@ -12253,17 +11854,17 @@ export class HiveSqlParser extends SQLParserBase { } public unionType(): UnionTypeContext { let localContext = new UnionTypeContext(this.context, this.state); - this.enterRule(localContext, 390, HiveSqlParser.RULE_unionType); + this.enterRule(localContext, 356, HiveSqlParser.RULE_unionType); try { this.enterOuterAlt(localContext, 1); { - this.state = 2829; + this.state = 2453; this.match(HiveSqlParser.KW_UNIONTYPE); - this.state = 2830; + this.state = 2454; this.match(HiveSqlParser.LESSTHAN); - this.state = 2831; - this.colTypeList(); - this.state = 2832; + this.state = 2455; + this.columnTypeList(); + this.state = 2456; this.match(HiveSqlParser.GREATERTHAN); } } @@ -12283,12 +11884,12 @@ export class HiveSqlParser extends SQLParserBase { } public setOperator(): SetOperatorContext { let localContext = new SetOperatorContext(this.context, this.state); - this.enterRule(localContext, 392, HiveSqlParser.RULE_setOperator); + this.enterRule(localContext, 358, HiveSqlParser.RULE_setOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2834; + this.state = 2458; _la = this.tokenStream.LA(1); if(!(_la === 112 || _la === 164 || _la === 205 || _la === 356)) { this.errorHandler.recoverInline(this); @@ -12297,12 +11898,12 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2836; + this.state = 2460; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 96) { { - this.state = 2835; + this.state = 2459; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 96)) { this.errorHandler.recoverInline(this); @@ -12332,22 +11933,22 @@ export class HiveSqlParser extends SQLParserBase { } public queryStatementExpression(): QueryStatementExpressionContext { let localContext = new QueryStatementExpressionContext(this.context, this.state); - this.enterRule(localContext, 394, HiveSqlParser.RULE_queryStatementExpression); + this.enterRule(localContext, 360, HiveSqlParser.RULE_queryStatementExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2839; + this.state = 2463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 387) { { - this.state = 2838; + this.state = 2462; localContext._w = this.withClause(); } } - this.state = 2841; + this.state = 2465; this.queryStatementExpressionBody(); } } @@ -12367,15 +11968,15 @@ export class HiveSqlParser extends SQLParserBase { } public queryStatementExpressionBody(): QueryStatementExpressionBodyContext { let localContext = new QueryStatementExpressionBodyContext(this.context, this.state); - this.enterRule(localContext, 396, HiveSqlParser.RULE_queryStatementExpressionBody); + this.enterRule(localContext, 362, HiveSqlParser.RULE_queryStatementExpressionBody); try { - this.state = 2845; + this.state = 2469; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_FROM: this.enterOuterAlt(localContext, 1); { - this.state = 2843; + this.state = 2467; this.fromStatement(); } break; @@ -12387,7 +11988,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.LPAREN: this.enterOuterAlt(localContext, 2); { - this.state = 2844; + this.state = 2468; this.regularBody(); } break; @@ -12411,28 +12012,28 @@ export class HiveSqlParser extends SQLParserBase { } public withClause(): WithClauseContext { let localContext = new WithClauseContext(this.context, this.state); - this.enterRule(localContext, 398, HiveSqlParser.RULE_withClause); + this.enterRule(localContext, 364, HiveSqlParser.RULE_withClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2847; + this.state = 2471; this.match(HiveSqlParser.KW_WITH); - this.state = 2848; + this.state = 2472; this.cteStatement(); - this.state = 2853; + this.state = 2477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 2849; + this.state = 2473; this.match(HiveSqlParser.COMMA); - this.state = 2850; + this.state = 2474; this.cteStatement(); } } - this.state = 2855; + this.state = 2479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12454,34 +12055,34 @@ export class HiveSqlParser extends SQLParserBase { } public cteStatement(): CteStatementContext { let localContext = new CteStatementContext(this.context, this.state); - this.enterRule(localContext, 400, HiveSqlParser.RULE_cteStatement); + this.enterRule(localContext, 366, HiveSqlParser.RULE_cteStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2856; + this.state = 2480; this.id_(); - this.state = 2861; + this.state = 2485; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 2857; + this.state = 2481; this.match(HiveSqlParser.LPAREN); - this.state = 2858; + this.state = 2482; localContext._colAliases = this.columnNameList(); - this.state = 2859; + this.state = 2483; this.match(HiveSqlParser.RPAREN); } } - this.state = 2863; + this.state = 2487; this.match(HiveSqlParser.KW_AS); - this.state = 2864; + this.state = 2488; this.match(HiveSqlParser.LPAREN); - this.state = 2865; + this.state = 2489; this.queryStatementExpression(); - this.state = 2866; + this.state = 2490; this.match(HiveSqlParser.RPAREN); } } @@ -12501,26 +12102,26 @@ export class HiveSqlParser extends SQLParserBase { } public fromStatement(): FromStatementContext { let localContext = new FromStatementContext(this.context, this.state); - this.enterRule(localContext, 402, HiveSqlParser.RULE_fromStatement); + this.enterRule(localContext, 368, HiveSqlParser.RULE_fromStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2868; + this.state = 2492; this.singleFromStatement(); - this.state = 2874; + this.state = 2498; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 112 || _la === 164 || _la === 205 || _la === 356) { { { - this.state = 2869; + this.state = 2493; localContext._u = this.setOperator(); - this.state = 2870; + this.state = 2494; localContext._r = this.singleFromStatement(); } } - this.state = 2876; + this.state = 2500; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12542,128 +12143,128 @@ export class HiveSqlParser extends SQLParserBase { } public singleFromStatement(): SingleFromStatementContext { let localContext = new SingleFromStatementContext(this.context, this.state); - this.enterRule(localContext, 404, HiveSqlParser.RULE_singleFromStatement); + this.enterRule(localContext, 370, HiveSqlParser.RULE_singleFromStatement); let _la: number; try { - this.state = 2948; + this.state = 2572; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context) ) { case 1: localContext = new FromInsertStmtContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2877; + this.state = 2501; this.fromClause(); - this.state = 2878; + this.state = 2502; this.insertClause(); - this.state = 2879; + this.state = 2503; this.selectClause(); - this.state = 2881; + this.state = 2505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 178 || _la === 397) { { - this.state = 2880; + this.state = 2504; this.lateralView(); } } - this.state = 2884; + this.state = 2508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 384) { { - this.state = 2883; + this.state = 2507; this.whereClause(); } } - this.state = 2887; + this.state = 2511; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 2886; + this.state = 2510; this.groupByClause(); } } - this.state = 2890; + this.state = 2514; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 146) { { - this.state = 2889; + this.state = 2513; this.havingClause(); } } - this.state = 2893; + this.state = 2517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 386) { { - this.state = 2892; + this.state = 2516; this.window_clause(); } } - this.state = 2896; + this.state = 2520; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2895; + this.state = 2519; this.qualifyClause(); } } - this.state = 2899; + this.state = 2523; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 2898; + this.state = 2522; this.orderByClause(); } } - this.state = 2902; + this.state = 2526; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 41) { { - this.state = 2901; + this.state = 2525; this.clusterByClause(); } } - this.state = 2905; + this.state = 2529; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2904; + this.state = 2528; this.distributeByClause(); } } - this.state = 2908; + this.state = 2532; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 2907; + this.state = 2531; this.sortByClause(); } } - this.state = 2911; + this.state = 2535; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 185) { { - this.state = 2910; + this.state = 2534; this.limitClause(); } } @@ -12674,116 +12275,116 @@ export class HiveSqlParser extends SQLParserBase { localContext = new FromSelectStmtContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2913; + this.state = 2537; this.fromClause(); - this.state = 2914; + this.state = 2538; this.selectClause(); - this.state = 2916; + this.state = 2540; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 178 || _la === 397) { { - this.state = 2915; + this.state = 2539; this.lateralView(); } } - this.state = 2919; + this.state = 2543; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 384) { { - this.state = 2918; + this.state = 2542; this.whereClause(); } } - this.state = 2922; + this.state = 2546; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 2921; + this.state = 2545; this.groupByClause(); } } - this.state = 2925; + this.state = 2549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 146) { { - this.state = 2924; + this.state = 2548; this.havingClause(); } } - this.state = 2928; + this.state = 2552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 386) { { - this.state = 2927; + this.state = 2551; this.window_clause(); } } - this.state = 2931; + this.state = 2555; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2930; + this.state = 2554; this.qualifyClause(); } } - this.state = 2934; + this.state = 2558; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 2933; + this.state = 2557; this.orderByClause(); } } - this.state = 2937; + this.state = 2561; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 41) { { - this.state = 2936; + this.state = 2560; this.clusterByClause(); } } - this.state = 2940; + this.state = 2564; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2939; + this.state = 2563; this.distributeByClause(); } } - this.state = 2943; + this.state = 2567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 2942; + this.state = 2566; this.sortByClause(); } } - this.state = 2946; + this.state = 2570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 185) { { - this.state = 2945; + this.state = 2569; this.limitClause(); } } @@ -12808,18 +12409,18 @@ export class HiveSqlParser extends SQLParserBase { } public regularBody(): RegularBodyContext { let localContext = new RegularBodyContext(this.context, this.state); - this.enterRule(localContext, 406, HiveSqlParser.RULE_regularBody); + this.enterRule(localContext, 372, HiveSqlParser.RULE_regularBody); try { - this.state = 2954; + this.state = 2578; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_INSERT: localContext = new InsertStmtContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2950; + this.state = 2574; (localContext as InsertStmtContext)._i = this.insertClause(); - this.state = 2951; + this.state = 2575; (localContext as InsertStmtContext)._s = this.selectStatement(); } break; @@ -12831,7 +12432,7 @@ export class HiveSqlParser extends SQLParserBase { localContext = new SelectStmtContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2953; + this.state = 2577; this.selectStatement(); } break; @@ -12855,10 +12456,10 @@ export class HiveSqlParser extends SQLParserBase { } public atomSelectStatement(): AtomSelectStatementContext { let localContext = new AtomSelectStatementContext(this.context, this.state); - this.enterRule(localContext, 408, HiveSqlParser.RULE_atomSelectStatement); + this.enterRule(localContext, 374, HiveSqlParser.RULE_atomSelectStatement); let _la: number; try { - this.state = 2980; + this.state = 2604; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_MAP: @@ -12866,64 +12467,64 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_SELECT: this.enterOuterAlt(localContext, 1); { - this.state = 2956; + this.state = 2580; localContext._s = this.selectClause(); - this.state = 2958; + this.state = 2582; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 293, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { case 1: { - this.state = 2957; + this.state = 2581; localContext._f = this.fromClause(); } break; } - this.state = 2961; + this.state = 2585; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 384) { { - this.state = 2960; + this.state = 2584; localContext._w = this.whereClause(); } } - this.state = 2964; + this.state = 2588; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 2963; + this.state = 2587; localContext._g = this.groupByClause(); } } - this.state = 2967; + this.state = 2591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 146) { { - this.state = 2966; + this.state = 2590; localContext._h = this.havingClause(); } } - this.state = 2970; + this.state = 2594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 386) { { - this.state = 2969; + this.state = 2593; localContext._win = this.window_clause(); } } - this.state = 2973; + this.state = 2597; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2972; + this.state = 2596; localContext._q = this.qualifyClause(); } } @@ -12933,19 +12534,19 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.LPAREN: this.enterOuterAlt(localContext, 2); { - this.state = 2975; + this.state = 2599; this.match(HiveSqlParser.LPAREN); - this.state = 2976; + this.state = 2600; this.selectStatement(); - this.state = 2977; + this.state = 2601; this.match(HiveSqlParser.RPAREN); } break; case HiveSqlParser.KW_VALUES: this.enterOuterAlt(localContext, 3); { - this.state = 2979; - this.valuesSource(); + this.state = 2603; + this.valuesClause(); } break; default: @@ -12968,69 +12569,69 @@ export class HiveSqlParser extends SQLParserBase { } public selectStatement(): SelectStatementContext { let localContext = new SelectStatementContext(this.context, this.state); - this.enterRule(localContext, 410, HiveSqlParser.RULE_selectStatement); + this.enterRule(localContext, 376, HiveSqlParser.RULE_selectStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2982; + this.state = 2606; localContext._a = this.atomSelectStatement(); - this.state = 2984; + this.state = 2608; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 112 || _la === 164 || _la === 205 || _la === 356) { { - this.state = 2983; + this.state = 2607; localContext._set_ = this.setOpSelectStatement(); } } - this.state = 2987; + this.state = 2611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 2986; + this.state = 2610; localContext._o = this.orderByClause(); } } - this.state = 2990; + this.state = 2614; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 41) { { - this.state = 2989; + this.state = 2613; localContext._c = this.clusterByClause(); } } - this.state = 2993; + this.state = 2617; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2992; + this.state = 2616; localContext._d = this.distributeByClause(); } } - this.state = 2996; + this.state = 2620; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 2995; + this.state = 2619; localContext._sort = this.sortByClause(); } } - this.state = 2999; + this.state = 2623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 185) { { - this.state = 2998; + this.state = 2622; localContext._l = this.limitClause(); } } @@ -13053,24 +12654,24 @@ export class HiveSqlParser extends SQLParserBase { } public setOpSelectStatement(): SetOpSelectStatementContext { let localContext = new SetOpSelectStatementContext(this.context, this.state); - this.enterRule(localContext, 412, HiveSqlParser.RULE_setOpSelectStatement); + this.enterRule(localContext, 378, HiveSqlParser.RULE_setOpSelectStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3004; + this.state = 2628; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3001; + this.state = 2625; localContext._u = this.setOperator(); - this.state = 3002; + this.state = 2626; localContext._b = this.atomSelectStatement(); } } - this.state = 3006; + this.state = 2630; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 112 || _la === 164 || _la === 205 || _la === 356); @@ -13092,22 +12693,22 @@ export class HiveSqlParser extends SQLParserBase { } public selectStatementWithCTE(): SelectStatementWithCTEContext { let localContext = new SelectStatementWithCTEContext(this.context, this.state); - this.enterRule(localContext, 414, HiveSqlParser.RULE_selectStatementWithCTE); + this.enterRule(localContext, 380, HiveSqlParser.RULE_selectStatementWithCTE); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3009; + this.state = 2633; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 387) { { - this.state = 3008; + this.state = 2632; localContext._w = this.withClause(); } } - this.state = 3011; + this.state = 2635; this.selectStatement(); } } @@ -13127,28 +12728,28 @@ export class HiveSqlParser extends SQLParserBase { } public insertClause(): InsertClauseContext { let localContext = new InsertClauseContext(this.context, this.state); - this.enterRule(localContext, 416, HiveSqlParser.RULE_insertClause); + this.enterRule(localContext, 382, HiveSqlParser.RULE_insertClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3013; + this.state = 2637; this.match(HiveSqlParser.KW_INSERT); - this.state = 3030; + this.state = 2654; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_OVERWRITE: { - this.state = 3014; + this.state = 2638; this.match(HiveSqlParser.KW_OVERWRITE); - this.state = 3015; + this.state = 2639; this.destination(); - this.state = 3017; + this.state = 2641; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 3016; + this.state = 2640; this.ifNotExists(); } } @@ -13157,30 +12758,30 @@ export class HiveSqlParser extends SQLParserBase { break; case HiveSqlParser.KW_INTO: { - this.state = 3019; + this.state = 2643; this.match(HiveSqlParser.KW_INTO); - this.state = 3021; + this.state = 2645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 329) { { - this.state = 3020; + this.state = 2644; this.match(HiveSqlParser.KW_TABLE); } } - this.state = 3023; + this.state = 2647; this.tableOrPartition(); - this.state = 3028; + this.state = 2652; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 310, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { case 1: { - this.state = 3024; + this.state = 2648; this.match(HiveSqlParser.LPAREN); - this.state = 3025; + this.state = 2649; localContext._targetCols = this.columnNameList(); - this.state = 3026; + this.state = 2650; this.match(HiveSqlParser.RPAREN); } break; @@ -13208,46 +12809,46 @@ export class HiveSqlParser extends SQLParserBase { } public destination(): DestinationContext { let localContext = new DestinationContext(this.context, this.state); - this.enterRule(localContext, 418, HiveSqlParser.RULE_destination); + this.enterRule(localContext, 384, HiveSqlParser.RULE_destination); let _la: number; try { - this.state = 3045; + this.state = 2669; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_DIRECTORY: case HiveSqlParser.KW_LOCAL: this.enterOuterAlt(localContext, 1); { - this.state = 3033; + this.state = 2657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 3032; + this.state = 2656; localContext._local = this.match(HiveSqlParser.KW_LOCAL); } } - this.state = 3035; + this.state = 2659; this.match(HiveSqlParser.KW_DIRECTORY); - this.state = 3036; + this.state = 2660; this.match(HiveSqlParser.StringLiteral); - this.state = 3038; + this.state = 2662; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 3037; + this.state = 2661; this.tableRowFormat(); } } - this.state = 3041; + this.state = 2665; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 3040; + this.state = 2664; this.tableFileFormat(); } } @@ -13257,9 +12858,9 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 3043; + this.state = 2667; this.match(HiveSqlParser.KW_TABLE); - this.state = 3044; + this.state = 2668; this.tableOrPartition(); } break; @@ -13283,40 +12884,40 @@ export class HiveSqlParser extends SQLParserBase { } public limitClause(): LimitClauseContext { let localContext = new LimitClauseContext(this.context, this.state); - this.enterRule(localContext, 420, HiveSqlParser.RULE_limitClause); + this.enterRule(localContext, 386, HiveSqlParser.RULE_limitClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3047; + this.state = 2671; this.match(HiveSqlParser.KW_LIMIT); - this.state = 3056; + this.state = 2680; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { case 1: { - this.state = 3050; + this.state = 2674; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 316, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { case 1: { - this.state = 3048; + this.state = 2672; localContext._offset = this.match(HiveSqlParser.Number); - this.state = 3049; + this.state = 2673; this.match(HiveSqlParser.COMMA); } break; } - this.state = 3052; + this.state = 2676; localContext._num = this.match(HiveSqlParser.Number); } break; case 2: { - this.state = 3053; + this.state = 2677; localContext._num = this.match(HiveSqlParser.Number); - this.state = 3054; + this.state = 2678; this.match(HiveSqlParser.KW_OFFSET); - this.state = 3055; + this.state = 2679; localContext._offset = this.match(HiveSqlParser.Number); } break; @@ -13337,56 +12938,17 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public deleteStatement(): DeleteStatementContext { - let localContext = new DeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 422, HiveSqlParser.RULE_deleteStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3058; - this.match(HiveSqlParser.KW_DELETE); - this.state = 3059; - this.match(HiveSqlParser.KW_FROM); - this.state = 3060; - this.tableName(); - this.state = 3062; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 384) { - { - this.state = 3061; - this.whereClause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public columnAssignmentClause(): ColumnAssignmentClauseContext { let localContext = new ColumnAssignmentClauseContext(this.context, this.state); - this.enterRule(localContext, 424, HiveSqlParser.RULE_columnAssignmentClause); + this.enterRule(localContext, 388, HiveSqlParser.RULE_columnAssignmentClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3064; + this.state = 2682; this.columnName(); - this.state = 3065; + this.state = 2683; this.match(HiveSqlParser.EQUAL); - this.state = 3066; + this.state = 2684; this.precedencePlusExpressionOrDefault(); } } @@ -13406,22 +12968,22 @@ export class HiveSqlParser extends SQLParserBase { } public precedencePlusExpressionOrDefault(): PrecedencePlusExpressionOrDefaultContext { let localContext = new PrecedencePlusExpressionOrDefaultContext(this.context, this.state); - this.enterRule(localContext, 426, HiveSqlParser.RULE_precedencePlusExpressionOrDefault); + this.enterRule(localContext, 390, HiveSqlParser.RULE_precedencePlusExpressionOrDefault); try { - this.state = 3070; + this.state = 2688; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3068; - this.defaultValue(); + this.state = 2686; + this.match(HiveSqlParser.KW_DEFAULT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3069; + this.state = 2687; this.precedencePlusExpression(); } break; @@ -13443,28 +13005,28 @@ export class HiveSqlParser extends SQLParserBase { } public setColumnsClause(): SetColumnsClauseContext { let localContext = new SetColumnsClauseContext(this.context, this.state); - this.enterRule(localContext, 428, HiveSqlParser.RULE_setColumnsClause); + this.enterRule(localContext, 392, HiveSqlParser.RULE_setColumnsClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3072; + this.state = 2690; this.match(HiveSqlParser.KW_SET); - this.state = 3073; + this.state = 2691; this.columnAssignmentClause(); - this.state = 3078; + this.state = 2696; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 3074; + this.state = 2692; this.match(HiveSqlParser.COMMA); - this.state = 3075; + this.state = 2693; this.columnAssignmentClause(); } } - this.state = 3080; + this.state = 2698; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -13484,78 +13046,99 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public updateStatement(): UpdateStatementContext { - let localContext = new UpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 430, HiveSqlParser.RULE_updateStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3081; - this.match(HiveSqlParser.KW_UPDATE); - this.state = 3082; - this.tableName(); - this.state = 3083; - this.setColumnsClause(); - this.state = 3085; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 384) { - { - this.state = 3084; - this.whereClause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public sqlTransactionStatement(): SqlTransactionStatementContext { let localContext = new SqlTransactionStatementContext(this.context, this.state); - this.enterRule(localContext, 432, HiveSqlParser.RULE_sqlTransactionStatement); + this.enterRule(localContext, 394, HiveSqlParser.RULE_sqlTransactionStatement); + let _la: number; try { - this.state = 3091; + this.state = 2722; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_START: this.enterOuterAlt(localContext, 1); { - this.state = 3087; - this.startTransactionStatement(); + this.state = 2699; + this.match(HiveSqlParser.KW_START); + this.state = 2700; + this.match(HiveSqlParser.KW_TRANSACTION); + this.state = 2709; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 168 || _la === 261) { + { + this.state = 2701; + this.transactionMode(); + this.state = 2706; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 2702; + this.match(HiveSqlParser.COMMA); + this.state = 2703; + this.transactionMode(); + } + } + this.state = 2708; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + } break; case HiveSqlParser.KW_COMMIT: this.enterOuterAlt(localContext, 2); { - this.state = 3088; - this.commitStatement(); + this.state = 2711; + this.match(HiveSqlParser.KW_COMMIT); + this.state = 2713; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 389) { + { + this.state = 2712; + this.match(HiveSqlParser.KW_WORK); + } + } + } break; case HiveSqlParser.KW_ROLLBACK: this.enterOuterAlt(localContext, 3); { - this.state = 3089; - this.rollbackStatement(); + this.state = 2715; + this.match(HiveSqlParser.KW_ROLLBACK); + this.state = 2717; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 389) { + { + this.state = 2716; + this.match(HiveSqlParser.KW_WORK); + } + } + } break; case HiveSqlParser.KW_SET: this.enterOuterAlt(localContext, 4); { - this.state = 3090; - this.setAutoCommitStatement(); + this.state = 2719; + this.match(HiveSqlParser.KW_SET); + this.state = 2720; + this.match(HiveSqlParser.KW_AUTOCOMMIT); + this.state = 2721; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 350)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; default: @@ -13576,78 +13159,39 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public startTransactionStatement(): StartTransactionStatementContext { - let localContext = new StartTransactionStatementContext(this.context, this.state); - this.enterRule(localContext, 434, HiveSqlParser.RULE_startTransactionStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3093; - this.match(HiveSqlParser.KW_START); - this.state = 3094; - this.match(HiveSqlParser.KW_TRANSACTION); - this.state = 3103; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 168 || _la === 261) { - { - this.state = 3095; - this.transactionMode(); - this.state = 3100; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 3096; - this.match(HiveSqlParser.COMMA); - this.state = 3097; - this.transactionMode(); - } - } - this.state = 3102; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public transactionMode(): TransactionModeContext { let localContext = new TransactionModeContext(this.context, this.state); - this.enterRule(localContext, 436, HiveSqlParser.RULE_transactionMode); + this.enterRule(localContext, 396, HiveSqlParser.RULE_transactionMode); + let _la: number; try { - this.state = 3107; + this.state = 2729; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ISOLATION: this.enterOuterAlt(localContext, 1); { - this.state = 3105; - this.isolationLevel(); + this.state = 2724; + this.match(HiveSqlParser.KW_ISOLATION); + this.state = 2725; + this.match(HiveSqlParser.KW_LEVEL); + this.state = 2726; + this.match(HiveSqlParser.KW_SNAPSHOT); } break; case HiveSqlParser.KW_READ: this.enterOuterAlt(localContext, 2); { - this.state = 3106; - this.transactionAccessMode(); + this.state = 2727; + this.match(HiveSqlParser.KW_READ); + this.state = 2728; + _la = this.tokenStream.LA(1); + if(!(_la === 225 || _la === 391)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; default: @@ -13668,383 +13212,48 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public transactionAccessMode(): TransactionAccessModeContext { - let localContext = new TransactionAccessModeContext(this.context, this.state); - this.enterRule(localContext, 438, HiveSqlParser.RULE_transactionAccessMode); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3109; - this.match(HiveSqlParser.KW_READ); - this.state = 3110; - _la = this.tokenStream.LA(1); - if(!(_la === 225 || _la === 391)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public isolationLevel(): IsolationLevelContext { - let localContext = new IsolationLevelContext(this.context, this.state); - this.enterRule(localContext, 440, HiveSqlParser.RULE_isolationLevel); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3112; - this.match(HiveSqlParser.KW_ISOLATION); - this.state = 3113; - this.match(HiveSqlParser.KW_LEVEL); - this.state = 3114; - this.levelOfIsolation(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public levelOfIsolation(): LevelOfIsolationContext { - let localContext = new LevelOfIsolationContext(this.context, this.state); - this.enterRule(localContext, 442, HiveSqlParser.RULE_levelOfIsolation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3116; - this.match(HiveSqlParser.KW_SNAPSHOT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public commitStatement(): CommitStatementContext { - let localContext = new CommitStatementContext(this.context, this.state); - this.enterRule(localContext, 444, HiveSqlParser.RULE_commitStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3118; - this.match(HiveSqlParser.KW_COMMIT); - this.state = 3120; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 389) { - { - this.state = 3119; - this.match(HiveSqlParser.KW_WORK); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public rollbackStatement(): RollbackStatementContext { - let localContext = new RollbackStatementContext(this.context, this.state); - this.enterRule(localContext, 446, HiveSqlParser.RULE_rollbackStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3122; - this.match(HiveSqlParser.KW_ROLLBACK); - this.state = 3124; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 389) { - { - this.state = 3123; - this.match(HiveSqlParser.KW_WORK); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public setAutoCommitStatement(): SetAutoCommitStatementContext { - let localContext = new SetAutoCommitStatementContext(this.context, this.state); - this.enterRule(localContext, 448, HiveSqlParser.RULE_setAutoCommitStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3126; - this.match(HiveSqlParser.KW_SET); - this.state = 3127; - this.match(HiveSqlParser.KW_AUTOCOMMIT); - this.state = 3128; - this.booleanValueTok(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public abortTransactionStatement(): AbortTransactionStatementContext { - let localContext = new AbortTransactionStatementContext(this.context, this.state); - this.enterRule(localContext, 450, HiveSqlParser.RULE_abortTransactionStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3130; - this.match(HiveSqlParser.KW_ABORT); - this.state = 3131; - this.match(HiveSqlParser.KW_TRANSACTIONS); - this.state = 3133; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 3132; - this.match(HiveSqlParser.Number); - } - } - this.state = 3135; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 431); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public abortCompactionStatement(): AbortCompactionStatementContext { - let localContext = new AbortCompactionStatementContext(this.context, this.state); - this.enterRule(localContext, 452, HiveSqlParser.RULE_abortCompactionStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3137; - this.match(HiveSqlParser.KW_ABORT); - this.state = 3138; - this.match(HiveSqlParser.KW_COMPACTIONS); - this.state = 3140; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 3139; - this.match(HiveSqlParser.Number); - } - } - this.state = 3142; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 431); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public mergeStatement(): MergeStatementContext { - let localContext = new MergeStatementContext(this.context, this.state); - this.enterRule(localContext, 454, HiveSqlParser.RULE_mergeStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3144; - this.match(HiveSqlParser.KW_MERGE); - this.state = 3146; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 436) { - { - this.state = 3145; - this.match(HiveSqlParser.QUERY_HINT); - } - } - - this.state = 3148; - this.match(HiveSqlParser.KW_INTO); - this.state = 3149; - this.tableName(); - this.state = 3154; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { - { - this.state = 3151; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 17) { - { - this.state = 3150; - this.match(HiveSqlParser.KW_AS); - } - } - - this.state = 3153; - this.id_(); - } - } - - this.state = 3156; - this.match(HiveSqlParser.KW_USING); - this.state = 3157; - this.joinSourcePart(); - this.state = 3158; - this.match(HiveSqlParser.KW_ON); - this.state = 3159; - this.expression(); - this.state = 3160; - this.whenClauses(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public whenClauses(): WhenClausesContext { let localContext = new WhenClausesContext(this.context, this.state); - this.enterRule(localContext, 456, HiveSqlParser.RULE_whenClauses); + this.enterRule(localContext, 398, HiveSqlParser.RULE_whenClauses); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3166; + this.state = 2735; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 334, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 324, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 3164; + this.state = 2733; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 333, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { case 1: { - this.state = 3162; + this.state = 2731; this.whenMatchedAndClause(); } break; case 2: { - this.state = 3163; + this.state = 2732; this.whenMatchedThenClause(); } break; } } } - this.state = 3168; + this.state = 2737; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 334, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 324, this.context); } - this.state = 3170; + this.state = 2739; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 383) { { - this.state = 3169; + this.state = 2738; this.whenNotMatchedClause(); } } @@ -14067,47 +13276,47 @@ export class HiveSqlParser extends SQLParserBase { } public whenNotMatchedClause(): WhenNotMatchedClauseContext { let localContext = new WhenNotMatchedClauseContext(this.context, this.state); - this.enterRule(localContext, 458, HiveSqlParser.RULE_whenNotMatchedClause); + this.enterRule(localContext, 400, HiveSqlParser.RULE_whenNotMatchedClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3172; + this.state = 2741; this.match(HiveSqlParser.KW_WHEN); - this.state = 3173; + this.state = 2742; this.match(HiveSqlParser.KW_NOT); - this.state = 3174; + this.state = 2743; this.match(HiveSqlParser.KW_MATCHED); - this.state = 3177; + this.state = 2746; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 3175; + this.state = 2744; this.match(HiveSqlParser.KW_AND); - this.state = 3176; + this.state = 2745; this.expression(); } } - this.state = 3179; + this.state = 2748; this.match(HiveSqlParser.KW_THEN); - this.state = 3180; + this.state = 2749; this.match(HiveSqlParser.KW_INSERT); - this.state = 3182; + this.state = 2751; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 3181; + this.state = 2750; localContext._targetCols = this.columnParenthesesList(); } } - this.state = 3184; + this.state = 2753; this.match(HiveSqlParser.KW_VALUES); - this.state = 3185; - this.valueRowConstructor(); + this.state = 2754; + this.expressionsInParenthesis(); } } catch (re) { @@ -14126,22 +13335,40 @@ export class HiveSqlParser extends SQLParserBase { } public whenMatchedAndClause(): WhenMatchedAndClauseContext { let localContext = new WhenMatchedAndClauseContext(this.context, this.state); - this.enterRule(localContext, 460, HiveSqlParser.RULE_whenMatchedAndClause); + this.enterRule(localContext, 402, HiveSqlParser.RULE_whenMatchedAndClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3187; + this.state = 2756; this.match(HiveSqlParser.KW_WHEN); - this.state = 3188; + this.state = 2757; this.match(HiveSqlParser.KW_MATCHED); - this.state = 3189; + this.state = 2758; this.match(HiveSqlParser.KW_AND); - this.state = 3190; + this.state = 2759; this.expression(); - this.state = 3191; + this.state = 2760; this.match(HiveSqlParser.KW_THEN); - this.state = 3192; - this.updateOrDelete(); + this.state = 2764; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_UPDATE: + { + this.state = 2761; + this.match(HiveSqlParser.KW_UPDATE); + this.state = 2762; + this.setColumnsClause(); + } + break; + case HiveSqlParser.KW_DELETE: + { + this.state = 2763; + this.match(HiveSqlParser.KW_DELETE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } } catch (re) { @@ -14160,128 +13387,36 @@ export class HiveSqlParser extends SQLParserBase { } public whenMatchedThenClause(): WhenMatchedThenClauseContext { let localContext = new WhenMatchedThenClauseContext(this.context, this.state); - this.enterRule(localContext, 462, HiveSqlParser.RULE_whenMatchedThenClause); + this.enterRule(localContext, 404, HiveSqlParser.RULE_whenMatchedThenClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3194; + this.state = 2766; this.match(HiveSqlParser.KW_WHEN); - this.state = 3195; + this.state = 2767; this.match(HiveSqlParser.KW_MATCHED); - this.state = 3196; + this.state = 2768; this.match(HiveSqlParser.KW_THEN); - this.state = 3197; - this.updateOrDelete(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public updateOrDelete(): UpdateOrDeleteContext { - let localContext = new UpdateOrDeleteContext(this.context, this.state); - this.enterRule(localContext, 464, HiveSqlParser.RULE_updateOrDelete); - try { - this.state = 3202; + this.state = 2772; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_UPDATE: - this.enterOuterAlt(localContext, 1); { - this.state = 3199; + this.state = 2769; this.match(HiveSqlParser.KW_UPDATE); - this.state = 3200; + this.state = 2770; this.setColumnsClause(); } break; case HiveSqlParser.KW_DELETE: - this.enterOuterAlt(localContext, 2); { - this.state = 3201; + this.state = 2771; this.match(HiveSqlParser.KW_DELETE); } break; default: throw new antlr.NoViableAltException(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public killQueryStatement(): KillQueryStatementContext { - let localContext = new KillQueryStatementContext(this.context, this.state); - this.enterRule(localContext, 466, HiveSqlParser.RULE_killQueryStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3204; - this.match(HiveSqlParser.KW_KILL); - this.state = 3205; - this.match(HiveSqlParser.KW_QUERY); - this.state = 3207; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 3206; - this.match(HiveSqlParser.StringLiteral); - } - } - this.state = 3209; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 426); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public compactionId(): CompactionIdContext { - let localContext = new CompactionIdContext(this.context, this.state); - this.enterRule(localContext, 468, HiveSqlParser.RULE_compactionId); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3211; - this.match(HiveSqlParser.KW_COMPACT_ID); - this.state = 3212; - this.match(HiveSqlParser.EQUAL); - this.state = 3213; - localContext._compactId = this.match(HiveSqlParser.Number); } } catch (re) { @@ -14300,13 +13435,13 @@ export class HiveSqlParser extends SQLParserBase { } public compactionPool(): CompactionPoolContext { let localContext = new CompactionPoolContext(this.context, this.state); - this.enterRule(localContext, 470, HiveSqlParser.RULE_compactionPool); + this.enterRule(localContext, 406, HiveSqlParser.RULE_compactionPool); try { this.enterOuterAlt(localContext, 1); { - this.state = 3215; + this.state = 2774; this.match(HiveSqlParser.KW_POOL); - this.state = 3216; + this.state = 2775; localContext._poolName = this.match(HiveSqlParser.StringLiteral); } } @@ -14326,13 +13461,13 @@ export class HiveSqlParser extends SQLParserBase { } public compactionType(): CompactionTypeContext { let localContext = new CompactionTypeContext(this.context, this.state); - this.enterRule(localContext, 472, HiveSqlParser.RULE_compactionType); + this.enterRule(localContext, 408, HiveSqlParser.RULE_compactionType); try { this.enterOuterAlt(localContext, 1); { - this.state = 3218; + this.state = 2777; this.match(HiveSqlParser.KW_TYPE); - this.state = 3219; + this.state = 2778; localContext._compactType = this.match(HiveSqlParser.StringLiteral); } } @@ -14352,13 +13487,13 @@ export class HiveSqlParser extends SQLParserBase { } public compactionStatus(): CompactionStatusContext { let localContext = new CompactionStatusContext(this.context, this.state); - this.enterRule(localContext, 474, HiveSqlParser.RULE_compactionStatus); + this.enterRule(localContext, 410, HiveSqlParser.RULE_compactionStatus); try { this.enterOuterAlt(localContext, 1); { - this.state = 3221; + this.state = 2780; this.match(HiveSqlParser.KW_STATUS); - this.state = 3222; + this.state = 2781; localContext._status = this.match(HiveSqlParser.StringLiteral); } } @@ -14378,81 +13513,111 @@ export class HiveSqlParser extends SQLParserBase { } public alterStatement(): AlterStatementContext { let localContext = new AlterStatementContext(this.context, this.state); - this.enterRule(localContext, 476, HiveSqlParser.RULE_alterStatement); + this.enterRule(localContext, 412, HiveSqlParser.RULE_alterStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3224; + this.state = 2783; this.match(HiveSqlParser.KW_ALTER); - this.state = 3248; + this.state = 2814; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_TABLE: { - this.state = 3225; + this.state = 2784; this.match(HiveSqlParser.KW_TABLE); - this.state = 3226; + this.state = 2785; this.tableName(); - this.state = 3227; + this.state = 2786; this.alterTableStatementSuffix(); } break; case HiveSqlParser.KW_VIEW: { - this.state = 3229; + this.state = 2788; this.match(HiveSqlParser.KW_VIEW); - this.state = 3230; + this.state = 2789; this.viewName(); - this.state = 3232; + this.state = 2791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 3231; + this.state = 2790; this.match(HiveSqlParser.KW_AS); } } - this.state = 3234; + this.state = 2793; this.alterViewStatementSuffix(); } break; case HiveSqlParser.KW_MATERIALIZED: { - this.state = 3236; + this.state = 2795; this.match(HiveSqlParser.KW_MATERIALIZED); - this.state = 3237; + this.state = 2796; this.match(HiveSqlParser.KW_VIEW); - this.state = 3238; + this.state = 2797; localContext._tableNameTree = this.viewName(); - this.state = 3239; - this.alterMaterializedViewStatementSuffix(); + this.state = 2801; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + { + this.state = 2798; + localContext._mvRewriteFlag = this.rewriteEnabled(); + } + break; + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + { + this.state = 2799; + localContext._mvRewriteFlag2 = this.rewriteDisabled(); + } + break; + case HiveSqlParser.KW_REBUILD: + { + this.state = 2800; + this.match(HiveSqlParser.KW_REBUILD); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case HiveSqlParser.KW_DATABASE: case HiveSqlParser.KW_SCHEMA: { - this.state = 3241; + this.state = 2803; this.db_schema(); - this.state = 3242; + this.state = 2804; this.alterDatabaseStatementSuffix(); } break; case HiveSqlParser.KW_DATACONNECTOR: { - this.state = 3244; + this.state = 2806; this.match(HiveSqlParser.KW_DATACONNECTOR); - this.state = 3245; + this.state = 2807; this.alterDataConnectorStatementSuffix(); } break; case HiveSqlParser.KW_INDEX: { - this.state = 3246; + this.state = 2808; this.match(HiveSqlParser.KW_INDEX); - this.state = 3247; - this.alterIndexStatementSuffix(); + this.state = 2809; + this.id_(); + this.state = 2810; + this.match(HiveSqlParser.KW_ON); + this.state = 2811; + this.tableOrPartition(); + this.state = 2812; + this.match(HiveSqlParser.KW_REBUILD); } break; default: @@ -14476,145 +13641,320 @@ export class HiveSqlParser extends SQLParserBase { } public alterTableStatementSuffix(): AlterTableStatementSuffixContext { let localContext = new AlterTableStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 478, HiveSqlParser.RULE_alterTableStatementSuffix); + this.enterRule(localContext, 414, HiveSqlParser.RULE_alterTableStatementSuffix); let _la: number; try { - this.state = 3271; + this.state = 2905; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3250; - this.alterStatementSuffixRename(); + this.state = 2816; + this.match(HiveSqlParser.KW_RENAME); + this.state = 2817; + this.match(HiveSqlParser.KW_TO); + this.state = 2818; + this.tableNameCreate(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3251; - this.alterStatementSuffixRecoverPartitions(); + this.state = 2819; + this.match(HiveSqlParser.KW_RECOVER); + this.state = 2820; + this.match(HiveSqlParser.KW_PARTITIONS); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3252; + this.state = 2821; this.alterStatementSuffixDropPartitions(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3253; - this.alterStatementSuffixAddPartitions(); + this.state = 2822; + this.match(HiveSqlParser.KW_ADD); + this.state = 2824; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 2823; + this.ifNotExists(); + } + } + + this.state = 2830; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 2826; + this.partitionSpec(); + this.state = 2828; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 189) { + { + this.state = 2827; + this.locationPath(); + } + } + + } + } + this.state = 2832; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 237); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3254; - this.alterStatementSuffixTouch(); + this.state = 2834; + this.match(HiveSqlParser.KW_TOUCH); + this.state = 2838; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 237) { + { + { + this.state = 2835; + this.partitionSpec(); + } + } + this.state = 2840; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3255; - this.alterStatementSuffixArchive(); + this.state = 2841; + this.match(HiveSqlParser.KW_ARCHIVE); + this.state = 2845; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 237) { + { + { + this.state = 2842; + this.partitionSpec(); + } + } + this.state = 2847; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 3256; - this.alterStatementSuffixUnArchive(); + this.state = 2848; + this.match(HiveSqlParser.KW_UNARCHIVE); + this.state = 2852; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 237) { + { + { + this.state = 2849; + this.partitionSpec(); + } + } + this.state = 2854; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 3257; - this.alterStatementSuffixProperties(); + this.state = 2855; + this.match(HiveSqlParser.KW_SET); + this.state = 2856; + this.match(HiveSqlParser.KW_TBLPROPERTIES); + this.state = 2857; + this.tableProperties(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 3258; - this.alterStatementSuffixSkewedby(); + this.state = 2858; + this.match(HiveSqlParser.KW_UNSET); + this.state = 2859; + this.match(HiveSqlParser.KW_TBLPROPERTIES); + this.state = 2861; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 2860; + this.ifExists(); + } + } + + this.state = 2863; + this.tableProperties(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 3259; - this.alterStatementSuffixExchangePartition(); + this.state = 2864; + this.tableSkewed(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 3260; - this.alterStatementPartitionKeyType(); + this.state = 2865; + this.match(HiveSqlParser.KW_NOT); + this.state = 2868; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_SKEWED: + { + this.state = 2866; + this.match(HiveSqlParser.KW_SKEWED); + } + break; + case HiveSqlParser.KW_STORED: + { + this.state = 2867; + this.storedAsDirs(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 3261; - this.alterStatementSuffixDropConstraint(); + this.state = 2870; + this.match(HiveSqlParser.KW_EXCHANGE); + this.state = 2871; + this.partitionSpec(); + this.state = 2872; + this.match(HiveSqlParser.KW_WITH); + this.state = 2873; + this.match(HiveSqlParser.KW_TABLE); + this.state = 2874; + localContext._exchangename = this.tableName(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 3262; - this.alterStatementSuffixAddConstraint(); + this.state = 2876; + this.match(HiveSqlParser.KW_PARTITION); + this.state = 2877; + this.match(HiveSqlParser.KW_COLUMN); + this.state = 2878; + this.match(HiveSqlParser.LPAREN); + this.state = 2879; + this.columnNameType(); + this.state = 2880; + this.match(HiveSqlParser.RPAREN); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 3263; - this.alterTblPartitionStatementSuffix(); + this.state = 2882; + this.match(HiveSqlParser.KW_DROP); + this.state = 2883; + this.match(HiveSqlParser.KW_CONSTRAINT); + this.state = 2884; + localContext._cName = this.id_(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 3265; + this.state = 2885; + this.match(HiveSqlParser.KW_ADD); + this.state = 2888; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context) ) { + case 1: { - this.state = 3264; - this.partitionSpec(); + this.state = 2886; + localContext._fk = this.alterForeignKeyWithName(); } + break; + case 2: + { + this.state = 2887; + this.alterConstraintWithName(); + } + break; } - - this.state = 3267; - this.alterTblPartitionStatementSuffix(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 3268; - this.alterStatementSuffixSetOwner(); + this.state = 2891; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 237) { + { + this.state = 2890; + this.partitionSpec(); + } + } + + this.state = 2893; + this.alterTblPartitionStatementSuffix(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 3269; - this.alterStatementSuffixSetPartSpec(); + this.state = 2894; + this.match(HiveSqlParser.KW_SET); + this.state = 2895; + this.match(HiveSqlParser.KW_OWNER); + this.state = 2896; + this.principalName(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 3270; + this.state = 2897; + this.match(HiveSqlParser.KW_SET); + this.state = 2898; + this.match(HiveSqlParser.KW_PARTITION); + this.state = 2899; + this.match(HiveSqlParser.KW_SPEC); + this.state = 2900; + this.match(HiveSqlParser.LPAREN); + this.state = 2901; + localContext._spec = this.partitionTransformSpec(); + this.state = 2902; + this.match(HiveSqlParser.RPAREN); + } + break; + case 19: + this.enterOuterAlt(localContext, 19); + { + this.state = 2904; this.alterStatementSuffixExecute(); } break; @@ -14636,148 +13976,519 @@ export class HiveSqlParser extends SQLParserBase { } public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext { let localContext = new AlterTblPartitionStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 480, HiveSqlParser.RULE_alterTblPartitionStatementSuffix); + this.enterRule(localContext, 416, HiveSqlParser.RULE_alterTblPartitionStatementSuffix); + let _la: number; try { - this.state = 3288; + this.state = 3039; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 364, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3273; - this.alterStatementSuffixFileFormat(); + this.state = 2907; + this.match(HiveSqlParser.KW_SET); + this.state = 2908; + this.match(HiveSqlParser.KW_FILEFORMAT); + this.state = 2909; + this.fileFormat(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3274; - this.alterStatementSuffixLocation(); + this.state = 2910; + this.match(HiveSqlParser.KW_SET); + this.state = 2911; + this.match(HiveSqlParser.KW_LOCATION); + this.state = 2912; + localContext._newLoc = this.match(HiveSqlParser.StringLiteral); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3275; - this.alterStatementSuffixMergeFiles(); + this.state = 2913; + this.match(HiveSqlParser.KW_CONCATENATE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3276; - this.alterStatementSuffixSerdeProperties(); + this.state = 2914; + this.match(HiveSqlParser.KW_SET); + this.state = 2924; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_SERDE: + { + this.state = 2915; + this.match(HiveSqlParser.KW_SERDE); + this.state = 2916; + localContext._serdeName = this.match(HiveSqlParser.StringLiteral); + this.state = 2920; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { + case 1: + { + this.state = 2917; + this.match(HiveSqlParser.KW_WITH); + this.state = 2918; + this.match(HiveSqlParser.KW_SERDEPROPERTIES); + this.state = 2919; + this.tableProperties(); + } + break; + } + } + break; + case HiveSqlParser.KW_SERDEPROPERTIES: + { + this.state = 2922; + this.match(HiveSqlParser.KW_SERDEPROPERTIES); + this.state = 2923; + this.tableProperties(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3277; - this.alterStatementSuffixRenamePart(); + this.state = 2926; + this.match(HiveSqlParser.KW_UNSET); + this.state = 2927; + this.match(HiveSqlParser.KW_SERDEPROPERTIES); + this.state = 2928; + this.tableProperties(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3278; - this.alterStatementSuffixBucketNum(); + this.state = 2929; + this.match(HiveSqlParser.KW_RENAME); + this.state = 2930; + this.match(HiveSqlParser.KW_TO); + this.state = 2931; + this.partitionSpec(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 3279; - this.alterTblPartitionStatementSuffixSkewedLocation(); + this.state = 2932; + this.match(HiveSqlParser.KW_INTO); + this.state = 2933; + localContext._num = this.match(HiveSqlParser.Number); + this.state = 2934; + this.match(HiveSqlParser.KW_BUCKETS); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 3280; - this.alterStatementSuffixClusterbySortby(); + this.state = 2935; + this.match(HiveSqlParser.KW_SET); + this.state = 2936; + this.match(HiveSqlParser.KW_SKEWED); + this.state = 2937; + this.match(HiveSqlParser.KW_LOCATION); + this.state = 2938; + this.match(HiveSqlParser.LPAREN); + this.state = 2939; + this.skewedLocationMap(); + this.state = 2944; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 2940; + this.match(HiveSqlParser.COMMA); + this.state = 2941; + this.skewedLocationMap(); + } + } + this.state = 2946; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2947; + this.match(HiveSqlParser.RPAREN); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 3281; - this.alterStatementSuffixCompact(); + this.state = 2949; + this.match(HiveSqlParser.KW_NOT); + this.state = 2950; + _la = this.tokenStream.LA(1); + if(!(_la === 42 || _la === 315)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 3282; - this.alterStatementSuffixUpdateStatsCol(); + this.state = 2951; + this.tableBuckets(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 3283; - this.alterStatementSuffixUpdateStats(); + this.state = 2952; + this.match(HiveSqlParser.KW_COMPACT); + this.state = 2953; + localContext._compactType = this.match(HiveSqlParser.StringLiteral); + this.state = 2956; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 11) { + { + this.state = 2954; + this.match(HiveSqlParser.KW_AND); + this.state = 2955; + this.match(HiveSqlParser.KW_WAIT); + } + } + + this.state = 2962; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 42) { + { + this.state = 2958; + this.match(HiveSqlParser.KW_CLUSTERED); + this.state = 2959; + this.match(HiveSqlParser.KW_INTO); + this.state = 2960; + localContext._num = this.match(HiveSqlParser.Number); + this.state = 2961; + this.match(HiveSqlParser.KW_BUCKETS); + } + } + + this.state = 2965; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 229) { + { + this.state = 2964; + this.orderByClause(); + } + } + + this.state = 2968; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 246) { + { + this.state = 2967; + this.compactionPool(); + } + } + + this.state = 2974; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { + case 1: + { + this.state = 2970; + this.match(HiveSqlParser.KW_WITH); + this.state = 2971; + this.match(HiveSqlParser.KW_OVERWRITE); + this.state = 2972; + this.match(HiveSqlParser.KW_TBLPROPERTIES); + this.state = 2973; + this.tableProperties(); + } + break; + } } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 3284; - this.alterStatementSuffixRenameCol(); + this.state = 2976; + this.match(HiveSqlParser.KW_UPDATE); + this.state = 2977; + this.match(HiveSqlParser.KW_STATISTICS); + this.state = 2978; + this.match(HiveSqlParser.KW_FOR); + this.state = 2980; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 352, this.context) ) { + case 1: + { + this.state = 2979; + this.match(HiveSqlParser.KW_COLUMN); + } + break; + } + this.state = 2982; + localContext._colName = this.columnName(); + this.state = 2983; + this.match(HiveSqlParser.KW_SET); + this.state = 2984; + this.tableProperties(); + this.state = 2987; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 47) { + { + this.state = 2985; + this.match(HiveSqlParser.KW_COMMENT); + this.state = 2986; + localContext._comment = this.match(HiveSqlParser.StringLiteral); + } + } + } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 3285; - this.alterStatementSuffixAddCol(); + this.state = 2989; + this.match(HiveSqlParser.KW_UPDATE); + this.state = 2990; + this.match(HiveSqlParser.KW_STATISTICS); + this.state = 2991; + this.match(HiveSqlParser.KW_SET); + this.state = 2992; + this.tableProperties(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 3286; - this.alterStatementSuffixUpdateColumns(); + this.state = 2993; + this.match(HiveSqlParser.KW_CHANGE); + this.state = 2995; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) { + case 1: + { + this.state = 2994; + this.match(HiveSqlParser.KW_COLUMN); + } + break; + } + this.state = 2997; + localContext._oldName = this.columnName(); + this.state = 2998; + localContext._newName = this.columnNameCreate(); + this.state = 2999; + this.columnType(); + this.state = 3001; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) { + { + this.state = 3000; + this.alterColumnConstraint(); + } + } + + this.state = 3005; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 47) { + { + this.state = 3003; + this.match(HiveSqlParser.KW_COMMENT); + this.state = 3004; + localContext._comment = this.match(HiveSqlParser.StringLiteral); + } + } + + this.state = 3010; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_FIRST: + { + this.state = 3007; + localContext._first = this.match(HiveSqlParser.KW_FIRST); + } + break; + case HiveSqlParser.KW_AFTER: + { + this.state = 3008; + this.match(HiveSqlParser.KW_AFTER); + this.state = 3009; + localContext._afterCol = this.id_(); + } + break; + case HiveSqlParser.EOF: + case HiveSqlParser.KW_ABORT: + case HiveSqlParser.KW_ALTER: + case HiveSqlParser.KW_ANALYZE: + case HiveSqlParser.KW_CASCADE: + case HiveSqlParser.KW_COMMIT: + case HiveSqlParser.KW_CREATE: + case HiveSqlParser.KW_DELETE: + case HiveSqlParser.KW_DESC: + case HiveSqlParser.KW_DESCRIBE: + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + case HiveSqlParser.KW_DROP: + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + case HiveSqlParser.KW_EXECUTE: + case HiveSqlParser.KW_EXPLAIN: + case HiveSqlParser.KW_EXPORT: + case HiveSqlParser.KW_FROM: + case HiveSqlParser.KW_GRANT: + case HiveSqlParser.KW_IMPORT: + case HiveSqlParser.KW_INSERT: + case HiveSqlParser.KW_KILL: + case HiveSqlParser.KW_LOAD: + case HiveSqlParser.KW_LOCK: + case HiveSqlParser.KW_MAP: + case HiveSqlParser.KW_MERGE: + case HiveSqlParser.KW_MSCK: + case HiveSqlParser.KW_PREPARE: + case HiveSqlParser.KW_REDUCE: + case HiveSqlParser.KW_RELOAD: + case HiveSqlParser.KW_REPL: + case HiveSqlParser.KW_REPLACE: + case HiveSqlParser.KW_RESTRICT: + case HiveSqlParser.KW_REVOKE: + case HiveSqlParser.KW_ROLLBACK: + case HiveSqlParser.KW_SELECT: + case HiveSqlParser.KW_SET: + case HiveSqlParser.KW_SHOW: + case HiveSqlParser.KW_START: + case HiveSqlParser.KW_TRUNCATE: + case HiveSqlParser.KW_UNLOCK: + case HiveSqlParser.KW_UPDATE: + case HiveSqlParser.KW_USE: + case HiveSqlParser.KW_VALUES: + case HiveSqlParser.KW_WITH: + case HiveSqlParser.SEMICOLON: + case HiveSqlParser.LPAREN: + break; + default: + break; + } + this.state = 3013; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 34 || _la === 282) { + { + this.state = 3012; + this.restrictOrCascade(); + } + } + } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 3287; - this.alterStatementSuffixProtections(); + this.state = 3017; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ADD: + { + this.state = 3015; + localContext._add = this.match(HiveSqlParser.KW_ADD); + } + break; + case HiveSqlParser.KW_REPLACE: + { + this.state = 3016; + localContext._replace = this.match(HiveSqlParser.KW_REPLACE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3019; + this.match(HiveSqlParser.KW_COLUMNS); + this.state = 3020; + this.match(HiveSqlParser.LPAREN); + this.state = 3021; + this.columnNameTypeList(); + this.state = 3022; + this.match(HiveSqlParser.RPAREN); + this.state = 3024; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 34 || _la === 282) { + { + this.state = 3023; + this.restrictOrCascade(); + } + } + + } + break; + case 16: + this.enterOuterAlt(localContext, 16); + { + this.state = 3026; + this.match(HiveSqlParser.KW_UPDATE); + this.state = 3027; + this.match(HiveSqlParser.KW_COLUMNS); + this.state = 3029; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 34 || _la === 282) { + { + this.state = 3028; + this.restrictOrCascade(); + } + } + + } + break; + case 17: + this.enterOuterAlt(localContext, 17); + { + this.state = 3031; + this.enableSpecification(); + this.state = 3037; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_NO_DROP: + { + { + this.state = 3032; + this.match(HiveSqlParser.KW_NO_DROP); + this.state = 3034; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 34) { + { + this.state = 3033; + this.match(HiveSqlParser.KW_CASCADE); + } + } + + } + } + break; + case HiveSqlParser.KW_OFFLINE: + { + this.state = 3036; + this.match(HiveSqlParser.KW_OFFLINE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext { - let localContext = new AlterStatementPartitionKeyTypeContext(this.context, this.state); - this.enterRule(localContext, 482, HiveSqlParser.RULE_alterStatementPartitionKeyType); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3290; - this.match(HiveSqlParser.KW_PARTITION); - this.state = 3291; - this.match(HiveSqlParser.KW_COLUMN); - this.state = 3292; - this.match(HiveSqlParser.LPAREN); - this.state = 3293; - this.columnNameType(); - this.state = 3294; - this.match(HiveSqlParser.RPAREN); } } catch (re) { @@ -14796,37 +14507,100 @@ export class HiveSqlParser extends SQLParserBase { } public alterViewStatementSuffix(): AlterViewStatementSuffixContext { let localContext = new AlterViewStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 484, HiveSqlParser.RULE_alterViewStatementSuffix); + this.enterRule(localContext, 418, HiveSqlParser.RULE_alterViewStatementSuffix); + let _la: number; try { - this.state = 3301; + this.state = 3067; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_SET: - case HiveSqlParser.KW_UNSET: this.enterOuterAlt(localContext, 1); { - this.state = 3296; - this.alterViewSuffixProperties(); + this.state = 3041; + this.match(HiveSqlParser.KW_SET); + this.state = 3042; + this.match(HiveSqlParser.KW_TBLPROPERTIES); + this.state = 3043; + this.tableProperties(); + } + break; + case HiveSqlParser.KW_UNSET: + this.enterOuterAlt(localContext, 2); + { + this.state = 3044; + this.match(HiveSqlParser.KW_UNSET); + this.state = 3045; + this.match(HiveSqlParser.KW_TBLPROPERTIES); + this.state = 3047; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 3046; + this.ifExists(); + } + } + + this.state = 3049; + this.tableProperties(); } break; case HiveSqlParser.KW_RENAME: - this.enterOuterAlt(localContext, 2); + this.enterOuterAlt(localContext, 3); { - this.state = 3297; - this.alterStatementSuffixRename(); + this.state = 3050; + this.match(HiveSqlParser.KW_RENAME); + this.state = 3051; + this.match(HiveSqlParser.KW_TO); + this.state = 3052; + this.tableNameCreate(); } break; case HiveSqlParser.KW_ADD: - this.enterOuterAlt(localContext, 3); + this.enterOuterAlt(localContext, 4); { - this.state = 3298; - this.alterStatementSuffixAddPartitions(); + this.state = 3053; + this.match(HiveSqlParser.KW_ADD); + this.state = 3055; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 3054; + this.ifNotExists(); + } + } + + this.state = 3061; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3057; + this.partitionSpec(); + this.state = 3059; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 189) { + { + this.state = 3058; + this.locationPath(); + } + } + + } + } + this.state = 3063; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 237); } break; case HiveSqlParser.KW_DROP: - this.enterOuterAlt(localContext, 4); + this.enterOuterAlt(localContext, 5); { - this.state = 3299; + this.state = 3065; this.alterStatementSuffixDropPartitions(); } break; @@ -14836,9 +14610,9 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_VALUES: case HiveSqlParser.KW_WITH: case HiveSqlParser.LPAREN: - this.enterOuterAlt(localContext, 5); + this.enterOuterAlt(localContext, 6); { - this.state = 3300; + this.state = 3066; this.selectStatementWithCTE(); } break; @@ -14860,2123 +14634,58 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext { - let localContext = new AlterMaterializedViewStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 486, HiveSqlParser.RULE_alterMaterializedViewStatementSuffix); - try { - this.state = 3305; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_DISABLE: - case HiveSqlParser.KW_DISABLED: - case HiveSqlParser.KW_ENABLE: - case HiveSqlParser.KW_ENABLED: - this.enterOuterAlt(localContext, 1); - { - this.state = 3303; - this.alterMaterializedViewSuffixRewrite(); - } - break; - case HiveSqlParser.KW_REBUILD: - this.enterOuterAlt(localContext, 2); - { - this.state = 3304; - this.alterMaterializedViewSuffixRebuild(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext { - let localContext = new AlterMaterializedViewSuffixRewriteContext(this.context, this.state); - this.enterRule(localContext, 488, HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite); - try { - this.state = 3309; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ENABLE: - case HiveSqlParser.KW_ENABLED: - this.enterOuterAlt(localContext, 1); - { - this.state = 3307; - localContext._mvRewriteFlag = this.rewriteEnabled(); - } - break; - case HiveSqlParser.KW_DISABLE: - case HiveSqlParser.KW_DISABLED: - this.enterOuterAlt(localContext, 2); - { - this.state = 3308; - localContext._mvRewriteFlag2 = this.rewriteDisabled(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext { - let localContext = new AlterMaterializedViewSuffixRebuildContext(this.context, this.state); - this.enterRule(localContext, 490, HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3311; - this.match(HiveSqlParser.KW_REBUILD); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public alterDatabaseStatementSuffix(): AlterDatabaseStatementSuffixContext { let localContext = new AlterDatabaseStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 492, HiveSqlParser.RULE_alterDatabaseStatementSuffix); + this.enterRule(localContext, 420, HiveSqlParser.RULE_alterDatabaseStatementSuffix); + let _la: number; try { - this.state = 3316; + this.state = 3084; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 348, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3313; - this.alterDatabaseSuffixProperties(); + this.state = 3069; + localContext._name = this.dbSchemaName(); + this.state = 3070; + this.match(HiveSqlParser.KW_SET); + this.state = 3071; + this.match(HiveSqlParser.KW_DBPROPERTIES); + this.state = 3072; + this.keyValueProperties(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3314; - this.alterDatabaseSuffixSetOwner(); + this.state = 3074; + localContext._dbName = this.dbSchemaName(); + this.state = 3075; + this.match(HiveSqlParser.KW_SET); + this.state = 3076; + this.match(HiveSqlParser.KW_OWNER); + this.state = 3077; + this.principalAlterName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3315; - this.alterDatabaseSuffixSetLocation(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext { - let localContext = new AlterDatabaseSuffixPropertiesContext(this.context, this.state); - this.enterRule(localContext, 494, HiveSqlParser.RULE_alterDatabaseSuffixProperties); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3318; - localContext._name = this.dbSchemaName(); - this.state = 3319; - this.match(HiveSqlParser.KW_SET); - this.state = 3320; - this.match(HiveSqlParser.KW_DBPROPERTIES); - this.state = 3321; - this.dbProperties(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext { - let localContext = new AlterDatabaseSuffixSetOwnerContext(this.context, this.state); - this.enterRule(localContext, 496, HiveSqlParser.RULE_alterDatabaseSuffixSetOwner); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3323; - localContext._dbName = this.dbSchemaName(); - this.state = 3324; - this.match(HiveSqlParser.KW_SET); - this.state = 3325; - this.match(HiveSqlParser.KW_OWNER); - this.state = 3326; - this.principalAlterName(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext { - let localContext = new AlterDatabaseSuffixSetLocationContext(this.context, this.state); - this.enterRule(localContext, 498, HiveSqlParser.RULE_alterDatabaseSuffixSetLocation); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3328; - localContext._dbName = this.dbSchemaName(); - this.state = 3329; - this.match(HiveSqlParser.KW_SET); - this.state = 3330; - _la = this.tokenStream.LA(1); - if(!(_la === 189 || _la === 196)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 3331; - localContext._newLocation = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterDatabaseSuffixSetManagedLocation(): AlterDatabaseSuffixSetManagedLocationContext { - let localContext = new AlterDatabaseSuffixSetManagedLocationContext(this.context, this.state); - this.enterRule(localContext, 500, HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3333; - localContext._dbName = this.dbSchemaName(); - this.state = 3334; - this.match(HiveSqlParser.KW_SET); - this.state = 3335; - this.match(HiveSqlParser.KW_MANAGEDLOCATION); - this.state = 3336; - localContext._newLocation = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixRename(): AlterStatementSuffixRenameContext { - let localContext = new AlterStatementSuffixRenameContext(this.context, this.state); - this.enterRule(localContext, 502, HiveSqlParser.RULE_alterStatementSuffixRename); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3338; - this.match(HiveSqlParser.KW_RENAME); - this.state = 3339; - this.match(HiveSqlParser.KW_TO); - this.state = 3340; - this.tableNameCreate(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext { - let localContext = new AlterStatementSuffixAddColContext(this.context, this.state); - this.enterRule(localContext, 504, HiveSqlParser.RULE_alterStatementSuffixAddCol); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3344; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ADD: - { - this.state = 3342; - localContext._add = this.match(HiveSqlParser.KW_ADD); - } - break; - case HiveSqlParser.KW_REPLACE: - { - this.state = 3343; - localContext._replace = this.match(HiveSqlParser.KW_REPLACE); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 3346; - this.match(HiveSqlParser.KW_COLUMNS); - this.state = 3347; - this.match(HiveSqlParser.LPAREN); - this.state = 3348; - this.columnNameTypeList(); - this.state = 3349; - this.match(HiveSqlParser.RPAREN); - this.state = 3351; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 34 || _la === 282) { - { - this.state = 3350; - this.restrictOrCascade(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext { - let localContext = new AlterStatementSuffixAddConstraintContext(this.context, this.state); - this.enterRule(localContext, 506, HiveSqlParser.RULE_alterStatementSuffixAddConstraint); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3353; - this.match(HiveSqlParser.KW_ADD); - this.state = 3356; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { - case 1: - { - this.state = 3354; - localContext._fk = this.alterForeignKeyWithName(); - } - break; - case 2: - { - this.state = 3355; - this.alterConstraintWithName(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext { - let localContext = new AlterStatementSuffixUpdateColumnsContext(this.context, this.state); - this.enterRule(localContext, 508, HiveSqlParser.RULE_alterStatementSuffixUpdateColumns); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3358; - this.match(HiveSqlParser.KW_UPDATE); - this.state = 3359; - this.match(HiveSqlParser.KW_COLUMNS); - this.state = 3361; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 34 || _la === 282) { - { - this.state = 3360; - this.restrictOrCascade(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext { - let localContext = new AlterStatementSuffixProtectionsContext(this.context, this.state); - this.enterRule(localContext, 510, HiveSqlParser.RULE_alterStatementSuffixProtections); - let _la: number; - try { - this.state = 3371; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 3363; - this.enableSpecification(); - this.state = 3364; - this.match(HiveSqlParser.KW_NO_DROP); - this.state = 3366; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 34) { - { - this.state = 3365; - this.match(HiveSqlParser.KW_CASCADE); - } - } - - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 3368; - this.enableSpecification(); - this.state = 3369; - this.match(HiveSqlParser.KW_OFFLINE); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext { - let localContext = new AlterStatementSuffixDropConstraintContext(this.context, this.state); - this.enterRule(localContext, 512, HiveSqlParser.RULE_alterStatementSuffixDropConstraint); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3373; - this.match(HiveSqlParser.KW_DROP); - this.state = 3374; - this.match(HiveSqlParser.KW_CONSTRAINT); - this.state = 3375; - localContext._cName = this.id_(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext { - let localContext = new AlterStatementSuffixRenameColContext(this.context, this.state); - this.enterRule(localContext, 514, HiveSqlParser.RULE_alterStatementSuffixRenameCol); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3377; - this.match(HiveSqlParser.KW_CHANGE); - this.state = 3379; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 355, this.context) ) { - case 1: - { - this.state = 3378; - this.match(HiveSqlParser.KW_COLUMN); - } - break; - } - this.state = 3381; - localContext._oldName = this.columnName(); - this.state = 3382; - localContext._newName = this.columnNameCreate(); - this.state = 3383; - this.colType(); - this.state = 3385; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 40 || _la === 55 || _la === 83 || _la === 216 || _la === 251 || _la === 269 || _la === 358) { - { - this.state = 3384; - this.alterColumnConstraint(); - } - } - - this.state = 3389; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 47) { - { - this.state = 3387; - this.match(HiveSqlParser.KW_COMMENT); - this.state = 3388; - localContext._comment = this.match(HiveSqlParser.StringLiteral); - } - } - - this.state = 3392; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 6 || _la === 130) { - { - this.state = 3391; - this.alterStatementChangeColPosition(); - } - } - - this.state = 3395; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 34 || _la === 282) { - { - this.state = 3394; - this.restrictOrCascade(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext { - let localContext = new AlterStatementSuffixUpdateStatsColContext(this.context, this.state); - this.enterRule(localContext, 516, HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3397; - this.match(HiveSqlParser.KW_UPDATE); - this.state = 3398; - this.match(HiveSqlParser.KW_STATISTICS); - this.state = 3399; - this.match(HiveSqlParser.KW_FOR); - this.state = 3401; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 360, this.context) ) { - case 1: - { - this.state = 3400; - this.match(HiveSqlParser.KW_COLUMN); - } - break; - } - this.state = 3403; - localContext._colName = this.columnName(); - this.state = 3404; - this.match(HiveSqlParser.KW_SET); - this.state = 3405; - this.tableProperties(); - this.state = 3408; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 47) { - { - this.state = 3406; - this.match(HiveSqlParser.KW_COMMENT); - this.state = 3407; - localContext._comment = this.match(HiveSqlParser.StringLiteral); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext { - let localContext = new AlterStatementSuffixUpdateStatsContext(this.context, this.state); - this.enterRule(localContext, 518, HiveSqlParser.RULE_alterStatementSuffixUpdateStats); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3410; - this.match(HiveSqlParser.KW_UPDATE); - this.state = 3411; - this.match(HiveSqlParser.KW_STATISTICS); - this.state = 3412; - this.match(HiveSqlParser.KW_SET); - this.state = 3413; - this.tableProperties(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext { - let localContext = new AlterStatementChangeColPositionContext(this.context, this.state); - this.enterRule(localContext, 520, HiveSqlParser.RULE_alterStatementChangeColPosition); - try { - this.state = 3418; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_FIRST: - this.enterOuterAlt(localContext, 1); - { - this.state = 3415; - localContext._first = this.match(HiveSqlParser.KW_FIRST); - } - break; - case HiveSqlParser.KW_AFTER: - this.enterOuterAlt(localContext, 2); - { - this.state = 3416; - this.match(HiveSqlParser.KW_AFTER); - this.state = 3417; - localContext._afterCol = this.id_(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext { - let localContext = new AlterStatementSuffixAddPartitionsContext(this.context, this.state); - this.enterRule(localContext, 522, HiveSqlParser.RULE_alterStatementSuffixAddPartitions); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3420; - this.match(HiveSqlParser.KW_ADD); - this.state = 3422; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 3421; - this.ifNotExists(); - } - } - - this.state = 3425; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 3424; - this.alterStatementSuffixAddPartitionsElement(); - } - } - this.state = 3427; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 237); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext { - let localContext = new AlterStatementSuffixAddPartitionsElementContext(this.context, this.state); - this.enterRule(localContext, 524, HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3429; - this.partitionSpec(); - this.state = 3431; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 189) { - { - this.state = 3430; - this.partitionLocation(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext { - let localContext = new AlterStatementSuffixTouchContext(this.context, this.state); - this.enterRule(localContext, 526, HiveSqlParser.RULE_alterStatementSuffixTouch); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3433; - this.match(HiveSqlParser.KW_TOUCH); - this.state = 3437; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 237) { - { - { - this.state = 3434; - this.partitionSpec(); - } - } - this.state = 3439; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext { - let localContext = new AlterStatementSuffixArchiveContext(this.context, this.state); - this.enterRule(localContext, 528, HiveSqlParser.RULE_alterStatementSuffixArchive); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3440; - this.match(HiveSqlParser.KW_ARCHIVE); - this.state = 3444; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 237) { - { - { - this.state = 3441; - this.partitionSpec(); - } - } - this.state = 3446; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext { - let localContext = new AlterStatementSuffixUnArchiveContext(this.context, this.state); - this.enterRule(localContext, 530, HiveSqlParser.RULE_alterStatementSuffixUnArchive); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3447; - this.match(HiveSqlParser.KW_UNARCHIVE); - this.state = 3451; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 237) { - { - { - this.state = 3448; - this.partitionSpec(); - } - } - this.state = 3453; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public partitionLocation(): PartitionLocationContext { - let localContext = new PartitionLocationContext(this.context, this.state); - this.enterRule(localContext, 532, HiveSqlParser.RULE_partitionLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3454; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 3455; - localContext._locn = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext { - let localContext = new AlterStatementSuffixRecoverPartitionsContext(this.context, this.state); - this.enterRule(localContext, 534, HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3457; - this.match(HiveSqlParser.KW_RECOVER); - this.state = 3458; - this.match(HiveSqlParser.KW_PARTITIONS); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext { - let localContext = new AlterStatementSuffixDropPartitionsContext(this.context, this.state); - this.enterRule(localContext, 536, HiveSqlParser.RULE_alterStatementSuffixDropPartitions); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3460; - this.match(HiveSqlParser.KW_DROP); - this.state = 3462; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 3461; - this.ifExists(); - } - } - - this.state = 3464; - this.match(HiveSqlParser.KW_PARTITION); - this.state = 3465; - this.partitionSelectorSpec(); - this.state = 3471; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 3466; - this.match(HiveSqlParser.COMMA); - this.state = 3467; - this.match(HiveSqlParser.KW_PARTITION); - this.state = 3468; - this.partitionSelectorSpec(); - } - } - this.state = 3473; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 3475; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 152) { - { - this.state = 3474; - this.dropPartitionsIgnoreClause(); - } - } - - this.state = 3478; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 255) { - { - this.state = 3477; - this.match(HiveSqlParser.KW_PURGE); - } - } - - this.state = 3481; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 134) { - { - this.state = 3480; - this.replicationClause(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext { - let localContext = new AlterStatementSuffixPropertiesContext(this.context, this.state); - this.enterRule(localContext, 538, HiveSqlParser.RULE_alterStatementSuffixProperties); - let _la: number; - try { - this.state = 3492; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 3483; + this.state = 3079; + localContext._dbName = this.dbSchemaName(); + this.state = 3080; this.match(HiveSqlParser.KW_SET); - this.state = 3484; - this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 3485; - this.tableProperties(); - } - break; - case HiveSqlParser.KW_UNSET: - this.enterOuterAlt(localContext, 2); - { - this.state = 3486; - this.match(HiveSqlParser.KW_UNSET); - this.state = 3487; - this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 3489; - this.errorHandler.sync(this); + this.state = 3081; _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 3488; - this.ifExists(); - } - } - - this.state = 3491; - this.tableProperties(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext { - let localContext = new AlterViewSuffixPropertiesContext(this.context, this.state); - this.enterRule(localContext, 540, HiveSqlParser.RULE_alterViewSuffixProperties); - let _la: number; - try { - this.state = 3503; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 3494; - this.match(HiveSqlParser.KW_SET); - this.state = 3495; - this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 3496; - this.tableProperties(); - } - break; - case HiveSqlParser.KW_UNSET: - this.enterOuterAlt(localContext, 2); - { - this.state = 3497; - this.match(HiveSqlParser.KW_UNSET); - this.state = 3498; - this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 3500; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 3499; - this.ifExists(); - } - } - - this.state = 3502; - this.tableProperties(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext { - let localContext = new AlterStatementSuffixSerdePropertiesContext(this.context, this.state); - this.enterRule(localContext, 542, HiveSqlParser.RULE_alterStatementSuffixSerdeProperties); - try { - this.state = 3520; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SET: - this.enterOuterAlt(localContext, 1); - { - this.state = 3505; - this.match(HiveSqlParser.KW_SET); - this.state = 3515; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SERDE: - { - this.state = 3506; - this.match(HiveSqlParser.KW_SERDE); - this.state = 3507; - localContext._serdeName = this.match(HiveSqlParser.StringLiteral); - this.state = 3511; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { - case 1: - { - this.state = 3508; - this.match(HiveSqlParser.KW_WITH); - this.state = 3509; - this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 3510; - this.tableProperties(); - } - break; - } - } - break; - case HiveSqlParser.KW_SERDEPROPERTIES: - { - this.state = 3513; - this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 3514; - this.tableProperties(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - case HiveSqlParser.KW_UNSET: - this.enterOuterAlt(localContext, 2); - { - this.state = 3517; - this.match(HiveSqlParser.KW_UNSET); - this.state = 3518; - this.match(HiveSqlParser.KW_SERDEPROPERTIES); - this.state = 3519; - this.tableProperties(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public tablePartitionPrefix(): TablePartitionPrefixContext { - let localContext = new TablePartitionPrefixContext(this.context, this.state); - this.enterRule(localContext, 544, HiveSqlParser.RULE_tablePartitionPrefix); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3522; - this.tableName(); - this.state = 3524; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { - { - this.state = 3523; - this.partitionSpec(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext { - let localContext = new AlterStatementSuffixFileFormatContext(this.context, this.state); - this.enterRule(localContext, 546, HiveSqlParser.RULE_alterStatementSuffixFileFormat); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3526; - this.match(HiveSqlParser.KW_SET); - this.state = 3527; - this.match(HiveSqlParser.KW_FILEFORMAT); - this.state = 3528; - this.fileFormat(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext { - let localContext = new AlterStatementSuffixClusterbySortbyContext(this.context, this.state); - this.enterRule(localContext, 548, HiveSqlParser.RULE_alterStatementSuffixClusterbySortby); - let _la: number; - try { - this.state = 3533; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 1); - { - this.state = 3530; - this.match(HiveSqlParser.KW_NOT); - this.state = 3531; - _la = this.tokenStream.LA(1); - if(!(_la === 42 || _la === 315)) { + if(!(_la === 189 || _la === 196)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - } - break; - case HiveSqlParser.KW_CLUSTERED: - this.enterOuterAlt(localContext, 2); - { - this.state = 3532; - this.tableBuckets(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext { - let localContext = new AlterTblPartitionStatementSuffixSkewedLocationContext(this.context, this.state); - this.enterRule(localContext, 550, HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3535; - this.match(HiveSqlParser.KW_SET); - this.state = 3536; - this.match(HiveSqlParser.KW_SKEWED); - this.state = 3537; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 3538; - this.skewedLocations(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public skewedLocations(): SkewedLocationsContext { - let localContext = new SkewedLocationsContext(this.context, this.state); - this.enterRule(localContext, 552, HiveSqlParser.RULE_skewedLocations); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3540; - this.match(HiveSqlParser.LPAREN); - this.state = 3541; - this.skewedLocationsList(); - this.state = 3542; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public skewedLocationsList(): SkewedLocationsListContext { - let localContext = new SkewedLocationsListContext(this.context, this.state); - this.enterRule(localContext, 554, HiveSqlParser.RULE_skewedLocationsList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3544; - this.skewedLocationMap(); - this.state = 3549; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 3545; - this.match(HiveSqlParser.COMMA); - this.state = 3546; - this.skewedLocationMap(); - } - } - this.state = 3551; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public skewedLocationMap(): SkewedLocationMapContext { - let localContext = new SkewedLocationMapContext(this.context, this.state); - this.enterRule(localContext, 556, HiveSqlParser.RULE_skewedLocationMap); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3552; - localContext._key = this.skewedValueLocationElement(); - this.state = 3553; - this.match(HiveSqlParser.EQUAL); - this.state = 3554; - localContext._value = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext { - let localContext = new AlterStatementSuffixLocationContext(this.context, this.state); - this.enterRule(localContext, 558, HiveSqlParser.RULE_alterStatementSuffixLocation); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3556; - this.match(HiveSqlParser.KW_SET); - this.state = 3557; - this.match(HiveSqlParser.KW_LOCATION); - this.state = 3558; - localContext._newLoc = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext { - let localContext = new AlterStatementSuffixSkewedbyContext(this.context, this.state); - this.enterRule(localContext, 560, HiveSqlParser.RULE_alterStatementSuffixSkewedby); - try { - this.state = 3566; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SKEWED: - this.enterOuterAlt(localContext, 1); - { - this.state = 3560; - this.tableSkewed(); - } - break; - case HiveSqlParser.KW_NOT: - this.enterOuterAlt(localContext, 2); - { - this.state = 3561; - this.match(HiveSqlParser.KW_NOT); - this.state = 3564; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SKEWED: - { - this.state = 3562; - this.match(HiveSqlParser.KW_SKEWED); - } - break; - case HiveSqlParser.KW_STORED: - { - this.state = 3563; - this.storedAsDirs(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext { - let localContext = new AlterStatementSuffixExchangePartitionContext(this.context, this.state); - this.enterRule(localContext, 562, HiveSqlParser.RULE_alterStatementSuffixExchangePartition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3568; - this.match(HiveSqlParser.KW_EXCHANGE); - this.state = 3569; - this.partitionSpec(); - this.state = 3570; - this.match(HiveSqlParser.KW_WITH); - this.state = 3571; - this.match(HiveSqlParser.KW_TABLE); - this.state = 3572; - localContext._exchangename = this.tableName(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext { - let localContext = new AlterStatementSuffixRenamePartContext(this.context, this.state); - this.enterRule(localContext, 564, HiveSqlParser.RULE_alterStatementSuffixRenamePart); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3574; - this.match(HiveSqlParser.KW_RENAME); - this.state = 3575; - this.match(HiveSqlParser.KW_TO); - this.state = 3576; - this.partitionSpec(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixStatsPart(): AlterStatementSuffixStatsPartContext { - let localContext = new AlterStatementSuffixStatsPartContext(this.context, this.state); - this.enterRule(localContext, 566, HiveSqlParser.RULE_alterStatementSuffixStatsPart); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3578; - this.match(HiveSqlParser.KW_UPDATE); - this.state = 3579; - this.match(HiveSqlParser.KW_STATISTICS); - this.state = 3580; - this.match(HiveSqlParser.KW_FOR); - this.state = 3582; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { - case 1: - { - this.state = 3581; - this.match(HiveSqlParser.KW_COLUMN); - } - break; - } - this.state = 3584; - localContext._colName = this.columnName(); - this.state = 3585; - this.match(HiveSqlParser.KW_SET); - this.state = 3586; - this.tableProperties(); - this.state = 3589; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 47) { - { - this.state = 3587; - this.match(HiveSqlParser.KW_COMMENT); - this.state = 3588; - localContext._comment = this.match(HiveSqlParser.StringLiteral); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext { - let localContext = new AlterStatementSuffixMergeFilesContext(this.context, this.state); - this.enterRule(localContext, 568, HiveSqlParser.RULE_alterStatementSuffixMergeFiles); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3591; - this.match(HiveSqlParser.KW_CONCATENATE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext { - let localContext = new AlterStatementSuffixBucketNumContext(this.context, this.state); - this.enterRule(localContext, 570, HiveSqlParser.RULE_alterStatementSuffixBucketNum); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3593; - this.match(HiveSqlParser.KW_INTO); - this.state = 3594; - localContext._num = this.match(HiveSqlParser.Number); - this.state = 3595; - this.match(HiveSqlParser.KW_BUCKETS); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public blocking(): BlockingContext { - let localContext = new BlockingContext(this.context, this.state); - this.enterRule(localContext, 572, HiveSqlParser.RULE_blocking); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3597; - this.match(HiveSqlParser.KW_AND); - this.state = 3598; - this.match(HiveSqlParser.KW_WAIT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public compactPool(): CompactPoolContext { - let localContext = new CompactPoolContext(this.context, this.state); - this.enterRule(localContext, 574, HiveSqlParser.RULE_compactPool); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3600; - this.match(HiveSqlParser.KW_POOL); - this.state = 3601; - localContext._poolName = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext { - let localContext = new AlterStatementSuffixCompactContext(this.context, this.state); - this.enterRule(localContext, 576, HiveSqlParser.RULE_alterStatementSuffixCompact); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3603; - this.match(HiveSqlParser.KW_COMPACT); - this.state = 3604; - localContext._compactType = this.match(HiveSqlParser.StringLiteral); - this.state = 3606; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 11) { - { - this.state = 3605; - this.blocking(); - } - } - - this.state = 3609; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 42) { - { - this.state = 3608; - this.tableImplBuckets(); - } - } - - this.state = 3612; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 229) { - { - this.state = 3611; - this.orderByClause(); - } - } - - this.state = 3615; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 246) { - { - this.state = 3614; - this.compactPool(); - } - } - - this.state = 3621; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { - case 1: - { - this.state = 3617; - this.match(HiveSqlParser.KW_WITH); - this.state = 3618; - this.match(HiveSqlParser.KW_OVERWRITE); - this.state = 3619; - this.match(HiveSqlParser.KW_TBLPROPERTIES); - this.state = 3620; - this.tableProperties(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext { - let localContext = new AlterStatementSuffixSetOwnerContext(this.context, this.state); - this.enterRule(localContext, 578, HiveSqlParser.RULE_alterStatementSuffixSetOwner); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3623; - this.match(HiveSqlParser.KW_SET); - this.state = 3624; - this.match(HiveSqlParser.KW_OWNER); - this.state = 3625; - this.principalName(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext { - let localContext = new AlterStatementSuffixSetPartSpecContext(this.context, this.state); - this.enterRule(localContext, 580, HiveSqlParser.RULE_alterStatementSuffixSetPartSpec); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3627; - this.match(HiveSqlParser.KW_SET); - this.state = 3628; - this.match(HiveSqlParser.KW_PARTITION); - this.state = 3629; - this.match(HiveSqlParser.KW_SPEC); - this.state = 3630; - this.match(HiveSqlParser.LPAREN); - this.state = 3631; - localContext._spec = this.partitionTransformSpec(); - this.state = 3632; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext { - let localContext = new AlterStatementSuffixExecuteContext(this.context, this.state); - this.enterRule(localContext, 582, HiveSqlParser.RULE_alterStatementSuffixExecute); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3634; - this.match(HiveSqlParser.KW_EXECUTE); - this.state = 3644; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ROLLBACK: - { - this.state = 3635; - this.match(HiveSqlParser.KW_ROLLBACK); - this.state = 3636; - this.match(HiveSqlParser.LPAREN); - this.state = 3637; - localContext._rollbackParam = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 426 || _la === 431)) { - localContext._rollbackParam = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: - { - this.state = 3638; - this.match(HiveSqlParser.KW_EXPIRE_SNAPSHOTS); - this.state = 3639; - this.match(HiveSqlParser.LPAREN); - this.state = 3640; - localContext._expireParam = this.match(HiveSqlParser.StringLiteral); - } - break; - case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: - { - this.state = 3641; - this.match(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT); - this.state = 3642; - this.match(HiveSqlParser.LPAREN); - this.state = 3643; - localContext._snapshotParam = this.match(HiveSqlParser.Number); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 3646; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext { - let localContext = new AlterIndexStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 584, HiveSqlParser.RULE_alterIndexStatementSuffix); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3648; - this.id_(); - this.state = 3649; - this.match(HiveSqlParser.KW_ON); - this.state = 3650; - this.tableName(); - this.state = 3652; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 237) { - { - this.state = 3651; - this.partitionSpec(); - } - } - - this.state = 3654; - this.match(HiveSqlParser.KW_REBUILD); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public fileFormat(): FileFormatContext { - let localContext = new FileFormatContext(this.context, this.state); - this.enterRule(localContext, 586, HiveSqlParser.RULE_fileFormat); - let _la: number; - try { - this.state = 3669; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 3656; - this.match(HiveSqlParser.KW_INPUTFORMAT); - this.state = 3657; - localContext._inFmt = this.match(HiveSqlParser.StringLiteral); - this.state = 3658; - this.match(HiveSqlParser.KW_OUTPUTFORMAT); - this.state = 3659; - localContext._outFmt = this.match(HiveSqlParser.StringLiteral); - this.state = 3660; - this.match(HiveSqlParser.KW_SERDE); - this.state = 3661; - localContext._serdeCls = this.match(HiveSqlParser.StringLiteral); - this.state = 3666; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 159) { - { - this.state = 3662; - this.match(HiveSqlParser.KW_INPUTDRIVER); - this.state = 3663; - localContext._inDriver = this.match(HiveSqlParser.StringLiteral); - this.state = 3664; - this.match(HiveSqlParser.KW_OUTPUTDRIVER); - this.state = 3665; - localContext._outDriver = this.match(HiveSqlParser.StringLiteral); - } - } - - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 3668; - localContext._genericSpec = this.id_(); + this.state = 3082; + localContext._newLocation = this.match(HiveSqlParser.StringLiteral); } break; } @@ -16997,30 +14706,48 @@ export class HiveSqlParser extends SQLParserBase { } public alterDataConnectorStatementSuffix(): AlterDataConnectorStatementSuffixContext { let localContext = new AlterDataConnectorStatementSuffixContext(this.context, this.state); - this.enterRule(localContext, 588, HiveSqlParser.RULE_alterDataConnectorStatementSuffix); + this.enterRule(localContext, 422, HiveSqlParser.RULE_alterDataConnectorStatementSuffix); try { - this.state = 3674; + this.state = 3101; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 397, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3671; - this.alterDataConnectorSuffixProperties(); + this.state = 3086; + localContext._name = this.dbSchemaName(); + this.state = 3087; + this.match(HiveSqlParser.KW_SET); + this.state = 3088; + this.match(HiveSqlParser.KW_DCPROPERTIES); + this.state = 3089; + this.keyValueProperties(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3672; - this.alterDataConnectorSuffixSetOwner(); + this.state = 3091; + localContext._dcName = this.dbSchemaName(); + this.state = 3092; + this.match(HiveSqlParser.KW_SET); + this.state = 3093; + this.match(HiveSqlParser.KW_OWNER); + this.state = 3094; + this.principalAlterName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3673; - this.alterDataConnectorSuffixSetUrl(); + this.state = 3096; + localContext._dcName = this.dbSchemaName(); + this.state = 3097; + this.match(HiveSqlParser.KW_SET); + this.state = 3098; + this.match(HiveSqlParser.KW_URL); + this.state = 3099; + localContext._newUri = this.match(HiveSqlParser.StringLiteral); } break; } @@ -17039,20 +14766,16 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext { - let localContext = new AlterDataConnectorSuffixPropertiesContext(this.context, this.state); - this.enterRule(localContext, 590, HiveSqlParser.RULE_alterDataConnectorSuffixProperties); + public locationPath(): LocationPathContext { + let localContext = new LocationPathContext(this.context, this.state); + this.enterRule(localContext, 424, HiveSqlParser.RULE_locationPath); try { this.enterOuterAlt(localContext, 1); { - this.state = 3676; - localContext._name = this.dbSchemaName(); - this.state = 3677; - this.match(HiveSqlParser.KW_SET); - this.state = 3678; - this.match(HiveSqlParser.KW_DCPROPERTIES); - this.state = 3679; - this.dcProperties(); + this.state = 3103; + this.match(HiveSqlParser.KW_LOCATION); + this.state = 3104; + localContext._locn = this.match(HiveSqlParser.StringLiteral); } } catch (re) { @@ -17069,20 +14792,79 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext { - let localContext = new AlterDataConnectorSuffixSetOwnerContext(this.context, this.state); - this.enterRule(localContext, 592, HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner); + public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext { + let localContext = new AlterStatementSuffixDropPartitionsContext(this.context, this.state); + this.enterRule(localContext, 426, HiveSqlParser.RULE_alterStatementSuffixDropPartitions); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3681; - localContext._dcName = this.dbSchemaName(); - this.state = 3682; - this.match(HiveSqlParser.KW_SET); - this.state = 3683; - this.match(HiveSqlParser.KW_OWNER); - this.state = 3684; - this.principalAlterName(); + this.state = 3106; + this.match(HiveSqlParser.KW_DROP); + this.state = 3108; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 3107; + this.ifExists(); + } + } + + this.state = 3110; + this.match(HiveSqlParser.KW_PARTITION); + this.state = 3111; + this.partitionSelectorSpec(); + this.state = 3117; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 3112; + this.match(HiveSqlParser.COMMA); + this.state = 3113; + this.match(HiveSqlParser.KW_PARTITION); + this.state = 3114; + this.partitionSelectorSpec(); + } + } + this.state = 3119; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3122; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 152) { + { + this.state = 3120; + this.match(HiveSqlParser.KW_IGNORE); + this.state = 3121; + this.match(HiveSqlParser.KW_PROTECTION); + } + } + + this.state = 3125; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 255) { + { + this.state = 3124; + this.match(HiveSqlParser.KW_PURGE); + } + } + + this.state = 3128; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 134) { + { + this.state = 3127; + this.replicationClause(); + } + } + } } catch (re) { @@ -17099,20 +14881,183 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext { - let localContext = new AlterDataConnectorSuffixSetUrlContext(this.context, this.state); - this.enterRule(localContext, 594, HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl); + public skewedLocationMap(): SkewedLocationMapContext { + let localContext = new SkewedLocationMapContext(this.context, this.state); + this.enterRule(localContext, 428, HiveSqlParser.RULE_skewedLocationMap); try { this.enterOuterAlt(localContext, 1); { - this.state = 3686; - localContext._dcName = this.dbSchemaName(); - this.state = 3687; - this.match(HiveSqlParser.KW_SET); - this.state = 3688; - this.match(HiveSqlParser.KW_URL); - this.state = 3689; - localContext._newUri = this.match(HiveSqlParser.StringLiteral); + this.state = 3132; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_CURRENT_DATE: + case HiveSqlParser.KW_CURRENT_TIMESTAMP: + case HiveSqlParser.KW_DATE: + case HiveSqlParser.KW_FALSE: + case HiveSqlParser.KW_NULL: + case HiveSqlParser.KW_TIMESTAMP: + case HiveSqlParser.KW_TIMESTAMPLOCALTZ: + case HiveSqlParser.KW_TRUE: + case HiveSqlParser.QUESTION: + case HiveSqlParser.StringLiteral: + case HiveSqlParser.IntegralLiteral: + case HiveSqlParser.NumberLiteral: + case HiveSqlParser.Number: + case HiveSqlParser.Identifier: + case HiveSqlParser.CharSetName: + { + this.state = 3130; + this.constant(); + } + break; + case HiveSqlParser.LPAREN: + { + this.state = 3131; + this.skewedColumnValuePair(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3134; + this.match(HiveSqlParser.EQUAL); + this.state = 3135; + localContext._value = this.match(HiveSqlParser.StringLiteral); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext { + let localContext = new AlterStatementSuffixExecuteContext(this.context, this.state); + this.enterRule(localContext, 430, HiveSqlParser.RULE_alterStatementSuffixExecute); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3137; + this.match(HiveSqlParser.KW_EXECUTE); + this.state = 3147; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ROLLBACK: + { + this.state = 3138; + this.match(HiveSqlParser.KW_ROLLBACK); + this.state = 3139; + this.match(HiveSqlParser.LPAREN); + this.state = 3140; + localContext._rollbackParam = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 426 || _la === 431)) { + localContext._rollbackParam = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: + { + this.state = 3141; + this.match(HiveSqlParser.KW_EXPIRE_SNAPSHOTS); + this.state = 3142; + this.match(HiveSqlParser.LPAREN); + this.state = 3143; + localContext._expireParam = this.match(HiveSqlParser.StringLiteral); + } + break; + case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: + { + this.state = 3144; + this.match(HiveSqlParser.KW_SET_CURRENT_SNAPSHOT); + this.state = 3145; + this.match(HiveSqlParser.LPAREN); + this.state = 3146; + localContext._snapshotParam = this.match(HiveSqlParser.Number); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3149; + this.match(HiveSqlParser.RPAREN); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public fileFormat(): FileFormatContext { + let localContext = new FileFormatContext(this.context, this.state); + this.enterRule(localContext, 432, HiveSqlParser.RULE_fileFormat); + let _la: number; + try { + this.state = 3164; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3151; + this.match(HiveSqlParser.KW_INPUTFORMAT); + this.state = 3152; + localContext._inFmt = this.match(HiveSqlParser.StringLiteral); + this.state = 3153; + this.match(HiveSqlParser.KW_OUTPUTFORMAT); + this.state = 3154; + localContext._outFmt = this.match(HiveSqlParser.StringLiteral); + this.state = 3155; + this.match(HiveSqlParser.KW_SERDE); + this.state = 3156; + localContext._serdeCls = this.match(HiveSqlParser.StringLiteral); + this.state = 3161; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 159) { + { + this.state = 3157; + this.match(HiveSqlParser.KW_INPUTDRIVER); + this.state = 3158; + localContext._inDriver = this.match(HiveSqlParser.StringLiteral); + this.state = 3159; + this.match(HiveSqlParser.KW_OUTPUTDRIVER); + this.state = 3160; + localContext._outDriver = this.match(HiveSqlParser.StringLiteral); + } + } + + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3163; + localContext._genericSpec = this.id_(); + } + break; } } catch (re) { @@ -17131,39 +15076,39 @@ export class HiveSqlParser extends SQLParserBase { } public likeTableOrFile(): LikeTableOrFileContext { let localContext = new LikeTableOrFileContext(this.context, this.state); - this.enterRule(localContext, 596, HiveSqlParser.RULE_likeTableOrFile); + this.enterRule(localContext, 434, HiveSqlParser.RULE_likeTableOrFile); try { - this.state = 3700; + this.state = 3175; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 398, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3691; + this.state = 3166; this.match(HiveSqlParser.KW_LIKE); - this.state = 3692; + this.state = 3167; this.match(HiveSqlParser.KW_FILE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3693; + this.state = 3168; this.match(HiveSqlParser.KW_LIKE); - this.state = 3694; + this.state = 3169; this.match(HiveSqlParser.KW_FILE); - this.state = 3695; + this.state = 3170; localContext._format = this.id_(); - this.state = 3696; + this.state = 3171; localContext._uri = this.match(HiveSqlParser.StringLiteral); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3698; + this.state = 3173; this.match(HiveSqlParser.KW_LIKE); - this.state = 3699; + this.state = 3174; localContext._likeName = this.tableName(); } break; @@ -17185,124 +15130,124 @@ export class HiveSqlParser extends SQLParserBase { } public createTableStatement(): CreateTableStatementContext { let localContext = new CreateTableStatementContext(this.context, this.state); - this.enterRule(localContext, 598, HiveSqlParser.RULE_createTableStatement); + this.enterRule(localContext, 436, HiveSqlParser.RULE_createTableStatement); let _la: number; try { - this.state = 3837; + this.state = 3312; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 439, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3702; + this.state = 3177; this.match(HiveSqlParser.KW_CREATE); - this.state = 3704; + this.state = 3179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 3703; + this.state = 3178; localContext._temp = this.match(HiveSqlParser.KW_TEMPORARY); } } - this.state = 3707; + this.state = 3182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 345) { { - this.state = 3706; + this.state = 3181; localContext._trans = this.match(HiveSqlParser.KW_TRANSACTIONAL); } } - this.state = 3710; + this.state = 3185; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 3709; + this.state = 3184; localContext._ext = this.match(HiveSqlParser.KW_EXTERNAL); } } - this.state = 3712; + this.state = 3187; this.match(HiveSqlParser.KW_TABLE); - this.state = 3714; + this.state = 3189; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 3713; + this.state = 3188; this.ifNotExists(); } } - this.state = 3716; + this.state = 3191; localContext._name = this.tableNameCreate(); - this.state = 3773; + this.state = 3248; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_LIKE: { - this.state = 3717; + this.state = 3192; this.likeTableOrFile(); - this.state = 3719; + this.state = 3194; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 3718; + this.state = 3193; this.createTablePartitionSpec(); } } - this.state = 3722; + this.state = 3197; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 3721; + this.state = 3196; this.tableRowFormat(); } } - this.state = 3725; + this.state = 3200; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 3724; + this.state = 3199; this.tableFileFormat(); } } - this.state = 3728; + this.state = 3203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 3727; - this.tableLocation(); + this.state = 3202; + this.locationPath(); } } - this.state = 3731; + this.state = 3206; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 3730; + this.state = 3205; this.tablePropertiesPrefixed(); } } - this.state = 3734; + this.state = 3209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 183) { { - this.state = 3733; + this.state = 3208; this.tableLifecycle(); } } @@ -17366,118 +15311,118 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.SEMICOLON: case HiveSqlParser.LPAREN: { - this.state = 3740; + this.state = 3215; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { case 1: { - this.state = 3736; + this.state = 3211; this.match(HiveSqlParser.LPAREN); - this.state = 3737; + this.state = 3212; this.columnNameTypeOrConstraintList(); - this.state = 3738; + this.state = 3213; this.match(HiveSqlParser.RPAREN); } break; } - this.state = 3743; + this.state = 3218; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 3742; + this.state = 3217; this.tableComment(); } } - this.state = 3746; + this.state = 3221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 3745; + this.state = 3220; this.createTablePartitionSpec(); } } - this.state = 3749; + this.state = 3224; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 3748; + this.state = 3223; this.tableBuckets(); } } - this.state = 3752; + this.state = 3227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 310) { { - this.state = 3751; + this.state = 3226; this.tableSkewed(); } } - this.state = 3755; + this.state = 3230; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 3754; + this.state = 3229; this.tableRowFormat(); } } - this.state = 3758; + this.state = 3233; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 3757; + this.state = 3232; this.tableFileFormat(); } } - this.state = 3761; + this.state = 3236; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 3760; - this.tableLocation(); + this.state = 3235; + this.locationPath(); } } - this.state = 3764; + this.state = 3239; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 3763; + this.state = 3238; this.tablePropertiesPrefixed(); } } - this.state = 3767; + this.state = 3242; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 183) { { - this.state = 3766; + this.state = 3241; this.tableLifecycle(); } } - this.state = 3771; + this.state = 3246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 3769; + this.state = 3244; this.match(HiveSqlParser.KW_AS); - this.state = 3770; + this.state = 3245; this.selectStatementWithCTE(); } } @@ -17492,77 +15437,77 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3775; + this.state = 3250; this.match(HiveSqlParser.KW_CREATE); - this.state = 3776; + this.state = 3251; localContext._mgd = this.match(HiveSqlParser.KW_MANAGED); - this.state = 3777; + this.state = 3252; this.match(HiveSqlParser.KW_TABLE); - this.state = 3779; + this.state = 3254; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 3778; + this.state = 3253; this.ifNotExists(); } } - this.state = 3781; + this.state = 3256; localContext._name = this.tableNameCreate(); - this.state = 3835; + this.state = 3310; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_LIKE: { - this.state = 3782; + this.state = 3257; this.likeTableOrFile(); - this.state = 3784; + this.state = 3259; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 3783; + this.state = 3258; this.tableRowFormat(); } } - this.state = 3787; + this.state = 3262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 3786; + this.state = 3261; this.tableFileFormat(); } } - this.state = 3790; + this.state = 3265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 3789; - this.tableLocation(); + this.state = 3264; + this.locationPath(); } } - this.state = 3793; + this.state = 3268; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 3792; + this.state = 3267; this.tablePropertiesPrefixed(); } } - this.state = 3796; + this.state = 3271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 183) { { - this.state = 3795; + this.state = 3270; this.tableLifecycle(); } } @@ -17626,118 +15571,118 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.SEMICOLON: case HiveSqlParser.LPAREN: { - this.state = 3802; + this.state = 3277; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { case 1: { - this.state = 3798; + this.state = 3273; this.match(HiveSqlParser.LPAREN); - this.state = 3799; + this.state = 3274; this.columnNameTypeOrConstraintList(); - this.state = 3800; + this.state = 3275; this.match(HiveSqlParser.RPAREN); } break; } - this.state = 3805; + this.state = 3280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 3804; + this.state = 3279; this.tableComment(); } } - this.state = 3808; + this.state = 3283; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 3807; + this.state = 3282; this.createTablePartitionSpec(); } } - this.state = 3811; + this.state = 3286; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 3810; + this.state = 3285; this.tableBuckets(); } } - this.state = 3814; + this.state = 3289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 310) { { - this.state = 3813; + this.state = 3288; this.tableSkewed(); } } - this.state = 3817; + this.state = 3292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 291) { { - this.state = 3816; + this.state = 3291; this.tableRowFormat(); } } - this.state = 3820; + this.state = 3295; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 321) { { - this.state = 3819; + this.state = 3294; this.tableFileFormat(); } } - this.state = 3823; + this.state = 3298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 189) { { - this.state = 3822; - this.tableLocation(); + this.state = 3297; + this.locationPath(); } } - this.state = 3826; + this.state = 3301; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 332) { { - this.state = 3825; + this.state = 3300; this.tablePropertiesPrefixed(); } } - this.state = 3829; + this.state = 3304; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 183) { { - this.state = 3828; + this.state = 3303; this.tableLifecycle(); } } - this.state = 3833; + this.state = 3308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 3831; + this.state = 3306; this.match(HiveSqlParser.KW_AS); - this.state = 3832; + this.state = 3307; this.selectStatementWithCTE(); } } @@ -17767,68 +15712,74 @@ export class HiveSqlParser extends SQLParserBase { } public createDataConnectorStatement(): CreateDataConnectorStatementContext { let localContext = new CreateDataConnectorStatementContext(this.context, this.state); - this.enterRule(localContext, 600, HiveSqlParser.RULE_createDataConnectorStatement); + this.enterRule(localContext, 438, HiveSqlParser.RULE_createDataConnectorStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3839; + this.state = 3314; this.match(HiveSqlParser.KW_CREATE); - this.state = 3840; + this.state = 3315; this.match(HiveSqlParser.KW_DATACONNECTOR); - this.state = 3842; + this.state = 3317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 3841; + this.state = 3316; this.ifNotExists(); } } - this.state = 3844; + this.state = 3319; localContext._name = this.id_(); - this.state = 3846; + this.state = 3322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 352) { { - this.state = 3845; - this.dataConnectorType(); + this.state = 3320; + this.match(HiveSqlParser.KW_TYPE); + this.state = 3321; + localContext._dcType = this.match(HiveSqlParser.StringLiteral); } } - this.state = 3849; + this.state = 3326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 367) { { - this.state = 3848; - this.dataConnectorUrl(); + this.state = 3324; + this.match(HiveSqlParser.KW_URL); + this.state = 3325; + localContext._url = this.match(HiveSqlParser.StringLiteral); } } - this.state = 3852; + this.state = 3330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 47) { { - this.state = 3851; - this.dataConnectorComment(); + this.state = 3328; + this.match(HiveSqlParser.KW_COMMENT); + this.state = 3329; + localContext._comment = this.match(HiveSqlParser.StringLiteral); } } - this.state = 3857; + this.state = 3335; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { case 1: { - this.state = 3854; + this.state = 3332; this.match(HiveSqlParser.KW_WITH); - this.state = 3855; + this.state = 3333; this.match(HiveSqlParser.KW_DCPROPERTIES); - this.state = 3856; - localContext._dcprops = this.dcProperties(); + this.state = 3334; + localContext._dcprops = this.keyValueProperties(); } break; } @@ -17848,134 +15799,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public dataConnectorComment(): DataConnectorCommentContext { - let localContext = new DataConnectorCommentContext(this.context, this.state); - this.enterRule(localContext, 602, HiveSqlParser.RULE_dataConnectorComment); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3859; - this.match(HiveSqlParser.KW_COMMENT); - this.state = 3860; - localContext._comment = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dataConnectorUrl(): DataConnectorUrlContext { - let localContext = new DataConnectorUrlContext(this.context, this.state); - this.enterRule(localContext, 604, HiveSqlParser.RULE_dataConnectorUrl); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3862; - this.match(HiveSqlParser.KW_URL); - this.state = 3863; - localContext._url = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dataConnectorType(): DataConnectorTypeContext { - let localContext = new DataConnectorTypeContext(this.context, this.state); - this.enterRule(localContext, 606, HiveSqlParser.RULE_dataConnectorType); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3865; - this.match(HiveSqlParser.KW_TYPE); - this.state = 3866; - localContext._dcType = this.match(HiveSqlParser.StringLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dcProperties(): DcPropertiesContext { - let localContext = new DcPropertiesContext(this.context, this.state); - this.enterRule(localContext, 608, HiveSqlParser.RULE_dcProperties); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3868; - this.match(HiveSqlParser.LPAREN); - this.state = 3869; - this.dbPropertiesList(); - this.state = 3870; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public dropDataConnectorStatement(): DropDataConnectorStatementContext { let localContext = new DropDataConnectorStatementContext(this.context, this.state); - this.enterRule(localContext, 610, HiveSqlParser.RULE_dropDataConnectorStatement); + this.enterRule(localContext, 440, HiveSqlParser.RULE_dropDataConnectorStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3872; + this.state = 3337; this.match(HiveSqlParser.KW_DROP); - this.state = 3873; + this.state = 3338; this.match(HiveSqlParser.KW_DATACONNECTOR); - this.state = 3875; + this.state = 3340; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151) { { - this.state = 3874; + this.state = 3339; this.ifExists(); } } - this.state = 3877; + this.state = 3342; this.id_(); } } @@ -17995,28 +15840,28 @@ export class HiveSqlParser extends SQLParserBase { } public tableAllColumns(): TableAllColumnsContext { let localContext = new TableAllColumnsContext(this.context, this.state); - this.enterRule(localContext, 612, HiveSqlParser.RULE_tableAllColumns); + this.enterRule(localContext, 442, HiveSqlParser.RULE_tableAllColumns); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3884; + this.state = 3349; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { { { - this.state = 3879; + this.state = 3344; this.id_(); - this.state = 3880; + this.state = 3345; this.match(HiveSqlParser.DOT); } } - this.state = 3886; + this.state = 3351; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3887; + this.state = 3352; this.match(HiveSqlParser.STAR); } } @@ -18034,52 +15879,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public defaultValue(): DefaultValueContext { - let localContext = new DefaultValueContext(this.context, this.state); - this.enterRule(localContext, 614, HiveSqlParser.RULE_defaultValue); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3889; - this.match(HiveSqlParser.KW_DEFAULT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public expressionList(): ExpressionListContext { let localContext = new ExpressionListContext(this.context, this.state); - this.enterRule(localContext, 616, HiveSqlParser.RULE_expressionList); + this.enterRule(localContext, 444, HiveSqlParser.RULE_expressionList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3891; + this.state = 3354; this.expression(); - this.state = 3896; + this.state = 3359; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 3892; + this.state = 3355; this.match(HiveSqlParser.COMMA); - this.state = 3893; + this.state = 3356; this.expression(); } } - this.state = 3898; + this.state = 3361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -18101,26 +15922,26 @@ export class HiveSqlParser extends SQLParserBase { } public aliasList(): AliasListContext { let localContext = new AliasListContext(this.context, this.state); - this.enterRule(localContext, 618, HiveSqlParser.RULE_aliasList); + this.enterRule(localContext, 446, HiveSqlParser.RULE_aliasList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3899; + this.state = 3362; this.id_(); - this.state = 3904; + this.state = 3367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 3900; + this.state = 3363; this.match(HiveSqlParser.COMMA); - this.state = 3901; + this.state = 3364; this.id_(); } } - this.state = 3906; + this.state = 3369; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -18142,13 +15963,13 @@ export class HiveSqlParser extends SQLParserBase { } public fromClause(): FromClauseContext { let localContext = new FromClauseContext(this.context, this.state); - this.enterRule(localContext, 620, HiveSqlParser.RULE_fromClause); + this.enterRule(localContext, 448, HiveSqlParser.RULE_fromClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3907; + this.state = 3370; this.match(HiveSqlParser.KW_FROM); - this.state = 3908; + this.state = 3371; this.fromSource(); } } @@ -18168,32 +15989,32 @@ export class HiveSqlParser extends SQLParserBase { } public fromSource(): FromSourceContext { let localContext = new FromSourceContext(this.context, this.state); - this.enterRule(localContext, 622, HiveSqlParser.RULE_fromSource); + this.enterRule(localContext, 450, HiveSqlParser.RULE_fromSource); let _la: number; try { - this.state = 3919; + this.state = 3382; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_UNIQUEJOIN: this.enterOuterAlt(localContext, 1); { - this.state = 3910; - this.uniqueJoinToken(); - this.state = 3911; + this.state = 3373; + this.match(HiveSqlParser.KW_UNIQUEJOIN); + this.state = 3374; this.uniqueJoinSource(); - this.state = 3914; + this.state = 3377; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3912; + this.state = 3375; this.match(HiveSqlParser.COMMA); - this.state = 3913; + this.state = 3376; this.uniqueJoinSource(); } } - this.state = 3916; + this.state = 3379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 397); @@ -18443,7 +16264,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 2); { - this.state = 3918; + this.state = 3381; this.joinSource(); } break; @@ -18467,112 +16288,112 @@ export class HiveSqlParser extends SQLParserBase { } public atomjoinSource(): AtomjoinSourceContext { let localContext = new AtomjoinSourceContext(this.context, this.state); - this.enterRule(localContext, 624, HiveSqlParser.RULE_atomjoinSource); + this.enterRule(localContext, 452, HiveSqlParser.RULE_atomjoinSource); try { let alternative: number; - this.state = 3953; + this.state = 3416; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 438, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3921; + this.state = 3384; this.tableSource(); - this.state = 3925; + this.state = 3388; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 434, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3922; + this.state = 3385; this.lateralView(); } } } - this.state = 3927; + this.state = 3390; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 434, this.context); } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3928; + this.state = 3391; this.virtualTableSource(); - this.state = 3932; + this.state = 3395; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 452, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3929; + this.state = 3392; this.lateralView(); } } } - this.state = 3934; + this.state = 3397; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 452, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); } } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3935; + this.state = 3398; this.subQuerySource(); - this.state = 3939; + this.state = 3402; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 453, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 436, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3936; + this.state = 3399; this.lateralView(); } } } - this.state = 3941; + this.state = 3404; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 453, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 436, this.context); } } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3942; + this.state = 3405; this.partitionedTableFunction(); - this.state = 3946; + this.state = 3409; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 437, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3943; + this.state = 3406; this.lateralView(); } } } - this.state = 3948; + this.state = 3411; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 437, this.context); } } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3949; + this.state = 3412; this.match(HiveSqlParser.LPAREN); - this.state = 3950; + this.state = 3413; this.joinSource(); - this.state = 3951; + this.state = 3414; this.match(HiveSqlParser.RPAREN); } break; @@ -18594,39 +16415,39 @@ export class HiveSqlParser extends SQLParserBase { } public joinSource(): JoinSourceContext { let localContext = new JoinSourceContext(this.context, this.state); - this.enterRule(localContext, 626, HiveSqlParser.RULE_joinSource); + this.enterRule(localContext, 454, HiveSqlParser.RULE_joinSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3955; + this.state = 3418; this.atomjoinSource(); - this.state = 3966; + this.state = 3429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 60 || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 2147614721) !== 0) || _la === 180 || _la === 285 || _la === 397) { { { - this.state = 3956; + this.state = 3419; this.joinToken(); - this.state = 3957; + this.state = 3420; this.joinSourcePart(); - this.state = 3962; + this.state = 3425; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ON: { - this.state = 3958; + this.state = 3421; this.match(HiveSqlParser.KW_ON); - this.state = 3959; + this.state = 3422; this.expression(); } break; case HiveSqlParser.KW_USING: { - this.state = 3960; + this.state = 3423; this.match(HiveSqlParser.KW_USING); - this.state = 3961; + this.state = 3424; this.columnParenthesesList(); } break; @@ -18704,7 +16525,7 @@ export class HiveSqlParser extends SQLParserBase { } } } - this.state = 3968; + this.state = 3431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -18726,54 +16547,54 @@ export class HiveSqlParser extends SQLParserBase { } public joinSourcePart(): JoinSourcePartContext { let localContext = new JoinSourcePartContext(this.context, this.state); - this.enterRule(localContext, 628, HiveSqlParser.RULE_joinSourcePart); + this.enterRule(localContext, 456, HiveSqlParser.RULE_joinSourcePart); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3973; + this.state = 3436; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context) ) { case 1: { - this.state = 3969; + this.state = 3432; this.tableSource(); } break; case 2: { - this.state = 3970; + this.state = 3433; this.virtualTableSource(); } break; case 3: { - this.state = 3971; + this.state = 3434; this.subQuerySource(); } break; case 4: { - this.state = 3972; + this.state = 3435; this.partitionedTableFunction(); } break; } - this.state = 3978; + this.state = 3441; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 459, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 442, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3975; + this.state = 3438; this.lateralView(); } } } - this.state = 3980; + this.state = 3443; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 459, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 442, this.context); } } } @@ -18793,52 +16614,58 @@ export class HiveSqlParser extends SQLParserBase { } public uniqueJoinSource(): UniqueJoinSourceContext { let localContext = new UniqueJoinSourceContext(this.context, this.state); - this.enterRule(localContext, 630, HiveSqlParser.RULE_uniqueJoinSource); + this.enterRule(localContext, 458, HiveSqlParser.RULE_uniqueJoinSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3982; + this.state = 3445; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 250) { { - this.state = 3981; + this.state = 3444; this.match(HiveSqlParser.KW_PRESERVE); } } - this.state = 3984; - this.uniqueJoinTableSource(); - this.state = 3985; - this.uniqueJoinExpr(); + this.state = 3447; + localContext._tabname = this.tableOrView(); + this.state = 3449; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 331) { + { + this.state = 3448; + localContext._ts = this.tableSample(); + } } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + + this.state = 3455; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { + { + this.state = 3452; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 17) { + { + this.state = 3451; + this.match(HiveSqlParser.KW_AS); + } + } + + this.state = 3454; + localContext._alias = this.id_(); + } } - } - finally { - this.exitRule(); - } - return localContext; - } - public uniqueJoinExpr(): UniqueJoinExprContext { - let localContext = new UniqueJoinExprContext(this.context, this.state); - this.enterRule(localContext, 632, HiveSqlParser.RULE_uniqueJoinExpr); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3987; + + this.state = 3457; this.match(HiveSqlParser.LPAREN); - this.state = 3988; + this.state = 3458; this.expressionList(); - this.state = 3989; + this.state = 3459; this.match(HiveSqlParser.RPAREN); } } @@ -18856,42 +16683,18 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public uniqueJoinToken(): UniqueJoinTokenContext { - let localContext = new UniqueJoinTokenContext(this.context, this.state); - this.enterRule(localContext, 634, HiveSqlParser.RULE_uniqueJoinToken); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 3991; - this.match(HiveSqlParser.KW_UNIQUEJOIN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public joinToken(): JoinTokenContext { let localContext = new JoinTokenContext(this.context, this.state); - this.enterRule(localContext, 636, HiveSqlParser.RULE_joinToken); + this.enterRule(localContext, 460, HiveSqlParser.RULE_joinToken); let _la: number; try { - this.state = 4007; + this.state = 3475; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.COMMA: this.enterOuterAlt(localContext, 1); { - this.state = 3993; + this.state = 3461; this.match(HiveSqlParser.COMMA); } break; @@ -18903,25 +16706,25 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_RIGHT: this.enterOuterAlt(localContext, 2); { - this.state = 4004; + this.state = 3472; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_INNER: { - this.state = 3994; + this.state = 3462; this.match(HiveSqlParser.KW_INNER); } break; case HiveSqlParser.KW_CROSS: { - this.state = 3995; + this.state = 3463; this.match(HiveSqlParser.KW_CROSS); } break; case HiveSqlParser.KW_FULL: case HiveSqlParser.KW_RIGHT: { - this.state = 3996; + this.state = 3464; _la = this.tokenStream.LA(1); if(!(_la === 140 || _la === 285)) { this.errorHandler.recoverInline(this); @@ -18930,12 +16733,12 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3998; + this.state = 3466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 231) { { - this.state = 3997; + this.state = 3465; this.match(HiveSqlParser.KW_OUTER); } } @@ -18944,14 +16747,14 @@ export class HiveSqlParser extends SQLParserBase { break; case HiveSqlParser.KW_LEFT: { - this.state = 4000; + this.state = 3468; this.match(HiveSqlParser.KW_LEFT); - this.state = 4002; + this.state = 3470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 231 || _la === 300) { { - this.state = 4001; + this.state = 3469; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 231 || _la === 300)) { this.errorHandler.recoverInline(this); @@ -18970,7 +16773,7 @@ export class HiveSqlParser extends SQLParserBase { default: break; } - this.state = 4006; + this.state = 3474; this.match(HiveSqlParser.KW_JOIN); } break; @@ -18994,52 +16797,52 @@ export class HiveSqlParser extends SQLParserBase { } public lateralView(): LateralViewContext { let localContext = new LateralViewContext(this.context, this.state); - this.enterRule(localContext, 638, HiveSqlParser.RULE_lateralView); + this.enterRule(localContext, 462, HiveSqlParser.RULE_lateralView); let _la: number; try { let alternative: number; - this.state = 4066; + this.state = 3534; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4009; + this.state = 3477; this.match(HiveSqlParser.KW_LATERAL); - this.state = 4010; + this.state = 3478; this.match(HiveSqlParser.KW_VIEW); - this.state = 4011; + this.state = 3479; this.match(HiveSqlParser.KW_OUTER); - this.state = 4012; + this.state = 3480; this.function_(); - this.state = 4013; + this.state = 3481; this.tableAlias(); - this.state = 4023; + this.state = 3491; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4014; + this.state = 3482; this.match(HiveSqlParser.KW_AS); - this.state = 4015; + this.state = 3483; this.id_(); - this.state = 4020; + this.state = 3488; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4016; + this.state = 3484; this.match(HiveSqlParser.COMMA); - this.state = 4017; + this.state = 3485; this.id_(); } } } - this.state = 4022; + this.state = 3490; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 465, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); } } } @@ -19049,55 +16852,55 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4026; + this.state = 3494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 397) { { - this.state = 4025; + this.state = 3493; this.match(HiveSqlParser.COMMA); } } - this.state = 4028; + this.state = 3496; this.match(HiveSqlParser.KW_LATERAL); - this.state = 4064; + this.state = 3532; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_VIEW: { - this.state = 4029; + this.state = 3497; this.match(HiveSqlParser.KW_VIEW); - this.state = 4030; + this.state = 3498; this.function_(); - this.state = 4031; + this.state = 3499; this.tableAlias(); - this.state = 4041; + this.state = 3509; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4032; + this.state = 3500; this.match(HiveSqlParser.KW_AS); - this.state = 4033; + this.state = 3501; this.id_(); - this.state = 4038; + this.state = 3506; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 468, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4034; + this.state = 3502; this.match(HiveSqlParser.COMMA); - this.state = 4035; + this.state = 3503; this.id_(); } } } - this.state = 4040; + this.state = 3508; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 468, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 454, this.context); } } } @@ -19106,52 +16909,52 @@ export class HiveSqlParser extends SQLParserBase { break; case HiveSqlParser.KW_TABLE: { - this.state = 4043; + this.state = 3511; this.match(HiveSqlParser.KW_TABLE); - this.state = 4044; + this.state = 3512; this.match(HiveSqlParser.LPAREN); - this.state = 4045; + this.state = 3513; this.valuesClause(); - this.state = 4046; + this.state = 3514; this.match(HiveSqlParser.RPAREN); - this.state = 4048; + this.state = 3516; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4047; + this.state = 3515; this.match(HiveSqlParser.KW_AS); } } - this.state = 4050; + this.state = 3518; this.tableAlias(); - this.state = 4062; + this.state = 3530; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 472, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { case 1: { - this.state = 4051; + this.state = 3519; this.match(HiveSqlParser.LPAREN); - this.state = 4052; + this.state = 3520; this.id_(); - this.state = 4057; + this.state = 3525; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4053; + this.state = 3521; this.match(HiveSqlParser.COMMA); - this.state = 4054; + this.state = 3522; this.id_(); } } - this.state = 4059; + this.state = 3527; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4060; + this.state = 3528; this.match(HiveSqlParser.RPAREN); } break; @@ -19181,11 +16984,11 @@ export class HiveSqlParser extends SQLParserBase { } public tableAlias(): TableAliasContext { let localContext = new TableAliasContext(this.context, this.state); - this.enterRule(localContext, 640, HiveSqlParser.RULE_tableAlias); + this.enterRule(localContext, 464, HiveSqlParser.RULE_tableAlias); try { this.enterOuterAlt(localContext, 1); { - this.state = 4068; + this.state = 3536; this.id_(); } } @@ -19203,150 +17006,101 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public tableBucketSample(): TableBucketSampleContext { - let localContext = new TableBucketSampleContext(this.context, this.state); - this.enterRule(localContext, 642, HiveSqlParser.RULE_tableBucketSample); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4070; - this.match(HiveSqlParser.KW_TABLESAMPLE); - this.state = 4071; - this.match(HiveSqlParser.LPAREN); - this.state = 4072; - this.match(HiveSqlParser.KW_BUCKET); - this.state = 4073; - localContext._numerator = this.match(HiveSqlParser.Number); - this.state = 4074; - this.match(HiveSqlParser.KW_OUT); - this.state = 4075; - this.match(HiveSqlParser.KW_OF); - this.state = 4076; - localContext._denominator = this.match(HiveSqlParser.Number); - this.state = 4086; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 224) { - { - this.state = 4077; - this.match(HiveSqlParser.KW_ON); - this.state = 4078; - localContext._expression = this.expression(); - localContext._expr.push(localContext._expression); - this.state = 4083; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 4079; - this.match(HiveSqlParser.COMMA); - this.state = 4080; - localContext._expression = this.expression(); - localContext._expr.push(localContext._expression); - } - } - this.state = 4085; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - this.state = 4088; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public splitSample(): SplitSampleContext { - let localContext = new SplitSampleContext(this.context, this.state); - this.enterRule(localContext, 644, HiveSqlParser.RULE_splitSample); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4090; - this.match(HiveSqlParser.KW_TABLESAMPLE); - this.state = 4091; - this.match(HiveSqlParser.LPAREN); - this.state = 4095; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.Number: - { - this.state = 4092; - this.match(HiveSqlParser.Number); - this.state = 4093; - _la = this.tokenStream.LA(1); - if(!(_la === 241 || _la === 292)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - break; - case HiveSqlParser.ByteLengthLiteral: - { - this.state = 4094; - this.match(HiveSqlParser.ByteLengthLiteral); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 4097; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public tableSample(): TableSampleContext { let localContext = new TableSampleContext(this.context, this.state); - this.enterRule(localContext, 646, HiveSqlParser.RULE_tableSample); + this.enterRule(localContext, 466, HiveSqlParser.RULE_tableSample); + let _la: number; try { - this.state = 4101; + this.state = 3565; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4099; - this.tableBucketSample(); + this.state = 3538; + this.match(HiveSqlParser.KW_TABLESAMPLE); + this.state = 3539; + this.match(HiveSqlParser.LPAREN); + this.state = 3540; + this.match(HiveSqlParser.KW_BUCKET); + this.state = 3541; + localContext._numerator = this.match(HiveSqlParser.Number); + this.state = 3542; + this.match(HiveSqlParser.KW_OUT); + this.state = 3543; + this.match(HiveSqlParser.KW_OF); + this.state = 3544; + localContext._denominator = this.match(HiveSqlParser.Number); + this.state = 3554; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 224) { + { + this.state = 3545; + this.match(HiveSqlParser.KW_ON); + this.state = 3546; + localContext._expression = this.expression(); + localContext._expr.push(localContext._expression); + this.state = 3551; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 3547; + this.match(HiveSqlParser.COMMA); + this.state = 3548; + localContext._expression = this.expression(); + localContext._expr.push(localContext._expression); + } + } + this.state = 3553; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3556; + this.match(HiveSqlParser.RPAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4100; - this.splitSample(); + this.state = 3557; + this.match(HiveSqlParser.KW_TABLESAMPLE); + this.state = 3558; + this.match(HiveSqlParser.LPAREN); + this.state = 3562; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.Number: + { + this.state = 3559; + this.match(HiveSqlParser.Number); + this.state = 3560; + _la = this.tokenStream.LA(1); + if(!(_la === 241 || _la === 292)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case HiveSqlParser.ByteLengthLiteral: + { + this.state = 3561; + this.match(HiveSqlParser.ByteLengthLiteral); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3564; + this.match(HiveSqlParser.RPAREN); } break; } @@ -19367,59 +17121,59 @@ export class HiveSqlParser extends SQLParserBase { } public tableSource(): TableSourceContext { let localContext = new TableSourceContext(this.context, this.state); - this.enterRule(localContext, 648, HiveSqlParser.RULE_tableSource); + this.enterRule(localContext, 468, HiveSqlParser.RULE_tableSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4103; + this.state = 3567; localContext._tabname = this.tableOrView(); - this.state = 4105; + this.state = 3569; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 4104; + this.state = 3568; localContext._props = this.tableProperties(); } break; } - this.state = 4108; + this.state = 3572; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 331) { { - this.state = 4107; + this.state = 3571; localContext._ts = this.tableSample(); } } - this.state = 4111; + this.state = 3575; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134) { { - this.state = 4110; + this.state = 3574; localContext._asOf = this.asOfClause(); } } - this.state = 4117; + this.state = 3581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 483, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { case 1: { - this.state = 4114; + this.state = 3578; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4113; + this.state = 3577; this.match(HiveSqlParser.KW_AS); } } - this.state = 4116; + this.state = 3580; localContext._alias = this.id_(); } break; @@ -19442,38 +17196,38 @@ export class HiveSqlParser extends SQLParserBase { } public asOfClause(): AsOfClauseContext { let localContext = new AsOfClauseContext(this.context, this.state); - this.enterRule(localContext, 650, HiveSqlParser.RULE_asOfClause); + this.enterRule(localContext, 470, HiveSqlParser.RULE_asOfClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4119; + this.state = 3583; this.match(HiveSqlParser.KW_FOR); - this.state = 4129; + this.state = 3593; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_SYSTEM_TIME: { - this.state = 4120; + this.state = 3584; this.match(HiveSqlParser.KW_SYSTEM_TIME); - this.state = 4121; + this.state = 3585; this.match(HiveSqlParser.KW_AS); - this.state = 4122; + this.state = 3586; this.match(HiveSqlParser.KW_OF); - this.state = 4123; + this.state = 3587; localContext._asOfTime = this.expression(); } break; case HiveSqlParser.KW_FOR: { - this.state = 4124; + this.state = 3588; this.match(HiveSqlParser.KW_FOR); - this.state = 4125; + this.state = 3589; this.match(HiveSqlParser.KW_SYSTEM_VERSION); - this.state = 4126; + this.state = 3590; this.match(HiveSqlParser.KW_AS); - this.state = 4127; + this.state = 3591; this.match(HiveSqlParser.KW_OF); - this.state = 4128; + this.state = 3592; localContext._asOfVersion = this.match(HiveSqlParser.Number); } break; @@ -19496,68 +17250,13 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public uniqueJoinTableSource(): UniqueJoinTableSourceContext { - let localContext = new UniqueJoinTableSourceContext(this.context, this.state); - this.enterRule(localContext, 652, HiveSqlParser.RULE_uniqueJoinTableSource); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4131; - localContext._tabname = this.tableOrView(); - this.state = 4133; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 331) { - { - this.state = 4132; - localContext._ts = this.tableSample(); - } - } - - this.state = 4139; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252585854) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { - { - this.state = 4136; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 17) { - { - this.state = 4135; - this.match(HiveSqlParser.KW_AS); - } - } - - this.state = 4138; - localContext._alias = this.id_(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public dbSchemaName(): DbSchemaNameContext { let localContext = new DbSchemaNameContext(this.context, this.state); - this.enterRule(localContext, 654, HiveSqlParser.RULE_dbSchemaName); + this.enterRule(localContext, 472, HiveSqlParser.RULE_dbSchemaName); try { this.enterOuterAlt(localContext, 1); { - this.state = 4141; + this.state = 3595; this.id_(); } } @@ -19577,11 +17276,11 @@ export class HiveSqlParser extends SQLParserBase { } public dbSchemaNameCreate(): DbSchemaNameCreateContext { let localContext = new DbSchemaNameCreateContext(this.context, this.state); - this.enterRule(localContext, 656, HiveSqlParser.RULE_dbSchemaNameCreate); + this.enterRule(localContext, 474, HiveSqlParser.RULE_dbSchemaNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 4143; + this.state = 3597; this.id_(); } } @@ -19601,22 +17300,22 @@ export class HiveSqlParser extends SQLParserBase { } public tableOrView(): TableOrViewContext { let localContext = new TableOrViewContext(this.context, this.state); - this.enterRule(localContext, 658, HiveSqlParser.RULE_tableOrView); + this.enterRule(localContext, 476, HiveSqlParser.RULE_tableOrView); try { - this.state = 4147; + this.state = 3601; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4145; + this.state = 3599; this.tableName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4146; + this.state = 3600; this.viewName(); } break; @@ -19638,28 +17337,28 @@ export class HiveSqlParser extends SQLParserBase { } public tableName(): TableNameContext { let localContext = new TableNameContext(this.context, this.state); - this.enterRule(localContext, 660, HiveSqlParser.RULE_tableName); + this.enterRule(localContext, 478, HiveSqlParser.RULE_tableName); try { - this.state = 4157; + this.state = 3611; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 473, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4149; + this.state = 3603; localContext._db = this.id_(); - this.state = 4150; + this.state = 3604; this.match(HiveSqlParser.DOT); - this.state = 4151; + this.state = 3605; localContext._tab = this.id_(); - this.state = 4154; + this.state = 3608; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 472, this.context) ) { case 1: { - this.state = 4152; + this.state = 3606; this.match(HiveSqlParser.DOT); - this.state = 4153; + this.state = 3607; localContext._meta = this.id_(); } break; @@ -19669,7 +17368,7 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4156; + this.state = 3610; localContext._tab = this.id_(); } break; @@ -19691,29 +17390,29 @@ export class HiveSqlParser extends SQLParserBase { } public tableNameCreate(): TableNameCreateContext { let localContext = new TableNameCreateContext(this.context, this.state); - this.enterRule(localContext, 662, HiveSqlParser.RULE_tableNameCreate); + this.enterRule(localContext, 480, HiveSqlParser.RULE_tableNameCreate); let _la: number; try { - this.state = 4167; + this.state = 3621; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 492, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 475, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4159; + this.state = 3613; localContext._db = this.id_(); - this.state = 4160; + this.state = 3614; this.match(HiveSqlParser.DOT); - this.state = 4161; + this.state = 3615; localContext._tab = this.id_(); - this.state = 4164; + this.state = 3618; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 395) { { - this.state = 4162; + this.state = 3616; this.match(HiveSqlParser.DOT); - this.state = 4163; + this.state = 3617; localContext._meta = this.id_(); } } @@ -19723,7 +17422,7 @@ export class HiveSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4166; + this.state = 3620; localContext._tab = this.id_(); } break; @@ -19745,23 +17444,23 @@ export class HiveSqlParser extends SQLParserBase { } public viewName(): ViewNameContext { let localContext = new ViewNameContext(this.context, this.state); - this.enterRule(localContext, 664, HiveSqlParser.RULE_viewName); + this.enterRule(localContext, 482, HiveSqlParser.RULE_viewName); try { this.enterOuterAlt(localContext, 1); { - this.state = 4172; + this.state = 3626; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 493, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { case 1: { - this.state = 4169; + this.state = 3623; localContext._db = this.id_(); - this.state = 4170; + this.state = 3624; this.match(HiveSqlParser.DOT); } break; } - this.state = 4174; + this.state = 3628; localContext._view = this.id_(); } } @@ -19781,23 +17480,23 @@ export class HiveSqlParser extends SQLParserBase { } public viewNameCreate(): ViewNameCreateContext { let localContext = new ViewNameCreateContext(this.context, this.state); - this.enterRule(localContext, 666, HiveSqlParser.RULE_viewNameCreate); + this.enterRule(localContext, 484, HiveSqlParser.RULE_viewNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 4179; + this.state = 3633; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 494, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 477, this.context) ) { case 1: { - this.state = 4176; + this.state = 3630; localContext._db = this.id_(); - this.state = 4177; + this.state = 3631; this.match(HiveSqlParser.DOT); } break; } - this.state = 4181; + this.state = 3635; localContext._view = this.id_(); } } @@ -19817,28 +17516,28 @@ export class HiveSqlParser extends SQLParserBase { } public subQuerySource(): SubQuerySourceContext { let localContext = new SubQuerySourceContext(this.context, this.state); - this.enterRule(localContext, 668, HiveSqlParser.RULE_subQuerySource); + this.enterRule(localContext, 486, HiveSqlParser.RULE_subQuerySource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4183; + this.state = 3637; this.match(HiveSqlParser.LPAREN); - this.state = 4184; + this.state = 3638; this.queryStatementExpression(); - this.state = 4185; + this.state = 3639; this.match(HiveSqlParser.RPAREN); - this.state = 4187; + this.state = 3641; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4186; + this.state = 3640; this.match(HiveSqlParser.KW_AS); } } - this.state = 4189; + this.state = 3643; this.id_(); } } @@ -19858,23 +17557,27 @@ export class HiveSqlParser extends SQLParserBase { } public partitioningSpec(): PartitioningSpecContext { let localContext = new PartitioningSpecContext(this.context, this.state); - this.enterRule(localContext, 670, HiveSqlParser.RULE_partitioningSpec); + this.enterRule(localContext, 488, HiveSqlParser.RULE_partitioningSpec); let _la: number; try { - this.state = 4202; + this.state = 3658; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_PARTITION: this.enterOuterAlt(localContext, 1); { - this.state = 4191; - this.partitionByClause(); - this.state = 4193; + this.state = 3645; + this.match(HiveSqlParser.KW_PARTITION); + this.state = 3646; + this.match(HiveSqlParser.KW_BY); + this.state = 3647; + this.expressions(); + this.state = 3649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 229) { { - this.state = 4192; + this.state = 3648; this.orderByClause(); } } @@ -19884,21 +17587,21 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_ORDER: this.enterOuterAlt(localContext, 2); { - this.state = 4195; + this.state = 3651; this.orderByClause(); } break; case HiveSqlParser.KW_DISTRIBUTE: this.enterOuterAlt(localContext, 3); { - this.state = 4196; + this.state = 3652; this.distributeByClause(); - this.state = 4198; + this.state = 3654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 4197; + this.state = 3653; this.sortByClause(); } } @@ -19908,14 +17611,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_SORT: this.enterOuterAlt(localContext, 4); { - this.state = 4200; + this.state = 3656; this.sortByClause(); } break; case HiveSqlParser.KW_CLUSTER: this.enterOuterAlt(localContext, 5); { - this.state = 4201; + this.state = 3657; this.clusterByClause(); } break; @@ -19939,29 +17642,29 @@ export class HiveSqlParser extends SQLParserBase { } public partitionTableFunctionSource(): PartitionTableFunctionSourceContext { let localContext = new PartitionTableFunctionSourceContext(this.context, this.state); - this.enterRule(localContext, 672, HiveSqlParser.RULE_partitionTableFunctionSource); + this.enterRule(localContext, 490, HiveSqlParser.RULE_partitionTableFunctionSource); try { - this.state = 4207; + this.state = 3663; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 499, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 482, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4204; + this.state = 3660; this.subQuerySource(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4205; + this.state = 3661; this.tableSource(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4206; + this.state = 3662; this.partitionedTableFunction(); } break; @@ -19983,75 +17686,75 @@ export class HiveSqlParser extends SQLParserBase { } public partitionedTableFunction(): PartitionedTableFunctionContext { let localContext = new PartitionedTableFunctionContext(this.context, this.state); - this.enterRule(localContext, 674, HiveSqlParser.RULE_partitionedTableFunction); + this.enterRule(localContext, 492, HiveSqlParser.RULE_partitionedTableFunction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4209; + this.state = 3665; localContext._n = this.id_(); - this.state = 4210; + this.state = 3666; this.match(HiveSqlParser.LPAREN); - this.state = 4211; + this.state = 3667; this.match(HiveSqlParser.KW_ON); - this.state = 4212; + this.state = 3668; localContext._ptfsrc = this.partitionTableFunctionSource(); - this.state = 4214; + this.state = 3670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) { { - this.state = 4213; + this.state = 3669; localContext._spec = this.partitioningSpec(); } } - this.state = 4231; + this.state = 3687; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 432) { { - this.state = 4216; + this.state = 3672; this.match(HiveSqlParser.Identifier); - this.state = 4217; + this.state = 3673; this.match(HiveSqlParser.LPAREN); - this.state = 4218; + this.state = 3674; this.expression(); - this.state = 4219; + this.state = 3675; this.match(HiveSqlParser.RPAREN); - this.state = 4228; + this.state = 3684; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4220; + this.state = 3676; this.match(HiveSqlParser.COMMA); - this.state = 4221; + this.state = 3677; this.match(HiveSqlParser.Identifier); - this.state = 4222; + this.state = 3678; this.match(HiveSqlParser.LPAREN); - this.state = 4223; + this.state = 3679; this.expression(); - this.state = 4224; + this.state = 3680; this.match(HiveSqlParser.RPAREN); } } - this.state = 4230; + this.state = 3686; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4233; + this.state = 3689; this.match(HiveSqlParser.RPAREN); - this.state = 4235; + this.state = 3691; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 503, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 486, this.context) ) { case 1: { - this.state = 4234; + this.state = 3690; localContext._alias = this.id_(); } break; @@ -20074,37 +17777,13 @@ export class HiveSqlParser extends SQLParserBase { } public whereClause(): WhereClauseContext { let localContext = new WhereClauseContext(this.context, this.state); - this.enterRule(localContext, 676, HiveSqlParser.RULE_whereClause); + this.enterRule(localContext, 494, HiveSqlParser.RULE_whereClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4237; + this.state = 3693; this.match(HiveSqlParser.KW_WHERE); - this.state = 4238; - this.searchCondition(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public searchCondition(): SearchConditionContext { - let localContext = new SearchConditionContext(this.context, this.state); - this.enterRule(localContext, 678, HiveSqlParser.RULE_searchCondition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4240; + this.state = 3694; this.expression(); } } @@ -20122,162 +17801,67 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public valuesSource(): ValuesSourceContext { - let localContext = new ValuesSourceContext(this.context, this.state); - this.enterRule(localContext, 680, HiveSqlParser.RULE_valuesSource); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4242; - this.valuesClause(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public valuesClause(): ValuesClauseContext { let localContext = new ValuesClauseContext(this.context, this.state); - this.enterRule(localContext, 682, HiveSqlParser.RULE_valuesClause); + this.enterRule(localContext, 496, HiveSqlParser.RULE_valuesClause); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4244; + this.state = 3696; this.match(HiveSqlParser.KW_VALUES); - this.state = 4245; - this.valuesTableConstructor(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public valuesTableConstructor(): ValuesTableConstructorContext { - let localContext = new ValuesTableConstructorContext(this.context, this.state); - this.enterRule(localContext, 684, HiveSqlParser.RULE_valuesTableConstructor); - let _la: number; - try { - this.state = 4263; + this.state = 3715; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 506, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 4247; - this.valueRowConstructor(); - this.state = 4252; + this.state = 3697; + this.expressionsInParenthesis(); + this.state = 3702; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4248; + this.state = 3698; this.match(HiveSqlParser.COMMA); - this.state = 4249; - this.valueRowConstructor(); + this.state = 3699; + this.expressionsInParenthesis(); } } - this.state = 4254; + this.state = 3704; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 4255; - this.firstValueRowConstructor(); - this.state = 4260; + this.state = 3705; + this.match(HiveSqlParser.LPAREN); + this.state = 3706; + this.firstExpressionsWithAlias(); + this.state = 3707; + this.match(HiveSqlParser.RPAREN); + this.state = 3712; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4256; + this.state = 3708; this.match(HiveSqlParser.COMMA); - this.state = 4257; - this.valueRowConstructor(); + this.state = 3709; + this.expressionsInParenthesis(); } } - this.state = 4262; + this.state = 3714; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public valueRowConstructor(): ValueRowConstructorContext { - let localContext = new ValueRowConstructorContext(this.context, this.state); - this.enterRule(localContext, 686, HiveSqlParser.RULE_valueRowConstructor); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4265; - this.expressionsInParenthesis(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public firstValueRowConstructor(): FirstValueRowConstructorContext { - let localContext = new FirstValueRowConstructorContext(this.context, this.state); - this.enterRule(localContext, 688, HiveSqlParser.RULE_firstValueRowConstructor); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4267; - this.match(HiveSqlParser.LPAREN); - this.state = 4268; - this.firstExpressionsWithAlias(); - this.state = 4269; - this.match(HiveSqlParser.RPAREN); } } catch (re) { @@ -20296,60 +17880,60 @@ export class HiveSqlParser extends SQLParserBase { } public virtualTableSource(): VirtualTableSourceContext { let localContext = new VirtualTableSourceContext(this.context, this.state); - this.enterRule(localContext, 690, HiveSqlParser.RULE_virtualTableSource); + this.enterRule(localContext, 498, HiveSqlParser.RULE_virtualTableSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4271; + this.state = 3717; this.match(HiveSqlParser.KW_TABLE); - this.state = 4272; + this.state = 3718; this.match(HiveSqlParser.LPAREN); - this.state = 4273; + this.state = 3719; this.valuesClause(); - this.state = 4274; + this.state = 3720; this.match(HiveSqlParser.RPAREN); - this.state = 4276; + this.state = 3722; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4275; + this.state = 3721; this.match(HiveSqlParser.KW_AS); } } - this.state = 4278; + this.state = 3724; this.tableAlias(); - this.state = 4288; + this.state = 3734; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 4279; + this.state = 3725; this.match(HiveSqlParser.LPAREN); - this.state = 4280; + this.state = 3726; this.id_(); - this.state = 4285; + this.state = 3731; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4281; + this.state = 3727; this.match(HiveSqlParser.COMMA); - this.state = 4282; + this.state = 3728; this.id_(); } } - this.state = 4287; + this.state = 3733; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4290; + this.state = 3736; this.match(HiveSqlParser.RPAREN); } } @@ -20369,50 +17953,77 @@ export class HiveSqlParser extends SQLParserBase { } public selectClause(): SelectClauseContext { let localContext = new SelectClauseContext(this.context, this.state); - this.enterRule(localContext, 692, HiveSqlParser.RULE_selectClause); + this.enterRule(localContext, 500, HiveSqlParser.RULE_selectClause); + let _la: number; try { - this.state = 4305; + let alternative: number; + this.state = 3758; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_SELECT: this.enterOuterAlt(localContext, 1); { - this.state = 4292; + this.state = 3738; this.match(HiveSqlParser.KW_SELECT); - this.state = 4294; + this.state = 3740; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 510, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 493, this.context) ) { case 1: { - this.state = 4293; + this.state = 3739; this.match(HiveSqlParser.QUERY_HINT); } break; } - this.state = 4302; + this.state = 3755; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 496, this.context) ) { case 1: { - this.state = 4297; + this.state = 3743; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 511, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 494, this.context) ) { case 1: { - this.state = 4296; - this.all_distinct(); + this.state = 3742; + _la = this.tokenStream.LA(1); + if(!(_la === 7 || _la === 96)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; } - this.state = 4299; - this.selectList(); + this.state = 3745; + this.selectItem(); + this.state = 3750; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 495, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3746; + this.match(HiveSqlParser.COMMA); + this.state = 3747; + this.selectItem(); + } + } + } + this.state = 3752; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 495, this.context); + } } break; case 2: { - this.state = 4300; + this.state = 3753; this.match(HiveSqlParser.KW_TRANSFORM); - this.state = 4301; + this.state = 3754; this.selectTrfmClause(); } break; @@ -20423,7 +18034,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_REDUCE: this.enterOuterAlt(localContext, 2); { - this.state = 4304; + this.state = 3757; this.trfmClause(); } break; @@ -20445,145 +18056,70 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public all_distinct(): All_distinctContext { - let localContext = new All_distinctContext(this.context, this.state); - this.enterRule(localContext, 694, HiveSqlParser.RULE_all_distinct); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4307; - _la = this.tokenStream.LA(1); - if(!(_la === 7 || _la === 96)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public selectList(): SelectListContext { - let localContext = new SelectListContext(this.context, this.state); - this.enterRule(localContext, 696, HiveSqlParser.RULE_selectList); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 4309; - this.selectItem(); - this.state = 4314; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 514, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 4310; - this.match(HiveSqlParser.COMMA); - this.state = 4311; - this.selectItem(); - } - } - } - this.state = 4316; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 514, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public selectTrfmClause(): SelectTrfmClauseContext { let localContext = new SelectTrfmClauseContext(this.context, this.state); - this.enterRule(localContext, 698, HiveSqlParser.RULE_selectTrfmClause); + this.enterRule(localContext, 502, HiveSqlParser.RULE_selectTrfmClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4317; + this.state = 3760; this.match(HiveSqlParser.LPAREN); - this.state = 4318; + this.state = 3761; this.selectExpressionList(); - this.state = 4319; + this.state = 3762; this.match(HiveSqlParser.RPAREN); - this.state = 4320; + this.state = 3763; this.rowFormat(); - this.state = 4321; + this.state = 3764; this.recordWriter(); - this.state = 4322; + this.state = 3765; this.match(HiveSqlParser.KW_USING); - this.state = 4323; + this.state = 3766; this.match(HiveSqlParser.StringLiteral); - this.state = 4336; + this.state = 3779; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4324; + this.state = 3767; this.match(HiveSqlParser.KW_AS); - this.state = 4334; + this.state = 3777; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 516, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 499, this.context) ) { case 1: { - this.state = 4325; + this.state = 3768; this.match(HiveSqlParser.LPAREN); - this.state = 4328; + this.state = 3771; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 515, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 498, this.context) ) { case 1: { - this.state = 4326; + this.state = 3769; this.aliasList(); } break; case 2: { - this.state = 4327; + this.state = 3770; this.columnNameTypeList(); } break; } - this.state = 4330; + this.state = 3773; this.match(HiveSqlParser.RPAREN); } break; case 2: { - this.state = 4332; + this.state = 3775; this.aliasList(); } break; case 3: { - this.state = 4333; + this.state = 3776; this.columnNameTypeList(); } break; @@ -20591,9 +18127,9 @@ export class HiveSqlParser extends SQLParserBase { } } - this.state = 4338; + this.state = 3781; this.rowFormat(); - this.state = 4339; + this.state = 3782; this.recordReader(); } } @@ -20613,16 +18149,16 @@ export class HiveSqlParser extends SQLParserBase { } public selectItem(): SelectItemContext { let localContext = new SelectItemContext(this.context, this.state); - this.enterRule(localContext, 700, HiveSqlParser.RULE_selectItem); + this.enterRule(localContext, 504, HiveSqlParser.RULE_selectItem); let _la: number; try { - this.state = 4364; + this.state = 3807; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 522, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 505, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4341; + this.state = 3784; this.tableAllColumns(); } break; @@ -20630,66 +18166,66 @@ export class HiveSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 2); { { - this.state = 4344; + this.state = 3787; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 518, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 501, this.context) ) { case 1: { - this.state = 4342; + this.state = 3785; this.columnName(); } break; case 2: { - this.state = 4343; + this.state = 3786; this.expression(); } break; } - this.state = 4362; + this.state = 3805; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 521, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 504, this.context) ) { case 1: { - this.state = 4347; + this.state = 3790; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4346; + this.state = 3789; this.match(HiveSqlParser.KW_AS); } } - this.state = 4349; + this.state = 3792; this.id_(); } break; case 2: { - this.state = 4350; + this.state = 3793; this.match(HiveSqlParser.KW_AS); - this.state = 4351; + this.state = 3794; this.match(HiveSqlParser.LPAREN); - this.state = 4352; + this.state = 3795; this.id_(); - this.state = 4357; + this.state = 3800; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4353; + this.state = 3796; this.match(HiveSqlParser.COMMA); - this.state = 4354; + this.state = 3797; this.id_(); } } - this.state = 4359; + this.state = 3802; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4360; + this.state = 3803; this.match(HiveSqlParser.RPAREN); } break; @@ -20715,12 +18251,12 @@ export class HiveSqlParser extends SQLParserBase { } public trfmClause(): TrfmClauseContext { let localContext = new TrfmClauseContext(this.context, this.state); - this.enterRule(localContext, 702, HiveSqlParser.RULE_trfmClause); + this.enterRule(localContext, 506, HiveSqlParser.RULE_trfmClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4366; + this.state = 3809; _la = this.tokenStream.LA(1); if(!(_la === 198 || _la === 268)) { this.errorHandler.recoverInline(this); @@ -20729,59 +18265,59 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4367; + this.state = 3810; this.selectExpressionList(); - this.state = 4368; + this.state = 3811; this.rowFormat(); - this.state = 4369; + this.state = 3812; this.recordWriter(); - this.state = 4370; + this.state = 3813; this.match(HiveSqlParser.KW_USING); - this.state = 4371; + this.state = 3814; this.match(HiveSqlParser.StringLiteral); - this.state = 4384; + this.state = 3827; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4372; + this.state = 3815; this.match(HiveSqlParser.KW_AS); - this.state = 4382; + this.state = 3825; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { case 1: { - this.state = 4373; + this.state = 3816; this.match(HiveSqlParser.LPAREN); - this.state = 4376; + this.state = 3819; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 523, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 506, this.context) ) { case 1: { - this.state = 4374; + this.state = 3817; this.aliasList(); } break; case 2: { - this.state = 4375; + this.state = 3818; this.columnNameTypeList(); } break; } - this.state = 4378; + this.state = 3821; this.match(HiveSqlParser.RPAREN); } break; case 2: { - this.state = 4380; + this.state = 3823; this.aliasList(); } break; case 3: { - this.state = 4381; + this.state = 3824; this.columnNameTypeList(); } break; @@ -20789,9 +18325,9 @@ export class HiveSqlParser extends SQLParserBase { } } - this.state = 4386; + this.state = 3829; this.rowFormat(); - this.state = 4387; + this.state = 3830; this.recordReader(); } } @@ -20811,22 +18347,22 @@ export class HiveSqlParser extends SQLParserBase { } public selectExpression(): SelectExpressionContext { let localContext = new SelectExpressionContext(this.context, this.state); - this.enterRule(localContext, 704, HiveSqlParser.RULE_selectExpression); + this.enterRule(localContext, 508, HiveSqlParser.RULE_selectExpression); try { - this.state = 4391; + this.state = 3834; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 509, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4389; + this.state = 3832; this.tableAllColumns(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4390; + this.state = 3833; this.expression(); } break; @@ -20848,26 +18384,26 @@ export class HiveSqlParser extends SQLParserBase { } public selectExpressionList(): SelectExpressionListContext { let localContext = new SelectExpressionListContext(this.context, this.state); - this.enterRule(localContext, 706, HiveSqlParser.RULE_selectExpressionList); + this.enterRule(localContext, 510, HiveSqlParser.RULE_selectExpressionList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4393; + this.state = 3836; this.selectExpression(); - this.state = 4398; + this.state = 3841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4394; + this.state = 3837; this.match(HiveSqlParser.COMMA); - this.state = 4395; + this.state = 3838; this.selectExpression(); } } - this.state = 4400; + this.state = 3843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -20889,28 +18425,36 @@ export class HiveSqlParser extends SQLParserBase { } public window_clause(): Window_clauseContext { let localContext = new Window_clauseContext(this.context, this.state); - this.enterRule(localContext, 708, HiveSqlParser.RULE_window_clause); + this.enterRule(localContext, 512, HiveSqlParser.RULE_window_clause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4401; + this.state = 3844; this.match(HiveSqlParser.KW_WINDOW); - this.state = 4402; - this.window_defn(); - this.state = 4407; + this.state = 3845; + this.id_(); + this.state = 3846; + this.match(HiveSqlParser.KW_AS); + this.state = 3847; + this.window_specification(); + this.state = 3855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4403; + this.state = 3848; this.match(HiveSqlParser.COMMA); - this.state = 4404; - this.window_defn(); + this.state = 3849; + this.id_(); + this.state = 3850; + this.match(HiveSqlParser.KW_AS); + this.state = 3851; + this.window_specification(); } } - this.state = 4409; + this.state = 3857; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -20930,40 +18474,12 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public window_defn(): Window_defnContext { - let localContext = new Window_defnContext(this.context, this.state); - this.enterRule(localContext, 710, HiveSqlParser.RULE_window_defn); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4410; - this.id_(); - this.state = 4411; - this.match(HiveSqlParser.KW_AS); - this.state = 4412; - this.window_specification(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public window_specification(): Window_specificationContext { let localContext = new Window_specificationContext(this.context, this.state); - this.enterRule(localContext, 712, HiveSqlParser.RULE_window_specification); + this.enterRule(localContext, 514, HiveSqlParser.RULE_window_specification); let _la: number; try { - this.state = 4426; + this.state = 3870; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ABORT: @@ -21208,46 +18724,46 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 4414; + this.state = 3858; this.id_(); } break; case HiveSqlParser.LPAREN: this.enterOuterAlt(localContext, 2); { - this.state = 4415; + this.state = 3859; this.match(HiveSqlParser.LPAREN); - this.state = 4417; + this.state = 3861; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 529, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) { case 1: { - this.state = 4416; + this.state = 3860; this.id_(); } break; } - this.state = 4420; + this.state = 3864; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 41 || _la === 97 || _la === 229 || _la === 237 || _la === 314) { { - this.state = 4419; + this.state = 3863; this.partitioningSpec(); } } - this.state = 4423; + this.state = 3867; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 260 || _la === 292) { { - this.state = 4422; + this.state = 3866; this.window_frame(); } } - this.state = 4425; + this.state = 3869; this.match(HiveSqlParser.RPAREN); } break; @@ -21271,71 +18787,74 @@ export class HiveSqlParser extends SQLParserBase { } public window_frame(): Window_frameContext { let localContext = new Window_frameContext(this.context, this.state); - this.enterRule(localContext, 714, HiveSqlParser.RULE_window_frame); - try { - this.state = 4430; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ROWS: - this.enterOuterAlt(localContext, 1); - { - this.state = 4428; - this.window_range_expression(); - } - break; - case HiveSqlParser.KW_RANGE: - this.enterOuterAlt(localContext, 2); - { - this.state = 4429; - this.window_value_expression(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_range_expression(): Window_range_expressionContext { - let localContext = new Window_range_expressionContext(this.context, this.state); - this.enterRule(localContext, 716, HiveSqlParser.RULE_window_range_expression); + this.enterRule(localContext, 516, HiveSqlParser.RULE_window_frame); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4432; - this.match(HiveSqlParser.KW_ROWS); - this.state = 4439; + this.state = 3872; + _la = this.tokenStream.LA(1); + if(!(_la === 260 || _la === 292)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 3886; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_CURRENT: case HiveSqlParser.KW_UNBOUNDED: case HiveSqlParser.Number: { - this.state = 4433; - this.window_frame_start_boundary(); + this.state = 3879; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_UNBOUNDED: + { + { + this.state = 3873; + this.match(HiveSqlParser.KW_UNBOUNDED); + this.state = 3874; + this.match(HiveSqlParser.KW_PRECEDING); + } + } + break; + case HiveSqlParser.KW_CURRENT: + { + { + this.state = 3875; + this.match(HiveSqlParser.KW_CURRENT); + this.state = 3876; + this.match(HiveSqlParser.KW_ROW); + } + } + break; + case HiveSqlParser.Number: + { + { + this.state = 3877; + this.match(HiveSqlParser.Number); + this.state = 3878; + this.match(HiveSqlParser.KW_PRECEDING); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case HiveSqlParser.KW_BETWEEN: { - this.state = 4434; + this.state = 3881; this.match(HiveSqlParser.KW_BETWEEN); - this.state = 4435; + this.state = 3882; this.window_frame_boundary(); - this.state = 4436; + this.state = 3883; this.match(HiveSqlParser.KW_AND); - this.state = 4437; + this.state = 3884; this.window_frame_boundary(); } break; @@ -21358,121 +18877,19 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public window_value_expression(): Window_value_expressionContext { - let localContext = new Window_value_expressionContext(this.context, this.state); - this.enterRule(localContext, 718, HiveSqlParser.RULE_window_value_expression); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4441; - this.match(HiveSqlParser.KW_RANGE); - this.state = 4448; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_CURRENT: - case HiveSqlParser.KW_UNBOUNDED: - case HiveSqlParser.Number: - { - this.state = 4442; - this.window_frame_start_boundary(); - } - break; - case HiveSqlParser.KW_BETWEEN: - { - this.state = 4443; - this.match(HiveSqlParser.KW_BETWEEN); - this.state = 4444; - this.window_frame_boundary(); - this.state = 4445; - this.match(HiveSqlParser.KW_AND); - this.state = 4446; - this.window_frame_boundary(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public window_frame_start_boundary(): Window_frame_start_boundaryContext { - let localContext = new Window_frame_start_boundaryContext(this.context, this.state); - this.enterRule(localContext, 720, HiveSqlParser.RULE_window_frame_start_boundary); - try { - this.state = 4456; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_UNBOUNDED: - this.enterOuterAlt(localContext, 1); - { - this.state = 4450; - this.match(HiveSqlParser.KW_UNBOUNDED); - this.state = 4451; - this.match(HiveSqlParser.KW_PRECEDING); - } - break; - case HiveSqlParser.KW_CURRENT: - this.enterOuterAlt(localContext, 2); - { - this.state = 4452; - this.match(HiveSqlParser.KW_CURRENT); - this.state = 4453; - this.match(HiveSqlParser.KW_ROW); - } - break; - case HiveSqlParser.Number: - this.enterOuterAlt(localContext, 3); - { - this.state = 4454; - this.match(HiveSqlParser.Number); - this.state = 4455; - this.match(HiveSqlParser.KW_PRECEDING); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public window_frame_boundary(): Window_frame_boundaryContext { let localContext = new Window_frame_boundaryContext(this.context, this.state); - this.enterRule(localContext, 722, HiveSqlParser.RULE_window_frame_boundary); + this.enterRule(localContext, 518, HiveSqlParser.RULE_window_frame_boundary); let _la: number; try { - this.state = 4462; + this.state = 3892; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_UNBOUNDED: case HiveSqlParser.Number: this.enterOuterAlt(localContext, 1); { - this.state = 4458; + this.state = 3888; _la = this.tokenStream.LA(1); if(!(_la === 354 || _la === 431)) { this.errorHandler.recoverInline(this); @@ -21481,7 +18898,7 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4459; + this.state = 3889; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 247)) { this.errorHandler.recoverInline(this); @@ -21495,9 +18912,9 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_CURRENT: this.enterOuterAlt(localContext, 2); { - this.state = 4460; + this.state = 3890; this.match(HiveSqlParser.KW_CURRENT); - this.state = 4461; + this.state = 3891; this.match(HiveSqlParser.KW_ROW); } break; @@ -21521,93 +18938,46 @@ export class HiveSqlParser extends SQLParserBase { } public groupByClause(): GroupByClauseContext { let localContext = new GroupByClauseContext(this.context, this.state); - this.enterRule(localContext, 724, HiveSqlParser.RULE_groupByClause); + this.enterRule(localContext, 520, HiveSqlParser.RULE_groupByClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4464; + this.state = 3894; this.match(HiveSqlParser.KW_GROUP); - this.state = 4465; + this.state = 3895; this.match(HiveSqlParser.KW_BY); - this.state = 4466; - this.groupby_expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public groupby_expression(): Groupby_expressionContext { - let localContext = new Groupby_expressionContext(this.context, this.state); - this.enterRule(localContext, 726, HiveSqlParser.RULE_groupby_expression); - try { - this.state = 4472; + this.state = 3901; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 538, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 519, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 4468; + this.state = 3896; this.columnName(); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 4469; + this.state = 3897; this.rollupStandard(); } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 4470; + this.state = 3898; this.rollupOldSyntax(); } break; case 4: - this.enterOuterAlt(localContext, 4); { - this.state = 4471; - this.groupByEmpty(); + { + this.state = 3899; + this.match(HiveSqlParser.LPAREN); + this.state = 3900; + this.match(HiveSqlParser.RPAREN); + } } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public groupByEmpty(): GroupByEmptyContext { - let localContext = new GroupByEmptyContext(this.context, this.state); - this.enterRule(localContext, 728, HiveSqlParser.RULE_groupByEmpty); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4474; - this.match(HiveSqlParser.LPAREN); - this.state = 4475; - this.match(HiveSqlParser.RPAREN); } } catch (re) { @@ -21626,50 +18996,50 @@ export class HiveSqlParser extends SQLParserBase { } public rollupStandard(): RollupStandardContext { let localContext = new RollupStandardContext(this.context, this.state); - this.enterRule(localContext, 730, HiveSqlParser.RULE_rollupStandard); + this.enterRule(localContext, 522, HiveSqlParser.RULE_rollupStandard); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4479; + this.state = 3905; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ROLLUP: { - this.state = 4477; + this.state = 3903; localContext._rollup = this.match(HiveSqlParser.KW_ROLLUP); } break; case HiveSqlParser.KW_CUBE: { - this.state = 4478; + this.state = 3904; localContext._cube = this.match(HiveSqlParser.KW_CUBE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4481; + this.state = 3907; this.match(HiveSqlParser.LPAREN); - this.state = 4482; + this.state = 3908; this.expression(); - this.state = 4487; + this.state = 3913; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4483; + this.state = 3909; this.match(HiveSqlParser.COMMA); - this.state = 4484; + this.state = 3910; this.expression(); } } - this.state = 4489; + this.state = 3915; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4490; + this.state = 3916; this.match(HiveSqlParser.RPAREN); } } @@ -21689,63 +19059,63 @@ export class HiveSqlParser extends SQLParserBase { } public rollupOldSyntax(): RollupOldSyntaxContext { let localContext = new RollupOldSyntaxContext(this.context, this.state); - this.enterRule(localContext, 732, HiveSqlParser.RULE_rollupOldSyntax); + this.enterRule(localContext, 524, HiveSqlParser.RULE_rollupOldSyntax); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4492; + this.state = 3918; localContext._expr = this.expressionsNotInParenthesis(); - this.state = 4497; + this.state = 3923; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 541, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 522, this.context) ) { case 1: { - this.state = 4493; + this.state = 3919; localContext._rollup = this.match(HiveSqlParser.KW_WITH); - this.state = 4494; + this.state = 3920; this.match(HiveSqlParser.KW_ROLLUP); } break; case 2: { - this.state = 4495; + this.state = 3921; localContext._cube = this.match(HiveSqlParser.KW_WITH); - this.state = 4496; + this.state = 3922; this.match(HiveSqlParser.KW_CUBE); } break; } - this.state = 4512; + this.state = 3938; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 145) { { - this.state = 4499; + this.state = 3925; localContext._sets = this.match(HiveSqlParser.KW_GROUPING); - this.state = 4500; + this.state = 3926; this.match(HiveSqlParser.KW_SETS); - this.state = 4501; + this.state = 3927; this.match(HiveSqlParser.LPAREN); - this.state = 4502; + this.state = 3928; this.groupingSetExpression(); - this.state = 4507; + this.state = 3933; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4503; + this.state = 3929; this.match(HiveSqlParser.COMMA); - this.state = 4504; + this.state = 3930; this.groupingSetExpression(); } } - this.state = 4509; + this.state = 3935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4510; + this.state = 3936; this.match(HiveSqlParser.RPAREN); } } @@ -21768,23 +19138,52 @@ export class HiveSqlParser extends SQLParserBase { } public groupingSetExpression(): GroupingSetExpressionContext { let localContext = new GroupingSetExpressionContext(this.context, this.state); - this.enterRule(localContext, 734, HiveSqlParser.RULE_groupingSetExpression); + this.enterRule(localContext, 526, HiveSqlParser.RULE_groupingSetExpression); + let _la: number; try { - this.state = 4516; + this.state = 3953; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 544, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4514; - this.groupingSetExpressionMultiple(); + this.state = 3940; + this.match(HiveSqlParser.LPAREN); + this.state = 3942; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) { + { + this.state = 3941; + this.expression(); + } + } + + this.state = 3948; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 3944; + this.match(HiveSqlParser.COMMA); + this.state = 3945; + this.expression(); + } + } + this.state = 3950; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3951; + this.match(HiveSqlParser.RPAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4515; - this.groupingExpressionSingle(); + this.state = 3952; + this.expression(); } break; } @@ -21803,93 +19202,16 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext { - let localContext = new GroupingSetExpressionMultipleContext(this.context, this.state); - this.enterRule(localContext, 736, HiveSqlParser.RULE_groupingSetExpressionMultiple); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4518; - this.match(HiveSqlParser.LPAREN); - this.state = 4520; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) { - { - this.state = 4519; - this.expression(); - } - } - - this.state = 4526; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 4522; - this.match(HiveSqlParser.COMMA); - this.state = 4523; - this.expression(); - } - } - this.state = 4528; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 4529; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public groupingExpressionSingle(): GroupingExpressionSingleContext { - let localContext = new GroupingExpressionSingleContext(this.context, this.state); - this.enterRule(localContext, 738, HiveSqlParser.RULE_groupingExpressionSingle); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4531; - this.expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public havingClause(): HavingClauseContext { let localContext = new HavingClauseContext(this.context, this.state); - this.enterRule(localContext, 740, HiveSqlParser.RULE_havingClause); + this.enterRule(localContext, 528, HiveSqlParser.RULE_havingClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4533; + this.state = 3955; this.match(HiveSqlParser.KW_HAVING); - this.state = 4534; - this.havingCondition(); + this.state = 3956; + this.expression(); } } catch (re) { @@ -21908,13 +19230,13 @@ export class HiveSqlParser extends SQLParserBase { } public qualifyClause(): QualifyClauseContext { let localContext = new QualifyClauseContext(this.context, this.state); - this.enterRule(localContext, 742, HiveSqlParser.RULE_qualifyClause); + this.enterRule(localContext, 530, HiveSqlParser.RULE_qualifyClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4536; + this.state = 3958; this.match(HiveSqlParser.KW_QUALIFY); - this.state = 4537; + this.state = 3959; this.expression(); } } @@ -21932,150 +19254,24 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public havingCondition(): HavingConditionContext { - let localContext = new HavingConditionContext(this.context, this.state); - this.enterRule(localContext, 744, HiveSqlParser.RULE_havingCondition); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4539; - this.expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expressionsInParenthesis(): ExpressionsInParenthesisContext { - let localContext = new ExpressionsInParenthesisContext(this.context, this.state); - this.enterRule(localContext, 746, HiveSqlParser.RULE_expressionsInParenthesis); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4541; - this.match(HiveSqlParser.LPAREN); - this.state = 4542; - this.expressionsNotInParenthesis(); - this.state = 4543; - this.match(HiveSqlParser.RPAREN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext { - let localContext = new ExpressionsNotInParenthesisContext(this.context, this.state); - this.enterRule(localContext, 748, HiveSqlParser.RULE_expressionsNotInParenthesis); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4545; - localContext._first = this.expressionOrDefault(); - this.state = 4547; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 397) { - { - this.state = 4546; - localContext._more = this.expressionPart(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public expressionPart(): ExpressionPartContext { - let localContext = new ExpressionPartContext(this.context, this.state); - this.enterRule(localContext, 750, HiveSqlParser.RULE_expressionPart); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4551; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { - { - this.state = 4549; - this.match(HiveSqlParser.COMMA); - this.state = 4550; - this.expressionOrDefault(); - } - } - this.state = 4553; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 397); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public expressionOrDefault(): ExpressionOrDefaultContext { let localContext = new ExpressionOrDefaultContext(this.context, this.state); - this.enterRule(localContext, 752, HiveSqlParser.RULE_expressionOrDefault); + this.enterRule(localContext, 532, HiveSqlParser.RULE_expressionOrDefault); try { - this.state = 4557; + this.state = 3963; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4555; - this.defaultValue(); + this.state = 3961; + this.match(HiveSqlParser.KW_DEFAULT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4556; + this.state = 3962; this.expression(); } break; @@ -22097,46 +19293,66 @@ export class HiveSqlParser extends SQLParserBase { } public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext { let localContext = new FirstExpressionsWithAliasContext(this.context, this.state); - this.enterRule(localContext, 754, HiveSqlParser.RULE_firstExpressionsWithAlias); + this.enterRule(localContext, 534, HiveSqlParser.RULE_firstExpressionsWithAlias); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4559; + this.state = 3965; localContext._first = this.expression(); - this.state = 4561; + this.state = 3967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 17) { { - this.state = 4560; + this.state = 3966; this.match(HiveSqlParser.KW_AS); } } - this.state = 4564; + this.state = 3970; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { { - this.state = 4563; + this.state = 3969; localContext._colAlias = this.id_(); } } - this.state = 4570; + this.state = 3982; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4566; + this.state = 3972; this.match(HiveSqlParser.COMMA); - this.state = 4567; - this.expressionWithAlias(); + this.state = 3973; + this.expression(); + this.state = 3975; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 17) { + { + this.state = 3974; + this.match(HiveSqlParser.KW_AS); + } + } + + this.state = 3978; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { + { + this.state = 3977; + localContext._alias = this.id_(); + } + } + } } - this.state = 4572; + this.state = 3984; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22156,69 +19372,24 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public expressionWithAlias(): ExpressionWithAliasContext { - let localContext = new ExpressionWithAliasContext(this.context, this.state); - this.enterRule(localContext, 756, HiveSqlParser.RULE_expressionWithAlias); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4573; - this.expression(); - this.state = 4575; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 17) { - { - this.state = 4574; - this.match(HiveSqlParser.KW_AS); - } - } - - this.state = 4578; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394 || _la === 432) { - { - this.state = 4577; - localContext._alias = this.id_(); - } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public expressions(): ExpressionsContext { let localContext = new ExpressionsContext(this.context, this.state); - this.enterRule(localContext, 758, HiveSqlParser.RULE_expressions); + this.enterRule(localContext, 536, HiveSqlParser.RULE_expressions); try { - this.state = 4582; + this.state = 3987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4580; + this.state = 3985; this.expressionsInParenthesis(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4581; + this.state = 3986; this.expressionsNotInParenthesis(); } break; @@ -22238,34 +19409,17 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext { - let localContext = new ColumnRefOrderInParenthesisContext(this.context, this.state); - this.enterRule(localContext, 760, HiveSqlParser.RULE_columnRefOrderInParenthesis); - let _la: number; + public expressionsInParenthesis(): ExpressionsInParenthesisContext { + let localContext = new ExpressionsInParenthesisContext(this.context, this.state); + this.enterRule(localContext, 538, HiveSqlParser.RULE_expressionsInParenthesis); try { this.enterOuterAlt(localContext, 1); { - this.state = 4584; + this.state = 3989; this.match(HiveSqlParser.LPAREN); - this.state = 4585; - this.columnRefOrder(); - this.state = 4590; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 4586; - this.match(HiveSqlParser.COMMA); - this.state = 4587; - this.columnRefOrder(); - } - } - this.state = 4592; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 4593; + this.state = 3990; + this.expressionsNotInParenthesis(); + this.state = 3991; this.match(HiveSqlParser.RPAREN); } } @@ -22283,31 +19437,39 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext { - let localContext = new ColumnRefOrderNotInParenthesisContext(this.context, this.state); - this.enterRule(localContext, 762, HiveSqlParser.RULE_columnRefOrderNotInParenthesis); + public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext { + let localContext = new ExpressionsNotInParenthesisContext(this.context, this.state); + this.enterRule(localContext, 540, HiveSqlParser.RULE_expressionsNotInParenthesis); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4595; - this.columnRefOrder(); - this.state = 4600; + this.state = 3993; + localContext._first = this.expressionOrDefault(); + this.state = 4000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 397) { + if (_la === 397) { { - { - this.state = 4596; - this.match(HiveSqlParser.COMMA); - this.state = 4597; - this.columnRefOrder(); - } - } - this.state = 4602; + this.state = 3996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3994; + this.match(HiveSqlParser.COMMA); + this.state = 3995; + this.expressionOrDefault(); + } + } + this.state = 3998; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 397); + } } + } } catch (re) { @@ -22326,30 +19488,30 @@ export class HiveSqlParser extends SQLParserBase { } public orderByClause(): OrderByClauseContext { let localContext = new OrderByClauseContext(this.context, this.state); - this.enterRule(localContext, 764, HiveSqlParser.RULE_orderByClause); + this.enterRule(localContext, 542, HiveSqlParser.RULE_orderByClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4603; + this.state = 4002; this.match(HiveSqlParser.KW_ORDER); - this.state = 4604; + this.state = 4003; this.match(HiveSqlParser.KW_BY); - this.state = 4605; + this.state = 4004; this.columnRefOrder(); - this.state = 4610; + this.state = 4009; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4606; + this.state = 4005; this.match(HiveSqlParser.COMMA); - this.state = 4607; + this.state = 4006; this.columnRefOrder(); } } - this.state = 4612; + this.state = 4011; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22371,43 +19533,15 @@ export class HiveSqlParser extends SQLParserBase { } public clusterByClause(): ClusterByClauseContext { let localContext = new ClusterByClauseContext(this.context, this.state); - this.enterRule(localContext, 766, HiveSqlParser.RULE_clusterByClause); + this.enterRule(localContext, 544, HiveSqlParser.RULE_clusterByClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4613; + this.state = 4012; this.match(HiveSqlParser.KW_CLUSTER); - this.state = 4614; + this.state = 4013; this.match(HiveSqlParser.KW_BY); - this.state = 4615; - this.expressions(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public partitionByClause(): PartitionByClauseContext { - let localContext = new PartitionByClauseContext(this.context, this.state); - this.enterRule(localContext, 768, HiveSqlParser.RULE_partitionByClause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4617; - this.match(HiveSqlParser.KW_PARTITION); - this.state = 4618; - this.match(HiveSqlParser.KW_BY); - this.state = 4619; + this.state = 4014; this.expressions(); } } @@ -22427,15 +19561,15 @@ export class HiveSqlParser extends SQLParserBase { } public distributeByClause(): DistributeByClauseContext { let localContext = new DistributeByClauseContext(this.context, this.state); - this.enterRule(localContext, 770, HiveSqlParser.RULE_distributeByClause); + this.enterRule(localContext, 546, HiveSqlParser.RULE_distributeByClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4621; + this.state = 4016; this.match(HiveSqlParser.KW_DISTRIBUTE); - this.state = 4622; + this.state = 4017; this.match(HiveSqlParser.KW_BY); - this.state = 4623; + this.state = 4018; this.expressions(); } } @@ -22455,400 +19589,71 @@ export class HiveSqlParser extends SQLParserBase { } public sortByClause(): SortByClauseContext { let localContext = new SortByClauseContext(this.context, this.state); - this.enterRule(localContext, 772, HiveSqlParser.RULE_sortByClause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4625; - this.match(HiveSqlParser.KW_SORT); - this.state = 4626; - this.match(HiveSqlParser.KW_BY); - this.state = 4629; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 559, this.context) ) { - case 1: - { - this.state = 4627; - this.columnRefOrderInParenthesis(); - } - break; - case 2: - { - this.state = 4628; - this.columnRefOrderNotInParenthesis(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public trimFunction(): TrimFunctionContext { - let localContext = new TrimFunctionContext(this.context, this.state); - this.enterRule(localContext, 774, HiveSqlParser.RULE_trimFunction); + this.enterRule(localContext, 548, HiveSqlParser.RULE_sortByClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4631; - this.match(HiveSqlParser.KW_TRIM); - this.state = 4632; - this.match(HiveSqlParser.LPAREN); - this.state = 4636; + this.state = 4020; + this.match(HiveSqlParser.KW_SORT); + this.state = 4021; + this.match(HiveSqlParser.KW_BY); + this.state = 4041; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_LEADING: + switch (this.interpreter.adaptivePredict(this.tokenStream, 540, this.context) ) { + case 1: { - this.state = 4633; - localContext._leading = this.match(HiveSqlParser.KW_LEADING); + { + this.state = 4022; + this.match(HiveSqlParser.LPAREN); + this.state = 4023; + this.columnRefOrder(); + this.state = 4028; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 4024; + this.match(HiveSqlParser.COMMA); + this.state = 4025; + this.columnRefOrder(); + } + } + this.state = 4030; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 4031; + this.match(HiveSqlParser.RPAREN); + } } break; - case HiveSqlParser.KW_TRAILING: + case 2: { - this.state = 4634; - localContext._trailing = this.match(HiveSqlParser.KW_TRAILING); - } - break; - case HiveSqlParser.KW_BOTH: { - this.state = 4635; - this.match(HiveSqlParser.KW_BOTH); + this.state = 4033; + this.columnRefOrder(); + this.state = 4038; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 4034; + this.match(HiveSqlParser.COMMA); + this.state = 4035; + this.columnRefOrder(); + } + } + this.state = 4040; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - break; - case HiveSqlParser.KW_ABORT: - case HiveSqlParser.KW_ACTIVATE: - case HiveSqlParser.KW_ACTIVE: - case HiveSqlParser.KW_ADD: - case HiveSqlParser.KW_ADMIN: - case HiveSqlParser.KW_AFTER: - case HiveSqlParser.KW_ALLOC_FRACTION: - case HiveSqlParser.KW_ANALYZE: - case HiveSqlParser.KW_AND: - case HiveSqlParser.KW_ARCHIVE: - case HiveSqlParser.KW_ARRAY: - case HiveSqlParser.KW_ASC: - case HiveSqlParser.KW_AST: - case HiveSqlParser.KW_AT: - case HiveSqlParser.KW_AUTOCOMMIT: - case HiveSqlParser.KW_BATCH: - case HiveSqlParser.KW_BEFORE: - case HiveSqlParser.KW_BETWEEN: - case HiveSqlParser.KW_BIGINT: - case HiveSqlParser.KW_BINARY: - case HiveSqlParser.KW_BOOLEAN: - case HiveSqlParser.KW_BUCKET: - case HiveSqlParser.KW_BUCKETS: - case HiveSqlParser.KW_CACHE: - case HiveSqlParser.KW_CASCADE: - case HiveSqlParser.KW_CASE: - case HiveSqlParser.KW_CAST: - case HiveSqlParser.KW_CBO: - case HiveSqlParser.KW_CHANGE: - case HiveSqlParser.KW_CHECK: - case HiveSqlParser.KW_CLUSTER: - case HiveSqlParser.KW_CLUSTERED: - case HiveSqlParser.KW_CLUSTERSTATUS: - case HiveSqlParser.KW_COLLECTION: - case HiveSqlParser.KW_COLUMNS: - case HiveSqlParser.KW_COMMENT: - case HiveSqlParser.KW_COMPACT: - case HiveSqlParser.KW_COMPACTIONS: - case HiveSqlParser.KW_COMPUTE: - case HiveSqlParser.KW_CONCATENATE: - case HiveSqlParser.KW_CONTINUE: - case HiveSqlParser.KW_COST: - case HiveSqlParser.KW_CRON: - case HiveSqlParser.KW_CURRENT_DATE: - case HiveSqlParser.KW_CURRENT_TIMESTAMP: - case HiveSqlParser.KW_DATA: - case HiveSqlParser.KW_DATABASES: - case HiveSqlParser.KW_DATE: - case HiveSqlParser.KW_DATETIME: - case HiveSqlParser.KW_DAY: - case HiveSqlParser.KW_DAYS: - case HiveSqlParser.KW_DAYOFWEEK: - case HiveSqlParser.KW_DBPROPERTIES: - case HiveSqlParser.KW_DCPROPERTIES: - case HiveSqlParser.KW_DEBUG: - case HiveSqlParser.KW_DEFAULT: - case HiveSqlParser.KW_DEFERRED: - case HiveSqlParser.KW_DEFINED: - case HiveSqlParser.KW_DELIMITED: - case HiveSqlParser.KW_DEPENDENCY: - case HiveSqlParser.KW_DESC: - case HiveSqlParser.KW_DETAIL: - case HiveSqlParser.KW_DIRECTORIES: - case HiveSqlParser.KW_DIRECTORY: - case HiveSqlParser.KW_DISABLE: - case HiveSqlParser.KW_DISABLED: - case HiveSqlParser.KW_DISTRIBUTE: - case HiveSqlParser.KW_DISTRIBUTED: - case HiveSqlParser.KW_DO: - case HiveSqlParser.KW_DOUBLE: - case HiveSqlParser.KW_DUMP: - case HiveSqlParser.KW_ELEM_TYPE: - case HiveSqlParser.KW_ENABLE: - case HiveSqlParser.KW_ENABLED: - case HiveSqlParser.KW_ENFORCED: - case HiveSqlParser.KW_ESCAPED: - case HiveSqlParser.KW_EVERY: - case HiveSqlParser.KW_EXCLUSIVE: - case HiveSqlParser.KW_EXECUTE: - case HiveSqlParser.KW_EXECUTED: - case HiveSqlParser.KW_EXISTS: - case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: - case HiveSqlParser.KW_EXPLAIN: - case HiveSqlParser.KW_EXPORT: - case HiveSqlParser.KW_EXPRESSION: - case HiveSqlParser.KW_EXTRACT: - case HiveSqlParser.KW_FALSE: - case HiveSqlParser.KW_FIELDS: - case HiveSqlParser.KW_FILE: - case HiveSqlParser.KW_FILEFORMAT: - case HiveSqlParser.KW_FIRST: - case HiveSqlParser.KW_FLOAT: - case HiveSqlParser.KW_FLOOR: - case HiveSqlParser.KW_FORMAT: - case HiveSqlParser.KW_FORMATTED: - case HiveSqlParser.KW_FROM: - case HiveSqlParser.KW_FUNCTIONS: - case HiveSqlParser.KW_GROUPING: - case HiveSqlParser.KW_HOLD_DDLTIME: - case HiveSqlParser.KW_HOUR: - case HiveSqlParser.KW_HOURS: - case HiveSqlParser.KW_IDXPROPERTIES: - case HiveSqlParser.KW_IF: - case HiveSqlParser.KW_IGNORE: - case HiveSqlParser.KW_IN: - case HiveSqlParser.KW_INDEX: - case HiveSqlParser.KW_INDEXES: - case HiveSqlParser.KW_INPATH: - case HiveSqlParser.KW_INPUTDRIVER: - case HiveSqlParser.KW_INPUTFORMAT: - case HiveSqlParser.KW_INT: - case HiveSqlParser.KW_INTEGER: - case HiveSqlParser.KW_INTERVAL: - case HiveSqlParser.KW_ISOLATION: - case HiveSqlParser.KW_ITEMS: - case HiveSqlParser.KW_JAR: - case HiveSqlParser.KW_JOINCOST: - case HiveSqlParser.KW_KEY: - case HiveSqlParser.KW_KEYS: - case HiveSqlParser.KW_KEY_TYPE: - case HiveSqlParser.KW_KILL: - case HiveSqlParser.KW_LAST: - case HiveSqlParser.KW_LEVEL: - case HiveSqlParser.KW_LIFECYCLE: - case HiveSqlParser.KW_LIKE: - case HiveSqlParser.KW_LIMIT: - case HiveSqlParser.KW_LINES: - case HiveSqlParser.KW_LOAD: - case HiveSqlParser.KW_LOCATION: - case HiveSqlParser.KW_LOCK: - case HiveSqlParser.KW_LOCKS: - case HiveSqlParser.KW_LOGICAL: - case HiveSqlParser.KW_LONG: - case HiveSqlParser.KW_MANAGED: - case HiveSqlParser.KW_MANAGEDLOCATION: - case HiveSqlParser.KW_MANAGEMENT: - case HiveSqlParser.KW_MAP: - case HiveSqlParser.KW_MAPJOIN: - case HiveSqlParser.KW_MAPPING: - case HiveSqlParser.KW_MATCHED: - case HiveSqlParser.KW_MATERIALIZED: - case HiveSqlParser.KW_METADATA: - case HiveSqlParser.KW_MINUTE: - case HiveSqlParser.KW_MINUTES: - case HiveSqlParser.KW_MONTH: - case HiveSqlParser.KW_MONTHS: - case HiveSqlParser.KW_MOVE: - case HiveSqlParser.KW_MSCK: - case HiveSqlParser.KW_NORELY: - case HiveSqlParser.KW_NOSCAN: - case HiveSqlParser.KW_NOT: - case HiveSqlParser.KW_NOVALIDATE: - case HiveSqlParser.KW_NO_DROP: - case HiveSqlParser.KW_NULL: - case HiveSqlParser.KW_NULLS: - case HiveSqlParser.KW_OFFLINE: - case HiveSqlParser.KW_OFFSET: - case HiveSqlParser.KW_OPERATOR: - case HiveSqlParser.KW_OPTION: - case HiveSqlParser.KW_OR: - case HiveSqlParser.KW_OUTPUTDRIVER: - case HiveSqlParser.KW_OUTPUTFORMAT: - case HiveSqlParser.KW_OVERWRITE: - case HiveSqlParser.KW_OWNER: - case HiveSqlParser.KW_PARTITIONED: - case HiveSqlParser.KW_PARTITIONS: - case HiveSqlParser.KW_PATH: - case HiveSqlParser.KW_PLAN: - case HiveSqlParser.KW_PLANS: - case HiveSqlParser.KW_PLUS: - case HiveSqlParser.KW_POOL: - case HiveSqlParser.KW_PRINCIPALS: - case HiveSqlParser.KW_PROTECTION: - case HiveSqlParser.KW_PURGE: - case HiveSqlParser.KW_QUARTER: - case HiveSqlParser.KW_QUERY: - case HiveSqlParser.KW_QUERY_PARALLELISM: - case HiveSqlParser.KW_READ: - case HiveSqlParser.KW_READONLY: - case HiveSqlParser.KW_REAL: - case HiveSqlParser.KW_REBUILD: - case HiveSqlParser.KW_RECORDREADER: - case HiveSqlParser.KW_RECORDWRITER: - case HiveSqlParser.KW_REGEXP: - case HiveSqlParser.KW_RELOAD: - case HiveSqlParser.KW_RELY: - case HiveSqlParser.KW_REMOTE: - case HiveSqlParser.KW_RENAME: - case HiveSqlParser.KW_REOPTIMIZATION: - case HiveSqlParser.KW_REPAIR: - case HiveSqlParser.KW_REPL: - case HiveSqlParser.KW_REPLACE: - case HiveSqlParser.KW_REPLICATION: - case HiveSqlParser.KW_RESOURCE: - case HiveSqlParser.KW_RESPECT: - case HiveSqlParser.KW_RESTRICT: - case HiveSqlParser.KW_REWRITE: - case HiveSqlParser.KW_RLIKE: - case HiveSqlParser.KW_ROLE: - case HiveSqlParser.KW_ROLES: - case HiveSqlParser.KW_SCHEDULED: - case HiveSqlParser.KW_SCHEDULING_POLICY: - case HiveSqlParser.KW_SCHEMA: - case HiveSqlParser.KW_SCHEMAS: - case HiveSqlParser.KW_SECOND: - case HiveSqlParser.KW_SECONDS: - case HiveSqlParser.KW_SEMI: - case HiveSqlParser.KW_SERDE: - case HiveSqlParser.KW_SERDEPROPERTIES: - case HiveSqlParser.KW_SERVER: - case HiveSqlParser.KW_SETS: - case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: - case HiveSqlParser.KW_SHARED: - case HiveSqlParser.KW_SHOW: - case HiveSqlParser.KW_SHOW_DATABASE: - case HiveSqlParser.KW_SKEWED: - case HiveSqlParser.KW_SMALLINT: - case HiveSqlParser.KW_SNAPSHOT: - case HiveSqlParser.KW_SORT: - case HiveSqlParser.KW_SORTED: - case HiveSqlParser.KW_SPEC: - case HiveSqlParser.KW_SSL: - case HiveSqlParser.KW_STATISTICS: - case HiveSqlParser.KW_STATUS: - case HiveSqlParser.KW_STORED: - case HiveSqlParser.KW_STREAMTABLE: - case HiveSqlParser.KW_STRING: - case HiveSqlParser.KW_STRUCT: - case HiveSqlParser.KW_SUMMARY: - case HiveSqlParser.KW_SYSTEM_TIME: - case HiveSqlParser.KW_SYSTEM_VERSION: - case HiveSqlParser.KW_TABLES: - case HiveSqlParser.KW_TBLPROPERTIES: - case HiveSqlParser.KW_TEMPORARY: - case HiveSqlParser.KW_TERMINATED: - case HiveSqlParser.KW_TIMESTAMP: - case HiveSqlParser.KW_TIMESTAMPLOCALTZ: - case HiveSqlParser.KW_TIMESTAMPTZ: - case HiveSqlParser.KW_TINYINT: - case HiveSqlParser.KW_TOUCH: - case HiveSqlParser.KW_TRANSACTION: - case HiveSqlParser.KW_TRANSACTIONAL: - case HiveSqlParser.KW_TRANSACTIONS: - case HiveSqlParser.KW_TRIM: - case HiveSqlParser.KW_TRUE: - case HiveSqlParser.KW_TYPE: - case HiveSqlParser.KW_UNARCHIVE: - case HiveSqlParser.KW_UNDO: - case HiveSqlParser.KW_UNIONTYPE: - case HiveSqlParser.KW_UNKNOWN: - case HiveSqlParser.KW_UNLOCK: - case HiveSqlParser.KW_UNMANAGED: - case HiveSqlParser.KW_UNSET: - case HiveSqlParser.KW_UNSIGNED: - case HiveSqlParser.KW_URI: - case HiveSqlParser.KW_URL: - case HiveSqlParser.KW_USE: - case HiveSqlParser.KW_UTC: - case HiveSqlParser.KW_UTCTIMESTAMP: - case HiveSqlParser.KW_VALIDATE: - case HiveSqlParser.KW_VALUE_TYPE: - case HiveSqlParser.KW_VECTORIZATION: - case HiveSqlParser.KW_VIEW: - case HiveSqlParser.KW_VIEWS: - case HiveSqlParser.KW_WAIT: - case HiveSqlParser.KW_WEEK: - case HiveSqlParser.KW_WEEKS: - case HiveSqlParser.KW_WHEN: - case HiveSqlParser.KW_WHILE: - case HiveSqlParser.KW_WITHIN: - case HiveSqlParser.KW_WORK: - case HiveSqlParser.KW_WORKLOAD: - case HiveSqlParser.KW_WRITE: - case HiveSqlParser.KW_YEAR: - case HiveSqlParser.KW_YEARS: - case HiveSqlParser.KW_ZONE: - case HiveSqlParser.LPAREN: - case HiveSqlParser.EQUAL: - case HiveSqlParser.EQUAL_NS: - case HiveSqlParser.NOTEQUAL: - case HiveSqlParser.LESSTHANOREQUALTO: - case HiveSqlParser.LESSTHAN: - case HiveSqlParser.GREATERTHANOREQUALTO: - case HiveSqlParser.GREATERTHAN: - case HiveSqlParser.DIVIDE: - case HiveSqlParser.PLUS: - case HiveSqlParser.MINUS: - case HiveSqlParser.STAR: - case HiveSqlParser.MOD: - case HiveSqlParser.DIV: - case HiveSqlParser.BITWISENOT: - case HiveSqlParser.AMPERSAND: - case HiveSqlParser.TILDE: - case HiveSqlParser.BITWISEOR: - case HiveSqlParser.BITWISEXOR: - case HiveSqlParser.QUESTION: - case HiveSqlParser.StringLiteral: - case HiveSqlParser.IntegralLiteral: - case HiveSqlParser.NumberLiteral: - case HiveSqlParser.Number: - case HiveSqlParser.Identifier: - case HiveSqlParser.CharSetName: - break; - default: break; } - this.state = 4639; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) { - { - this.state = 4638; - localContext._trim_characters = this.selectExpression(); - } - } - - this.state = 4641; - this.match(HiveSqlParser.KW_FROM); - this.state = 4642; - localContext._str = this.selectExpression(); - this.state = 4643; - this.match(HiveSqlParser.RPAREN); } } catch (re) { @@ -22867,67 +19672,420 @@ export class HiveSqlParser extends SQLParserBase { } public function_(): Function_Context { let localContext = new Function_Context(this.context, this.state); - this.enterRule(localContext, 776, HiveSqlParser.RULE_function_); + this.enterRule(localContext, 550, HiveSqlParser.RULE_function_); let _la: number; try { - this.state = 4685; + this.state = 4096; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 568, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4645; - this.trimFunction(); + this.state = 4043; + this.match(HiveSqlParser.KW_TRIM); + this.state = 4044; + this.match(HiveSqlParser.LPAREN); + this.state = 4048; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_LEADING: + { + this.state = 4045; + localContext._leading = this.match(HiveSqlParser.KW_LEADING); + } + break; + case HiveSqlParser.KW_TRAILING: + { + this.state = 4046; + localContext._trailing = this.match(HiveSqlParser.KW_TRAILING); + } + break; + case HiveSqlParser.KW_BOTH: + { + this.state = 4047; + this.match(HiveSqlParser.KW_BOTH); + } + break; + case HiveSqlParser.KW_ABORT: + case HiveSqlParser.KW_ACTIVATE: + case HiveSqlParser.KW_ACTIVE: + case HiveSqlParser.KW_ADD: + case HiveSqlParser.KW_ADMIN: + case HiveSqlParser.KW_AFTER: + case HiveSqlParser.KW_ALLOC_FRACTION: + case HiveSqlParser.KW_ANALYZE: + case HiveSqlParser.KW_AND: + case HiveSqlParser.KW_ARCHIVE: + case HiveSqlParser.KW_ARRAY: + case HiveSqlParser.KW_ASC: + case HiveSqlParser.KW_AST: + case HiveSqlParser.KW_AT: + case HiveSqlParser.KW_AUTOCOMMIT: + case HiveSqlParser.KW_BATCH: + case HiveSqlParser.KW_BEFORE: + case HiveSqlParser.KW_BETWEEN: + case HiveSqlParser.KW_BIGINT: + case HiveSqlParser.KW_BINARY: + case HiveSqlParser.KW_BOOLEAN: + case HiveSqlParser.KW_BUCKET: + case HiveSqlParser.KW_BUCKETS: + case HiveSqlParser.KW_CACHE: + case HiveSqlParser.KW_CASCADE: + case HiveSqlParser.KW_CASE: + case HiveSqlParser.KW_CAST: + case HiveSqlParser.KW_CBO: + case HiveSqlParser.KW_CHANGE: + case HiveSqlParser.KW_CHECK: + case HiveSqlParser.KW_CLUSTER: + case HiveSqlParser.KW_CLUSTERED: + case HiveSqlParser.KW_CLUSTERSTATUS: + case HiveSqlParser.KW_COLLECTION: + case HiveSqlParser.KW_COLUMNS: + case HiveSqlParser.KW_COMMENT: + case HiveSqlParser.KW_COMPACT: + case HiveSqlParser.KW_COMPACTIONS: + case HiveSqlParser.KW_COMPUTE: + case HiveSqlParser.KW_CONCATENATE: + case HiveSqlParser.KW_CONTINUE: + case HiveSqlParser.KW_COST: + case HiveSqlParser.KW_CRON: + case HiveSqlParser.KW_CURRENT_DATE: + case HiveSqlParser.KW_CURRENT_TIMESTAMP: + case HiveSqlParser.KW_DATA: + case HiveSqlParser.KW_DATABASES: + case HiveSqlParser.KW_DATE: + case HiveSqlParser.KW_DATETIME: + case HiveSqlParser.KW_DAY: + case HiveSqlParser.KW_DAYS: + case HiveSqlParser.KW_DAYOFWEEK: + case HiveSqlParser.KW_DBPROPERTIES: + case HiveSqlParser.KW_DCPROPERTIES: + case HiveSqlParser.KW_DEBUG: + case HiveSqlParser.KW_DEFAULT: + case HiveSqlParser.KW_DEFERRED: + case HiveSqlParser.KW_DEFINED: + case HiveSqlParser.KW_DELIMITED: + case HiveSqlParser.KW_DEPENDENCY: + case HiveSqlParser.KW_DESC: + case HiveSqlParser.KW_DETAIL: + case HiveSqlParser.KW_DIRECTORIES: + case HiveSqlParser.KW_DIRECTORY: + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + case HiveSqlParser.KW_DISTRIBUTE: + case HiveSqlParser.KW_DISTRIBUTED: + case HiveSqlParser.KW_DO: + case HiveSqlParser.KW_DOUBLE: + case HiveSqlParser.KW_DUMP: + case HiveSqlParser.KW_ELEM_TYPE: + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + case HiveSqlParser.KW_ENFORCED: + case HiveSqlParser.KW_ESCAPED: + case HiveSqlParser.KW_EVERY: + case HiveSqlParser.KW_EXCLUSIVE: + case HiveSqlParser.KW_EXECUTE: + case HiveSqlParser.KW_EXECUTED: + case HiveSqlParser.KW_EXISTS: + case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: + case HiveSqlParser.KW_EXPLAIN: + case HiveSqlParser.KW_EXPORT: + case HiveSqlParser.KW_EXPRESSION: + case HiveSqlParser.KW_EXTRACT: + case HiveSqlParser.KW_FALSE: + case HiveSqlParser.KW_FIELDS: + case HiveSqlParser.KW_FILE: + case HiveSqlParser.KW_FILEFORMAT: + case HiveSqlParser.KW_FIRST: + case HiveSqlParser.KW_FLOAT: + case HiveSqlParser.KW_FLOOR: + case HiveSqlParser.KW_FORMAT: + case HiveSqlParser.KW_FORMATTED: + case HiveSqlParser.KW_FROM: + case HiveSqlParser.KW_FUNCTIONS: + case HiveSqlParser.KW_GROUPING: + case HiveSqlParser.KW_HOLD_DDLTIME: + case HiveSqlParser.KW_HOUR: + case HiveSqlParser.KW_HOURS: + case HiveSqlParser.KW_IDXPROPERTIES: + case HiveSqlParser.KW_IF: + case HiveSqlParser.KW_IGNORE: + case HiveSqlParser.KW_IN: + case HiveSqlParser.KW_INDEX: + case HiveSqlParser.KW_INDEXES: + case HiveSqlParser.KW_INPATH: + case HiveSqlParser.KW_INPUTDRIVER: + case HiveSqlParser.KW_INPUTFORMAT: + case HiveSqlParser.KW_INT: + case HiveSqlParser.KW_INTEGER: + case HiveSqlParser.KW_INTERVAL: + case HiveSqlParser.KW_ISOLATION: + case HiveSqlParser.KW_ITEMS: + case HiveSqlParser.KW_JAR: + case HiveSqlParser.KW_JOINCOST: + case HiveSqlParser.KW_KEY: + case HiveSqlParser.KW_KEYS: + case HiveSqlParser.KW_KEY_TYPE: + case HiveSqlParser.KW_KILL: + case HiveSqlParser.KW_LAST: + case HiveSqlParser.KW_LEVEL: + case HiveSqlParser.KW_LIFECYCLE: + case HiveSqlParser.KW_LIKE: + case HiveSqlParser.KW_LIMIT: + case HiveSqlParser.KW_LINES: + case HiveSqlParser.KW_LOAD: + case HiveSqlParser.KW_LOCATION: + case HiveSqlParser.KW_LOCK: + case HiveSqlParser.KW_LOCKS: + case HiveSqlParser.KW_LOGICAL: + case HiveSqlParser.KW_LONG: + case HiveSqlParser.KW_MANAGED: + case HiveSqlParser.KW_MANAGEDLOCATION: + case HiveSqlParser.KW_MANAGEMENT: + case HiveSqlParser.KW_MAP: + case HiveSqlParser.KW_MAPJOIN: + case HiveSqlParser.KW_MAPPING: + case HiveSqlParser.KW_MATCHED: + case HiveSqlParser.KW_MATERIALIZED: + case HiveSqlParser.KW_METADATA: + case HiveSqlParser.KW_MINUTE: + case HiveSqlParser.KW_MINUTES: + case HiveSqlParser.KW_MONTH: + case HiveSqlParser.KW_MONTHS: + case HiveSqlParser.KW_MOVE: + case HiveSqlParser.KW_MSCK: + case HiveSqlParser.KW_NORELY: + case HiveSqlParser.KW_NOSCAN: + case HiveSqlParser.KW_NOT: + case HiveSqlParser.KW_NOVALIDATE: + case HiveSqlParser.KW_NO_DROP: + case HiveSqlParser.KW_NULL: + case HiveSqlParser.KW_NULLS: + case HiveSqlParser.KW_OFFLINE: + case HiveSqlParser.KW_OFFSET: + case HiveSqlParser.KW_OPERATOR: + case HiveSqlParser.KW_OPTION: + case HiveSqlParser.KW_OR: + case HiveSqlParser.KW_OUTPUTDRIVER: + case HiveSqlParser.KW_OUTPUTFORMAT: + case HiveSqlParser.KW_OVERWRITE: + case HiveSqlParser.KW_OWNER: + case HiveSqlParser.KW_PARTITIONED: + case HiveSqlParser.KW_PARTITIONS: + case HiveSqlParser.KW_PATH: + case HiveSqlParser.KW_PLAN: + case HiveSqlParser.KW_PLANS: + case HiveSqlParser.KW_PLUS: + case HiveSqlParser.KW_POOL: + case HiveSqlParser.KW_PRINCIPALS: + case HiveSqlParser.KW_PROTECTION: + case HiveSqlParser.KW_PURGE: + case HiveSqlParser.KW_QUARTER: + case HiveSqlParser.KW_QUERY: + case HiveSqlParser.KW_QUERY_PARALLELISM: + case HiveSqlParser.KW_READ: + case HiveSqlParser.KW_READONLY: + case HiveSqlParser.KW_REAL: + case HiveSqlParser.KW_REBUILD: + case HiveSqlParser.KW_RECORDREADER: + case HiveSqlParser.KW_RECORDWRITER: + case HiveSqlParser.KW_REGEXP: + case HiveSqlParser.KW_RELOAD: + case HiveSqlParser.KW_RELY: + case HiveSqlParser.KW_REMOTE: + case HiveSqlParser.KW_RENAME: + case HiveSqlParser.KW_REOPTIMIZATION: + case HiveSqlParser.KW_REPAIR: + case HiveSqlParser.KW_REPL: + case HiveSqlParser.KW_REPLACE: + case HiveSqlParser.KW_REPLICATION: + case HiveSqlParser.KW_RESOURCE: + case HiveSqlParser.KW_RESPECT: + case HiveSqlParser.KW_RESTRICT: + case HiveSqlParser.KW_REWRITE: + case HiveSqlParser.KW_RLIKE: + case HiveSqlParser.KW_ROLE: + case HiveSqlParser.KW_ROLES: + case HiveSqlParser.KW_SCHEDULED: + case HiveSqlParser.KW_SCHEDULING_POLICY: + case HiveSqlParser.KW_SCHEMA: + case HiveSqlParser.KW_SCHEMAS: + case HiveSqlParser.KW_SECOND: + case HiveSqlParser.KW_SECONDS: + case HiveSqlParser.KW_SEMI: + case HiveSqlParser.KW_SERDE: + case HiveSqlParser.KW_SERDEPROPERTIES: + case HiveSqlParser.KW_SERVER: + case HiveSqlParser.KW_SETS: + case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: + case HiveSqlParser.KW_SHARED: + case HiveSqlParser.KW_SHOW: + case HiveSqlParser.KW_SHOW_DATABASE: + case HiveSqlParser.KW_SKEWED: + case HiveSqlParser.KW_SMALLINT: + case HiveSqlParser.KW_SNAPSHOT: + case HiveSqlParser.KW_SORT: + case HiveSqlParser.KW_SORTED: + case HiveSqlParser.KW_SPEC: + case HiveSqlParser.KW_SSL: + case HiveSqlParser.KW_STATISTICS: + case HiveSqlParser.KW_STATUS: + case HiveSqlParser.KW_STORED: + case HiveSqlParser.KW_STREAMTABLE: + case HiveSqlParser.KW_STRING: + case HiveSqlParser.KW_STRUCT: + case HiveSqlParser.KW_SUMMARY: + case HiveSqlParser.KW_SYSTEM_TIME: + case HiveSqlParser.KW_SYSTEM_VERSION: + case HiveSqlParser.KW_TABLES: + case HiveSqlParser.KW_TBLPROPERTIES: + case HiveSqlParser.KW_TEMPORARY: + case HiveSqlParser.KW_TERMINATED: + case HiveSqlParser.KW_TIMESTAMP: + case HiveSqlParser.KW_TIMESTAMPLOCALTZ: + case HiveSqlParser.KW_TIMESTAMPTZ: + case HiveSqlParser.KW_TINYINT: + case HiveSqlParser.KW_TOUCH: + case HiveSqlParser.KW_TRANSACTION: + case HiveSqlParser.KW_TRANSACTIONAL: + case HiveSqlParser.KW_TRANSACTIONS: + case HiveSqlParser.KW_TRIM: + case HiveSqlParser.KW_TRUE: + case HiveSqlParser.KW_TYPE: + case HiveSqlParser.KW_UNARCHIVE: + case HiveSqlParser.KW_UNDO: + case HiveSqlParser.KW_UNIONTYPE: + case HiveSqlParser.KW_UNKNOWN: + case HiveSqlParser.KW_UNLOCK: + case HiveSqlParser.KW_UNMANAGED: + case HiveSqlParser.KW_UNSET: + case HiveSqlParser.KW_UNSIGNED: + case HiveSqlParser.KW_URI: + case HiveSqlParser.KW_URL: + case HiveSqlParser.KW_USE: + case HiveSqlParser.KW_UTC: + case HiveSqlParser.KW_UTCTIMESTAMP: + case HiveSqlParser.KW_VALIDATE: + case HiveSqlParser.KW_VALUE_TYPE: + case HiveSqlParser.KW_VECTORIZATION: + case HiveSqlParser.KW_VIEW: + case HiveSqlParser.KW_VIEWS: + case HiveSqlParser.KW_WAIT: + case HiveSqlParser.KW_WEEK: + case HiveSqlParser.KW_WEEKS: + case HiveSqlParser.KW_WHEN: + case HiveSqlParser.KW_WHILE: + case HiveSqlParser.KW_WITHIN: + case HiveSqlParser.KW_WORK: + case HiveSqlParser.KW_WORKLOAD: + case HiveSqlParser.KW_WRITE: + case HiveSqlParser.KW_YEAR: + case HiveSqlParser.KW_YEARS: + case HiveSqlParser.KW_ZONE: + case HiveSqlParser.LPAREN: + case HiveSqlParser.EQUAL: + case HiveSqlParser.EQUAL_NS: + case HiveSqlParser.NOTEQUAL: + case HiveSqlParser.LESSTHANOREQUALTO: + case HiveSqlParser.LESSTHAN: + case HiveSqlParser.GREATERTHANOREQUALTO: + case HiveSqlParser.GREATERTHAN: + case HiveSqlParser.DIVIDE: + case HiveSqlParser.PLUS: + case HiveSqlParser.MINUS: + case HiveSqlParser.STAR: + case HiveSqlParser.MOD: + case HiveSqlParser.DIV: + case HiveSqlParser.BITWISENOT: + case HiveSqlParser.AMPERSAND: + case HiveSqlParser.TILDE: + case HiveSqlParser.BITWISEOR: + case HiveSqlParser.BITWISEXOR: + case HiveSqlParser.QUESTION: + case HiveSqlParser.StringLiteral: + case HiveSqlParser.IntegralLiteral: + case HiveSqlParser.NumberLiteral: + case HiveSqlParser.Number: + case HiveSqlParser.Identifier: + case HiveSqlParser.CharSetName: + break; + default: + break; + } + this.state = 4051; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3755838846) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3315298239) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280869) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3976149863) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 2004783495) !== 0) || ((((_la - 162)) & ~0x1F) === 0 && ((1 << (_la - 162)) & 4226874827) !== 0) || ((((_la - 195)) & ~0x1F) === 0 && ((1 << (_la - 195)) & 2616949503) !== 0) || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 3658431331) !== 0) || ((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 989854189) !== 0) || ((((_la - 293)) & ~0x1F) === 0 && ((1 << (_la - 293)) & 4260362175) !== 0) || ((((_la - 325)) & ~0x1F) === 0 && ((1 << (_la - 325)) & 1530590125) !== 0) || ((((_la - 357)) & ~0x1F) === 0 && ((1 << (_la - 357)) & 2549468921) !== 0) || ((((_la - 389)) & ~0x1F) === 0 && ((1 << (_la - 389)) & 4294902847) !== 0) || ((((_la - 421)) & ~0x1F) === 0 && ((1 << (_la - 421)) & 7597) !== 0)) { + { + this.state = 4050; + localContext._trim_characters = this.selectExpression(); + } + } + + this.state = 4053; + this.match(HiveSqlParser.KW_FROM); + this.state = 4054; + localContext._str = this.selectExpression(); + this.state = 4055; + this.match(HiveSqlParser.RPAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4646; + this.state = 4057; this.functionNameForInvoke(); - this.state = 4647; + this.state = 4058; this.match(HiveSqlParser.LPAREN); - this.state = 4662; + this.state = 4073; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 565, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 546, this.context) ) { case 1: { - this.state = 4648; + this.state = 4059; localContext._star = this.match(HiveSqlParser.STAR); } break; case 2: { - this.state = 4650; + this.state = 4061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 96) { { - this.state = 4649; - localContext._dist = this.all_distinct(); + this.state = 4060; + localContext._dist = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 7 || _la === 96)) { + localContext._dist = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } - this.state = 4660; + this.state = 4071; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 564, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { case 1: { - this.state = 4652; + this.state = 4063; this.selectExpression(); - this.state = 4657; + this.state = 4068; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 4653; + this.state = 4064; this.match(HiveSqlParser.COMMA); - this.state = 4654; + this.state = 4065; this.selectExpression(); } } - this.state = 4659; + this.state = 4070; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22937,60 +20095,60 @@ export class HiveSqlParser extends SQLParserBase { } break; } - this.state = 4683; + this.state = 4094; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { case 1: { - this.state = 4664; + this.state = 4075; this.match(HiveSqlParser.RPAREN); - this.state = 4665; + this.state = 4076; localContext._within = this.match(HiveSqlParser.KW_WITHIN); - this.state = 4666; + this.state = 4077; this.match(HiveSqlParser.KW_GROUP); - this.state = 4667; + this.state = 4078; this.match(HiveSqlParser.LPAREN); - this.state = 4668; + this.state = 4079; localContext._ordBy = this.orderByClause(); - this.state = 4669; + this.state = 4080; this.match(HiveSqlParser.RPAREN); } break; case 2: { - this.state = 4671; + this.state = 4082; this.match(HiveSqlParser.RPAREN); - this.state = 4673; + this.state = 4084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 152 || _la === 281) { { - this.state = 4672; + this.state = 4083; localContext._nt = this.null_treatment(); } } - this.state = 4675; + this.state = 4086; this.match(HiveSqlParser.KW_OVER); - this.state = 4676; + this.state = 4087; localContext._ws = this.window_specification(); } break; case 3: { - this.state = 4677; + this.state = 4088; localContext._nt = this.null_treatment(); - this.state = 4678; + this.state = 4089; this.match(HiveSqlParser.RPAREN); - this.state = 4679; + this.state = 4090; this.match(HiveSqlParser.KW_OVER); - this.state = 4680; + this.state = 4091; localContext._ws = this.window_specification(); } break; case 4: { - this.state = 4682; + this.state = 4093; this.match(HiveSqlParser.RPAREN); } break; @@ -23015,31 +20173,22 @@ export class HiveSqlParser extends SQLParserBase { } public null_treatment(): Null_treatmentContext { let localContext = new Null_treatmentContext(this.context, this.state); - this.enterRule(localContext, 778, HiveSqlParser.RULE_null_treatment); + this.enterRule(localContext, 552, HiveSqlParser.RULE_null_treatment); + let _la: number; try { - this.state = 4691; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_RESPECT: - this.enterOuterAlt(localContext, 1); - { - this.state = 4687; - this.match(HiveSqlParser.KW_RESPECT); - this.state = 4688; - this.match(HiveSqlParser.KW_NULLS); - } - break; - case HiveSqlParser.KW_IGNORE: - this.enterOuterAlt(localContext, 2); - { - this.state = 4689; - this.match(HiveSqlParser.KW_IGNORE); - this.state = 4690; - this.match(HiveSqlParser.KW_NULLS); - } - break; - default: - throw new antlr.NoViableAltException(this); + this.enterOuterAlt(localContext, 1); + { + this.state = 4098; + _la = this.tokenStream.LA(1); + if(!(_la === 152 || _la === 281)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4099; + this.match(HiveSqlParser.KW_NULLS); } } catch (re) { @@ -23058,11 +20207,11 @@ export class HiveSqlParser extends SQLParserBase { } public functionNameCreate(): FunctionNameCreateContext { let localContext = new FunctionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 780, HiveSqlParser.RULE_functionNameCreate); + this.enterRule(localContext, 554, HiveSqlParser.RULE_functionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 4693; + this.state = 4101; this.functionIdentifier(); } } @@ -23082,9 +20231,9 @@ export class HiveSqlParser extends SQLParserBase { } public functionNameForDDL(): FunctionNameForDDLContext { let localContext = new FunctionNameForDDLContext(this.context, this.state); - this.enterRule(localContext, 782, HiveSqlParser.RULE_functionNameForDDL); + this.enterRule(localContext, 556, HiveSqlParser.RULE_functionNameForDDL); try { - this.state = 4697; + this.state = 4105; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ABORT: @@ -23329,14 +20478,14 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 4695; - this.userDefinedFuncName(); + this.state = 4103; + this.functionIdentifier(); } break; case HiveSqlParser.StringLiteral: this.enterOuterAlt(localContext, 2); { - this.state = 4696; + this.state = 4104; this.match(HiveSqlParser.StringLiteral); } break; @@ -23360,83 +20509,29 @@ export class HiveSqlParser extends SQLParserBase { } public functionNameForInvoke(): FunctionNameForInvokeContext { let localContext = new FunctionNameForInvokeContext(this.context, this.state); - this.enterRule(localContext, 784, HiveSqlParser.RULE_functionNameForInvoke); + this.enterRule(localContext, 558, HiveSqlParser.RULE_functionNameForInvoke); try { - this.state = 4701; + this.state = 4110; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 571, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4699; - this.userDefinedFuncName(); + this.state = 4107; + this.functionIdentifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4700; - this.internalFunctionName(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public userDefinedFuncName(): UserDefinedFuncNameContext { - let localContext = new UserDefinedFuncNameContext(this.context, this.state); - this.enterRule(localContext, 786, HiveSqlParser.RULE_userDefinedFuncName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4703; - this.functionIdentifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public internalFunctionName(): InternalFunctionNameContext { - let localContext = new InternalFunctionNameContext(this.context, this.state); - this.enterRule(localContext, 788, HiveSqlParser.RULE_internalFunctionName); - try { - this.state = 4707; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 572, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4705; + this.state = 4108; this.sql11ReservedKeywordsUsedAsFunctionName(); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 3: + this.enterOuterAlt(localContext, 3); { - this.state = 4706; + this.state = 4109; this.sysFuncNames(); } break; @@ -23458,34 +20553,34 @@ export class HiveSqlParser extends SQLParserBase { } public castExpression(): CastExpressionContext { let localContext = new CastExpressionContext(this.context, this.state); - this.enterRule(localContext, 790, HiveSqlParser.RULE_castExpression); + this.enterRule(localContext, 560, HiveSqlParser.RULE_castExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4709; + this.state = 4112; this.match(HiveSqlParser.KW_CAST); - this.state = 4710; + this.state = 4113; this.match(HiveSqlParser.LPAREN); - this.state = 4711; + this.state = 4114; this.expression(); - this.state = 4712; + this.state = 4115; this.match(HiveSqlParser.KW_AS); - this.state = 4713; + this.state = 4116; localContext._toType = this.primitiveType(); - this.state = 4716; + this.state = 4119; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 137) { { - this.state = 4714; + this.state = 4117; localContext._fmt = this.match(HiveSqlParser.KW_FORMAT); - this.state = 4715; + this.state = 4118; this.match(HiveSqlParser.StringLiteral); } } - this.state = 4718; + this.state = 4121; this.match(HiveSqlParser.RPAREN); } } @@ -23505,48 +20600,48 @@ export class HiveSqlParser extends SQLParserBase { } public caseExpression(): CaseExpressionContext { let localContext = new CaseExpressionContext(this.context, this.state); - this.enterRule(localContext, 792, HiveSqlParser.RULE_caseExpression); + this.enterRule(localContext, 562, HiveSqlParser.RULE_caseExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4720; + this.state = 4123; this.match(HiveSqlParser.KW_CASE); - this.state = 4721; + this.state = 4124; this.expression(); - this.state = 4727; + this.state = 4130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 4722; + this.state = 4125; this.match(HiveSqlParser.KW_WHEN); - this.state = 4723; + this.state = 4126; this.expression(); - this.state = 4724; + this.state = 4127; this.match(HiveSqlParser.KW_THEN); - this.state = 4725; + this.state = 4128; this.expression(); } } - this.state = 4729; + this.state = 4132; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 383); - this.state = 4733; + this.state = 4136; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 4731; + this.state = 4134; this.match(HiveSqlParser.KW_ELSE); - this.state = 4732; + this.state = 4135; this.expression(); } } - this.state = 4735; + this.state = 4138; this.match(HiveSqlParser.KW_END); } } @@ -23566,46 +20661,46 @@ export class HiveSqlParser extends SQLParserBase { } public whenExpression(): WhenExpressionContext { let localContext = new WhenExpressionContext(this.context, this.state); - this.enterRule(localContext, 794, HiveSqlParser.RULE_whenExpression); + this.enterRule(localContext, 564, HiveSqlParser.RULE_whenExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4737; + this.state = 4140; this.match(HiveSqlParser.KW_CASE); - this.state = 4743; + this.state = 4146; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 4738; + this.state = 4141; this.match(HiveSqlParser.KW_WHEN); - this.state = 4739; + this.state = 4142; this.expression(); - this.state = 4740; + this.state = 4143; this.match(HiveSqlParser.KW_THEN); - this.state = 4741; + this.state = 4144; this.expression(); } } - this.state = 4745; + this.state = 4148; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 383); - this.state = 4749; + this.state = 4152; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 4747; + this.state = 4150; this.match(HiveSqlParser.KW_ELSE); - this.state = 4748; + this.state = 4151; this.expression(); } } - this.state = 4751; + this.state = 4154; this.match(HiveSqlParser.KW_END); } } @@ -23625,30 +20720,30 @@ export class HiveSqlParser extends SQLParserBase { } public floorExpression(): FloorExpressionContext { let localContext = new FloorExpressionContext(this.context, this.state); - this.enterRule(localContext, 796, HiveSqlParser.RULE_floorExpression); + this.enterRule(localContext, 566, HiveSqlParser.RULE_floorExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4753; + this.state = 4156; this.match(HiveSqlParser.KW_FLOOR); - this.state = 4754; + this.state = 4157; this.match(HiveSqlParser.LPAREN); - this.state = 4755; + this.state = 4158; this.expression(); - this.state = 4758; + this.state = 4161; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 341) { { - this.state = 4756; + this.state = 4159; this.match(HiveSqlParser.KW_TO); - this.state = 4757; - localContext._floorUnit = this.floorDateQualifiers(); + this.state = 4160; + localContext._floorUnit = this.timeQualifiers(); } } - this.state = 4760; + this.state = 4163; this.match(HiveSqlParser.RPAREN); } } @@ -23666,111 +20761,23 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public floorDateQualifiers(): FloorDateQualifiersContext { - let localContext = new FloorDateQualifiersContext(this.context, this.state); - this.enterRule(localContext, 798, HiveSqlParser.RULE_floorDateQualifiers); - try { - this.state = 4770; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_YEAR: - case HiveSqlParser.KW_YEARS: - this.enterOuterAlt(localContext, 1); - { - this.state = 4762; - this.year(); - } - break; - case HiveSqlParser.KW_QUARTER: - this.enterOuterAlt(localContext, 2); - { - this.state = 4763; - this.match(HiveSqlParser.KW_QUARTER); - } - break; - case HiveSqlParser.KW_MONTH: - case HiveSqlParser.KW_MONTHS: - this.enterOuterAlt(localContext, 3); - { - this.state = 4764; - this.month(); - } - break; - case HiveSqlParser.KW_WEEK: - case HiveSqlParser.KW_WEEKS: - this.enterOuterAlt(localContext, 4); - { - this.state = 4765; - this.week(); - } - break; - case HiveSqlParser.KW_DAY: - case HiveSqlParser.KW_DAYS: - this.enterOuterAlt(localContext, 5); - { - this.state = 4766; - this.day(); - } - break; - case HiveSqlParser.KW_HOUR: - case HiveSqlParser.KW_HOURS: - this.enterOuterAlt(localContext, 6); - { - this.state = 4767; - this.hour(); - } - break; - case HiveSqlParser.KW_MINUTE: - case HiveSqlParser.KW_MINUTES: - this.enterOuterAlt(localContext, 7); - { - this.state = 4768; - this.minute(); - } - break; - case HiveSqlParser.KW_SECOND: - case HiveSqlParser.KW_SECONDS: - this.enterOuterAlt(localContext, 8); - { - this.state = 4769; - this.second(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public extractExpression(): ExtractExpressionContext { let localContext = new ExtractExpressionContext(this.context, this.state); - this.enterRule(localContext, 800, HiveSqlParser.RULE_extractExpression); + this.enterRule(localContext, 568, HiveSqlParser.RULE_extractExpression); try { this.enterOuterAlt(localContext, 1); { - this.state = 4772; + this.state = 4165; this.match(HiveSqlParser.KW_EXTRACT); - this.state = 4773; + this.state = 4166; this.match(HiveSqlParser.LPAREN); - this.state = 4774; + this.state = 4167; localContext._timeUnit = this.timeQualifiers(); - this.state = 4775; + this.state = 4168; this.match(HiveSqlParser.KW_FROM); - this.state = 4776; + this.state = 4169; this.expression(); - this.state = 4777; + this.state = 4170; this.match(HiveSqlParser.RPAREN); } } @@ -23790,23 +20797,23 @@ export class HiveSqlParser extends SQLParserBase { } public timeQualifiers(): TimeQualifiersContext { let localContext = new TimeQualifiersContext(this.context, this.state); - this.enterRule(localContext, 802, HiveSqlParser.RULE_timeQualifiers); + this.enterRule(localContext, 570, HiveSqlParser.RULE_timeQualifiers); try { - this.state = 4787; + this.state = 4180; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_YEAR: case HiveSqlParser.KW_YEARS: this.enterOuterAlt(localContext, 1); { - this.state = 4779; + this.state = 4172; this.year(); } break; case HiveSqlParser.KW_QUARTER: this.enterOuterAlt(localContext, 2); { - this.state = 4780; + this.state = 4173; this.match(HiveSqlParser.KW_QUARTER); } break; @@ -23814,7 +20821,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_MONTHS: this.enterOuterAlt(localContext, 3); { - this.state = 4781; + this.state = 4174; this.month(); } break; @@ -23822,7 +20829,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_WEEKS: this.enterOuterAlt(localContext, 4); { - this.state = 4782; + this.state = 4175; this.week(); } break; @@ -23830,7 +20837,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_DAYS: this.enterOuterAlt(localContext, 5); { - this.state = 4783; + this.state = 4176; this.day(); } break; @@ -23838,7 +20845,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_HOURS: this.enterOuterAlt(localContext, 6); { - this.state = 4784; + this.state = 4177; this.hour(); } break; @@ -23846,7 +20853,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_MINUTES: this.enterOuterAlt(localContext, 7); { - this.state = 4785; + this.state = 4178; this.minute(); } break; @@ -23854,7 +20861,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_SECONDS: this.enterOuterAlt(localContext, 8); { - this.state = 4786; + this.state = 4179; this.second(); } break; @@ -23878,323 +20885,148 @@ export class HiveSqlParser extends SQLParserBase { } public constant(): ConstantContext { let localContext = new ConstantContext(this.context, this.state); - this.enterRule(localContext, 804, HiveSqlParser.RULE_constant); + this.enterRule(localContext, 572, HiveSqlParser.RULE_constant); + let _la: number; try { - this.state = 4802; + this.state = 4210; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4789; - this.intervalLiteral(); + this.state = 4182; + localContext._value = this.intervalValue(); + this.state = 4183; + localContext._qualifiers = this.intervalQualifiers(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4790; + this.state = 4185; this.match(HiveSqlParser.Number); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4791; - this.dateLiteral(); + this.state = 4186; + this.match(HiveSqlParser.KW_DATE); + this.state = 4187; + this.match(HiveSqlParser.StringLiteral); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4792; - this.timestampLiteral(); + this.state = 4188; + this.match(HiveSqlParser.KW_CURRENT_DATE); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4793; - this.timestampLocalTZLiteral(); + this.state = 4189; + this.match(HiveSqlParser.KW_TIMESTAMP); + this.state = 4190; + this.match(HiveSqlParser.StringLiteral); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4794; - this.match(HiveSqlParser.StringLiteral); + this.state = 4191; + this.match(HiveSqlParser.KW_CURRENT_TIMESTAMP); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4795; - this.stringLiteralSequence(); + this.state = 4192; + this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ); + this.state = 4193; + this.match(HiveSqlParser.StringLiteral); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4796; - this.match(HiveSqlParser.IntegralLiteral); + this.state = 4194; + this.match(HiveSqlParser.StringLiteral); + this.state = 4198; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 426) { + { + { + this.state = 4195; + this.match(HiveSqlParser.StringLiteral); + } + } + this.state = 4200; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4797; - this.match(HiveSqlParser.NumberLiteral); + this.state = 4201; + this.match(HiveSqlParser.IntegralLiteral); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4798; - this.charSetStringLiteral(); + this.state = 4202; + this.match(HiveSqlParser.NumberLiteral); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4799; - this.booleanValue(); + this.state = 4203; + localContext._csName = this.match(HiveSqlParser.CharSetName); + this.state = 4204; + localContext._csLiteral = this.match(HiveSqlParser.CharSetLiteral); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 4800; - this.match(HiveSqlParser.KW_NULL); + this.state = 4205; + this.match(HiveSqlParser.KW_TRUE); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 4801; - this.prepareStmtParam(); + this.state = 4206; + this.match(HiveSqlParser.KW_FALSE); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public prepareStmtParam(): PrepareStmtParamContext { - let localContext = new PrepareStmtParamContext(this.context, this.state); - this.enterRule(localContext, 806, HiveSqlParser.RULE_prepareStmtParam); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4804; - localContext._p = this.parameterIdx(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public parameterIdx(): ParameterIdxContext { - let localContext = new ParameterIdxContext(this.context, this.state); - this.enterRule(localContext, 808, HiveSqlParser.RULE_parameterIdx); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4806; - this.match(HiveSqlParser.QUESTION); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public stringLiteralSequence(): StringLiteralSequenceContext { - let localContext = new StringLiteralSequenceContext(this.context, this.state); - this.enterRule(localContext, 810, HiveSqlParser.RULE_stringLiteralSequence); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4808; - this.match(HiveSqlParser.StringLiteral); - this.state = 4810; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { + case 14: + this.enterOuterAlt(localContext, 14); { - { - this.state = 4809; - this.match(HiveSqlParser.StringLiteral); - } - } - this.state = 4812; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } while (_la === 426); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public charSetStringLiteral(): CharSetStringLiteralContext { - let localContext = new CharSetStringLiteralContext(this.context, this.state); - this.enterRule(localContext, 812, HiveSqlParser.RULE_charSetStringLiteral); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4814; - localContext._csName = this.match(HiveSqlParser.CharSetName); - this.state = 4815; - localContext._csLiteral = this.match(HiveSqlParser.CharSetLiteral); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dateLiteral(): DateLiteralContext { - let localContext = new DateLiteralContext(this.context, this.state); - this.enterRule(localContext, 814, HiveSqlParser.RULE_dateLiteral); - try { - this.state = 4820; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_DATE: - this.enterOuterAlt(localContext, 1); - { - this.state = 4817; - this.match(HiveSqlParser.KW_DATE); - this.state = 4818; - this.match(HiveSqlParser.StringLiteral); + this.state = 4207; + this.match(HiveSqlParser.KW_NULL); } break; - case HiveSqlParser.KW_CURRENT_DATE: - this.enterOuterAlt(localContext, 2); + case 15: + this.enterOuterAlt(localContext, 15); { - this.state = 4819; - this.match(HiveSqlParser.KW_CURRENT_DATE); + this.state = 4208; + localContext._p = this.match(HiveSqlParser.QUESTION); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public timestampLiteral(): TimestampLiteralContext { - let localContext = new TimestampLiteralContext(this.context, this.state); - this.enterRule(localContext, 816, HiveSqlParser.RULE_timestampLiteral); - try { - this.state = 4825; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_TIMESTAMP: - this.enterOuterAlt(localContext, 1); + case 16: + this.enterOuterAlt(localContext, 16); { - this.state = 4822; - this.match(HiveSqlParser.KW_TIMESTAMP); - this.state = 4823; - this.match(HiveSqlParser.StringLiteral); + this.state = 4209; + this.match(HiveSqlParser.Identifier); } break; - case HiveSqlParser.KW_CURRENT_TIMESTAMP: - this.enterOuterAlt(localContext, 2); - { - this.state = 4824; - this.match(HiveSqlParser.KW_CURRENT_TIMESTAMP); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext { - let localContext = new TimestampLocalTZLiteralContext(this.context, this.state); - this.enterRule(localContext, 818, HiveSqlParser.RULE_timestampLocalTZLiteral); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4827; - this.match(HiveSqlParser.KW_TIMESTAMPLOCALTZ); - this.state = 4828; - this.match(HiveSqlParser.StringLiteral); } } catch (re) { @@ -24213,12 +21045,12 @@ export class HiveSqlParser extends SQLParserBase { } public intervalValue(): IntervalValueContext { let localContext = new IntervalValueContext(this.context, this.state); - this.enterRule(localContext, 820, HiveSqlParser.RULE_intervalValue); + this.enterRule(localContext, 574, HiveSqlParser.RULE_intervalValue); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4830; + this.state = 4212; _la = this.tokenStream.LA(1); if(!(_la === 426 || _la === 431)) { this.errorHandler.recoverInline(this); @@ -24243,81 +21075,55 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public intervalLiteral(): IntervalLiteralContext { - let localContext = new IntervalLiteralContext(this.context, this.state); - this.enterRule(localContext, 822, HiveSqlParser.RULE_intervalLiteral); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4832; - localContext._value = this.intervalValue(); - this.state = 4833; - localContext._qualifiers = this.intervalQualifiers(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public intervalExpression(): IntervalExpressionContext { let localContext = new IntervalExpressionContext(this.context, this.state); - this.enterRule(localContext, 824, HiveSqlParser.RULE_intervalExpression); + this.enterRule(localContext, 576, HiveSqlParser.RULE_intervalExpression); try { - this.state = 4850; + this.state = 4229; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.LPAREN: this.enterOuterAlt(localContext, 1); { - this.state = 4835; + this.state = 4214; this.match(HiveSqlParser.LPAREN); - this.state = 4836; + this.state = 4215; localContext._value = this.intervalValue(); - this.state = 4837; + this.state = 4216; this.match(HiveSqlParser.RPAREN); - this.state = 4838; + this.state = 4217; localContext._qualifiers = this.intervalQualifiers(); } break; case HiveSqlParser.KW_INTERVAL: this.enterOuterAlt(localContext, 2); { - this.state = 4840; + this.state = 4219; this.match(HiveSqlParser.KW_INTERVAL); - this.state = 4846; + this.state = 4225; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.StringLiteral: case HiveSqlParser.Number: { - this.state = 4841; + this.state = 4220; localContext._value = this.intervalValue(); } break; case HiveSqlParser.LPAREN: { - this.state = 4842; + this.state = 4221; this.match(HiveSqlParser.LPAREN); - this.state = 4843; + this.state = 4222; localContext._expr = this.expression(); - this.state = 4844; + this.state = 4223; this.match(HiveSqlParser.RPAREN); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4848; + this.state = 4227; localContext._qualifiers = this.intervalQualifiers(); } break; @@ -24341,72 +21147,72 @@ export class HiveSqlParser extends SQLParserBase { } public intervalQualifiers(): IntervalQualifiersContext { let localContext = new IntervalQualifiersContext(this.context, this.state); - this.enterRule(localContext, 826, HiveSqlParser.RULE_intervalQualifiers); + this.enterRule(localContext, 578, HiveSqlParser.RULE_intervalQualifiers); try { - this.state = 4866; + this.state = 4245; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 587, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 563, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4852; + this.state = 4231; this.year(); - this.state = 4853; + this.state = 4232; this.match(HiveSqlParser.KW_TO); - this.state = 4854; + this.state = 4233; this.month(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4856; + this.state = 4235; this.day(); - this.state = 4857; + this.state = 4236; this.match(HiveSqlParser.KW_TO); - this.state = 4858; + this.state = 4237; this.second(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4860; + this.state = 4239; this.year(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4861; + this.state = 4240; this.month(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4862; + this.state = 4241; this.day(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4863; + this.state = 4242; this.hour(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4864; + this.state = 4243; this.minute(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4865; + this.state = 4244; this.second(); } break; @@ -24428,12 +21234,29 @@ export class HiveSqlParser extends SQLParserBase { } public expression(): ExpressionContext { let localContext = new ExpressionContext(this.context, this.state); - this.enterRule(localContext, 828, HiveSqlParser.RULE_expression); + this.enterRule(localContext, 580, HiveSqlParser.RULE_expression); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4868; - this.precedenceOrExpression(); + this.state = 4247; + this.precedenceAndExpression(); + this.state = 4252; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 228) { + { + { + this.state = 4248; + this.match(HiveSqlParser.KW_OR); + this.state = 4249; + this.precedenceAndExpression(); + } + } + this.state = 4254; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } catch (re) { @@ -24452,85 +21275,85 @@ export class HiveSqlParser extends SQLParserBase { } public atomExpression(): AtomExpressionContext { let localContext = new AtomExpressionContext(this.context, this.state); - this.enterRule(localContext, 830, HiveSqlParser.RULE_atomExpression); + this.enterRule(localContext, 582, HiveSqlParser.RULE_atomExpression); try { - this.state = 4881; + this.state = 4266; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 588, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 565, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4870; + this.state = 4255; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4871; + this.state = 4256; this.intervalExpression(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4872; + this.state = 4257; this.castExpression(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4873; + this.state = 4258; this.extractExpression(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4874; + this.state = 4259; this.floorExpression(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4875; + this.state = 4260; this.caseExpression(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4876; + this.state = 4261; this.whenExpression(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4877; + this.state = 4262; this.subQueryExpression(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4878; + this.state = 4263; this.function_(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4879; + this.state = 4264; this.expressionsInParenthesis(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4880; + this.state = 4265; this.id_(); } break; @@ -24550,38 +21373,62 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceFieldExpression(): PrecedenceFieldExpressionContext { - let localContext = new PrecedenceFieldExpressionContext(this.context, this.state); - this.enterRule(localContext, 832, HiveSqlParser.RULE_precedenceFieldExpression); + public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext { + let localContext = new PrecedenceUnaryPrefixExpressionContext(this.context, this.state); + this.enterRule(localContext, 584, HiveSqlParser.RULE_precedenceUnaryPrefixExpression); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4883; + this.state = 4271; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 566, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 4268; + _la = this.tokenStream.LA(1); + if(!(((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 163) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + } + this.state = 4273; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 566, this.context); + } + this.state = 4274; this.atomExpression(); - this.state = 4892; + this.state = 4283; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 395 || _la === 401) { { - this.state = 4890; + this.state = 4281; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.LSQUARE: { - this.state = 4884; + this.state = 4275; this.match(HiveSqlParser.LSQUARE); - this.state = 4885; + this.state = 4276; this.expression(); - this.state = 4886; + this.state = 4277; this.match(HiveSqlParser.RSQUARE); } break; case HiveSqlParser.DOT: { - this.state = 4888; + this.state = 4279; this.match(HiveSqlParser.DOT); - this.state = 4889; + this.state = 4280; this.id_(); } break; @@ -24589,7 +21436,7 @@ export class HiveSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 4894; + this.state = 4285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24609,125 +21456,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext { - let localContext = new PrecedenceUnaryOperatorContext(this.context, this.state); - this.enterRule(localContext, 834, HiveSqlParser.RULE_precedenceUnaryOperator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4895; - _la = this.tokenStream.LA(1); - if(!(((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 163) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public precedenceUnaryPrefixExpression(): PrecedenceUnaryPrefixExpressionContext { - let localContext = new PrecedenceUnaryPrefixExpressionContext(this.context, this.state); - this.enterRule(localContext, 836, HiveSqlParser.RULE_precedenceUnaryPrefixExpression); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 4900; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 591, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 4897; - this.precedenceUnaryOperator(); - } - } - } - this.state = 4902; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 591, this.context); - } - this.state = 4903; - this.precedenceFieldExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext { - let localContext = new PrecedenceBitwiseXorOperatorContext(this.context, this.state); - this.enterRule(localContext, 838, HiveSqlParser.RULE_precedenceBitwiseXorOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4905; - this.match(HiveSqlParser.BITWISEXOR); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceBitwiseXorExpression(): PrecedenceBitwiseXorExpressionContext { let localContext = new PrecedenceBitwiseXorExpressionContext(this.context, this.state); - this.enterRule(localContext, 840, HiveSqlParser.RULE_precedenceBitwiseXorExpression); + this.enterRule(localContext, 586, HiveSqlParser.RULE_precedenceBitwiseXorExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4907; + this.state = 4286; this.precedenceUnaryPrefixExpression(); - this.state = 4913; + this.state = 4291; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 423) { { { - this.state = 4908; - this.precedenceBitwiseXorOperator(); - this.state = 4909; + this.state = 4287; + this.match(HiveSqlParser.BITWISEXOR); + this.state = 4288; this.precedenceUnaryPrefixExpression(); } } - this.state = 4915; + this.state = 4293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24747,60 +21497,35 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceStarOperator(): PrecedenceStarOperatorContext { - let localContext = new PrecedenceStarOperatorContext(this.context, this.state); - this.enterRule(localContext, 842, HiveSqlParser.RULE_precedenceStarOperator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4916; - _la = this.tokenStream.LA(1); - if(!(((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceStarExpression(): PrecedenceStarExpressionContext { let localContext = new PrecedenceStarExpressionContext(this.context, this.state); - this.enterRule(localContext, 844, HiveSqlParser.RULE_precedenceStarExpression); + this.enterRule(localContext, 588, HiveSqlParser.RULE_precedenceStarExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4918; + this.state = 4294; this.precedenceBitwiseXorExpression(); - this.state = 4924; + this.state = 4299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0)) { { { - this.state = 4919; - this.precedenceStarOperator(); - this.state = 4920; + this.state = 4295; + _la = this.tokenStream.LA(1); + if(!(((((_la - 412)) & ~0x1F) === 0 && ((1 << (_la - 412)) & 57) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4296; this.precedenceBitwiseXorExpression(); } } - this.state = 4926; + this.state = 4301; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24820,60 +21545,35 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedencePlusOperator(): PrecedencePlusOperatorContext { - let localContext = new PrecedencePlusOperatorContext(this.context, this.state); - this.enterRule(localContext, 846, HiveSqlParser.RULE_precedencePlusOperator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4927; - _la = this.tokenStream.LA(1); - if(!(_la === 413 || _la === 414)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedencePlusExpression(): PrecedencePlusExpressionContext { let localContext = new PrecedencePlusExpressionContext(this.context, this.state); - this.enterRule(localContext, 848, HiveSqlParser.RULE_precedencePlusExpression); + this.enterRule(localContext, 590, HiveSqlParser.RULE_precedencePlusExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4929; + this.state = 4302; this.precedenceStarExpression(); - this.state = 4935; + this.state = 4307; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 413 || _la === 414) { { { - this.state = 4930; - this.precedencePlusOperator(); - this.state = 4931; + this.state = 4303; + _la = this.tokenStream.LA(1); + if(!(_la === 413 || _la === 414)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4304; this.precedenceStarExpression(); } } - this.state = 4937; + this.state = 4309; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24893,52 +21593,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext { - let localContext = new PrecedenceConcatenateOperatorContext(this.context, this.state); - this.enterRule(localContext, 850, HiveSqlParser.RULE_precedenceConcatenateOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4938; - this.match(HiveSqlParser.CONCATENATE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceConcatenateExpression(): PrecedenceConcatenateExpressionContext { let localContext = new PrecedenceConcatenateExpressionContext(this.context, this.state); - this.enterRule(localContext, 852, HiveSqlParser.RULE_precedenceConcatenateExpression); + this.enterRule(localContext, 592, HiveSqlParser.RULE_precedenceConcatenateExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4940; + this.state = 4310; this.precedencePlusExpression(); - this.state = 4946; + this.state = 4315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 422) { { { - this.state = 4941; - this.precedenceConcatenateOperator(); - this.state = 4942; + this.state = 4311; + this.match(HiveSqlParser.CONCATENATE); + this.state = 4312; localContext._plus = this.precedencePlusExpression(); } } - this.state = 4948; + this.state = 4317; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24958,52 +21634,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext { - let localContext = new PrecedenceAmpersandOperatorContext(this.context, this.state); - this.enterRule(localContext, 854, HiveSqlParser.RULE_precedenceAmpersandOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4949; - this.match(HiveSqlParser.AMPERSAND); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceAmpersandExpression(): PrecedenceAmpersandExpressionContext { let localContext = new PrecedenceAmpersandExpressionContext(this.context, this.state); - this.enterRule(localContext, 856, HiveSqlParser.RULE_precedenceAmpersandExpression); + this.enterRule(localContext, 594, HiveSqlParser.RULE_precedenceAmpersandExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4951; + this.state = 4318; this.precedenceConcatenateExpression(); - this.state = 4957; + this.state = 4323; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 419) { { { - this.state = 4952; - this.precedenceAmpersandOperator(); - this.state = 4953; + this.state = 4319; + this.match(HiveSqlParser.AMPERSAND); + this.state = 4320; this.precedenceConcatenateExpression(); } } - this.state = 4959; + this.state = 4325; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -25023,52 +21675,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext { - let localContext = new PrecedenceBitwiseOrOperatorContext(this.context, this.state); - this.enterRule(localContext, 858, HiveSqlParser.RULE_precedenceBitwiseOrOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4960; - this.match(HiveSqlParser.BITWISEOR); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext { let localContext = new PrecedenceBitwiseOrExpressionContext(this.context, this.state); - this.enterRule(localContext, 860, HiveSqlParser.RULE_precedenceBitwiseOrExpression); + this.enterRule(localContext, 596, HiveSqlParser.RULE_precedenceBitwiseOrExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4962; + this.state = 4326; this.precedenceAmpersandExpression(); - this.state = 4968; + this.state = 4331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 421) { { { - this.state = 4963; - this.precedenceBitwiseOrOperator(); - this.state = 4964; + this.state = 4327; + this.match(HiveSqlParser.BITWISEOR); + this.state = 4328; this.precedenceAmpersandExpression(); } } - this.state = 4970; + this.state = 4333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -25088,16 +21716,16 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext { - let localContext = new PrecedenceRegexpOperatorContext(this.context, this.state); - this.enterRule(localContext, 862, HiveSqlParser.RULE_precedenceRegexpOperator); + public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext { + let localContext = new PrecedenceSimilarOperatorContext(this.context, this.state); + this.enterRule(localContext, 598, HiveSqlParser.RULE_precedenceSimilarOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4971; + this.state = 4334; _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 270 || _la === 286)) { + if(!(_la === 184 || _la === 270 || _la === 286 || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 15) !== 0))) { this.errorHandler.recoverInline(this); } else { @@ -25120,79 +21748,17 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceSimilarOperator(): PrecedenceSimilarOperatorContext { - let localContext = new PrecedenceSimilarOperatorContext(this.context, this.state); - this.enterRule(localContext, 864, HiveSqlParser.RULE_precedenceSimilarOperator); - try { - this.state = 4978; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_LIKE: - case HiveSqlParser.KW_REGEXP: - case HiveSqlParser.KW_RLIKE: - this.enterOuterAlt(localContext, 1); - { - this.state = 4973; - this.precedenceRegexpOperator(); - } - break; - case HiveSqlParser.LESSTHANOREQUALTO: - this.enterOuterAlt(localContext, 2); - { - this.state = 4974; - this.match(HiveSqlParser.LESSTHANOREQUALTO); - } - break; - case HiveSqlParser.LESSTHAN: - this.enterOuterAlt(localContext, 3); - { - this.state = 4975; - this.match(HiveSqlParser.LESSTHAN); - } - break; - case HiveSqlParser.GREATERTHANOREQUALTO: - this.enterOuterAlt(localContext, 4); - { - this.state = 4976; - this.match(HiveSqlParser.GREATERTHANOREQUALTO); - } - break; - case HiveSqlParser.GREATERTHAN: - this.enterOuterAlt(localContext, 5); - { - this.state = 4977; - this.match(HiveSqlParser.GREATERTHAN); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public subQueryExpression(): SubQueryExpressionContext { let localContext = new SubQueryExpressionContext(this.context, this.state); - this.enterRule(localContext, 866, HiveSqlParser.RULE_subQueryExpression); + this.enterRule(localContext, 600, HiveSqlParser.RULE_subQueryExpression); try { this.enterOuterAlt(localContext, 1); { - this.state = 4980; + this.state = 4336; this.match(HiveSqlParser.LPAREN); - this.state = 4981; + this.state = 4337; this.selectStatement(); - this.state = 4982; + this.state = 4338; this.match(HiveSqlParser.RPAREN); } } @@ -25212,9 +21778,9 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceSimilarExpression(): PrecedenceSimilarExpressionContext { let localContext = new PrecedenceSimilarExpressionContext(this.context, this.state); - this.enterRule(localContext, 868, HiveSqlParser.RULE_precedenceSimilarExpression); + this.enterRule(localContext, 602, HiveSqlParser.RULE_precedenceSimilarExpression); try { - this.state = 4987; + this.state = 4346; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ABORT: @@ -25519,16 +22085,26 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.CharSetName: this.enterOuterAlt(localContext, 1); { - this.state = 4984; - this.precedenceSimilarExpressionMain(); + this.state = 4340; + localContext._a = this.precedenceBitwiseOrExpression(); + this.state = 4342; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 575, this.context) ) { + case 1: + { + this.state = 4341; + localContext._part = this.precedenceSimilarExpressionPart(); + } + break; + } } break; case HiveSqlParser.KW_EXISTS: this.enterOuterAlt(localContext, 2); { - this.state = 4985; + this.state = 4344; this.match(HiveSqlParser.KW_EXISTS); - this.state = 4986; + this.state = 4345; this.subQueryExpression(); } break; @@ -25550,69 +22126,35 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext { - let localContext = new PrecedenceSimilarExpressionMainContext(this.context, this.state); - this.enterRule(localContext, 870, HiveSqlParser.RULE_precedenceSimilarExpressionMain); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4989; - localContext._a = this.precedenceBitwiseOrExpression(); - this.state = 4991; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context) ) { - case 1: - { - this.state = 4990; - localContext._part = this.precedenceSimilarExpressionPart(); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext { let localContext = new PrecedenceSimilarExpressionPartContext(this.context, this.state); - this.enterRule(localContext, 872, HiveSqlParser.RULE_precedenceSimilarExpressionPart); + this.enterRule(localContext, 604, HiveSqlParser.RULE_precedenceSimilarExpressionPart); try { - this.state = 4999; + this.state = 4354; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 601, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4993; + this.state = 4348; this.precedenceSimilarOperator(); - this.state = 4994; + this.state = 4349; localContext._equalExpr = this.precedenceBitwiseOrExpression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4996; + this.state = 4351; this.precedenceSimilarExpressionAtom(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4997; + this.state = 4352; this.match(HiveSqlParser.KW_NOT); - this.state = 4998; + this.state = 4353; this.precedenceSimilarExpressionPartNot(); } break; @@ -25634,40 +22176,40 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceSimilarExpressionAtom(): PrecedenceSimilarExpressionAtomContext { let localContext = new PrecedenceSimilarExpressionAtomContext(this.context, this.state); - this.enterRule(localContext, 874, HiveSqlParser.RULE_precedenceSimilarExpressionAtom); + this.enterRule(localContext, 606, HiveSqlParser.RULE_precedenceSimilarExpressionAtom); let _la: number; try { - this.state = 5012; + this.state = 4370; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 5001; + this.state = 4356; this.match(HiveSqlParser.KW_IN); - this.state = 5002; + this.state = 4357; this.precedenceSimilarExpressionIn(); } break; case HiveSqlParser.KW_BETWEEN: this.enterOuterAlt(localContext, 2); { - this.state = 5003; + this.state = 4358; this.match(HiveSqlParser.KW_BETWEEN); - this.state = 5004; + this.state = 4359; localContext._min = this.precedenceBitwiseOrExpression(); - this.state = 5005; + this.state = 4360; this.match(HiveSqlParser.KW_AND); - this.state = 5006; + this.state = 4361; localContext._max = this.precedenceBitwiseOrExpression(); } break; case HiveSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 3); { - this.state = 5008; + this.state = 4363; this.match(HiveSqlParser.KW_LIKE); - this.state = 5009; + this.state = 4364; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -25676,7 +22218,7 @@ export class HiveSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5010; + this.state = 4365; localContext._expr = this.expressionsInParenthesis(); } break; @@ -25688,8 +22230,19 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.GREATERTHAN: this.enterOuterAlt(localContext, 4); { - this.state = 5011; - this.precedenceSimilarExpressionQuantifierPredicate(); + this.state = 4366; + this.subQuerySelectorOperator(); + this.state = 4367; + _la = this.tokenStream.LA(1); + if(!(_la === 7 || _la === 13 || _la === 313)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4368; + this.subQueryExpression(); } break; default: @@ -25710,84 +22263,24 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext { - let localContext = new PrecedenceSimilarExpressionQuantifierPredicateContext(this.context, this.state); - this.enterRule(localContext, 876, HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5014; - this.subQuerySelectorOperator(); - this.state = 5015; - this.quantifierType(); - this.state = 5016; - this.subQueryExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public quantifierType(): QuantifierTypeContext { - let localContext = new QuantifierTypeContext(this.context, this.state); - this.enterRule(localContext, 878, HiveSqlParser.RULE_quantifierType); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5018; - _la = this.tokenStream.LA(1); - if(!(_la === 7 || _la === 13 || _la === 313)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceSimilarExpressionIn(): PrecedenceSimilarExpressionInContext { let localContext = new PrecedenceSimilarExpressionInContext(this.context, this.state); - this.enterRule(localContext, 880, HiveSqlParser.RULE_precedenceSimilarExpressionIn); + this.enterRule(localContext, 608, HiveSqlParser.RULE_precedenceSimilarExpressionIn); try { - this.state = 5022; + this.state = 4374; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 603, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5020; + this.state = 4372; this.subQueryExpression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5021; + this.state = 4373; localContext._expr = this.expressionsInParenthesis(); } break; @@ -25809,24 +22302,32 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceSimilarExpressionPartNot(): PrecedenceSimilarExpressionPartNotContext { let localContext = new PrecedenceSimilarExpressionPartNotContext(this.context, this.state); - this.enterRule(localContext, 882, HiveSqlParser.RULE_precedenceSimilarExpressionPartNot); + this.enterRule(localContext, 610, HiveSqlParser.RULE_precedenceSimilarExpressionPartNot); + let _la: number; try { - this.state = 5028; + this.state = 4379; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5024; - this.precedenceRegexpOperator(); - this.state = 5025; + this.state = 4376; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 270 || _la === 286)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4377; localContext._notExpr = this.precedenceBitwiseOrExpression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5027; + this.state = 4378; this.precedenceSimilarExpressionAtom(); } break; @@ -25848,15 +22349,15 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceDistinctOperator(): PrecedenceDistinctOperatorContext { let localContext = new PrecedenceDistinctOperatorContext(this.context, this.state); - this.enterRule(localContext, 884, HiveSqlParser.RULE_precedenceDistinctOperator); + this.enterRule(localContext, 612, HiveSqlParser.RULE_precedenceDistinctOperator); try { this.enterOuterAlt(localContext, 1); { - this.state = 5030; + this.state = 4381; this.match(HiveSqlParser.KW_IS); - this.state = 5031; + this.state = 4382; this.match(HiveSqlParser.KW_DISTINCT); - this.state = 5032; + this.state = 4383; this.match(HiveSqlParser.KW_FROM); } } @@ -25876,42 +22377,42 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceEqualOperator(): PrecedenceEqualOperatorContext { let localContext = new PrecedenceEqualOperatorContext(this.context, this.state); - this.enterRule(localContext, 886, HiveSqlParser.RULE_precedenceEqualOperator); + this.enterRule(localContext, 614, HiveSqlParser.RULE_precedenceEqualOperator); try { - this.state = 5041; + this.state = 4392; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.EQUAL: this.enterOuterAlt(localContext, 1); { - this.state = 5034; + this.state = 4385; this.match(HiveSqlParser.EQUAL); } break; case HiveSqlParser.EQUAL_NS: this.enterOuterAlt(localContext, 2); { - this.state = 5035; + this.state = 4386; this.match(HiveSqlParser.EQUAL_NS); } break; case HiveSqlParser.NOTEQUAL: this.enterOuterAlt(localContext, 3); { - this.state = 5036; + this.state = 4387; this.match(HiveSqlParser.NOTEQUAL); } break; case HiveSqlParser.KW_IS: this.enterOuterAlt(localContext, 4); { - this.state = 5037; + this.state = 4388; this.match(HiveSqlParser.KW_IS); - this.state = 5038; + this.state = 4389; this.match(HiveSqlParser.KW_NOT); - this.state = 5039; + this.state = 4390; this.match(HiveSqlParser.KW_DISTINCT); - this.state = 5040; + this.state = 4391; this.match(HiveSqlParser.KW_FROM); } break; @@ -25935,38 +22436,38 @@ export class HiveSqlParser extends SQLParserBase { } public precedenceEqualExpression(): PrecedenceEqualExpressionContext { let localContext = new PrecedenceEqualExpressionContext(this.context, this.state); - this.enterRule(localContext, 888, HiveSqlParser.RULE_precedenceEqualExpression); + this.enterRule(localContext, 616, HiveSqlParser.RULE_precedenceEqualExpression); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5043; + this.state = 4394; this.precedenceSimilarExpression(); - this.state = 5052; + this.state = 4403; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 607, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 583, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 5050; + this.state = 4401; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 5044; + this.state = 4395; localContext._precedenceEqualOperator = this.precedenceEqualOperator(); localContext._equal.push(localContext._precedenceEqualOperator); - this.state = 5045; + this.state = 4396; localContext._precedenceSimilarExpression = this.precedenceSimilarExpression(); localContext._p.push(localContext._precedenceSimilarExpression); } break; case 2: { - this.state = 5047; + this.state = 4398; localContext._precedenceDistinctOperator = this.precedenceDistinctOperator(); localContext._dist.push(localContext._precedenceDistinctOperator); - this.state = 5048; + this.state = 4399; localContext._precedenceSimilarExpression = this.precedenceSimilarExpression(); localContext._p.push(localContext._precedenceSimilarExpression); } @@ -25974,9 +22475,9 @@ export class HiveSqlParser extends SQLParserBase { } } } - this.state = 5054; + this.state = 4405; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 607, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 583, this.context); } } } @@ -25996,75 +22497,58 @@ export class HiveSqlParser extends SQLParserBase { } public isCondition(): IsConditionContext { let localContext = new IsConditionContext(this.context, this.state); - this.enterRule(localContext, 890, HiveSqlParser.RULE_isCondition); + this.enterRule(localContext, 618, HiveSqlParser.RULE_isCondition); + let _la: number; try { - this.state = 5067; + this.state = 4412; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 608, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_NULL: this.enterOuterAlt(localContext, 1); { - this.state = 5055; + this.state = 4406; this.match(HiveSqlParser.KW_NULL); } break; - case 2: + case HiveSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 2); { - this.state = 5056; + this.state = 4407; this.match(HiveSqlParser.KW_TRUE); } break; - case 3: + case HiveSqlParser.KW_FALSE: this.enterOuterAlt(localContext, 3); { - this.state = 5057; + this.state = 4408; this.match(HiveSqlParser.KW_FALSE); } break; - case 4: + case HiveSqlParser.KW_UNKNOWN: this.enterOuterAlt(localContext, 4); { - this.state = 5058; + this.state = 4409; this.match(HiveSqlParser.KW_UNKNOWN); } break; - case 5: + case HiveSqlParser.KW_NOT: this.enterOuterAlt(localContext, 5); { - this.state = 5059; + this.state = 4410; this.match(HiveSqlParser.KW_NOT); - this.state = 5060; - this.match(HiveSqlParser.KW_NULL); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 5061; - this.match(HiveSqlParser.KW_NOT); - this.state = 5062; - this.match(HiveSqlParser.KW_TRUE); - } - break; - case 7: - this.enterOuterAlt(localContext, 7); - { - this.state = 5063; - this.match(HiveSqlParser.KW_NOT); - this.state = 5064; - this.match(HiveSqlParser.KW_FALSE); - } - break; - case 8: - this.enterOuterAlt(localContext, 8); - { - this.state = 5065; - this.match(HiveSqlParser.KW_NOT); - this.state = 5066; - this.match(HiveSqlParser.KW_UNKNOWN); + this.state = 4411; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 219 || _la === 350 || _la === 360)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -26081,23 +22565,40 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext { - let localContext = new PrecedenceUnarySuffixExpressionContext(this.context, this.state); - this.enterRule(localContext, 892, HiveSqlParser.RULE_precedenceUnarySuffixExpression); + public precedenceNotExpression(): PrecedenceNotExpressionContext { + let localContext = new PrecedenceNotExpressionContext(this.context, this.state); + this.enterRule(localContext, 620, HiveSqlParser.RULE_precedenceNotExpression); let _la: number; try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5069; + this.state = 4417; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 585, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 4414; + this.match(HiveSqlParser.KW_NOT); + } + } + } + this.state = 4419; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 585, this.context); + } + this.state = 4420; this.precedenceEqualExpression(); - this.state = 5072; + this.state = 4423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 167) { { - this.state = 5070; + this.state = 4421; localContext._a = this.match(HiveSqlParser.KW_IS); - this.state = 5071; + this.state = 4422; this.isCondition(); } } @@ -26118,117 +22619,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceNotOperator(): PrecedenceNotOperatorContext { - let localContext = new PrecedenceNotOperatorContext(this.context, this.state); - this.enterRule(localContext, 894, HiveSqlParser.RULE_precedenceNotOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5074; - this.match(HiveSqlParser.KW_NOT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public precedenceNotExpression(): PrecedenceNotExpressionContext { - let localContext = new PrecedenceNotExpressionContext(this.context, this.state); - this.enterRule(localContext, 896, HiveSqlParser.RULE_precedenceNotExpression); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 5079; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 610, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 5076; - this.precedenceNotOperator(); - } - } - } - this.state = 5081; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 610, this.context); - } - this.state = 5082; - this.precedenceUnarySuffixExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public precedenceAndOperator(): PrecedenceAndOperatorContext { - let localContext = new PrecedenceAndOperatorContext(this.context, this.state); - this.enterRule(localContext, 898, HiveSqlParser.RULE_precedenceAndOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5084; - this.match(HiveSqlParser.KW_AND); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public precedenceAndExpression(): PrecedenceAndExpressionContext { let localContext = new PrecedenceAndExpressionContext(this.context, this.state); - this.enterRule(localContext, 900, HiveSqlParser.RULE_precedenceAndExpression); + this.enterRule(localContext, 622, HiveSqlParser.RULE_precedenceAndExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5086; + this.state = 4425; this.precedenceNotExpression(); - this.state = 5092; + this.state = 4430; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11) { { { - this.state = 5087; - this.precedenceAndOperator(); - this.state = 5088; + this.state = 4426; + this.match(HiveSqlParser.KW_AND); + this.state = 4427; this.precedenceNotExpression(); } } - this.state = 5094; + this.state = 4432; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -26248,150 +22660,21 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public precedenceOrOperator(): PrecedenceOrOperatorContext { - let localContext = new PrecedenceOrOperatorContext(this.context, this.state); - this.enterRule(localContext, 902, HiveSqlParser.RULE_precedenceOrOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5095; - this.match(HiveSqlParser.KW_OR); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public precedenceOrExpression(): PrecedenceOrExpressionContext { - let localContext = new PrecedenceOrExpressionContext(this.context, this.state); - this.enterRule(localContext, 904, HiveSqlParser.RULE_precedenceOrExpression); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5097; - this.precedenceAndExpression(); - this.state = 5103; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 228) { - { - { - this.state = 5098; - this.precedenceOrOperator(); - this.state = 5099; - this.precedenceAndExpression(); - } - } - this.state = 5105; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public booleanValue(): BooleanValueContext { - let localContext = new BooleanValueContext(this.context, this.state); - this.enterRule(localContext, 906, HiveSqlParser.RULE_booleanValue); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5106; - _la = this.tokenStream.LA(1); - if(!(_la === 125 || _la === 350)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public booleanValueTok(): BooleanValueTokContext { - let localContext = new BooleanValueTokContext(this.context, this.state); - this.enterRule(localContext, 908, HiveSqlParser.RULE_booleanValueTok); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5108; - _la = this.tokenStream.LA(1); - if(!(_la === 125 || _la === 350)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public tableOrPartition(): TableOrPartitionContext { let localContext = new TableOrPartitionContext(this.context, this.state); - this.enterRule(localContext, 910, HiveSqlParser.RULE_tableOrPartition); + this.enterRule(localContext, 624, HiveSqlParser.RULE_tableOrPartition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5110; + this.state = 4433; this.tableName(); - this.state = 5112; + this.state = 4435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 237) { { - this.state = 5111; + this.state = 4434; this.partitionSpec(); } } @@ -26414,34 +22697,34 @@ export class HiveSqlParser extends SQLParserBase { } public partitionSpec(): PartitionSpecContext { let localContext = new PartitionSpecContext(this.context, this.state); - this.enterRule(localContext, 912, HiveSqlParser.RULE_partitionSpec); + this.enterRule(localContext, 626, HiveSqlParser.RULE_partitionSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5114; + this.state = 4437; this.match(HiveSqlParser.KW_PARTITION); - this.state = 5115; + this.state = 4438; this.match(HiveSqlParser.LPAREN); - this.state = 5116; + this.state = 4439; this.partitionVal(); - this.state = 5121; + this.state = 4444; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 5117; + this.state = 4440; this.match(HiveSqlParser.COMMA); - this.state = 5118; + this.state = 4441; this.partitionVal(); } } - this.state = 5123; + this.state = 4446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5124; + this.state = 4447; this.match(HiveSqlParser.RPAREN); } } @@ -26461,21 +22744,21 @@ export class HiveSqlParser extends SQLParserBase { } public partitionVal(): PartitionValContext { let localContext = new PartitionValContext(this.context, this.state); - this.enterRule(localContext, 914, HiveSqlParser.RULE_partitionVal); + this.enterRule(localContext, 628, HiveSqlParser.RULE_partitionVal); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5126; + this.state = 4449; this.id_(); - this.state = 5129; + this.state = 4452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 405) { { - this.state = 5127; + this.state = 4450; this.match(HiveSqlParser.EQUAL); - this.state = 5128; + this.state = 4451; this.constant(); } } @@ -26498,32 +22781,32 @@ export class HiveSqlParser extends SQLParserBase { } public partitionSelectorSpec(): PartitionSelectorSpecContext { let localContext = new PartitionSelectorSpecContext(this.context, this.state); - this.enterRule(localContext, 916, HiveSqlParser.RULE_partitionSelectorSpec); + this.enterRule(localContext, 630, HiveSqlParser.RULE_partitionSelectorSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5131; + this.state = 4454; this.match(HiveSqlParser.LPAREN); - this.state = 5132; + this.state = 4455; this.partitionSelectorVal(); - this.state = 5137; + this.state = 4460; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 5133; + this.state = 4456; this.match(HiveSqlParser.COMMA); - this.state = 5134; + this.state = 4457; this.partitionSelectorVal(); } } - this.state = 5139; + this.state = 4462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5140; + this.state = 4463; this.match(HiveSqlParser.RPAREN); } } @@ -26543,43 +22826,18 @@ export class HiveSqlParser extends SQLParserBase { } public partitionSelectorVal(): PartitionSelectorValContext { let localContext = new PartitionSelectorValContext(this.context, this.state); - this.enterRule(localContext, 918, HiveSqlParser.RULE_partitionSelectorVal); + this.enterRule(localContext, 632, HiveSqlParser.RULE_partitionSelectorVal); try { this.enterOuterAlt(localContext, 1); { - this.state = 5142; + this.state = 4465; this.id_(); - this.state = 5143; - this.partitionSelectorOperator(); - this.state = 5144; - this.constant(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public partitionSelectorOperator(): PartitionSelectorOperatorContext { - let localContext = new PartitionSelectorOperatorContext(this.context, this.state); - this.enterRule(localContext, 920, HiveSqlParser.RULE_partitionSelectorOperator); - try { - this.state = 5148; + this.state = 4468; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_LIKE: - this.enterOuterAlt(localContext, 1); { - this.state = 5146; + this.state = 4466; this.match(HiveSqlParser.KW_LIKE); } break; @@ -26589,15 +22847,17 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.LESSTHAN: case HiveSqlParser.GREATERTHANOREQUALTO: case HiveSqlParser.GREATERTHAN: - this.enterOuterAlt(localContext, 2); { - this.state = 5147; + this.state = 4467; this.subQuerySelectorOperator(); } break; default: throw new antlr.NoViableAltException(this); } + this.state = 4470; + this.constant(); + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -26615,12 +22875,12 @@ export class HiveSqlParser extends SQLParserBase { } public subQuerySelectorOperator(): SubQuerySelectorOperatorContext { let localContext = new SubQuerySelectorOperatorContext(this.context, this.state); - this.enterRule(localContext, 922, HiveSqlParser.RULE_subQuerySelectorOperator); + this.enterRule(localContext, 634, HiveSqlParser.RULE_subQuerySelectorOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5150; + this.state = 4472; _la = this.tokenStream.LA(1); if(!(((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 125) !== 0))) { this.errorHandler.recoverInline(this); @@ -26647,12 +22907,12 @@ export class HiveSqlParser extends SQLParserBase { } public sysFuncNames(): SysFuncNamesContext { let localContext = new SysFuncNamesContext(this.context, this.state); - this.enterRule(localContext, 924, HiveSqlParser.RULE_sysFuncNames); + this.enterRule(localContext, 636, HiveSqlParser.RULE_sysFuncNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5152; + this.state = 4474; _la = this.tokenStream.LA(1); if(!(((((_la - 11)) & ~0x1F) === 0 && ((1 << (_la - 11)) & 17023009) !== 0) || _la === 100 || _la === 131 || ((((_la - 132)) & ~0x1F) === 0 && ((1 << (_la - 132)) & 3225944065) !== 0) || _la === 184 || _la === 198 || _la === 216 || _la === 228 || ((((_la - 264)) & ~0x1F) === 0 && ((1 << (_la - 264)) & 4194369) !== 0) || ((((_la - 311)) & ~0x1F) === 0 && ((1 << (_la - 311)) & 536883201) !== 0) || _la === 357 || _la === 383 || ((((_la - 405)) & ~0x1F) === 0 && ((1 << (_la - 405)) & 385023) !== 0))) { this.errorHandler.recoverInline(this); @@ -26679,15 +22939,15 @@ export class HiveSqlParser extends SQLParserBase { } public id_(): Id_Context { let localContext = new Id_Context(this.context, this.state); - this.enterRule(localContext, 926, HiveSqlParser.RULE_id_); + this.enterRule(localContext, 638, HiveSqlParser.RULE_id_); try { - this.state = 5156; + this.state = 4478; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 5154; + this.state = 4476; this.match(HiveSqlParser.Identifier); } break; @@ -26932,7 +23192,7 @@ export class HiveSqlParser extends SQLParserBase { case HiveSqlParser.KW_ZONE: this.enterOuterAlt(localContext, 2); { - this.state = 5155; + this.state = 4477; this.nonReserved(); } break; @@ -26956,21 +23216,21 @@ export class HiveSqlParser extends SQLParserBase { } public functionIdentifier(): FunctionIdentifierContext { let localContext = new FunctionIdentifierContext(this.context, this.state); - this.enterRule(localContext, 928, HiveSqlParser.RULE_functionIdentifier); + this.enterRule(localContext, 640, HiveSqlParser.RULE_functionIdentifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5158; + this.state = 4480; this.id_(); - this.state = 5161; + this.state = 4483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 395) { { - this.state = 5159; + this.state = 4481; this.match(HiveSqlParser.DOT); - this.state = 5160; + this.state = 4482; localContext._fn = this.id_(); } } @@ -26993,11 +23253,11 @@ export class HiveSqlParser extends SQLParserBase { } public principalIdentifier(): PrincipalIdentifierContext { let localContext = new PrincipalIdentifierContext(this.context, this.state); - this.enterRule(localContext, 930, HiveSqlParser.RULE_principalIdentifier); + this.enterRule(localContext, 642, HiveSqlParser.RULE_principalIdentifier); try { this.enterOuterAlt(localContext, 1); { - this.state = 5163; + this.state = 4485; this.id_(); } } @@ -27017,12 +23277,12 @@ export class HiveSqlParser extends SQLParserBase { } public nonReserved(): NonReservedContext { let localContext = new NonReservedContext(this.context, this.state); - this.enterRule(localContext, 932, HiveSqlParser.RULE_nonReserved); + this.enterRule(localContext, 644, HiveSqlParser.RULE_nonReserved); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5165; + this.state = 4487; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 3252454782) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 94072755) !== 0) || ((((_la - 66)) & ~0x1F) === 0 && ((1 << (_la - 66)) & 3203280837) !== 0) || ((((_la - 98)) & ~0x1F) === 0 && ((1 << (_la - 98)) & 3774298979) !== 0) || ((((_la - 130)) & ~0x1F) === 0 && ((1 << (_la - 130)) & 1985876353) !== 0) || ((((_la - 168)) & ~0x1F) === 0 && ((1 << (_la - 168)) & 3152987127) !== 0) || ((((_la - 200)) & ~0x1F) === 0 && ((1 << (_la - 200)) & 215407575) !== 0) || ((((_la - 232)) & ~0x1F) === 0 && ((1 << (_la - 232)) & 1859156443) !== 0) || ((((_la - 265)) & ~0x1F) === 0 && ((1 << (_la - 265)) & 4039901127) !== 0) || ((((_la - 297)) & ~0x1F) === 0 && ((1 << (_la - 297)) & 3755917179) !== 0) || ((((_la - 330)) & ~0x1F) === 0 && ((1 << (_la - 330)) & 3402225181) !== 0) || ((((_la - 362)) & ~0x1F) === 0 && ((1 << (_la - 362)) & 4238323319) !== 0) || _la === 394)) { this.errorHandler.recoverInline(this); @@ -27049,12 +23309,12 @@ export class HiveSqlParser extends SQLParserBase { } public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext { let localContext = new Sql11ReservedKeywordsUsedAsFunctionNameContext(this.context, this.state); - this.enterRule(localContext, 934, HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName); + this.enterRule(localContext, 646, HiveSqlParser.RULE_sql11ReservedKeywordsUsedAsFunctionName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5167; + this.state = 4489; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 469827584) !== 0) || ((((_la - 63)) & ~0x1F) === 0 && ((1 << (_la - 63)) & 259) !== 0) || _la === 100 || _la === 131 || ((((_la - 145)) & ~0x1F) === 0 && ((1 << (_la - 145)) & 393281) !== 0) || _la === 198 || _la === 264 || _la === 311 || _la === 337)) { this.errorHandler.recoverInline(this); @@ -27079,302 +23339,604 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public hint(): HintContext { - let localContext = new HintContext(this.context, this.state); - this.enterRule(localContext, 936, HiveSqlParser.RULE_hint); + public configPropertiesItem(): ConfigPropertiesItemContext { + let localContext = new ConfigPropertiesItemContext(this.context, this.state); + this.enterRule(localContext, 648, HiveSqlParser.RULE_configPropertiesItem); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5169; - this.hintList(); - this.state = 5170; - this.match(HiveSqlParser.EOF); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hintList(): HintListContext { - let localContext = new HintListContext(this.context, this.state); - this.enterRule(localContext, 938, HiveSqlParser.RULE_hintList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5172; - this.hintItem(); - this.state = 5177; + this.state = 4541; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ABORT: + case HiveSqlParser.KW_ACTIVATE: + case HiveSqlParser.KW_ACTIVE: + case HiveSqlParser.KW_ADD: + case HiveSqlParser.KW_ADMIN: + case HiveSqlParser.KW_AFTER: + case HiveSqlParser.KW_ALLOC_FRACTION: + case HiveSqlParser.KW_ANALYZE: + case HiveSqlParser.KW_ARCHIVE: + case HiveSqlParser.KW_ASC: + case HiveSqlParser.KW_AST: + case HiveSqlParser.KW_AT: + case HiveSqlParser.KW_AUTOCOMMIT: + case HiveSqlParser.KW_BATCH: + case HiveSqlParser.KW_BEFORE: + case HiveSqlParser.KW_BUCKET: + case HiveSqlParser.KW_BUCKETS: + case HiveSqlParser.KW_CACHE: + case HiveSqlParser.KW_CASCADE: + case HiveSqlParser.KW_CBO: + case HiveSqlParser.KW_CHANGE: + case HiveSqlParser.KW_CHECK: + case HiveSqlParser.KW_CLUSTER: + case HiveSqlParser.KW_CLUSTERED: + case HiveSqlParser.KW_CLUSTERSTATUS: + case HiveSqlParser.KW_COLLECTION: + case HiveSqlParser.KW_COLUMNS: + case HiveSqlParser.KW_COMMENT: + case HiveSqlParser.KW_COMPACT: + case HiveSqlParser.KW_COMPACTIONS: + case HiveSqlParser.KW_COMPUTE: + case HiveSqlParser.KW_CONCATENATE: + case HiveSqlParser.KW_CONTINUE: + case HiveSqlParser.KW_COST: + case HiveSqlParser.KW_CRON: + case HiveSqlParser.KW_DATA: + case HiveSqlParser.KW_DATABASES: + case HiveSqlParser.KW_DATETIME: + case HiveSqlParser.KW_DAY: + case HiveSqlParser.KW_DAYS: + case HiveSqlParser.KW_DAYOFWEEK: + case HiveSqlParser.KW_DBPROPERTIES: + case HiveSqlParser.KW_DCPROPERTIES: + case HiveSqlParser.KW_DEBUG: + case HiveSqlParser.KW_DEFAULT: + case HiveSqlParser.KW_DEFERRED: + case HiveSqlParser.KW_DEFINED: + case HiveSqlParser.KW_DELIMITED: + case HiveSqlParser.KW_DEPENDENCY: + case HiveSqlParser.KW_DESC: + case HiveSqlParser.KW_DETAIL: + case HiveSqlParser.KW_DIRECTORIES: + case HiveSqlParser.KW_DIRECTORY: + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + case HiveSqlParser.KW_DISTRIBUTE: + case HiveSqlParser.KW_DISTRIBUTED: + case HiveSqlParser.KW_DO: + case HiveSqlParser.KW_DUMP: + case HiveSqlParser.KW_ELEM_TYPE: + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + case HiveSqlParser.KW_ENFORCED: + case HiveSqlParser.KW_ESCAPED: + case HiveSqlParser.KW_EVERY: + case HiveSqlParser.KW_EXCLUSIVE: + case HiveSqlParser.KW_EXECUTE: + case HiveSqlParser.KW_EXECUTED: + case HiveSqlParser.KW_EXPIRE_SNAPSHOTS: + case HiveSqlParser.KW_EXPLAIN: + case HiveSqlParser.KW_EXPORT: + case HiveSqlParser.KW_EXPRESSION: + case HiveSqlParser.KW_FIELDS: + case HiveSqlParser.KW_FILE: + case HiveSqlParser.KW_FILEFORMAT: + case HiveSqlParser.KW_FIRST: + case HiveSqlParser.KW_FORMAT: + case HiveSqlParser.KW_FORMATTED: + case HiveSqlParser.KW_FUNCTIONS: + case HiveSqlParser.KW_HOLD_DDLTIME: + case HiveSqlParser.KW_HOUR: + case HiveSqlParser.KW_HOURS: + case HiveSqlParser.KW_IDXPROPERTIES: + case HiveSqlParser.KW_IGNORE: + case HiveSqlParser.KW_INDEX: + case HiveSqlParser.KW_INDEXES: + case HiveSqlParser.KW_INPATH: + case HiveSqlParser.KW_INPUTDRIVER: + case HiveSqlParser.KW_INPUTFORMAT: + case HiveSqlParser.KW_ISOLATION: + case HiveSqlParser.KW_ITEMS: + case HiveSqlParser.KW_JAR: + case HiveSqlParser.KW_JOINCOST: + case HiveSqlParser.KW_KEY: + case HiveSqlParser.KW_KEYS: + case HiveSqlParser.KW_KEY_TYPE: + case HiveSqlParser.KW_KILL: + case HiveSqlParser.KW_LAST: + case HiveSqlParser.KW_LEVEL: + case HiveSqlParser.KW_LIFECYCLE: + case HiveSqlParser.KW_LIMIT: + case HiveSqlParser.KW_LINES: + case HiveSqlParser.KW_LOAD: + case HiveSqlParser.KW_LOCATION: + case HiveSqlParser.KW_LOCK: + case HiveSqlParser.KW_LOCKS: + case HiveSqlParser.KW_LOGICAL: + case HiveSqlParser.KW_LONG: + case HiveSqlParser.KW_MANAGED: + case HiveSqlParser.KW_MANAGEDLOCATION: + case HiveSqlParser.KW_MANAGEMENT: + case HiveSqlParser.KW_MAPJOIN: + case HiveSqlParser.KW_MAPPING: + case HiveSqlParser.KW_MATCHED: + case HiveSqlParser.KW_MATERIALIZED: + case HiveSqlParser.KW_METADATA: + case HiveSqlParser.KW_MINUTE: + case HiveSqlParser.KW_MINUTES: + case HiveSqlParser.KW_MONTH: + case HiveSqlParser.KW_MONTHS: + case HiveSqlParser.KW_MOVE: + case HiveSqlParser.KW_MSCK: + case HiveSqlParser.KW_NORELY: + case HiveSqlParser.KW_NOSCAN: + case HiveSqlParser.KW_NOVALIDATE: + case HiveSqlParser.KW_NO_DROP: + case HiveSqlParser.KW_NULLS: + case HiveSqlParser.KW_OFFLINE: + case HiveSqlParser.KW_OFFSET: + case HiveSqlParser.KW_OPERATOR: + case HiveSqlParser.KW_OPTION: + case HiveSqlParser.KW_OUTPUTDRIVER: + case HiveSqlParser.KW_OUTPUTFORMAT: + case HiveSqlParser.KW_OVERWRITE: + case HiveSqlParser.KW_OWNER: + case HiveSqlParser.KW_PARTITIONED: + case HiveSqlParser.KW_PARTITIONS: + case HiveSqlParser.KW_PATH: + case HiveSqlParser.KW_PLAN: + case HiveSqlParser.KW_PLANS: + case HiveSqlParser.KW_PLUS: + case HiveSqlParser.KW_POOL: + case HiveSqlParser.KW_PRINCIPALS: + case HiveSqlParser.KW_PROTECTION: + case HiveSqlParser.KW_PURGE: + case HiveSqlParser.KW_QUARTER: + case HiveSqlParser.KW_QUERY: + case HiveSqlParser.KW_QUERY_PARALLELISM: + case HiveSqlParser.KW_READ: + case HiveSqlParser.KW_READONLY: + case HiveSqlParser.KW_REBUILD: + case HiveSqlParser.KW_RECORDREADER: + case HiveSqlParser.KW_RECORDWRITER: + case HiveSqlParser.KW_RELOAD: + case HiveSqlParser.KW_RELY: + case HiveSqlParser.KW_REMOTE: + case HiveSqlParser.KW_RENAME: + case HiveSqlParser.KW_REOPTIMIZATION: + case HiveSqlParser.KW_REPAIR: + case HiveSqlParser.KW_REPL: + case HiveSqlParser.KW_REPLACE: + case HiveSqlParser.KW_REPLICATION: + case HiveSqlParser.KW_RESOURCE: + case HiveSqlParser.KW_RESPECT: + case HiveSqlParser.KW_RESTRICT: + case HiveSqlParser.KW_REWRITE: + case HiveSqlParser.KW_ROLE: + case HiveSqlParser.KW_ROLES: + case HiveSqlParser.KW_SCHEDULED: + case HiveSqlParser.KW_SCHEDULING_POLICY: + case HiveSqlParser.KW_SCHEMA: + case HiveSqlParser.KW_SCHEMAS: + case HiveSqlParser.KW_SECOND: + case HiveSqlParser.KW_SECONDS: + case HiveSqlParser.KW_SEMI: + case HiveSqlParser.KW_SERDE: + case HiveSqlParser.KW_SERDEPROPERTIES: + case HiveSqlParser.KW_SERVER: + case HiveSqlParser.KW_SETS: + case HiveSqlParser.KW_SET_CURRENT_SNAPSHOT: + case HiveSqlParser.KW_SHARED: + case HiveSqlParser.KW_SHOW: + case HiveSqlParser.KW_SHOW_DATABASE: + case HiveSqlParser.KW_SKEWED: + case HiveSqlParser.KW_SNAPSHOT: + case HiveSqlParser.KW_SORT: + case HiveSqlParser.KW_SORTED: + case HiveSqlParser.KW_SPEC: + case HiveSqlParser.KW_SSL: + case HiveSqlParser.KW_STATISTICS: + case HiveSqlParser.KW_STATUS: + case HiveSqlParser.KW_STORED: + case HiveSqlParser.KW_STREAMTABLE: + case HiveSqlParser.KW_STRING: + case HiveSqlParser.KW_STRUCT: + case HiveSqlParser.KW_SUMMARY: + case HiveSqlParser.KW_SYSTEM_TIME: + case HiveSqlParser.KW_SYSTEM_VERSION: + case HiveSqlParser.KW_TABLES: + case HiveSqlParser.KW_TBLPROPERTIES: + case HiveSqlParser.KW_TEMPORARY: + case HiveSqlParser.KW_TERMINATED: + case HiveSqlParser.KW_TIMESTAMPTZ: + case HiveSqlParser.KW_TINYINT: + case HiveSqlParser.KW_TOUCH: + case HiveSqlParser.KW_TRANSACTION: + case HiveSqlParser.KW_TRANSACTIONAL: + case HiveSqlParser.KW_TRANSACTIONS: + case HiveSqlParser.KW_TRIM: + case HiveSqlParser.KW_TYPE: + case HiveSqlParser.KW_UNARCHIVE: + case HiveSqlParser.KW_UNDO: + case HiveSqlParser.KW_UNIONTYPE: + case HiveSqlParser.KW_UNKNOWN: + case HiveSqlParser.KW_UNLOCK: + case HiveSqlParser.KW_UNMANAGED: + case HiveSqlParser.KW_UNSET: + case HiveSqlParser.KW_UNSIGNED: + case HiveSqlParser.KW_URI: + case HiveSqlParser.KW_URL: + case HiveSqlParser.KW_USE: + case HiveSqlParser.KW_UTC: + case HiveSqlParser.KW_UTCTIMESTAMP: + case HiveSqlParser.KW_VALIDATE: + case HiveSqlParser.KW_VALUE_TYPE: + case HiveSqlParser.KW_VECTORIZATION: + case HiveSqlParser.KW_VIEW: + case HiveSqlParser.KW_VIEWS: + case HiveSqlParser.KW_WAIT: + case HiveSqlParser.KW_WEEK: + case HiveSqlParser.KW_WEEKS: + case HiveSqlParser.KW_WHILE: + case HiveSqlParser.KW_WITHIN: + case HiveSqlParser.KW_WORK: + case HiveSqlParser.KW_WORKLOAD: + case HiveSqlParser.KW_WRITE: + case HiveSqlParser.KW_YEAR: + case HiveSqlParser.KW_YEARS: + case HiveSqlParser.KW_ZONE: + case HiveSqlParser.Identifier: + this.enterOuterAlt(localContext, 1); { + this.state = 4491; + this.id_(); + } + break; + case HiveSqlParser.KW_JOIN: + this.enterOuterAlt(localContext, 2); { - this.state = 5173; - this.match(HiveSqlParser.COMMA); - this.state = 5174; - this.hintItem(); + this.state = 4492; + this.match(HiveSqlParser.KW_JOIN); } - } - this.state = 5179; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hintItem(): HintItemContext { - let localContext = new HintItemContext(this.context, this.state); - this.enterRule(localContext, 940, HiveSqlParser.RULE_hintItem); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5180; - this.hintName(); - this.state = 5185; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 399) { + break; + case HiveSqlParser.KW_PARTITION: + this.enterOuterAlt(localContext, 3); { - this.state = 5181; - this.match(HiveSqlParser.LPAREN); - this.state = 5182; - this.hintArgs(); - this.state = 5183; - this.match(HiveSqlParser.RPAREN); + this.state = 4493; + this.match(HiveSqlParser.KW_PARTITION); } - } - - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hintName(): HintNameContext { - let localContext = new HintNameContext(this.context, this.state); - this.enterRule(localContext, 942, HiveSqlParser.RULE_hintName); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5187; - _la = this.tokenStream.LA(1); - if(!(_la === 199 || _la === 242 || _la === 300 || _la === 322)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hintArgs(): HintArgsContext { - let localContext = new HintArgsContext(this.context, this.state); - this.enterRule(localContext, 944, HiveSqlParser.RULE_hintArgs); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5189; - this.hintArgName(); - this.state = 5194; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { + break; + case HiveSqlParser.KW_MAP: + this.enterOuterAlt(localContext, 4); { + this.state = 4494; + this.match(HiveSqlParser.KW_MAP); + } + break; + case HiveSqlParser.KW_REDUCE: + this.enterOuterAlt(localContext, 5); { - this.state = 5190; - this.match(HiveSqlParser.COMMA); - this.state = 5191; - this.hintArgName(); + this.state = 4495; + this.match(HiveSqlParser.KW_REDUCE); } - } - this.state = 5196; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public hintArgName(): HintArgNameContext { - let localContext = new HintArgNameContext(this.context, this.state); - this.enterRule(localContext, 946, HiveSqlParser.RULE_hintArgName); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5197; - _la = this.tokenStream.LA(1); - if(!(_la === 213 || _la === 431 || _la === 432)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public prepareStatement(): PrepareStatementContext { - let localContext = new PrepareStatementContext(this.context, this.state); - this.enterRule(localContext, 948, HiveSqlParser.RULE_prepareStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5199; - this.match(HiveSqlParser.KW_PREPARE); - this.state = 5200; - this.id_(); - this.state = 5201; - this.match(HiveSqlParser.KW_FROM); - this.state = 5202; - this.queryStatementExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public executeStatement(): ExecuteStatementContext { - let localContext = new ExecuteStatementContext(this.context, this.state); - this.enterRule(localContext, 950, HiveSqlParser.RULE_executeStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5204; - this.match(HiveSqlParser.KW_EXECUTE); - this.state = 5205; - this.id_(); - this.state = 5206; - this.match(HiveSqlParser.KW_USING); - this.state = 5207; - this.executeParamList(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public executeParamList(): ExecuteParamListContext { - let localContext = new ExecuteParamListContext(this.context, this.state); - this.enterRule(localContext, 952, HiveSqlParser.RULE_executeParamList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5209; - this.constant(); - this.state = 5214; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { + break; + case HiveSqlParser.KW_USER: + this.enterOuterAlt(localContext, 6); { + this.state = 4496; + this.match(HiveSqlParser.KW_USER); + } + break; + case HiveSqlParser.KW_PERCENT: + this.enterOuterAlt(localContext, 7); { - this.state = 5210; - this.match(HiveSqlParser.COMMA); - this.state = 5211; - this.constant(); + this.state = 4497; + this.match(HiveSqlParser.KW_PERCENT); } + break; + case HiveSqlParser.KW_INTERVAL: + this.enterOuterAlt(localContext, 8); + { + this.state = 4498; + this.match(HiveSqlParser.KW_INTERVAL); } - this.state = 5216; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + break; + case HiveSqlParser.KW_ROWS: + this.enterOuterAlt(localContext, 9); + { + this.state = 4499; + this.match(HiveSqlParser.KW_ROWS); + } + break; + case HiveSqlParser.KW_UNION: + this.enterOuterAlt(localContext, 10); + { + this.state = 4500; + this.match(HiveSqlParser.KW_UNION); + } + break; + case HiveSqlParser.KW_GROUP: + this.enterOuterAlt(localContext, 11); + { + this.state = 4501; + this.match(HiveSqlParser.KW_GROUP); + } + break; + case HiveSqlParser.KW_MERGE: + this.enterOuterAlt(localContext, 12); + { + this.state = 4502; + this.match(HiveSqlParser.KW_MERGE); + } + break; + case HiveSqlParser.KW_NULL: + this.enterOuterAlt(localContext, 13); + { + this.state = 4503; + this.match(HiveSqlParser.KW_NULL); + } + break; + case HiveSqlParser.KW_FETCH: + this.enterOuterAlt(localContext, 14); + { + this.state = 4504; + this.match(HiveSqlParser.KW_FETCH); + } + break; + case HiveSqlParser.KW_LOCAL: + this.enterOuterAlt(localContext, 15); + { + this.state = 4505; + this.match(HiveSqlParser.KW_LOCAL); + } + break; + case HiveSqlParser.KW_DROP: + this.enterOuterAlt(localContext, 16); + { + this.state = 4506; + this.match(HiveSqlParser.KW_DROP); + } + break; + case HiveSqlParser.KW_TABLE: + this.enterOuterAlt(localContext, 17); + { + this.state = 4507; + this.match(HiveSqlParser.KW_TABLE); + } + break; + case HiveSqlParser.KW_ON: + this.enterOuterAlt(localContext, 18); + { + this.state = 4508; + this.match(HiveSqlParser.KW_ON); + } + break; + case HiveSqlParser.KW_ROW: + this.enterOuterAlt(localContext, 19); + { + this.state = 4509; + this.match(HiveSqlParser.KW_ROW); + } + break; + case HiveSqlParser.KW_GROUPING: + this.enterOuterAlt(localContext, 20); + { + this.state = 4510; + this.match(HiveSqlParser.KW_GROUPING); + } + break; + case HiveSqlParser.KW_SET: + this.enterOuterAlt(localContext, 21); + { + this.state = 4511; + this.match(HiveSqlParser.KW_SET); + } + break; + case HiveSqlParser.KW_FORCE: + this.enterOuterAlt(localContext, 22); + { + this.state = 4512; + this.match(HiveSqlParser.KW_FORCE); + } + break; + case HiveSqlParser.KW_START: + this.enterOuterAlt(localContext, 23); + { + this.state = 4513; + this.match(HiveSqlParser.KW_START); + } + break; + case HiveSqlParser.KW_INSERT: + this.enterOuterAlt(localContext, 24); + { + this.state = 4514; + this.match(HiveSqlParser.KW_INSERT); + } + break; + case HiveSqlParser.KW_CONF: + this.enterOuterAlt(localContext, 25); + { + this.state = 4515; + this.match(HiveSqlParser.KW_CONF); + } + break; + case HiveSqlParser.KW_INTO: + this.enterOuterAlt(localContext, 26); + { + this.state = 4516; + this.match(HiveSqlParser.KW_INTO); + } + break; + case HiveSqlParser.KW_UNIQUE: + this.enterOuterAlt(localContext, 27); + { + this.state = 4517; + this.match(HiveSqlParser.KW_UNIQUE); + } + break; + case HiveSqlParser.KW_COLUMN: + this.enterOuterAlt(localContext, 28); + { + this.state = 4518; + this.match(HiveSqlParser.KW_COLUMN); + } + break; + case HiveSqlParser.KW_TRANSFORM: + this.enterOuterAlt(localContext, 29); + { + this.state = 4519; + this.match(HiveSqlParser.KW_TRANSFORM); + } + break; + case HiveSqlParser.KW_DISTINCT: + this.enterOuterAlt(localContext, 30); + { + this.state = 4520; + this.match(HiveSqlParser.KW_DISTINCT); + } + break; + case HiveSqlParser.KW_IN: + this.enterOuterAlt(localContext, 31); + { + this.state = 4521; + this.match(HiveSqlParser.KW_IN); + } + break; + case HiveSqlParser.KW_REFERENCES: + this.enterOuterAlt(localContext, 32); + { + this.state = 4522; + this.match(HiveSqlParser.KW_REFERENCES); + } + break; + case HiveSqlParser.KW_TIMESTAMP: + this.enterOuterAlt(localContext, 33); + { + this.state = 4523; + this.match(HiveSqlParser.KW_TIMESTAMP); + } + break; + case HiveSqlParser.KW_ONLY: + this.enterOuterAlt(localContext, 34); + { + this.state = 4524; + this.match(HiveSqlParser.KW_ONLY); + } + break; + case HiveSqlParser.KW_END: + this.enterOuterAlt(localContext, 35); + { + this.state = 4525; + this.match(HiveSqlParser.KW_END); + } + break; + case HiveSqlParser.KW_FUNCTION: + this.enterOuterAlt(localContext, 36); + { + this.state = 4526; + this.match(HiveSqlParser.KW_FUNCTION); + } + break; + case HiveSqlParser.KW_UPDATE: + this.enterOuterAlt(localContext, 37); + { + this.state = 4527; + this.match(HiveSqlParser.KW_UPDATE); + } + break; + case HiveSqlParser.KW_AUTHORIZATION: + this.enterOuterAlt(localContext, 38); + { + this.state = 4528; + this.match(HiveSqlParser.KW_AUTHORIZATION); + } + break; + case HiveSqlParser.KW_DDL: + this.enterOuterAlt(localContext, 39); + { + this.state = 4529; + this.match(HiveSqlParser.KW_DDL); + } + break; + case HiveSqlParser.KW_VALUES: + this.enterOuterAlt(localContext, 40); + { + this.state = 4530; + this.match(HiveSqlParser.KW_VALUES); + } + break; + case HiveSqlParser.KW_TIME: + this.enterOuterAlt(localContext, 41); + { + this.state = 4531; + this.match(HiveSqlParser.KW_TIME); + } + break; + case HiveSqlParser.KW_IS: + this.enterOuterAlt(localContext, 42); + { + this.state = 4532; + this.match(HiveSqlParser.KW_IS); + } + break; + case HiveSqlParser.KW_FOR: + this.enterOuterAlt(localContext, 43); + { + this.state = 4533; + this.match(HiveSqlParser.KW_FOR); + } + break; + case HiveSqlParser.KW_NOT: + this.enterOuterAlt(localContext, 44); + { + this.state = 4534; + this.match(HiveSqlParser.KW_NOT); + } + break; + case HiveSqlParser.KW_BINARY: + this.enterOuterAlt(localContext, 45); + { + this.state = 4535; + this.match(HiveSqlParser.KW_BINARY); + } + break; + case HiveSqlParser.KW_USING: + this.enterOuterAlt(localContext, 46); + { + this.state = 4536; + this.match(HiveSqlParser.KW_USING); + } + break; + case HiveSqlParser.KW_READS: + this.enterOuterAlt(localContext, 47); + { + this.state = 4537; + this.match(HiveSqlParser.KW_READS); + } + break; + case HiveSqlParser.KW_BETWEEN: + this.enterOuterAlt(localContext, 48); + { + this.state = 4538; + this.match(HiveSqlParser.KW_BETWEEN); + } + break; + case HiveSqlParser.KW_CURRENT: + this.enterOuterAlt(localContext, 49); + { + this.state = 4539; + this.match(HiveSqlParser.KW_CURRENT); + } + break; + case HiveSqlParser.KW_AS: + this.enterOuterAlt(localContext, 50); + { + this.state = 4540; + this.match(HiveSqlParser.KW_AS); + } + break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -27393,107 +23955,545 @@ export class HiveSqlParser extends SQLParserBase { } public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext { let localContext = new ResourcePlanDdlStatementsContext(this.context, this.state); - this.enterRule(localContext, 954, HiveSqlParser.RULE_resourcePlanDdlStatements); + this.enterRule(localContext, 650, HiveSqlParser.RULE_resourcePlanDdlStatements); + let _la: number; try { - this.state = 5231; + this.state = 4708; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 624, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 612, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5217; - this.createResourcePlanStatement(); + this.state = 4543; + this.match(HiveSqlParser.KW_CREATE); + this.state = 4544; + this.match(HiveSqlParser.KW_RESOURCE); + this.state = 4545; + this.match(HiveSqlParser.KW_PLAN); + this.state = 4547; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 4546; + this.ifNotExists(); + } + } + + this.state = 4558; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 598, this.context) ) { + case 1: + { + this.state = 4549; + localContext._name = this.id_(); + this.state = 4550; + this.match(HiveSqlParser.KW_LIKE); + this.state = 4551; + localContext._likeName = this.id_(); + } + break; + case 2: + { + this.state = 4553; + localContext._name = this.id_(); + this.state = 4556; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 597, this.context) ) { + case 1: + { + this.state = 4554; + this.match(HiveSqlParser.KW_WITH); + this.state = 4555; + this.rpAssignList(); + } + break; + } + } + break; + } } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5218; - this.alterResourcePlanStatement(); + this.state = 4560; + this.match(HiveSqlParser.KW_ALTER); + this.state = 4561; + this.match(HiveSqlParser.KW_RESOURCE); + this.state = 4562; + this.match(HiveSqlParser.KW_PLAN); + this.state = 4563; + localContext._name = this.id_(); + this.state = 4588; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_VALIDATE: + { + this.state = 4564; + this.match(HiveSqlParser.KW_VALIDATE); + } + break; + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + { + this.state = 4565; + this.disable(); + } + break; + case HiveSqlParser.KW_SET: + { + this.state = 4566; + this.match(HiveSqlParser.KW_SET); + this.state = 4567; + this.rpAssignList(); + } + break; + case HiveSqlParser.KW_UNSET: + { + this.state = 4568; + this.match(HiveSqlParser.KW_UNSET); + this.state = 4569; + this.rpUnassign(); + this.state = 4574; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 397) { + { + { + this.state = 4570; + this.match(HiveSqlParser.COMMA); + this.state = 4571; + this.rpUnassign(); + } + } + this.state = 4576; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; + case HiveSqlParser.KW_RENAME: + { + this.state = 4577; + this.match(HiveSqlParser.KW_RENAME); + this.state = 4578; + this.match(HiveSqlParser.KW_TO); + this.state = 4579; + localContext._newName = this.id_(); + } + break; + case HiveSqlParser.KW_ACTIVATE: + { + this.state = 4580; + this.activate(); + this.state = 4582; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context) ) { + case 1: + { + this.state = 4581; + this.enable(); + } + break; + } + } + break; + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + { + this.state = 4584; + this.enable(); + this.state = 4586; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 2) { + { + this.state = 4585; + this.activate(); + } + } + + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5219; - this.dropResourcePlanStatement(); + this.state = 4590; + this.match(HiveSqlParser.KW_DROP); + this.state = 4591; + this.match(HiveSqlParser.KW_RESOURCE); + this.state = 4592; + this.match(HiveSqlParser.KW_PLAN); + this.state = 4594; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 151) { + { + this.state = 4593; + this.ifExists(); + } + } + + this.state = 4596; + localContext._name = this.id_(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5220; - this.globalWmStatement(); + this.state = 4599; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ENABLE: + case HiveSqlParser.KW_ENABLED: + { + this.state = 4597; + this.enable(); + } + break; + case HiveSqlParser.KW_DISABLE: + case HiveSqlParser.KW_DISABLED: + { + this.state = 4598; + this.disable(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4601; + this.match(HiveSqlParser.KW_WORKLOAD); + this.state = 4602; + this.match(HiveSqlParser.KW_MANAGEMENT); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5221; - this.replaceResourcePlanStatement(); + this.state = 4604; + this.match(HiveSqlParser.KW_REPLACE); + this.state = 4616; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ACTIVE: + { + this.state = 4605; + this.match(HiveSqlParser.KW_ACTIVE); + this.state = 4606; + this.match(HiveSqlParser.KW_RESOURCE); + this.state = 4607; + this.match(HiveSqlParser.KW_PLAN); + this.state = 4608; + this.match(HiveSqlParser.KW_WITH); + this.state = 4609; + localContext._src = this.id_(); + } + break; + case HiveSqlParser.KW_RESOURCE: + { + this.state = 4610; + this.match(HiveSqlParser.KW_RESOURCE); + this.state = 4611; + this.match(HiveSqlParser.KW_PLAN); + this.state = 4612; + localContext._dest = this.id_(); + this.state = 4613; + this.match(HiveSqlParser.KW_WITH); + this.state = 4614; + localContext._src = this.id_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5222; - this.createTriggerStatement(); + this.state = 4618; + this.match(HiveSqlParser.KW_CREATE); + this.state = 4619; + this.match(HiveSqlParser.KW_TRIGGER); + this.state = 4620; + localContext._rpName = this.id_(); + this.state = 4621; + this.match(HiveSqlParser.DOT); + this.state = 4622; + localContext._triggerName = this.id_(); + this.state = 4623; + this.match(HiveSqlParser.KW_WHEN); + this.state = 4624; + this.triggerAtomExpression(); + this.state = 4625; + this.match(HiveSqlParser.KW_DO); + this.state = 4626; + this.triggerActionExpression(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5223; - this.alterTriggerStatement(); + this.state = 4628; + this.match(HiveSqlParser.KW_ALTER); + this.state = 4629; + this.match(HiveSqlParser.KW_TRIGGER); + this.state = 4630; + localContext._rpName = this.id_(); + this.state = 4631; + this.match(HiveSqlParser.DOT); + this.state = 4632; + localContext._triggerName = this.id_(); + this.state = 4649; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_WHEN: + { + this.state = 4633; + this.match(HiveSqlParser.KW_WHEN); + this.state = 4634; + this.triggerAtomExpression(); + this.state = 4635; + this.match(HiveSqlParser.KW_DO); + this.state = 4636; + this.triggerActionExpression(); + } + break; + case HiveSqlParser.KW_ADD: + case HiveSqlParser.KW_DROP: + { + this.state = 4642; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_ADD: + { + this.state = 4638; + this.match(HiveSqlParser.KW_ADD); + this.state = 4639; + this.match(HiveSqlParser.KW_TO); + } + break; + case HiveSqlParser.KW_DROP: + { + this.state = 4640; + this.match(HiveSqlParser.KW_DROP); + this.state = 4641; + this.match(HiveSqlParser.KW_FROM); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4647; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_POOL: + { + this.state = 4644; + this.match(HiveSqlParser.KW_POOL); + this.state = 4645; + localContext._poolName = this.poolPath(); + } + break; + case HiveSqlParser.KW_UNMANAGED: + { + this.state = 4646; + this.match(HiveSqlParser.KW_UNMANAGED); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5224; - this.dropTriggerStatement(); + this.state = 4651; + this.match(HiveSqlParser.KW_DROP); + this.state = 4652; + this.match(HiveSqlParser.KW_TRIGGER); + this.state = 4653; + localContext._rpName = this.id_(); + this.state = 4654; + this.match(HiveSqlParser.DOT); + this.state = 4655; + localContext._triggerName = this.id_(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5225; - this.createPoolStatement(); + this.state = 4657; + this.match(HiveSqlParser.KW_CREATE); + this.state = 4658; + this.match(HiveSqlParser.KW_POOL); + this.state = 4659; + localContext._rpName = this.id_(); + this.state = 4660; + this.match(HiveSqlParser.DOT); + this.state = 4661; + this.poolPath(); + this.state = 4662; + this.match(HiveSqlParser.KW_WITH); + this.state = 4663; + this.poolAssignList(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 5226; - this.alterPoolStatement(); + this.state = 4665; + this.match(HiveSqlParser.KW_ALTER); + this.state = 4666; + this.match(HiveSqlParser.KW_POOL); + this.state = 4667; + localContext._rpName = this.id_(); + this.state = 4668; + this.match(HiveSqlParser.DOT); + this.state = 4669; + this.poolPath(); + this.state = 4677; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_SET: + { + this.state = 4670; + this.match(HiveSqlParser.KW_SET); + this.state = 4671; + this.poolAssignList(); + } + break; + case HiveSqlParser.KW_UNSET: + { + this.state = 4672; + this.match(HiveSqlParser.KW_UNSET); + this.state = 4673; + this.match(HiveSqlParser.KW_SCHEDULING_POLICY); + } + break; + case HiveSqlParser.KW_ADD: + case HiveSqlParser.KW_DROP: + { + this.state = 4674; + _la = this.tokenStream.LA(1); + if(!(_la === 4 || _la === 101)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4675; + this.match(HiveSqlParser.KW_TRIGGER); + this.state = 4676; + localContext._triggerName = this.id_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 5227; - this.dropPoolStatement(); + this.state = 4679; + this.match(HiveSqlParser.KW_DROP); + this.state = 4680; + this.match(HiveSqlParser.KW_POOL); + this.state = 4681; + localContext._rpName = this.id_(); + this.state = 4682; + this.match(HiveSqlParser.DOT); + this.state = 4683; + this.poolPath(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 5228; - this.createMappingStatement(); + this.state = 4685; + _la = this.tokenStream.LA(1); + if(!(_la === 9 || _la === 58)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 4686; + localContext._mappingType = this.mappingTypes(); + this.state = 4687; + this.match(HiveSqlParser.KW_MAPPING); + this.state = 4688; + this.match(HiveSqlParser.StringLiteral); + this.state = 4689; + this.match(HiveSqlParser.KW_IN); + this.state = 4690; + localContext._rpName = this.id_(); + this.state = 4694; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case HiveSqlParser.KW_TO: + { + this.state = 4691; + this.match(HiveSqlParser.KW_TO); + this.state = 4692; + localContext._path = this.poolPath(); + } + break; + case HiveSqlParser.KW_UNMANAGED: + { + this.state = 4693; + this.match(HiveSqlParser.KW_UNMANAGED); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 4699; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { + case 1: + { + this.state = 4696; + this.match(HiveSqlParser.KW_WITH); + this.state = 4697; + this.match(HiveSqlParser.KW_ORDER); + this.state = 4698; + localContext._order = this.match(HiveSqlParser.Number); + } + break; + } } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 5229; - this.alterMappingStatement(); - } - break; - case 14: - this.enterOuterAlt(localContext, 14); - { - this.state = 5230; - this.dropMappingStatement(); + this.state = 4701; + this.match(HiveSqlParser.KW_DROP); + this.state = 4702; + localContext._mappingType = this.mappingTypes(); + this.state = 4703; + this.match(HiveSqlParser.KW_MAPPING); + this.state = 4704; + this.match(HiveSqlParser.StringLiteral); + this.state = 4705; + this.match(HiveSqlParser.KW_IN); + this.state = 4706; + localContext._rpName = this.id_(); } break; } @@ -27512,34 +24512,66 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } + public mappingTypes(): MappingTypesContext { + let localContext = new MappingTypesContext(this.context, this.state); + this.enterRule(localContext, 652, HiveSqlParser.RULE_mappingTypes); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 4710; + _la = this.tokenStream.LA(1); + if(!(_la === 14 || _la === 144 || _la === 369)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public rpAssign(): RpAssignContext { let localContext = new RpAssignContext(this.context, this.state); - this.enterRule(localContext, 956, HiveSqlParser.RULE_rpAssign); + this.enterRule(localContext, 654, HiveSqlParser.RULE_rpAssign); try { - this.state = 5240; + this.state = 4719; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_QUERY_PARALLELISM: this.enterOuterAlt(localContext, 1); { - this.state = 5233; + this.state = 4712; this.match(HiveSqlParser.KW_QUERY_PARALLELISM); - this.state = 5234; + this.state = 4713; this.match(HiveSqlParser.EQUAL); - this.state = 5235; + this.state = 4714; localContext._parallelism = this.match(HiveSqlParser.Number); } break; case HiveSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 2); { - this.state = 5236; + this.state = 4715; this.match(HiveSqlParser.KW_DEFAULT); - this.state = 5237; + this.state = 4716; this.match(HiveSqlParser.KW_POOL); - this.state = 5238; + this.state = 4717; this.match(HiveSqlParser.EQUAL); - this.state = 5239; + this.state = 4718; this.poolPath(); } break; @@ -27563,26 +24595,26 @@ export class HiveSqlParser extends SQLParserBase { } public rpAssignList(): RpAssignListContext { let localContext = new RpAssignListContext(this.context, this.state); - this.enterRule(localContext, 958, HiveSqlParser.RULE_rpAssignList); + this.enterRule(localContext, 656, HiveSqlParser.RULE_rpAssignList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5242; + this.state = 4721; this.rpAssign(); - this.state = 5247; + this.state = 4726; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 5243; + this.state = 4722; this.match(HiveSqlParser.COMMA); - this.state = 5244; + this.state = 4723; this.rpAssign(); } } - this.state = 5249; + this.state = 4728; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -27604,24 +24636,24 @@ export class HiveSqlParser extends SQLParserBase { } public rpUnassign(): RpUnassignContext { let localContext = new RpUnassignContext(this.context, this.state); - this.enterRule(localContext, 960, HiveSqlParser.RULE_rpUnassign); + this.enterRule(localContext, 658, HiveSqlParser.RULE_rpUnassign); try { - this.state = 5253; + this.state = 4732; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_QUERY_PARALLELISM: this.enterOuterAlt(localContext, 1); { - this.state = 5250; + this.state = 4729; this.match(HiveSqlParser.KW_QUERY_PARALLELISM); } break; case HiveSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 2); { - this.state = 5251; + this.state = 4730; this.match(HiveSqlParser.KW_DEFAULT); - this.state = 5252; + this.state = 4731; this.match(HiveSqlParser.KW_POOL); } break; @@ -27643,159 +24675,23 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public rpUnassignList(): RpUnassignListContext { - let localContext = new RpUnassignListContext(this.context, this.state); - this.enterRule(localContext, 962, HiveSqlParser.RULE_rpUnassignList); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5255; - this.rpUnassign(); - this.state = 5260; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 397) { - { - { - this.state = 5256; - this.match(HiveSqlParser.COMMA); - this.state = 5257; - this.rpUnassign(); - } - } - this.state = 5262; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createResourcePlanStatement(): CreateResourcePlanStatementContext { - let localContext = new CreateResourcePlanStatementContext(this.context, this.state); - this.enterRule(localContext, 964, HiveSqlParser.RULE_createResourcePlanStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5263; - this.match(HiveSqlParser.KW_CREATE); - this.state = 5264; - this.match(HiveSqlParser.KW_RESOURCE); - this.state = 5265; - this.match(HiveSqlParser.KW_PLAN); - this.state = 5267; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 5266; - this.ifNotExists(); - } - } - - this.state = 5278; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) { - case 1: - { - this.state = 5269; - localContext._name = this.id_(); - this.state = 5270; - this.match(HiveSqlParser.KW_LIKE); - this.state = 5271; - localContext._likeName = this.id_(); - } - break; - case 2: - { - this.state = 5273; - localContext._name = this.id_(); - this.state = 5276; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 630, this.context) ) { - case 1: - { - this.state = 5274; - this.match(HiveSqlParser.KW_WITH); - this.state = 5275; - this.rpAssignList(); - } - break; - } - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public withReplace(): WithReplaceContext { - let localContext = new WithReplaceContext(this.context, this.state); - this.enterRule(localContext, 966, HiveSqlParser.RULE_withReplace); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5280; - this.match(HiveSqlParser.KW_WITH); - this.state = 5281; - this.match(HiveSqlParser.KW_REPLACE); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public activate(): ActivateContext { let localContext = new ActivateContext(this.context, this.state); - this.enterRule(localContext, 968, HiveSqlParser.RULE_activate); + this.enterRule(localContext, 660, HiveSqlParser.RULE_activate); try { this.enterOuterAlt(localContext, 1); { - this.state = 5283; + this.state = 4734; this.match(HiveSqlParser.KW_ACTIVATE); - this.state = 5285; + this.state = 4737; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { case 1: { - this.state = 5284; - this.withReplace(); + this.state = 4735; + this.match(HiveSqlParser.KW_WITH); + this.state = 4736; + this.match(HiveSqlParser.KW_REPLACE); } break; } @@ -27817,12 +24713,12 @@ export class HiveSqlParser extends SQLParserBase { } public enable(): EnableContext { let localContext = new EnableContext(this.context, this.state); - this.enterRule(localContext, 970, HiveSqlParser.RULE_enable); + this.enterRule(localContext, 662, HiveSqlParser.RULE_enable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5287; + this.state = 4739; _la = this.tokenStream.LA(1); if(!(_la === 106 || _la === 107)) { this.errorHandler.recoverInline(this); @@ -27849,12 +24745,12 @@ export class HiveSqlParser extends SQLParserBase { } public disable(): DisableContext { let localContext = new DisableContext(this.context, this.state); - this.enterRule(localContext, 972, HiveSqlParser.RULE_disable); + this.enterRule(localContext, 664, HiveSqlParser.RULE_disable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5289; + this.state = 4741; _la = this.tokenStream.LA(1); if(!(_la === 94 || _la === 95)) { this.errorHandler.recoverInline(this); @@ -27879,38 +24775,14 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public unmanaged(): UnmanagedContext { - let localContext = new UnmanagedContext(this.context, this.state); - this.enterRule(localContext, 974, HiveSqlParser.RULE_unmanaged); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5291; - this.match(HiveSqlParser.KW_UNMANAGED); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public year(): YearContext { let localContext = new YearContext(this.context, this.state); - this.enterRule(localContext, 976, HiveSqlParser.RULE_year); + this.enterRule(localContext, 666, HiveSqlParser.RULE_year); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5293; + this.state = 4743; _la = this.tokenStream.LA(1); if(!(_la === 392 || _la === 393)) { this.errorHandler.recoverInline(this); @@ -27937,12 +24809,12 @@ export class HiveSqlParser extends SQLParserBase { } public month(): MonthContext { let localContext = new MonthContext(this.context, this.state); - this.enterRule(localContext, 978, HiveSqlParser.RULE_month); + this.enterRule(localContext, 668, HiveSqlParser.RULE_month); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5295; + this.state = 4745; _la = this.tokenStream.LA(1); if(!(_la === 208 || _la === 209)) { this.errorHandler.recoverInline(this); @@ -27969,12 +24841,12 @@ export class HiveSqlParser extends SQLParserBase { } public week(): WeekContext { let localContext = new WeekContext(this.context, this.state); - this.enterRule(localContext, 980, HiveSqlParser.RULE_week); + this.enterRule(localContext, 670, HiveSqlParser.RULE_week); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5297; + this.state = 4747; _la = this.tokenStream.LA(1); if(!(_la === 381 || _la === 382)) { this.errorHandler.recoverInline(this); @@ -28001,12 +24873,12 @@ export class HiveSqlParser extends SQLParserBase { } public day(): DayContext { let localContext = new DayContext(this.context, this.state); - this.enterRule(localContext, 982, HiveSqlParser.RULE_day); + this.enterRule(localContext, 672, HiveSqlParser.RULE_day); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5299; + this.state = 4749; _la = this.tokenStream.LA(1); if(!(_la === 73 || _la === 74)) { this.errorHandler.recoverInline(this); @@ -28033,12 +24905,12 @@ export class HiveSqlParser extends SQLParserBase { } public hour(): HourContext { let localContext = new HourContext(this.context, this.state); - this.enterRule(localContext, 984, HiveSqlParser.RULE_hour); + this.enterRule(localContext, 674, HiveSqlParser.RULE_hour); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5301; + this.state = 4751; _la = this.tokenStream.LA(1); if(!(_la === 148 || _la === 149)) { this.errorHandler.recoverInline(this); @@ -28065,12 +24937,12 @@ export class HiveSqlParser extends SQLParserBase { } public minute(): MinuteContext { let localContext = new MinuteContext(this.context, this.state); - this.enterRule(localContext, 986, HiveSqlParser.RULE_minute); + this.enterRule(localContext, 676, HiveSqlParser.RULE_minute); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5303; + this.state = 4753; _la = this.tokenStream.LA(1); if(!(_la === 206 || _la === 207)) { this.errorHandler.recoverInline(this); @@ -28097,12 +24969,12 @@ export class HiveSqlParser extends SQLParserBase { } public second(): SecondContext { let localContext = new SecondContext(this.context, this.state); - this.enterRule(localContext, 988, HiveSqlParser.RULE_second); + this.enterRule(localContext, 678, HiveSqlParser.RULE_second); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5305; + this.state = 4755; _la = this.tokenStream.LA(1); if(!(_la === 297 || _la === 298)) { this.errorHandler.recoverInline(this); @@ -28129,12 +25001,12 @@ export class HiveSqlParser extends SQLParserBase { } public decimal(): DecimalContext { let localContext = new DecimalContext(this.context, this.state); - this.enterRule(localContext, 990, HiveSqlParser.RULE_decimal); + this.enterRule(localContext, 680, HiveSqlParser.RULE_decimal); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5307; + this.state = 4757; _la = this.tokenStream.LA(1); if(!(((((_la - 80)) & ~0x1F) === 0 && ((1 << (_la - 80)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -28159,416 +25031,32 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public alterResourcePlanStatement(): AlterResourcePlanStatementContext { - let localContext = new AlterResourcePlanStatementContext(this.context, this.state); - this.enterRule(localContext, 992, HiveSqlParser.RULE_alterResourcePlanStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5309; - this.match(HiveSqlParser.KW_ALTER); - this.state = 5310; - this.match(HiveSqlParser.KW_RESOURCE); - this.state = 5311; - this.match(HiveSqlParser.KW_PLAN); - this.state = 5312; - localContext._name = this.id_(); - this.state = 5330; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_VALIDATE: - { - this.state = 5313; - this.match(HiveSqlParser.KW_VALIDATE); - } - break; - case HiveSqlParser.KW_DISABLE: - case HiveSqlParser.KW_DISABLED: - { - this.state = 5314; - this.disable(); - } - break; - case HiveSqlParser.KW_SET: - { - this.state = 5315; - this.match(HiveSqlParser.KW_SET); - this.state = 5316; - this.rpAssignList(); - } - break; - case HiveSqlParser.KW_UNSET: - { - this.state = 5317; - this.match(HiveSqlParser.KW_UNSET); - this.state = 5318; - this.rpUnassignList(); - } - break; - case HiveSqlParser.KW_RENAME: - { - this.state = 5319; - this.match(HiveSqlParser.KW_RENAME); - this.state = 5320; - this.match(HiveSqlParser.KW_TO); - this.state = 5321; - localContext._newName = this.id_(); - } - break; - case HiveSqlParser.KW_ACTIVATE: - { - this.state = 5322; - this.activate(); - this.state = 5324; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) { - case 1: - { - this.state = 5323; - this.enable(); - } - break; - } - } - break; - case HiveSqlParser.KW_ENABLE: - case HiveSqlParser.KW_ENABLED: - { - this.state = 5326; - this.enable(); - this.state = 5328; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 2) { - { - this.state = 5327; - this.activate(); - } - } - - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public globalWmStatement(): GlobalWmStatementContext { - let localContext = new GlobalWmStatementContext(this.context, this.state); - this.enterRule(localContext, 994, HiveSqlParser.RULE_globalWmStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5334; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ENABLE: - case HiveSqlParser.KW_ENABLED: - { - this.state = 5332; - this.enable(); - } - break; - case HiveSqlParser.KW_DISABLE: - case HiveSqlParser.KW_DISABLED: - { - this.state = 5333; - this.disable(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 5336; - this.match(HiveSqlParser.KW_WORKLOAD); - this.state = 5337; - this.match(HiveSqlParser.KW_MANAGEMENT); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext { - let localContext = new ReplaceResourcePlanStatementContext(this.context, this.state); - this.enterRule(localContext, 996, HiveSqlParser.RULE_replaceResourcePlanStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5339; - this.match(HiveSqlParser.KW_REPLACE); - this.state = 5351; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ACTIVE: - { - this.state = 5340; - this.match(HiveSqlParser.KW_ACTIVE); - this.state = 5341; - this.match(HiveSqlParser.KW_RESOURCE); - this.state = 5342; - this.match(HiveSqlParser.KW_PLAN); - this.state = 5343; - this.match(HiveSqlParser.KW_WITH); - this.state = 5344; - localContext._src = this.id_(); - } - break; - case HiveSqlParser.KW_RESOURCE: - { - this.state = 5345; - this.match(HiveSqlParser.KW_RESOURCE); - this.state = 5346; - this.match(HiveSqlParser.KW_PLAN); - this.state = 5347; - localContext._dest = this.id_(); - this.state = 5348; - this.match(HiveSqlParser.KW_WITH); - this.state = 5349; - localContext._src = this.id_(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dropResourcePlanStatement(): DropResourcePlanStatementContext { - let localContext = new DropResourcePlanStatementContext(this.context, this.state); - this.enterRule(localContext, 998, HiveSqlParser.RULE_dropResourcePlanStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5353; - this.match(HiveSqlParser.KW_DROP); - this.state = 5354; - this.match(HiveSqlParser.KW_RESOURCE); - this.state = 5355; - this.match(HiveSqlParser.KW_PLAN); - this.state = 5357; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 151) { - { - this.state = 5356; - this.ifExists(); - } - } - - this.state = 5359; - localContext._name = this.id_(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public poolPath(): PoolPathContext { let localContext = new PoolPathContext(this.context, this.state); - this.enterRule(localContext, 1000, HiveSqlParser.RULE_poolPath); - let _la: number; + this.enterRule(localContext, 682, HiveSqlParser.RULE_poolPath); try { + let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5361; + this.state = 4759; this.id_(); - this.state = 5366; + this.state = 4764; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 395) { - { - { - this.state = 5362; - this.match(HiveSqlParser.DOT); - this.state = 5363; - this.id_(); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 617, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 4760; + this.match(HiveSqlParser.DOT); + this.state = 4761; + this.id_(); + } + } } - } - this.state = 5368; + this.state = 4766; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerExpression(): TriggerExpressionContext { - let localContext = new TriggerExpressionContext(this.context, this.state); - this.enterRule(localContext, 1002, HiveSqlParser.RULE_triggerExpression); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5369; - this.triggerAtomExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerExpressionStandalone(): TriggerExpressionStandaloneContext { - let localContext = new TriggerExpressionStandaloneContext(this.context, this.state); - this.enterRule(localContext, 1004, HiveSqlParser.RULE_triggerExpressionStandalone); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5371; - this.triggerExpression(); - this.state = 5372; - this.match(HiveSqlParser.EOF); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerOrExpression(): TriggerOrExpressionContext { - let localContext = new TriggerOrExpressionContext(this.context, this.state); - this.enterRule(localContext, 1006, HiveSqlParser.RULE_triggerOrExpression); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5374; - this.triggerAndExpression(); - this.state = 5379; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 228) { - { - { - this.state = 5375; - this.match(HiveSqlParser.KW_OR); - this.state = 5376; - this.triggerAndExpression(); - } - } - this.state = 5381; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerAndExpression(): TriggerAndExpressionContext { - let localContext = new TriggerAndExpressionContext(this.context, this.state); - this.enterRule(localContext, 1008, HiveSqlParser.RULE_triggerAndExpression); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5382; - this.triggerAtomExpression(); - this.state = 5387; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 11) { - { - { - this.state = 5383; - this.match(HiveSqlParser.KW_AND); - this.state = 5384; - this.triggerAtomExpression(); - } - } - this.state = 5389; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 617, this.context); } } } @@ -28588,40 +25076,16 @@ export class HiveSqlParser extends SQLParserBase { } public triggerAtomExpression(): TriggerAtomExpressionContext { let localContext = new TriggerAtomExpressionContext(this.context, this.state); - this.enterRule(localContext, 1010, HiveSqlParser.RULE_triggerAtomExpression); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5390; - this.id_(); - this.state = 5391; - this.comparisionOperator(); - this.state = 5392; - this.triggerLiteral(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public triggerLiteral(): TriggerLiteralContext { - let localContext = new TriggerLiteralContext(this.context, this.state); - this.enterRule(localContext, 1012, HiveSqlParser.RULE_triggerLiteral); + this.enterRule(localContext, 684, HiveSqlParser.RULE_triggerAtomExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5394; + this.state = 4767; + this.id_(); + this.state = 4768; + this.match(HiveSqlParser.GREATERTHAN); + this.state = 4769; _la = this.tokenStream.LA(1); if(!(_la === 426 || _la === 431)) { this.errorHandler.recoverInline(this); @@ -28646,52 +25110,28 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public comparisionOperator(): ComparisionOperatorContext { - let localContext = new ComparisionOperatorContext(this.context, this.state); - this.enterRule(localContext, 1014, HiveSqlParser.RULE_comparisionOperator); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5396; - this.match(HiveSqlParser.GREATERTHAN); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public triggerActionExpression(): TriggerActionExpressionContext { let localContext = new TriggerActionExpressionContext(this.context, this.state); - this.enterRule(localContext, 1016, HiveSqlParser.RULE_triggerActionExpression); + this.enterRule(localContext, 686, HiveSqlParser.RULE_triggerActionExpression); try { - this.state = 5402; + this.state = 4775; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_KILL: this.enterOuterAlt(localContext, 1); { - this.state = 5398; + this.state = 4771; this.match(HiveSqlParser.KW_KILL); } break; case HiveSqlParser.KW_MOVE: this.enterOuterAlt(localContext, 2); { - this.state = 5399; + this.state = 4772; this.match(HiveSqlParser.KW_MOVE); - this.state = 5400; + this.state = 4773; this.match(HiveSqlParser.KW_TO); - this.state = 5401; + this.state = 4774; this.poolPath(); } break; @@ -28713,247 +25153,52 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public triggerActionExpressionStandalone(): TriggerActionExpressionStandaloneContext { - let localContext = new TriggerActionExpressionStandaloneContext(this.context, this.state); - this.enterRule(localContext, 1018, HiveSqlParser.RULE_triggerActionExpressionStandalone); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5404; - this.triggerActionExpression(); - this.state = 5405; - this.match(HiveSqlParser.EOF); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createTriggerStatement(): CreateTriggerStatementContext { - let localContext = new CreateTriggerStatementContext(this.context, this.state); - this.enterRule(localContext, 1020, HiveSqlParser.RULE_createTriggerStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5407; - this.match(HiveSqlParser.KW_CREATE); - this.state = 5408; - this.match(HiveSqlParser.KW_TRIGGER); - this.state = 5409; - localContext._rpName = this.id_(); - this.state = 5410; - this.match(HiveSqlParser.DOT); - this.state = 5411; - localContext._triggerName = this.id_(); - this.state = 5412; - this.match(HiveSqlParser.KW_WHEN); - this.state = 5413; - this.triggerExpression(); - this.state = 5414; - this.match(HiveSqlParser.KW_DO); - this.state = 5415; - this.triggerActionExpression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterTriggerStatement(): AlterTriggerStatementContext { - let localContext = new AlterTriggerStatementContext(this.context, this.state); - this.enterRule(localContext, 1022, HiveSqlParser.RULE_alterTriggerStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5417; - this.match(HiveSqlParser.KW_ALTER); - this.state = 5418; - this.match(HiveSqlParser.KW_TRIGGER); - this.state = 5419; - localContext._rpName = this.id_(); - this.state = 5420; - this.match(HiveSqlParser.DOT); - this.state = 5421; - localContext._triggerName = this.id_(); - this.state = 5438; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_WHEN: - { - this.state = 5422; - this.match(HiveSqlParser.KW_WHEN); - this.state = 5423; - this.triggerExpression(); - this.state = 5424; - this.match(HiveSqlParser.KW_DO); - this.state = 5425; - this.triggerActionExpression(); - } - break; - case HiveSqlParser.KW_ADD: - case HiveSqlParser.KW_DROP: - { - this.state = 5431; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_ADD: - { - this.state = 5427; - this.match(HiveSqlParser.KW_ADD); - this.state = 5428; - this.match(HiveSqlParser.KW_TO); - } - break; - case HiveSqlParser.KW_DROP: - { - this.state = 5429; - this.match(HiveSqlParser.KW_DROP); - this.state = 5430; - this.match(HiveSqlParser.KW_FROM); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 5436; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_POOL: - { - this.state = 5433; - this.match(HiveSqlParser.KW_POOL); - this.state = 5434; - localContext._poolName = this.poolPath(); - } - break; - case HiveSqlParser.KW_UNMANAGED: - { - this.state = 5435; - this.match(HiveSqlParser.KW_UNMANAGED); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dropTriggerStatement(): DropTriggerStatementContext { - let localContext = new DropTriggerStatementContext(this.context, this.state); - this.enterRule(localContext, 1024, HiveSqlParser.RULE_dropTriggerStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5440; - this.match(HiveSqlParser.KW_DROP); - this.state = 5441; - this.match(HiveSqlParser.KW_TRIGGER); - this.state = 5442; - localContext._rpName = this.id_(); - this.state = 5443; - this.match(HiveSqlParser.DOT); - this.state = 5444; - localContext._triggerName = this.id_(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public poolAssign(): PoolAssignContext { let localContext = new PoolAssignContext(this.context, this.state); - this.enterRule(localContext, 1026, HiveSqlParser.RULE_poolAssign); + this.enterRule(localContext, 688, HiveSqlParser.RULE_poolAssign); try { this.enterOuterAlt(localContext, 1); { - this.state = 5458; + this.state = 4789; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case HiveSqlParser.KW_ALLOC_FRACTION: { - this.state = 5446; + this.state = 4777; this.match(HiveSqlParser.KW_ALLOC_FRACTION); - this.state = 5447; + this.state = 4778; this.match(HiveSqlParser.EQUAL); - this.state = 5448; + this.state = 4779; localContext._allocFraction = this.match(HiveSqlParser.Number); } break; case HiveSqlParser.KW_QUERY_PARALLELISM: { - this.state = 5449; + this.state = 4780; this.match(HiveSqlParser.KW_QUERY_PARALLELISM); - this.state = 5450; + this.state = 4781; this.match(HiveSqlParser.EQUAL); - this.state = 5451; + this.state = 4782; localContext._parallelism = this.match(HiveSqlParser.Number); } break; case HiveSqlParser.KW_SCHEDULING_POLICY: { - this.state = 5452; + this.state = 4783; this.match(HiveSqlParser.KW_SCHEDULING_POLICY); - this.state = 5453; + this.state = 4784; this.match(HiveSqlParser.EQUAL); - this.state = 5454; + this.state = 4785; localContext._policy = this.match(HiveSqlParser.StringLiteral); } break; case HiveSqlParser.KW_PATH: { - this.state = 5455; + this.state = 4786; this.match(HiveSqlParser.KW_PATH); - this.state = 5456; + this.state = 4787; this.match(HiveSqlParser.EQUAL); - this.state = 5457; + this.state = 4788; localContext._path = this.poolPath(); } break; @@ -28978,26 +25223,26 @@ export class HiveSqlParser extends SQLParserBase { } public poolAssignList(): PoolAssignListContext { let localContext = new PoolAssignListContext(this.context, this.state); - this.enterRule(localContext, 1028, HiveSqlParser.RULE_poolAssignList); + this.enterRule(localContext, 690, HiveSqlParser.RULE_poolAssignList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5460; + this.state = 4791; this.poolAssign(); - this.state = 5465; + this.state = 4796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 397) { { { - this.state = 5461; + this.state = 4792; this.match(HiveSqlParser.COMMA); - this.state = 5462; + this.state = 4793; this.poolAssign(); } } - this.state = 5467; + this.state = 4798; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29017,348 +25262,10 @@ export class HiveSqlParser extends SQLParserBase { } return localContext; } - public createPoolStatement(): CreatePoolStatementContext { - let localContext = new CreatePoolStatementContext(this.context, this.state); - this.enterRule(localContext, 1030, HiveSqlParser.RULE_createPoolStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5468; - this.match(HiveSqlParser.KW_CREATE); - this.state = 5469; - this.match(HiveSqlParser.KW_POOL); - this.state = 5470; - localContext._rpName = this.id_(); - this.state = 5471; - this.match(HiveSqlParser.DOT); - this.state = 5472; - this.poolPath(); - this.state = 5473; - this.match(HiveSqlParser.KW_WITH); - this.state = 5474; - this.poolAssignList(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterPoolStatement(): AlterPoolStatementContext { - let localContext = new AlterPoolStatementContext(this.context, this.state); - this.enterRule(localContext, 1032, HiveSqlParser.RULE_alterPoolStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5476; - this.match(HiveSqlParser.KW_ALTER); - this.state = 5477; - this.match(HiveSqlParser.KW_POOL); - this.state = 5478; - localContext._rpName = this.id_(); - this.state = 5479; - this.match(HiveSqlParser.DOT); - this.state = 5480; - this.poolPath(); - this.state = 5488; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_SET: - { - this.state = 5481; - this.match(HiveSqlParser.KW_SET); - this.state = 5482; - this.poolAssignList(); - } - break; - case HiveSqlParser.KW_UNSET: - { - this.state = 5483; - this.match(HiveSqlParser.KW_UNSET); - this.state = 5484; - this.match(HiveSqlParser.KW_SCHEDULING_POLICY); - } - break; - case HiveSqlParser.KW_ADD: - case HiveSqlParser.KW_DROP: - { - this.state = 5485; - _la = this.tokenStream.LA(1); - if(!(_la === 4 || _la === 101)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5486; - this.match(HiveSqlParser.KW_TRIGGER); - this.state = 5487; - localContext._triggerName = this.id_(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dropPoolStatement(): DropPoolStatementContext { - let localContext = new DropPoolStatementContext(this.context, this.state); - this.enterRule(localContext, 1034, HiveSqlParser.RULE_dropPoolStatement); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5490; - this.match(HiveSqlParser.KW_DROP); - this.state = 5491; - this.match(HiveSqlParser.KW_POOL); - this.state = 5492; - localContext._rpName = this.id_(); - this.state = 5493; - this.match(HiveSqlParser.DOT); - this.state = 5494; - this.poolPath(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public createMappingStatement(): CreateMappingStatementContext { - let localContext = new CreateMappingStatementContext(this.context, this.state); - this.enterRule(localContext, 1036, HiveSqlParser.RULE_createMappingStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5496; - this.match(HiveSqlParser.KW_CREATE); - this.state = 5497; - localContext._mappingType = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 14 || _la === 144 || _la === 369)) { - localContext._mappingType = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5498; - this.match(HiveSqlParser.KW_MAPPING); - this.state = 5499; - localContext._name = this.match(HiveSqlParser.StringLiteral); - this.state = 5500; - this.match(HiveSqlParser.KW_IN); - this.state = 5501; - localContext._rpName = this.id_(); - this.state = 5505; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_TO: - { - this.state = 5502; - this.match(HiveSqlParser.KW_TO); - this.state = 5503; - localContext._path = this.poolPath(); - } - break; - case HiveSqlParser.KW_UNMANAGED: - { - this.state = 5504; - this.unmanaged(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 5510; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) { - case 1: - { - this.state = 5507; - this.match(HiveSqlParser.KW_WITH); - this.state = 5508; - this.match(HiveSqlParser.KW_ORDER); - this.state = 5509; - localContext._order = this.match(HiveSqlParser.Number); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public alterMappingStatement(): AlterMappingStatementContext { - let localContext = new AlterMappingStatementContext(this.context, this.state); - this.enterRule(localContext, 1038, HiveSqlParser.RULE_alterMappingStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5512; - this.match(HiveSqlParser.KW_ALTER); - this.state = 5513; - localContext._mappingType = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 14 || _la === 144 || _la === 369)) { - localContext._mappingType = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5514; - this.match(HiveSqlParser.KW_MAPPING); - this.state = 5515; - localContext._name = this.match(HiveSqlParser.StringLiteral); - this.state = 5516; - this.match(HiveSqlParser.KW_IN); - this.state = 5517; - localContext._rpName = this.id_(); - this.state = 5521; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case HiveSqlParser.KW_TO: - { - this.state = 5518; - this.match(HiveSqlParser.KW_TO); - this.state = 5519; - localContext._path = this.poolPath(); - } - break; - case HiveSqlParser.KW_UNMANAGED: - { - this.state = 5520; - this.unmanaged(); - } - break; - default: - throw new antlr.NoViableAltException(this); - } - this.state = 5526; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) { - case 1: - { - this.state = 5523; - this.match(HiveSqlParser.KW_WITH); - this.state = 5524; - this.match(HiveSqlParser.KW_ORDER); - this.state = 5525; - localContext._order = this.match(HiveSqlParser.Number); - } - break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public dropMappingStatement(): DropMappingStatementContext { - let localContext = new DropMappingStatementContext(this.context, this.state); - this.enterRule(localContext, 1040, HiveSqlParser.RULE_dropMappingStatement); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 5528; - this.match(HiveSqlParser.KW_DROP); - this.state = 5529; - localContext._mappingType = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 14 || _la === 144 || _la === 369)) { - localContext._mappingType = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 5530; - this.match(HiveSqlParser.KW_MAPPING); - this.state = 5531; - localContext._name = this.match(HiveSqlParser.StringLiteral); - this.state = 5532; - this.match(HiveSqlParser.KW_IN); - this.state = 5533; - localContext._rpName = this.id_(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 142: + case 128: return this.columnName_sempred(localContext as ColumnNameContext, predIndex); } return true; @@ -29372,7 +25279,7 @@ export class HiveSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,438,5536,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, + 4,1,438,4800,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, @@ -29432,2330 +25339,2075 @@ export class HiveSqlParser extends SQLParserBase { 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,1,0,5,0,1044, - 8,0,10,0,12,0,1047,9,0,1,0,1,0,1,1,1,1,3,1,1053,8,1,1,1,3,1,1056, - 8,1,1,2,1,2,5,2,1060,8,2,10,2,12,2,1063,9,2,1,2,1,2,1,2,3,2,1068, - 8,2,1,3,1,3,1,3,1,3,1,3,3,3,1075,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3, - 1,3,3,3,1085,8,3,1,3,3,3,1088,8,3,1,3,1,3,3,3,1092,8,3,1,4,1,4,1, - 5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3, - 6,1112,8,6,1,7,1,7,1,7,3,7,1117,8,7,1,7,1,7,1,7,3,7,1122,8,7,1,7, - 1,7,1,7,1,7,3,7,1128,8,7,1,8,1,8,1,8,1,9,1,9,3,9,1135,8,9,1,9,1, - 9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,3,10,1148,8,10,1,11, - 1,11,3,11,1152,8,11,1,11,1,11,3,11,1156,8,11,1,11,1,11,1,11,3,11, - 1161,8,11,1,12,1,12,1,12,1,12,1,12,3,12,1168,8,12,1,12,1,12,3,12, - 1172,8,12,1,13,1,13,1,13,3,13,1177,8,13,1,14,1,14,1,14,1,14,1,14, - 3,14,1184,8,14,1,14,1,14,3,14,1188,8,14,1,15,1,15,1,15,1,15,1,16, - 1,16,1,16,5,16,1197,8,16,10,16,12,16,1200,9,16,1,17,1,17,1,17,3, - 17,1205,8,17,1,18,1,18,1,18,1,18,1,18,3,18,1212,8,18,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1, - 19,1,19,1,19,1,19,1,19,1,19,3,19,1261,8,19,1,20,1,20,1,20,1,21,1, - 21,1,22,1,22,1,22,1,22,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1, - 26,1,26,1,26,1,26,1,27,1,27,1,27,1,28,1,28,3,28,1289,8,28,1,28,1, - 28,3,28,1293,8,28,1,28,1,28,3,28,1297,8,28,1,28,3,28,1300,8,28,1, - 28,3,28,1303,8,28,1,28,1,28,1,28,3,28,1308,8,28,1,28,1,28,1,28,1, - 28,3,28,1314,8,28,1,28,1,28,3,28,1318,8,28,1,28,1,28,1,28,1,28,3, - 28,1324,8,28,3,28,1326,8,28,1,29,1,29,1,29,1,30,1,30,1,30,1,31,1, - 31,1,31,1,31,1,32,1,32,1,32,5,32,1341,8,32,10,32,12,32,1344,9,32, - 1,33,1,33,1,33,1,34,1,34,1,34,1,35,1,35,1,35,3,35,1355,8,35,1,35, - 1,35,3,35,1359,8,35,1,36,1,36,1,36,1,37,1,37,3,37,1366,8,37,1,37, - 1,37,1,37,1,37,1,37,1,37,3,37,1374,8,37,1,37,3,37,1377,8,37,1,38, - 1,38,1,38,3,38,1382,8,38,1,38,1,38,3,38,1386,8,38,1,38,3,38,1389, - 8,38,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,3,40,1399,8,40,1,40, - 1,40,1,40,1,40,1,40,1,40,3,40,1407,8,40,5,40,1409,8,40,10,40,12, - 40,1412,9,40,3,40,1414,8,40,1,41,1,41,3,41,1418,8,41,1,42,1,42,3, - 42,1422,8,42,1,42,3,42,1425,8,42,1,43,1,43,1,43,3,43,1430,8,43,1, - 43,1,43,1,43,1,43,3,43,1436,8,43,1,43,1,43,1,43,3,43,1441,8,43,1, - 43,1,43,1,43,3,43,1446,8,43,1,43,1,43,3,43,1450,8,43,1,44,1,44,1, - 44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1461,8,44,3,44,1463,8,44,1, - 44,1,44,3,44,1467,8,44,1,45,1,45,1,46,1,46,1,47,1,47,1,47,1,47,3, - 47,1477,8,47,1,47,1,47,3,47,1481,8,47,1,47,1,47,1,47,1,47,3,47,1487, - 8,47,1,47,3,47,1490,8,47,1,47,1,47,1,47,1,47,1,47,3,47,1497,8,47, - 1,47,1,47,1,47,3,47,1502,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47, - 1510,8,47,1,47,1,47,1,47,3,47,1515,8,47,1,47,1,47,3,47,1519,8,47, - 1,47,1,47,1,47,1,47,1,47,1,47,3,47,1527,8,47,1,47,1,47,1,47,3,47, - 1532,8,47,1,47,1,47,1,47,1,47,3,47,1538,8,47,1,47,1,47,1,47,1,47, - 3,47,1544,8,47,1,47,3,47,1547,8,47,1,47,3,47,1550,8,47,1,47,3,47, - 1553,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1562,8,47,1,47, - 1,47,1,47,1,47,1,47,1,47,3,47,1570,8,47,1,47,1,47,1,47,3,47,1575, - 8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1583,8,47,1,47,1,47,1,47, - 1,47,1,47,3,47,1590,8,47,1,47,3,47,1593,8,47,1,47,3,47,1596,8,47, - 3,47,1598,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1606,8,47,1,47, - 3,47,1609,8,47,1,47,3,47,1612,8,47,1,47,3,47,1615,8,47,1,47,3,47, - 1618,8,47,1,47,3,47,1621,8,47,1,47,3,47,1624,8,47,1,47,3,47,1627, - 8,47,1,47,3,47,1630,8,47,1,47,3,47,1633,8,47,1,47,3,47,1636,8,47, - 3,47,1638,8,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47, - 3,47,1650,8,47,1,47,1,47,1,47,1,47,3,47,1656,8,47,1,47,1,47,1,47, - 1,47,1,47,1,47,3,47,1664,8,47,3,47,1666,8,47,1,48,1,48,1,48,1,48, - 1,48,1,48,1,48,1,48,3,48,1676,8,48,1,49,1,49,1,49,1,49,3,49,1682, - 8,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52, - 1,52,3,52,1697,8,52,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,3,56,1714,8,56,1,56,1,56,1,56,3,56, - 1719,8,56,1,57,1,57,3,57,1723,8,57,1,57,1,57,3,57,1727,8,57,1,57, - 1,57,1,57,1,58,1,58,3,58,1734,8,58,1,58,1,58,1,58,5,58,1739,8,58, - 10,58,12,58,1742,9,58,1,58,1,58,1,58,3,58,1747,8,58,1,59,1,59,3, - 59,1751,8,59,1,59,3,59,1754,8,59,1,59,1,59,1,59,5,59,1759,8,59,10, - 59,12,59,1762,9,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,63,1,63,1,63,1,63,1,63,3,63,1784, - 8,63,1,64,1,64,1,64,3,64,1789,8,64,1,64,1,64,3,64,1793,8,64,1,65, - 1,65,1,65,1,65,1,66,1,66,3,66,1801,8,66,1,67,1,67,1,67,1,68,1,68, - 1,68,1,68,3,68,1810,8,68,1,68,1,68,3,68,1814,8,68,1,68,1,68,1,68, - 1,68,3,68,1820,8,68,1,69,1,69,1,69,1,69,3,69,1826,8,69,1,69,1,69, - 1,69,1,69,1,69,3,69,1833,8,69,1,69,3,69,1836,8,69,1,69,1,69,1,69, - 1,69,3,69,1842,8,69,1,70,1,70,1,70,5,70,1847,8,70,10,70,12,70,1850, - 9,70,1,71,1,71,1,71,1,71,1,71,3,71,1857,8,71,1,72,1,72,1,73,1,73, - 1,73,5,73,1864,8,73,10,73,12,73,1867,9,73,1,74,1,74,1,74,1,74,1, - 74,1,74,3,74,1875,8,74,1,75,1,75,1,75,1,75,1,75,3,75,1882,8,75,1, - 76,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,79,1, - 79,1,79,1,79,1,80,1,80,3,80,1902,8,80,1,80,1,80,1,80,1,80,1,80,3, - 80,1909,8,80,3,80,1911,8,80,1,81,1,81,1,81,5,81,1916,8,81,10,81, - 12,81,1919,9,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,3,84,1928,8,84, - 1,84,1,84,1,84,1,84,1,84,1,84,3,84,1936,8,84,1,85,1,85,3,85,1940, - 8,85,1,85,1,85,3,85,1944,8,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87, - 1,87,1,87,1,87,1,87,3,87,1957,8,87,1,87,1,87,1,87,1,88,1,88,1,88, - 1,88,3,88,1966,8,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89, - 1,89,1,89,1,89,1,89,1,89,3,89,1982,8,89,1,89,1,89,3,89,1986,8,89, - 1,89,1,89,1,89,3,89,1991,8,89,1,89,1,89,1,89,3,89,1996,8,89,1,89, - 3,89,1999,8,89,1,89,3,89,2002,8,89,1,89,1,89,3,89,2006,8,89,1,89, - 3,89,2009,8,89,1,89,3,89,2012,8,89,1,90,1,90,1,90,3,90,2017,8,90, - 1,90,1,90,1,90,1,90,1,91,1,91,3,91,2025,8,91,1,91,1,91,3,91,2029, - 8,91,1,91,1,91,1,91,1,91,1,91,3,91,2036,8,91,1,91,3,91,2039,8,91, - 1,91,3,91,2042,8,91,1,91,3,91,2045,8,91,1,91,1,91,1,91,1,92,1,92, - 1,92,1,92,1,92,1,92,1,92,3,92,2057,8,92,1,92,1,92,1,93,1,93,3,93, - 2063,8,93,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,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,98,1,98,1,98, - 3,98,2089,8,98,1,98,1,98,1,99,1,99,1,99,1,99,3,99,2097,8,99,1,99, - 1,99,3,99,2101,8,99,1,99,3,99,2104,8,99,1,99,3,99,2107,8,99,1,99, - 3,99,2110,8,99,1,99,3,99,2113,8,99,1,99,3,99,2116,8,99,1,99,3,99, - 2119,8,99,1,99,3,99,2122,8,99,1,99,1,99,1,99,1,100,1,100,1,100,1, - 100,3,100,2131,8,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1, - 101,3,101,2141,8,101,1,101,3,101,2144,8,101,1,101,1,101,1,102,1, - 102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,104, - 1,104,1,104,1,104,1,104,3,104,2164,8,104,1,105,1,105,1,105,1,105, - 3,105,2170,8,105,1,105,1,105,1,105,1,105,3,105,2176,8,105,1,105, - 3,105,2179,8,105,3,105,2181,8,105,1,106,1,106,1,106,1,106,1,107, - 3,107,2188,8,107,1,107,1,107,1,107,1,108,1,108,3,108,2195,8,108, - 1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,111,1,111, - 3,111,2208,8,111,1,111,1,111,1,111,3,111,2213,8,111,1,111,1,111, - 1,112,1,112,1,112,5,112,2220,8,112,10,112,12,112,2223,9,112,1,113, - 1,113,1,113,5,113,2228,8,113,10,113,12,113,2231,9,113,1,114,1,114, - 1,114,5,114,2236,8,114,10,114,12,114,2239,9,114,1,115,1,115,1,116, - 1,116,1,116,1,116,1,116,3,116,2248,8,116,1,116,1,116,1,116,1,116, - 1,116,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2261,8,116,1,117, - 1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,3,117, - 2274,8,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118, - 1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119, - 2295,8,119,1,120,1,120,3,120,2299,8,120,1,121,1,121,1,121,1,122, - 1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,3,123,2314, - 8,123,1,124,1,124,1,124,1,124,3,124,2320,8,124,1,124,3,124,2323, - 8,124,1,124,3,124,2326,8,124,1,124,3,124,2329,8,124,1,124,3,124, - 2332,8,124,1,125,1,125,3,125,2336,8,125,1,126,1,126,1,126,1,127, - 1,127,1,127,1,127,1,128,1,128,1,128,5,128,2348,8,128,10,128,12,128, - 2351,9,128,1,128,1,128,1,128,5,128,2356,8,128,10,128,12,128,2359, - 9,128,3,128,2361,8,128,1,129,1,129,1,129,1,129,1,130,1,130,1,131, - 1,131,1,131,1,131,1,131,1,131,1,131,3,131,2376,8,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,134, - 1,134,1,134,1,134,1,134,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,3,136,2410,8,136, - 1,136,1,136,1,136,1,136,1,136,1,136,3,136,2418,8,136,1,136,1,136, - 1,136,3,136,2423,8,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136, - 2431,8,136,1,136,1,136,1,136,3,136,2436,8,136,1,136,1,136,1,136, - 3,136,2441,8,136,1,137,1,137,1,137,1,138,1,138,1,138,5,138,2449, - 8,138,10,138,12,138,2452,9,138,1,139,1,139,1,139,5,139,2457,8,139, - 10,139,12,139,2460,9,139,1,140,1,140,1,140,5,140,2465,8,140,10,140, - 12,140,2468,9,140,1,141,1,141,1,141,5,141,2473,8,141,10,141,12,141, - 2476,9,141,1,142,1,142,1,142,5,142,2481,8,142,10,142,12,142,2484, - 9,142,1,142,3,142,2487,8,142,1,143,1,143,1,144,1,144,1,144,1,144, - 1,144,1,144,3,144,2497,8,144,5,144,2499,8,144,10,144,12,144,2502, - 9,144,1,145,1,145,1,145,5,145,2507,8,145,10,145,12,145,2510,9,145, - 1,146,1,146,1,146,1,146,1,147,1,147,3,147,2518,8,147,1,147,3,147, - 2521,8,147,1,148,1,148,3,148,2525,8,148,1,149,1,149,1,150,1,150, - 1,150,3,150,2532,8,150,1,151,1,151,1,152,1,152,3,152,2538,8,152, - 1,152,1,152,3,152,2542,8,152,1,153,1,153,1,153,1,153,3,153,2548, - 8,153,1,154,1,154,3,154,2552,8,154,1,155,1,155,1,155,1,156,1,156, - 1,156,1,156,1,156,1,157,1,157,3,157,2564,8,157,1,157,1,157,1,157, - 1,157,1,157,1,157,1,157,3,157,2573,8,157,1,158,1,158,1,158,1,158, - 1,158,1,158,1,158,1,158,1,158,3,158,2584,8,158,1,159,1,159,3,159, - 2588,8,159,1,160,1,160,1,160,5,160,2593,8,160,10,160,12,160,2596, - 9,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,5,162,2605,8,162, - 10,162,12,162,2608,9,162,1,163,1,163,1,164,1,164,3,164,2614,8,164, - 1,165,1,165,1,166,1,166,1,166,1,167,1,167,3,167,2623,8,167,1,167, - 3,167,2626,8,167,1,168,1,168,1,168,5,168,2631,8,168,10,168,12,168, - 2634,9,168,1,169,1,169,1,169,3,169,2639,8,169,1,170,1,170,1,171, - 1,171,3,171,2645,8,171,1,171,3,171,2648,8,171,1,171,3,171,2651,8, - 171,1,172,1,172,1,172,1,172,3,172,2657,8,172,1,173,1,173,3,173,2661, - 8,173,1,174,1,174,3,174,2665,8,174,1,175,1,175,1,175,3,175,2670, - 8,175,1,175,1,175,3,175,2674,8,175,1,176,1,176,3,176,2678,8,176, - 1,177,1,177,3,177,2682,8,177,1,177,1,177,1,177,1,177,1,177,1,177, - 3,177,2690,8,177,1,178,1,178,3,178,2694,8,178,1,178,1,178,3,178, - 2698,8,178,1,179,1,179,3,179,2702,8,179,1,180,1,180,3,180,2706,8, - 180,1,180,1,180,1,180,1,180,1,180,1,180,3,180,2714,8,180,1,181,1, - 181,3,181,2718,8,181,1,181,1,181,3,181,2722,8,181,1,182,1,182,1, - 182,1,182,1,182,1,182,3,182,2730,8,182,1,183,1,183,1,183,3,183,2735, - 8,183,1,184,1,184,1,184,3,184,2740,8,184,1,185,1,185,3,185,2744, - 8,185,1,186,1,186,3,186,2748,8,186,1,187,1,187,1,187,1,187,1,187, - 3,187,2755,8,187,1,188,1,188,1,189,1,189,1,189,5,189,2762,8,189, - 10,189,12,189,2765,9,189,1,190,1,190,1,190,1,190,1,190,3,190,2772, - 8,190,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191, - 3,191,2784,8,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191, - 1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,2802,8,191, - 1,191,3,191,2805,8,191,1,191,1,191,1,191,1,191,3,191,2811,8,191, - 1,192,1,192,1,192,1,192,1,192,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,195,1,195,1,195,1,195,1,195, - 1,196,1,196,3,196,2837,8,196,1,197,3,197,2840,8,197,1,197,1,197, - 1,198,1,198,3,198,2846,8,198,1,199,1,199,1,199,1,199,5,199,2852, - 8,199,10,199,12,199,2855,9,199,1,200,1,200,1,200,1,200,1,200,3,200, - 2862,8,200,1,200,1,200,1,200,1,200,1,200,1,201,1,201,1,201,1,201, - 5,201,2873,8,201,10,201,12,201,2876,9,201,1,202,1,202,1,202,1,202, - 3,202,2882,8,202,1,202,3,202,2885,8,202,1,202,3,202,2888,8,202,1, - 202,3,202,2891,8,202,1,202,3,202,2894,8,202,1,202,3,202,2897,8,202, - 1,202,3,202,2900,8,202,1,202,3,202,2903,8,202,1,202,3,202,2906,8, - 202,1,202,3,202,2909,8,202,1,202,3,202,2912,8,202,1,202,1,202,1, - 202,3,202,2917,8,202,1,202,3,202,2920,8,202,1,202,3,202,2923,8,202, - 1,202,3,202,2926,8,202,1,202,3,202,2929,8,202,1,202,3,202,2932,8, - 202,1,202,3,202,2935,8,202,1,202,3,202,2938,8,202,1,202,3,202,2941, - 8,202,1,202,3,202,2944,8,202,1,202,3,202,2947,8,202,3,202,2949,8, - 202,1,203,1,203,1,203,1,203,3,203,2955,8,203,1,204,1,204,3,204,2959, - 8,204,1,204,3,204,2962,8,204,1,204,3,204,2965,8,204,1,204,3,204, - 2968,8,204,1,204,3,204,2971,8,204,1,204,3,204,2974,8,204,1,204,1, - 204,1,204,1,204,1,204,3,204,2981,8,204,1,205,1,205,3,205,2985,8, - 205,1,205,3,205,2988,8,205,1,205,3,205,2991,8,205,1,205,3,205,2994, - 8,205,1,205,3,205,2997,8,205,1,205,3,205,3000,8,205,1,206,1,206, - 1,206,4,206,3005,8,206,11,206,12,206,3006,1,207,3,207,3010,8,207, - 1,207,1,207,1,208,1,208,1,208,1,208,3,208,3018,8,208,1,208,1,208, - 3,208,3022,8,208,1,208,1,208,1,208,1,208,1,208,3,208,3029,8,208, - 3,208,3031,8,208,1,209,3,209,3034,8,209,1,209,1,209,1,209,3,209, - 3039,8,209,1,209,3,209,3042,8,209,1,209,1,209,3,209,3046,8,209,1, - 210,1,210,1,210,3,210,3051,8,210,1,210,1,210,1,210,1,210,3,210,3057, - 8,210,1,211,1,211,1,211,1,211,3,211,3063,8,211,1,212,1,212,1,212, - 1,212,1,213,1,213,3,213,3071,8,213,1,214,1,214,1,214,1,214,5,214, - 3077,8,214,10,214,12,214,3080,9,214,1,215,1,215,1,215,1,215,3,215, - 3086,8,215,1,216,1,216,1,216,1,216,3,216,3092,8,216,1,217,1,217, - 1,217,1,217,1,217,5,217,3099,8,217,10,217,12,217,3102,9,217,3,217, - 3104,8,217,1,218,1,218,3,218,3108,8,218,1,219,1,219,1,219,1,220, - 1,220,1,220,1,220,1,221,1,221,1,222,1,222,3,222,3121,8,222,1,223, - 1,223,3,223,3125,8,223,1,224,1,224,1,224,1,224,1,225,1,225,1,225, - 4,225,3134,8,225,11,225,12,225,3135,1,226,1,226,1,226,4,226,3141, - 8,226,11,226,12,226,3142,1,227,1,227,3,227,3147,8,227,1,227,1,227, - 1,227,3,227,3152,8,227,1,227,3,227,3155,8,227,1,227,1,227,1,227, - 1,227,1,227,1,227,1,228,1,228,5,228,3165,8,228,10,228,12,228,3168, - 9,228,1,228,3,228,3171,8,228,1,229,1,229,1,229,1,229,1,229,3,229, - 3178,8,229,1,229,1,229,1,229,3,229,3183,8,229,1,229,1,229,1,229, - 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,232,1,232,1,232,3,232,3203,8,232,1,233,1,233,1,233,4,233, - 3208,8,233,11,233,12,233,3209,1,234,1,234,1,234,1,234,1,235,1,235, - 1,235,1,236,1,236,1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,238, - 1,238,1,238,1,238,1,238,3,238,3233,8,238,1,238,1,238,1,238,1,238, - 1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,1,238,3,238, - 3249,8,238,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239,1,239, - 1,239,1,239,1,239,1,239,1,239,1,239,3,239,3266,8,239,1,239,1,239, - 1,239,1,239,3,239,3272,8,239,1,240,1,240,1,240,1,240,1,240,1,240, - 1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,1,240,3,240,3289, - 8,240,1,241,1,241,1,241,1,241,1,241,1,241,1,242,1,242,1,242,1,242, - 1,242,3,242,3302,8,242,1,243,1,243,3,243,3306,8,243,1,244,1,244, - 3,244,3310,8,244,1,245,1,245,1,246,1,246,1,246,3,246,3317,8,246, - 1,247,1,247,1,247,1,247,1,247,1,248,1,248,1,248,1,248,1,248,1,249, - 1,249,1,249,1,249,1,249,1,250,1,250,1,250,1,250,1,250,1,251,1,251, - 1,251,1,251,1,252,1,252,3,252,3345,8,252,1,252,1,252,1,252,1,252, - 1,252,3,252,3352,8,252,1,253,1,253,1,253,3,253,3357,8,253,1,254, - 1,254,1,254,3,254,3362,8,254,1,255,1,255,1,255,3,255,3367,8,255, - 1,255,1,255,1,255,3,255,3372,8,255,1,256,1,256,1,256,1,256,1,257, - 1,257,3,257,3380,8,257,1,257,1,257,1,257,1,257,3,257,3386,8,257, - 1,257,1,257,3,257,3390,8,257,1,257,3,257,3393,8,257,1,257,3,257, - 3396,8,257,1,258,1,258,1,258,1,258,3,258,3402,8,258,1,258,1,258, - 1,258,1,258,1,258,3,258,3409,8,258,1,259,1,259,1,259,1,259,1,259, - 1,260,1,260,1,260,3,260,3419,8,260,1,261,1,261,3,261,3423,8,261, - 1,261,4,261,3426,8,261,11,261,12,261,3427,1,262,1,262,3,262,3432, - 8,262,1,263,1,263,5,263,3436,8,263,10,263,12,263,3439,9,263,1,264, - 1,264,5,264,3443,8,264,10,264,12,264,3446,9,264,1,265,1,265,5,265, - 3450,8,265,10,265,12,265,3453,9,265,1,266,1,266,1,266,1,267,1,267, - 1,267,1,268,1,268,3,268,3463,8,268,1,268,1,268,1,268,1,268,1,268, - 5,268,3470,8,268,10,268,12,268,3473,9,268,1,268,3,268,3476,8,268, - 1,268,3,268,3479,8,268,1,268,3,268,3482,8,268,1,269,1,269,1,269, - 1,269,1,269,1,269,3,269,3490,8,269,1,269,3,269,3493,8,269,1,270, - 1,270,1,270,1,270,1,270,1,270,3,270,3501,8,270,1,270,3,270,3504, - 8,270,1,271,1,271,1,271,1,271,1,271,1,271,3,271,3512,8,271,1,271, - 1,271,3,271,3516,8,271,1,271,1,271,1,271,3,271,3521,8,271,1,272, - 1,272,3,272,3525,8,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274, - 3,274,3534,8,274,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276, - 1,276,1,277,1,277,1,277,5,277,3548,8,277,10,277,12,277,3551,9,277, - 1,278,1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,280,1,280,1,280, - 1,280,3,280,3565,8,280,3,280,3567,8,280,1,281,1,281,1,281,1,281, - 1,281,1,281,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,3,283, - 3583,8,283,1,283,1,283,1,283,1,283,1,283,3,283,3590,8,283,1,284, - 1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,287,1,287,1,287, - 1,288,1,288,1,288,3,288,3607,8,288,1,288,3,288,3610,8,288,1,288, - 3,288,3613,8,288,1,288,3,288,3616,8,288,1,288,1,288,1,288,1,288, - 3,288,3622,8,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290, - 1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291, - 1,291,1,291,3,291,3645,8,291,1,291,1,291,1,292,1,292,1,292,1,292, - 3,292,3653,8,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,3,293,3667,8,293,1,293,3,293,3670,8,293, - 1,294,1,294,1,294,3,294,3675,8,294,1,295,1,295,1,295,1,295,1,295, - 1,296,1,296,1,296,1,296,1,296,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,3,298,3701,8,298, - 1,299,1,299,3,299,3705,8,299,1,299,3,299,3708,8,299,1,299,3,299, - 3711,8,299,1,299,1,299,3,299,3715,8,299,1,299,1,299,1,299,3,299, - 3720,8,299,1,299,3,299,3723,8,299,1,299,3,299,3726,8,299,1,299,3, - 299,3729,8,299,1,299,3,299,3732,8,299,1,299,3,299,3735,8,299,1,299, - 1,299,1,299,1,299,3,299,3741,8,299,1,299,3,299,3744,8,299,1,299, - 3,299,3747,8,299,1,299,3,299,3750,8,299,1,299,3,299,3753,8,299,1, - 299,3,299,3756,8,299,1,299,3,299,3759,8,299,1,299,3,299,3762,8,299, - 1,299,3,299,3765,8,299,1,299,3,299,3768,8,299,1,299,1,299,3,299, - 3772,8,299,3,299,3774,8,299,1,299,1,299,1,299,1,299,3,299,3780,8, - 299,1,299,1,299,1,299,3,299,3785,8,299,1,299,3,299,3788,8,299,1, - 299,3,299,3791,8,299,1,299,3,299,3794,8,299,1,299,3,299,3797,8,299, - 1,299,1,299,1,299,1,299,3,299,3803,8,299,1,299,3,299,3806,8,299, - 1,299,3,299,3809,8,299,1,299,3,299,3812,8,299,1,299,3,299,3815,8, - 299,1,299,3,299,3818,8,299,1,299,3,299,3821,8,299,1,299,3,299,3824, - 8,299,1,299,3,299,3827,8,299,1,299,3,299,3830,8,299,1,299,1,299, - 3,299,3834,8,299,3,299,3836,8,299,3,299,3838,8,299,1,300,1,300,1, - 300,3,300,3843,8,300,1,300,1,300,3,300,3847,8,300,1,300,3,300,3850, - 8,300,1,300,3,300,3853,8,300,1,300,1,300,1,300,3,300,3858,8,300, - 1,301,1,301,1,301,1,302,1,302,1,302,1,303,1,303,1,303,1,304,1,304, - 1,304,1,304,1,305,1,305,1,305,3,305,3876,8,305,1,305,1,305,1,306, - 1,306,1,306,5,306,3883,8,306,10,306,12,306,3886,9,306,1,306,1,306, - 1,307,1,307,1,308,1,308,1,308,5,308,3895,8,308,10,308,12,308,3898, - 9,308,1,309,1,309,1,309,5,309,3903,8,309,10,309,12,309,3906,9,309, - 1,310,1,310,1,310,1,311,1,311,1,311,1,311,4,311,3915,8,311,11,311, - 12,311,3916,1,311,3,311,3920,8,311,1,312,1,312,5,312,3924,8,312, - 10,312,12,312,3927,9,312,1,312,1,312,5,312,3931,8,312,10,312,12, - 312,3934,9,312,1,312,1,312,5,312,3938,8,312,10,312,12,312,3941,9, - 312,1,312,1,312,5,312,3945,8,312,10,312,12,312,3948,9,312,1,312, - 1,312,1,312,1,312,3,312,3954,8,312,1,313,1,313,1,313,1,313,1,313, - 1,313,1,313,3,313,3963,8,313,5,313,3965,8,313,10,313,12,313,3968, - 9,313,1,314,1,314,1,314,1,314,3,314,3974,8,314,1,314,5,314,3977, - 8,314,10,314,12,314,3980,9,314,1,315,3,315,3983,8,315,1,315,1,315, - 1,315,1,316,1,316,1,316,1,316,1,317,1,317,1,318,1,318,1,318,1,318, - 1,318,3,318,3999,8,318,1,318,1,318,3,318,4003,8,318,3,318,4005,8, - 318,1,318,3,318,4008,8,318,1,319,1,319,1,319,1,319,1,319,1,319,1, - 319,1,319,1,319,5,319,4019,8,319,10,319,12,319,4022,9,319,3,319, - 4024,8,319,1,319,3,319,4027,8,319,1,319,1,319,1,319,1,319,1,319, - 1,319,1,319,1,319,5,319,4037,8,319,10,319,12,319,4040,9,319,3,319, - 4042,8,319,1,319,1,319,1,319,1,319,1,319,3,319,4049,8,319,1,319, - 1,319,1,319,1,319,1,319,5,319,4056,8,319,10,319,12,319,4059,9,319, - 1,319,1,319,3,319,4063,8,319,3,319,4065,8,319,3,319,4067,8,319,1, - 320,1,320,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321,1,321, - 1,321,1,321,5,321,4082,8,321,10,321,12,321,4085,9,321,3,321,4087, - 8,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,3,322,4096,8,322, - 1,322,1,322,1,323,1,323,3,323,4102,8,323,1,324,1,324,3,324,4106, - 8,324,1,324,3,324,4109,8,324,1,324,3,324,4112,8,324,1,324,3,324, - 4115,8,324,1,324,3,324,4118,8,324,1,325,1,325,1,325,1,325,1,325, - 1,325,1,325,1,325,1,325,1,325,3,325,4130,8,325,1,326,1,326,3,326, - 4134,8,326,1,326,3,326,4137,8,326,1,326,3,326,4140,8,326,1,327,1, - 327,1,328,1,328,1,329,1,329,3,329,4148,8,329,1,330,1,330,1,330,1, - 330,1,330,3,330,4155,8,330,1,330,3,330,4158,8,330,1,331,1,331,1, - 331,1,331,1,331,3,331,4165,8,331,1,331,3,331,4168,8,331,1,332,1, - 332,1,332,3,332,4173,8,332,1,332,1,332,1,333,1,333,1,333,3,333,4180, - 8,333,1,333,1,333,1,334,1,334,1,334,1,334,3,334,4188,8,334,1,334, - 1,334,1,335,1,335,3,335,4194,8,335,1,335,1,335,1,335,3,335,4199, - 8,335,1,335,1,335,3,335,4203,8,335,1,336,1,336,1,336,3,336,4208, - 8,336,1,337,1,337,1,337,1,337,1,337,3,337,4215,8,337,1,337,1,337, - 1,337,1,337,1,337,1,337,1,337,1,337,1,337,1,337,5,337,4227,8,337, - 10,337,12,337,4230,9,337,3,337,4232,8,337,1,337,1,337,3,337,4236, - 8,337,1,338,1,338,1,338,1,339,1,339,1,340,1,340,1,341,1,341,1,341, - 1,342,1,342,1,342,5,342,4251,8,342,10,342,12,342,4254,9,342,1,342, - 1,342,1,342,5,342,4259,8,342,10,342,12,342,4262,9,342,3,342,4264, - 8,342,1,343,1,343,1,344,1,344,1,344,1,344,1,345,1,345,1,345,1,345, - 1,345,3,345,4277,8,345,1,345,1,345,1,345,1,345,1,345,5,345,4284, - 8,345,10,345,12,345,4287,9,345,3,345,4289,8,345,1,345,1,345,1,346, - 1,346,3,346,4295,8,346,1,346,3,346,4298,8,346,1,346,1,346,1,346, - 3,346,4303,8,346,1,346,3,346,4306,8,346,1,347,1,347,1,348,1,348, - 1,348,5,348,4313,8,348,10,348,12,348,4316,9,348,1,349,1,349,1,349, - 1,349,1,349,1,349,1,349,1,349,1,349,1,349,1,349,3,349,4329,8,349, - 1,349,1,349,1,349,1,349,3,349,4335,8,349,3,349,4337,8,349,1,349, - 1,349,1,349,1,350,1,350,1,350,3,350,4345,8,350,1,350,3,350,4348, - 8,350,1,350,1,350,1,350,1,350,1,350,1,350,5,350,4356,8,350,10,350, - 12,350,4359,9,350,1,350,1,350,3,350,4363,8,350,3,350,4365,8,350, - 1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,1,351,3,351, - 4377,8,351,1,351,1,351,1,351,1,351,3,351,4383,8,351,3,351,4385,8, - 351,1,351,1,351,1,351,1,352,1,352,3,352,4392,8,352,1,353,1,353,1, - 353,5,353,4397,8,353,10,353,12,353,4400,9,353,1,354,1,354,1,354, - 1,354,5,354,4406,8,354,10,354,12,354,4409,9,354,1,355,1,355,1,355, - 1,355,1,356,1,356,1,356,3,356,4418,8,356,1,356,3,356,4421,8,356, - 1,356,3,356,4424,8,356,1,356,3,356,4427,8,356,1,357,1,357,3,357, - 4431,8,357,1,358,1,358,1,358,1,358,1,358,1,358,1,358,3,358,4440, - 8,358,1,359,1,359,1,359,1,359,1,359,1,359,1,359,3,359,4449,8,359, - 1,360,1,360,1,360,1,360,1,360,1,360,3,360,4457,8,360,1,361,1,361, - 1,361,1,361,3,361,4463,8,361,1,362,1,362,1,362,1,362,1,363,1,363, - 1,363,1,363,3,363,4473,8,363,1,364,1,364,1,364,1,365,1,365,3,365, - 4480,8,365,1,365,1,365,1,365,1,365,5,365,4486,8,365,10,365,12,365, - 4489,9,365,1,365,1,365,1,366,1,366,1,366,1,366,1,366,3,366,4498, - 8,366,1,366,1,366,1,366,1,366,1,366,1,366,5,366,4506,8,366,10,366, - 12,366,4509,9,366,1,366,1,366,3,366,4513,8,366,1,367,1,367,3,367, - 4517,8,367,1,368,1,368,3,368,4521,8,368,1,368,1,368,5,368,4525,8, - 368,10,368,12,368,4528,9,368,1,368,1,368,1,369,1,369,1,370,1,370, - 1,370,1,371,1,371,1,371,1,372,1,372,1,373,1,373,1,373,1,373,1,374, - 1,374,3,374,4548,8,374,1,375,1,375,4,375,4552,8,375,11,375,12,375, - 4553,1,376,1,376,3,376,4558,8,376,1,377,1,377,3,377,4562,8,377,1, - 377,3,377,4565,8,377,1,377,1,377,5,377,4569,8,377,10,377,12,377, - 4572,9,377,1,378,1,378,3,378,4576,8,378,1,378,3,378,4579,8,378,1, - 379,1,379,3,379,4583,8,379,1,380,1,380,1,380,1,380,5,380,4589,8, - 380,10,380,12,380,4592,9,380,1,380,1,380,1,381,1,381,1,381,5,381, - 4599,8,381,10,381,12,381,4602,9,381,1,382,1,382,1,382,1,382,1,382, - 5,382,4609,8,382,10,382,12,382,4612,9,382,1,383,1,383,1,383,1,383, - 1,384,1,384,1,384,1,384,1,385,1,385,1,385,1,385,1,386,1,386,1,386, - 1,386,3,386,4630,8,386,1,387,1,387,1,387,1,387,1,387,3,387,4637, - 8,387,1,387,3,387,4640,8,387,1,387,1,387,1,387,1,387,1,388,1,388, - 1,388,1,388,1,388,3,388,4651,8,388,1,388,1,388,1,388,5,388,4656, - 8,388,10,388,12,388,4659,9,388,3,388,4661,8,388,3,388,4663,8,388, - 1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,3,388,4674, - 8,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,3,388,4684, - 8,388,3,388,4686,8,388,1,389,1,389,1,389,1,389,3,389,4692,8,389, - 1,390,1,390,1,391,1,391,3,391,4698,8,391,1,392,1,392,3,392,4702, - 8,392,1,393,1,393,1,394,1,394,3,394,4708,8,394,1,395,1,395,1,395, - 1,395,1,395,1,395,1,395,3,395,4717,8,395,1,395,1,395,1,396,1,396, - 1,396,1,396,1,396,1,396,1,396,4,396,4728,8,396,11,396,12,396,4729, - 1,396,1,396,3,396,4734,8,396,1,396,1,396,1,397,1,397,1,397,1,397, - 1,397,1,397,4,397,4744,8,397,11,397,12,397,4745,1,397,1,397,3,397, - 4750,8,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,3,398,4759, - 8,398,1,398,1,398,1,399,1,399,1,399,1,399,1,399,1,399,1,399,1,399, - 3,399,4771,8,399,1,400,1,400,1,400,1,400,1,400,1,400,1,400,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401,4788,8,401,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 1,402,3,402,4803,8,402,1,403,1,403,1,404,1,404,1,405,1,405,4,405, - 4811,8,405,11,405,12,405,4812,1,406,1,406,1,406,1,407,1,407,1,407, - 3,407,4821,8,407,1,408,1,408,1,408,3,408,4826,8,408,1,409,1,409, - 1,409,1,410,1,410,1,411,1,411,1,411,1,412,1,412,1,412,1,412,1,412, - 1,412,1,412,1,412,1,412,1,412,1,412,3,412,4847,8,412,1,412,1,412, - 3,412,4851,8,412,1,413,1,413,1,413,1,413,1,413,1,413,1,413,1,413, - 1,413,1,413,1,413,1,413,1,413,1,413,3,413,4867,8,413,1,414,1,414, - 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, - 3,415,4882,8,415,1,416,1,416,1,416,1,416,1,416,1,416,1,416,5,416, - 4891,8,416,10,416,12,416,4894,9,416,1,417,1,417,1,418,5,418,4899, - 8,418,10,418,12,418,4902,9,418,1,418,1,418,1,419,1,419,1,420,1,420, - 1,420,1,420,5,420,4912,8,420,10,420,12,420,4915,9,420,1,421,1,421, - 1,422,1,422,1,422,1,422,5,422,4923,8,422,10,422,12,422,4926,9,422, - 1,423,1,423,1,424,1,424,1,424,1,424,5,424,4934,8,424,10,424,12,424, - 4937,9,424,1,425,1,425,1,426,1,426,1,426,1,426,5,426,4945,8,426, - 10,426,12,426,4948,9,426,1,427,1,427,1,428,1,428,1,428,1,428,5,428, - 4956,8,428,10,428,12,428,4959,9,428,1,429,1,429,1,430,1,430,1,430, - 1,430,5,430,4967,8,430,10,430,12,430,4970,9,430,1,431,1,431,1,432, - 1,432,1,432,1,432,1,432,3,432,4979,8,432,1,433,1,433,1,433,1,433, - 1,434,1,434,1,434,3,434,4988,8,434,1,435,1,435,3,435,4992,8,435, - 1,436,1,436,1,436,1,436,1,436,1,436,3,436,5000,8,436,1,437,1,437, - 1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,1,437,3,437,5013, - 8,437,1,438,1,438,1,438,1,438,1,439,1,439,1,440,1,440,3,440,5023, - 8,440,1,441,1,441,1,441,1,441,3,441,5029,8,441,1,442,1,442,1,442, - 1,442,1,443,1,443,1,443,1,443,1,443,1,443,1,443,3,443,5042,8,443, - 1,444,1,444,1,444,1,444,1,444,1,444,1,444,5,444,5051,8,444,10,444, - 12,444,5054,9,444,1,445,1,445,1,445,1,445,1,445,1,445,1,445,1,445, - 1,445,1,445,1,445,1,445,3,445,5068,8,445,1,446,1,446,1,446,3,446, - 5073,8,446,1,447,1,447,1,448,5,448,5078,8,448,10,448,12,448,5081, - 9,448,1,448,1,448,1,449,1,449,1,450,1,450,1,450,1,450,5,450,5091, - 8,450,10,450,12,450,5094,9,450,1,451,1,451,1,452,1,452,1,452,1,452, - 5,452,5102,8,452,10,452,12,452,5105,9,452,1,453,1,453,1,454,1,454, - 1,455,1,455,3,455,5113,8,455,1,456,1,456,1,456,1,456,1,456,5,456, - 5120,8,456,10,456,12,456,5123,9,456,1,456,1,456,1,457,1,457,1,457, - 3,457,5130,8,457,1,458,1,458,1,458,1,458,5,458,5136,8,458,10,458, - 12,458,5139,9,458,1,458,1,458,1,459,1,459,1,459,1,459,1,460,1,460, - 3,460,5149,8,460,1,461,1,461,1,462,1,462,1,463,1,463,3,463,5157, - 8,463,1,464,1,464,1,464,3,464,5162,8,464,1,465,1,465,1,466,1,466, - 1,467,1,467,1,468,1,468,1,468,1,469,1,469,1,469,5,469,5176,8,469, - 10,469,12,469,5179,9,469,1,470,1,470,1,470,1,470,1,470,3,470,5186, - 8,470,1,471,1,471,1,472,1,472,1,472,5,472,5193,8,472,10,472,12,472, - 5196,9,472,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475, - 1,475,1,475,1,475,1,476,1,476,1,476,5,476,5213,8,476,10,476,12,476, - 5216,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,1,477,3,477,5232,8,477,1,478,1,478,1,478, - 1,478,1,478,1,478,1,478,3,478,5241,8,478,1,479,1,479,1,479,5,479, - 5246,8,479,10,479,12,479,5249,9,479,1,480,1,480,1,480,3,480,5254, - 8,480,1,481,1,481,1,481,5,481,5259,8,481,10,481,12,481,5262,9,481, - 1,482,1,482,1,482,1,482,3,482,5268,8,482,1,482,1,482,1,482,1,482, - 1,482,1,482,1,482,3,482,5277,8,482,3,482,5279,8,482,1,483,1,483, - 1,483,1,484,1,484,3,484,5286,8,484,1,485,1,485,1,486,1,486,1,487, - 1,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491,1,492,1,492, - 1,493,1,493,1,494,1,494,1,495,1,495,1,496,1,496,1,496,1,496,1,496, - 1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,1,496,3,496, - 5325,8,496,1,496,1,496,3,496,5329,8,496,3,496,5331,8,496,1,497,1, - 497,3,497,5335,8,497,1,497,1,497,1,497,1,498,1,498,1,498,1,498,1, - 498,1,498,1,498,1,498,1,498,1,498,1,498,1,498,3,498,5352,8,498,1, - 499,1,499,1,499,1,499,3,499,5358,8,499,1,499,1,499,1,500,1,500,1, - 500,5,500,5365,8,500,10,500,12,500,5368,9,500,1,501,1,501,1,502, - 1,502,1,502,1,503,1,503,1,503,5,503,5378,8,503,10,503,12,503,5381, - 9,503,1,504,1,504,1,504,5,504,5386,8,504,10,504,12,504,5389,9,504, - 1,505,1,505,1,505,1,505,1,506,1,506,1,507,1,507,1,508,1,508,1,508, - 1,508,3,508,5403,8,508,1,509,1,509,1,509,1,510,1,510,1,510,1,510, - 1,510,1,510,1,510,1,510,1,510,1,510,1,511,1,511,1,511,1,511,1,511, - 1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511,1,511,3,511,5432, - 8,511,1,511,1,511,1,511,3,511,5437,8,511,3,511,5439,8,511,1,512, - 1,512,1,512,1,512,1,512,1,512,1,513,1,513,1,513,1,513,1,513,1,513, - 1,513,1,513,1,513,1,513,1,513,1,513,3,513,5459,8,513,1,514,1,514, - 1,514,5,514,5464,8,514,10,514,12,514,5467,9,514,1,515,1,515,1,515, - 1,515,1,515,1,515,1,515,1,515,1,516,1,516,1,516,1,516,1,516,1,516, - 1,516,1,516,1,516,1,516,1,516,1,516,3,516,5489,8,516,1,517,1,517, - 1,517,1,517,1,517,1,517,1,518,1,518,1,518,1,518,1,518,1,518,1,518, - 1,518,1,518,3,518,5506,8,518,1,518,1,518,1,518,3,518,5511,8,518, - 1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,519,1,519,3,519,5522, - 8,519,1,519,1,519,1,519,3,519,5527,8,519,1,520,1,520,1,520,1,520, - 1,520,1,520,1,520,1,520,0,0,521,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,0,56,2,0,57,57,172,172,4,0,91,91,121,121, - 226,226,325,325,2,0,34,34,282,282,1,0,89,90,2,0,139,139,154,154, - 2,0,67,67,295,295,2,0,68,68,296,296,1,0,155,156,2,0,114,114,307, - 307,11,0,7,7,9,9,58,58,86,86,101,101,155,155,161,161,190,190,299, - 299,309,309,365,365,3,0,4,4,101,101,326,326,3,0,15,15,128,128,170, - 170,1,0,141,142,2,0,30,30,351,351,2,0,217,217,373,373,2,0,214,214, - 272,272,2,0,18,18,89,89,2,0,130,130,177,177,2,0,39,39,376,376,4, - 0,112,112,164,164,205,205,356,356,2,0,7,7,96,96,2,0,225,225,391, - 391,2,0,189,189,196,196,2,0,42,42,315,315,2,0,426,426,431,431,2, - 0,140,140,285,285,3,0,12,12,231,231,300,300,2,0,241,241,292,292, - 2,0,198,198,268,268,2,0,354,354,431,431,2,0,133,133,247,247,3,0, - 413,414,418,418,420,420,2,0,412,412,415,417,1,0,413,414,3,0,184, - 184,270,270,286,286,2,0,7,7,13,13,3,0,7,7,13,13,313,313,2,0,125, - 125,350,350,2,0,405,405,407,411,24,0,11,11,16,16,25,28,35,35,100, - 100,131,132,151,151,154,154,162,163,184,184,198,198,216,216,228, - 228,264,264,270,270,286,286,311,311,323,324,340,340,357,357,383, - 383,405,417,419,421,423,423,85,0,1,6,8,8,10,10,15,15,18,20,22,24, - 30,31,33,34,37,38,40,44,46,47,49,50,52,53,56,57,59,59,66,66,68,68, - 72,77,79,79,83,85,87,89,91,95,97,99,103,104,106,107,109,111,114, - 116,118,121,127,130,137,138,142,142,147,150,152,152,155,156,158, - 160,168,170,172,177,182,183,185,187,189,193,195,197,199,202,204, - 204,206,209,211,212,214,215,217,218,220,220,222,223,226,227,232, - 233,235,236,238,240,243,246,252,252,254,255,257,259,261,262,265, - 267,271,282,284,284,287,288,293,298,300,303,305,310,312,312,314, - 317,319,325,327,328,330,330,332,334,339,340,342,342,344,346,349, - 349,352,353,355,355,357,357,360,364,366,368,371,373,375,375,377, - 382,385,385,388,394,13,0,16,16,26,28,63,64,71,71,100,100,131,131, - 145,145,151,151,162,163,198,198,264,264,311,311,337,337,4,0,199, - 199,242,242,300,300,322,322,2,0,213,213,431,432,1,0,106,107,1,0, - 94,95,1,0,392,393,1,0,208,209,1,0,381,382,1,0,73,74,1,0,148,149, - 1,0,206,207,1,0,297,298,1,0,80,82,2,0,4,4,101,101,3,0,14,14,144, - 144,369,369,5939,0,1045,1,0,0,0,2,1052,1,0,0,0,4,1057,1,0,0,0,6, - 1091,1,0,0,0,8,1093,1,0,0,0,10,1095,1,0,0,0,12,1111,1,0,0,0,14,1113, - 1,0,0,0,16,1129,1,0,0,0,18,1132,1,0,0,0,20,1141,1,0,0,0,22,1149, - 1,0,0,0,24,1162,1,0,0,0,26,1173,1,0,0,0,28,1178,1,0,0,0,30,1189, - 1,0,0,0,32,1193,1,0,0,0,34,1201,1,0,0,0,36,1206,1,0,0,0,38,1260, - 1,0,0,0,40,1262,1,0,0,0,42,1265,1,0,0,0,44,1267,1,0,0,0,46,1271, - 1,0,0,0,48,1273,1,0,0,0,50,1276,1,0,0,0,52,1279,1,0,0,0,54,1283, - 1,0,0,0,56,1325,1,0,0,0,58,1327,1,0,0,0,60,1330,1,0,0,0,62,1333, - 1,0,0,0,64,1337,1,0,0,0,66,1345,1,0,0,0,68,1348,1,0,0,0,70,1351, - 1,0,0,0,72,1360,1,0,0,0,74,1363,1,0,0,0,76,1378,1,0,0,0,78,1390, - 1,0,0,0,80,1395,1,0,0,0,82,1415,1,0,0,0,84,1419,1,0,0,0,86,1426, - 1,0,0,0,88,1451,1,0,0,0,90,1468,1,0,0,0,92,1470,1,0,0,0,94,1665, - 1,0,0,0,96,1675,1,0,0,0,98,1677,1,0,0,0,100,1685,1,0,0,0,102,1690, - 1,0,0,0,104,1692,1,0,0,0,106,1698,1,0,0,0,108,1702,1,0,0,0,110,1706, - 1,0,0,0,112,1710,1,0,0,0,114,1720,1,0,0,0,116,1731,1,0,0,0,118,1748, - 1,0,0,0,120,1766,1,0,0,0,122,1771,1,0,0,0,124,1774,1,0,0,0,126,1778, - 1,0,0,0,128,1785,1,0,0,0,130,1794,1,0,0,0,132,1800,1,0,0,0,134,1802, - 1,0,0,0,136,1819,1,0,0,0,138,1841,1,0,0,0,140,1843,1,0,0,0,142,1851, - 1,0,0,0,144,1858,1,0,0,0,146,1860,1,0,0,0,148,1874,1,0,0,0,150,1881, - 1,0,0,0,152,1883,1,0,0,0,154,1887,1,0,0,0,156,1891,1,0,0,0,158,1895, - 1,0,0,0,160,1899,1,0,0,0,162,1912,1,0,0,0,164,1920,1,0,0,0,166,1923, - 1,0,0,0,168,1925,1,0,0,0,170,1937,1,0,0,0,172,1947,1,0,0,0,174,1950, - 1,0,0,0,176,1961,1,0,0,0,178,1969,1,0,0,0,180,2013,1,0,0,0,182,2022, - 1,0,0,0,184,2049,1,0,0,0,186,2062,1,0,0,0,188,2064,1,0,0,0,190,2070, - 1,0,0,0,192,2073,1,0,0,0,194,2079,1,0,0,0,196,2085,1,0,0,0,198,2092, - 1,0,0,0,200,2126,1,0,0,0,202,2134,1,0,0,0,204,2147,1,0,0,0,206,2152, - 1,0,0,0,208,2163,1,0,0,0,210,2180,1,0,0,0,212,2182,1,0,0,0,214,2187, - 1,0,0,0,216,2194,1,0,0,0,218,2196,1,0,0,0,220,2199,1,0,0,0,222,2202, - 1,0,0,0,224,2216,1,0,0,0,226,2224,1,0,0,0,228,2232,1,0,0,0,230,2240, - 1,0,0,0,232,2260,1,0,0,0,234,2262,1,0,0,0,236,2279,1,0,0,0,238,2284, - 1,0,0,0,240,2298,1,0,0,0,242,2300,1,0,0,0,244,2303,1,0,0,0,246,2306, - 1,0,0,0,248,2315,1,0,0,0,250,2335,1,0,0,0,252,2337,1,0,0,0,254,2340, - 1,0,0,0,256,2360,1,0,0,0,258,2362,1,0,0,0,260,2366,1,0,0,0,262,2368, - 1,0,0,0,264,2377,1,0,0,0,266,2383,1,0,0,0,268,2389,1,0,0,0,270,2394, - 1,0,0,0,272,2440,1,0,0,0,274,2442,1,0,0,0,276,2445,1,0,0,0,278,2453, - 1,0,0,0,280,2461,1,0,0,0,282,2469,1,0,0,0,284,2486,1,0,0,0,286,2488, - 1,0,0,0,288,2490,1,0,0,0,290,2503,1,0,0,0,292,2511,1,0,0,0,294,2520, - 1,0,0,0,296,2524,1,0,0,0,298,2526,1,0,0,0,300,2531,1,0,0,0,302,2533, - 1,0,0,0,304,2537,1,0,0,0,306,2543,1,0,0,0,308,2551,1,0,0,0,310,2553, - 1,0,0,0,312,2556,1,0,0,0,314,2563,1,0,0,0,316,2574,1,0,0,0,318,2587, - 1,0,0,0,320,2589,1,0,0,0,322,2597,1,0,0,0,324,2601,1,0,0,0,326,2609, - 1,0,0,0,328,2613,1,0,0,0,330,2615,1,0,0,0,332,2617,1,0,0,0,334,2620, - 1,0,0,0,336,2627,1,0,0,0,338,2635,1,0,0,0,340,2640,1,0,0,0,342,2644, - 1,0,0,0,344,2652,1,0,0,0,346,2660,1,0,0,0,348,2664,1,0,0,0,350,2666, - 1,0,0,0,352,2677,1,0,0,0,354,2681,1,0,0,0,356,2693,1,0,0,0,358,2701, - 1,0,0,0,360,2705,1,0,0,0,362,2717,1,0,0,0,364,2729,1,0,0,0,366,2734, - 1,0,0,0,368,2739,1,0,0,0,370,2741,1,0,0,0,372,2745,1,0,0,0,374,2749, - 1,0,0,0,376,2756,1,0,0,0,378,2758,1,0,0,0,380,2771,1,0,0,0,382,2810, - 1,0,0,0,384,2812,1,0,0,0,386,2817,1,0,0,0,388,2822,1,0,0,0,390,2829, - 1,0,0,0,392,2834,1,0,0,0,394,2839,1,0,0,0,396,2845,1,0,0,0,398,2847, - 1,0,0,0,400,2856,1,0,0,0,402,2868,1,0,0,0,404,2948,1,0,0,0,406,2954, - 1,0,0,0,408,2980,1,0,0,0,410,2982,1,0,0,0,412,3004,1,0,0,0,414,3009, - 1,0,0,0,416,3013,1,0,0,0,418,3045,1,0,0,0,420,3047,1,0,0,0,422,3058, - 1,0,0,0,424,3064,1,0,0,0,426,3070,1,0,0,0,428,3072,1,0,0,0,430,3081, - 1,0,0,0,432,3091,1,0,0,0,434,3093,1,0,0,0,436,3107,1,0,0,0,438,3109, - 1,0,0,0,440,3112,1,0,0,0,442,3116,1,0,0,0,444,3118,1,0,0,0,446,3122, - 1,0,0,0,448,3126,1,0,0,0,450,3130,1,0,0,0,452,3137,1,0,0,0,454,3144, - 1,0,0,0,456,3166,1,0,0,0,458,3172,1,0,0,0,460,3187,1,0,0,0,462,3194, - 1,0,0,0,464,3202,1,0,0,0,466,3204,1,0,0,0,468,3211,1,0,0,0,470,3215, - 1,0,0,0,472,3218,1,0,0,0,474,3221,1,0,0,0,476,3224,1,0,0,0,478,3271, - 1,0,0,0,480,3288,1,0,0,0,482,3290,1,0,0,0,484,3301,1,0,0,0,486,3305, - 1,0,0,0,488,3309,1,0,0,0,490,3311,1,0,0,0,492,3316,1,0,0,0,494,3318, - 1,0,0,0,496,3323,1,0,0,0,498,3328,1,0,0,0,500,3333,1,0,0,0,502,3338, - 1,0,0,0,504,3344,1,0,0,0,506,3353,1,0,0,0,508,3358,1,0,0,0,510,3371, - 1,0,0,0,512,3373,1,0,0,0,514,3377,1,0,0,0,516,3397,1,0,0,0,518,3410, - 1,0,0,0,520,3418,1,0,0,0,522,3420,1,0,0,0,524,3429,1,0,0,0,526,3433, - 1,0,0,0,528,3440,1,0,0,0,530,3447,1,0,0,0,532,3454,1,0,0,0,534,3457, - 1,0,0,0,536,3460,1,0,0,0,538,3492,1,0,0,0,540,3503,1,0,0,0,542,3520, - 1,0,0,0,544,3522,1,0,0,0,546,3526,1,0,0,0,548,3533,1,0,0,0,550,3535, - 1,0,0,0,552,3540,1,0,0,0,554,3544,1,0,0,0,556,3552,1,0,0,0,558,3556, - 1,0,0,0,560,3566,1,0,0,0,562,3568,1,0,0,0,564,3574,1,0,0,0,566,3578, - 1,0,0,0,568,3591,1,0,0,0,570,3593,1,0,0,0,572,3597,1,0,0,0,574,3600, - 1,0,0,0,576,3603,1,0,0,0,578,3623,1,0,0,0,580,3627,1,0,0,0,582,3634, - 1,0,0,0,584,3648,1,0,0,0,586,3669,1,0,0,0,588,3674,1,0,0,0,590,3676, - 1,0,0,0,592,3681,1,0,0,0,594,3686,1,0,0,0,596,3700,1,0,0,0,598,3837, - 1,0,0,0,600,3839,1,0,0,0,602,3859,1,0,0,0,604,3862,1,0,0,0,606,3865, - 1,0,0,0,608,3868,1,0,0,0,610,3872,1,0,0,0,612,3884,1,0,0,0,614,3889, - 1,0,0,0,616,3891,1,0,0,0,618,3899,1,0,0,0,620,3907,1,0,0,0,622,3919, - 1,0,0,0,624,3953,1,0,0,0,626,3955,1,0,0,0,628,3973,1,0,0,0,630,3982, - 1,0,0,0,632,3987,1,0,0,0,634,3991,1,0,0,0,636,4007,1,0,0,0,638,4066, - 1,0,0,0,640,4068,1,0,0,0,642,4070,1,0,0,0,644,4090,1,0,0,0,646,4101, - 1,0,0,0,648,4103,1,0,0,0,650,4119,1,0,0,0,652,4131,1,0,0,0,654,4141, - 1,0,0,0,656,4143,1,0,0,0,658,4147,1,0,0,0,660,4157,1,0,0,0,662,4167, - 1,0,0,0,664,4172,1,0,0,0,666,4179,1,0,0,0,668,4183,1,0,0,0,670,4202, - 1,0,0,0,672,4207,1,0,0,0,674,4209,1,0,0,0,676,4237,1,0,0,0,678,4240, - 1,0,0,0,680,4242,1,0,0,0,682,4244,1,0,0,0,684,4263,1,0,0,0,686,4265, - 1,0,0,0,688,4267,1,0,0,0,690,4271,1,0,0,0,692,4305,1,0,0,0,694,4307, - 1,0,0,0,696,4309,1,0,0,0,698,4317,1,0,0,0,700,4364,1,0,0,0,702,4366, - 1,0,0,0,704,4391,1,0,0,0,706,4393,1,0,0,0,708,4401,1,0,0,0,710,4410, - 1,0,0,0,712,4426,1,0,0,0,714,4430,1,0,0,0,716,4432,1,0,0,0,718,4441, - 1,0,0,0,720,4456,1,0,0,0,722,4462,1,0,0,0,724,4464,1,0,0,0,726,4472, - 1,0,0,0,728,4474,1,0,0,0,730,4479,1,0,0,0,732,4492,1,0,0,0,734,4516, - 1,0,0,0,736,4518,1,0,0,0,738,4531,1,0,0,0,740,4533,1,0,0,0,742,4536, - 1,0,0,0,744,4539,1,0,0,0,746,4541,1,0,0,0,748,4545,1,0,0,0,750,4551, - 1,0,0,0,752,4557,1,0,0,0,754,4559,1,0,0,0,756,4573,1,0,0,0,758,4582, - 1,0,0,0,760,4584,1,0,0,0,762,4595,1,0,0,0,764,4603,1,0,0,0,766,4613, - 1,0,0,0,768,4617,1,0,0,0,770,4621,1,0,0,0,772,4625,1,0,0,0,774,4631, - 1,0,0,0,776,4685,1,0,0,0,778,4691,1,0,0,0,780,4693,1,0,0,0,782,4697, - 1,0,0,0,784,4701,1,0,0,0,786,4703,1,0,0,0,788,4707,1,0,0,0,790,4709, - 1,0,0,0,792,4720,1,0,0,0,794,4737,1,0,0,0,796,4753,1,0,0,0,798,4770, - 1,0,0,0,800,4772,1,0,0,0,802,4787,1,0,0,0,804,4802,1,0,0,0,806,4804, - 1,0,0,0,808,4806,1,0,0,0,810,4808,1,0,0,0,812,4814,1,0,0,0,814,4820, - 1,0,0,0,816,4825,1,0,0,0,818,4827,1,0,0,0,820,4830,1,0,0,0,822,4832, - 1,0,0,0,824,4850,1,0,0,0,826,4866,1,0,0,0,828,4868,1,0,0,0,830,4881, - 1,0,0,0,832,4883,1,0,0,0,834,4895,1,0,0,0,836,4900,1,0,0,0,838,4905, - 1,0,0,0,840,4907,1,0,0,0,842,4916,1,0,0,0,844,4918,1,0,0,0,846,4927, - 1,0,0,0,848,4929,1,0,0,0,850,4938,1,0,0,0,852,4940,1,0,0,0,854,4949, - 1,0,0,0,856,4951,1,0,0,0,858,4960,1,0,0,0,860,4962,1,0,0,0,862,4971, - 1,0,0,0,864,4978,1,0,0,0,866,4980,1,0,0,0,868,4987,1,0,0,0,870,4989, - 1,0,0,0,872,4999,1,0,0,0,874,5012,1,0,0,0,876,5014,1,0,0,0,878,5018, - 1,0,0,0,880,5022,1,0,0,0,882,5028,1,0,0,0,884,5030,1,0,0,0,886,5041, - 1,0,0,0,888,5043,1,0,0,0,890,5067,1,0,0,0,892,5069,1,0,0,0,894,5074, - 1,0,0,0,896,5079,1,0,0,0,898,5084,1,0,0,0,900,5086,1,0,0,0,902,5095, - 1,0,0,0,904,5097,1,0,0,0,906,5106,1,0,0,0,908,5108,1,0,0,0,910,5110, - 1,0,0,0,912,5114,1,0,0,0,914,5126,1,0,0,0,916,5131,1,0,0,0,918,5142, - 1,0,0,0,920,5148,1,0,0,0,922,5150,1,0,0,0,924,5152,1,0,0,0,926,5156, - 1,0,0,0,928,5158,1,0,0,0,930,5163,1,0,0,0,932,5165,1,0,0,0,934,5167, - 1,0,0,0,936,5169,1,0,0,0,938,5172,1,0,0,0,940,5180,1,0,0,0,942,5187, - 1,0,0,0,944,5189,1,0,0,0,946,5197,1,0,0,0,948,5199,1,0,0,0,950,5204, - 1,0,0,0,952,5209,1,0,0,0,954,5231,1,0,0,0,956,5240,1,0,0,0,958,5242, - 1,0,0,0,960,5253,1,0,0,0,962,5255,1,0,0,0,964,5263,1,0,0,0,966,5280, - 1,0,0,0,968,5283,1,0,0,0,970,5287,1,0,0,0,972,5289,1,0,0,0,974,5291, - 1,0,0,0,976,5293,1,0,0,0,978,5295,1,0,0,0,980,5297,1,0,0,0,982,5299, - 1,0,0,0,984,5301,1,0,0,0,986,5303,1,0,0,0,988,5305,1,0,0,0,990,5307, - 1,0,0,0,992,5309,1,0,0,0,994,5334,1,0,0,0,996,5339,1,0,0,0,998,5353, - 1,0,0,0,1000,5361,1,0,0,0,1002,5369,1,0,0,0,1004,5371,1,0,0,0,1006, - 5374,1,0,0,0,1008,5382,1,0,0,0,1010,5390,1,0,0,0,1012,5394,1,0,0, - 0,1014,5396,1,0,0,0,1016,5402,1,0,0,0,1018,5404,1,0,0,0,1020,5407, - 1,0,0,0,1022,5417,1,0,0,0,1024,5440,1,0,0,0,1026,5458,1,0,0,0,1028, - 5460,1,0,0,0,1030,5468,1,0,0,0,1032,5476,1,0,0,0,1034,5490,1,0,0, - 0,1036,5496,1,0,0,0,1038,5512,1,0,0,0,1040,5528,1,0,0,0,1042,1044, - 3,2,1,0,1043,1042,1,0,0,0,1044,1047,1,0,0,0,1045,1043,1,0,0,0,1045, - 1046,1,0,0,0,1046,1048,1,0,0,0,1047,1045,1,0,0,0,1048,1049,5,0,0, - 1,1049,1,1,0,0,0,1050,1053,3,4,2,0,1051,1053,3,12,6,0,1052,1050, - 1,0,0,0,1052,1051,1,0,0,0,1053,1055,1,0,0,0,1054,1056,5,398,0,0, - 1055,1054,1,0,0,0,1055,1056,1,0,0,0,1056,3,1,0,0,0,1057,1067,5,119, - 0,0,1058,1060,3,6,3,0,1059,1058,1,0,0,0,1060,1063,1,0,0,0,1061,1059, - 1,0,0,0,1061,1062,1,0,0,0,1062,1064,1,0,0,0,1063,1061,1,0,0,0,1064, - 1068,3,12,6,0,1065,1066,5,284,0,0,1066,1068,3,394,197,0,1067,1061, - 1,0,0,0,1067,1065,1,0,0,0,1068,5,1,0,0,0,1069,1092,5,122,0,0,1070, - 1092,5,138,0,0,1071,1092,5,88,0,0,1072,1074,5,37,0,0,1073,1075,7, - 0,0,0,1074,1073,1,0,0,0,1074,1075,1,0,0,0,1075,1092,1,0,0,0,1076, - 1092,5,192,0,0,1077,1092,5,21,0,0,1078,1092,5,10,0,0,1079,1092,5, - 275,0,0,1080,1092,5,191,0,0,1081,1092,5,19,0,0,1082,1084,5,377,0, - 0,1083,1085,3,8,4,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085,1087, - 1,0,0,0,1086,1088,3,10,5,0,1087,1086,1,0,0,0,1087,1088,1,0,0,0,1088, - 1092,1,0,0,0,1089,1092,5,79,0,0,1090,1092,5,78,0,0,1091,1069,1,0, - 0,0,1091,1070,1,0,0,0,1091,1071,1,0,0,0,1091,1072,1,0,0,0,1091,1076, - 1,0,0,0,1091,1077,1,0,0,0,1091,1078,1,0,0,0,1091,1079,1,0,0,0,1091, - 1080,1,0,0,0,1091,1081,1,0,0,0,1091,1082,1,0,0,0,1091,1089,1,0,0, - 0,1091,1090,1,0,0,0,1092,7,1,0,0,0,1093,1094,5,225,0,0,1094,9,1, - 0,0,0,1095,1096,7,1,0,0,1096,11,1,0,0,0,1097,1112,3,394,197,0,1098, - 1112,3,14,7,0,1099,1112,3,20,10,0,1100,1112,3,22,11,0,1101,1112, - 3,24,12,0,1102,1112,3,28,14,0,1103,1112,3,36,18,0,1104,1112,3,38, - 19,0,1105,1112,3,422,211,0,1106,1112,3,430,215,0,1107,1112,3,432, - 216,0,1108,1112,3,454,227,0,1109,1112,3,948,474,0,1110,1112,3,950, - 475,0,1111,1097,1,0,0,0,1111,1098,1,0,0,0,1111,1099,1,0,0,0,1111, - 1100,1,0,0,0,1111,1101,1,0,0,0,1111,1102,1,0,0,0,1111,1103,1,0,0, - 0,1111,1104,1,0,0,0,1111,1105,1,0,0,0,1111,1106,1,0,0,0,1111,1107, - 1,0,0,0,1111,1108,1,0,0,0,1111,1109,1,0,0,0,1111,1110,1,0,0,0,1112, - 13,1,0,0,0,1113,1114,5,187,0,0,1114,1116,5,66,0,0,1115,1117,5,188, - 0,0,1116,1115,1,0,0,0,1116,1117,1,0,0,0,1117,1118,1,0,0,0,1118,1119, - 5,158,0,0,1119,1121,5,426,0,0,1120,1122,5,235,0,0,1121,1120,1,0, - 0,0,1121,1122,1,0,0,0,1122,1123,1,0,0,0,1123,1124,5,166,0,0,1124, - 1125,5,329,0,0,1125,1127,3,910,455,0,1126,1128,3,78,39,0,1127,1126, - 1,0,0,0,1127,1128,1,0,0,0,1128,15,1,0,0,0,1129,1130,5,152,0,0,1130, - 1131,5,254,0,0,1131,17,1,0,0,0,1132,1134,5,134,0,0,1133,1135,5,204, - 0,0,1134,1133,1,0,0,0,1134,1135,1,0,0,0,1135,1136,1,0,0,0,1136,1137, - 5,279,0,0,1137,1138,5,399,0,0,1138,1139,5,426,0,0,1139,1140,5,400, - 0,0,1140,19,1,0,0,0,1141,1142,5,120,0,0,1142,1143,5,329,0,0,1143, - 1144,3,910,455,0,1144,1145,5,341,0,0,1145,1147,5,426,0,0,1146,1148, - 3,18,9,0,1147,1146,1,0,0,0,1147,1148,1,0,0,0,1148,21,1,0,0,0,1149, - 1155,5,153,0,0,1150,1152,5,123,0,0,1151,1150,1,0,0,0,1151,1152,1, - 0,0,0,1152,1153,1,0,0,0,1153,1154,5,329,0,0,1154,1156,3,910,455, - 0,1155,1151,1,0,0,0,1155,1156,1,0,0,0,1156,1157,1,0,0,0,1157,1158, - 5,139,0,0,1158,1160,5,426,0,0,1159,1161,3,274,137,0,1160,1159,1, - 0,0,0,1160,1161,1,0,0,0,1161,23,1,0,0,0,1162,1163,5,277,0,0,1163, - 1164,5,103,0,0,1164,1167,3,26,13,0,1165,1166,5,278,0,0,1166,1168, - 3,26,13,0,1167,1165,1,0,0,0,1167,1168,1,0,0,0,1168,1171,1,0,0,0, - 1169,1170,5,387,0,0,1170,1172,3,30,15,0,1171,1169,1,0,0,0,1171,1172, - 1,0,0,0,1172,25,1,0,0,0,1173,1176,3,654,327,0,1174,1175,5,395,0, - 0,1175,1177,3,34,17,0,1176,1174,1,0,0,0,1176,1177,1,0,0,0,1177,27, - 1,0,0,0,1178,1179,5,277,0,0,1179,1180,5,187,0,0,1180,1183,3,26,13, - 0,1181,1182,5,166,0,0,1182,1184,3,654,327,0,1183,1181,1,0,0,0,1183, - 1184,1,0,0,0,1184,1187,1,0,0,0,1185,1186,5,387,0,0,1186,1188,3,30, - 15,0,1187,1185,1,0,0,0,1187,1188,1,0,0,0,1188,29,1,0,0,0,1189,1190, - 5,399,0,0,1190,1191,3,32,16,0,1191,1192,5,400,0,0,1192,31,1,0,0, - 0,1193,1198,3,258,129,0,1194,1195,5,397,0,0,1195,1197,3,258,129, - 0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0,0,0,1198,1199, - 1,0,0,0,1199,33,1,0,0,0,1200,1198,1,0,0,0,1201,1204,5,426,0,0,1202, - 1203,5,395,0,0,1203,1205,5,426,0,0,1204,1202,1,0,0,0,1204,1205,1, - 0,0,0,1205,35,1,0,0,0,1206,1207,5,277,0,0,1207,1208,5,320,0,0,1208, - 1211,3,654,327,0,1209,1210,5,387,0,0,1210,1212,3,30,15,0,1211,1209, - 1,0,0,0,1211,1212,1,0,0,0,1212,37,1,0,0,0,1213,1261,3,56,28,0,1214, - 1261,3,68,34,0,1215,1261,3,70,35,0,1216,1261,3,598,299,0,1217,1261, - 3,76,38,0,1218,1261,3,74,37,0,1219,1261,3,476,238,0,1220,1261,3, - 86,43,0,1221,1261,3,94,47,0,1222,1261,3,160,80,0,1223,1261,3,182, - 91,0,1224,1261,3,198,99,0,1225,1261,3,202,101,0,1226,1261,3,206, - 103,0,1227,1261,3,204,102,0,1228,1261,3,196,98,0,1229,1261,3,200, - 100,0,1230,1261,3,168,84,0,1231,1261,3,174,87,0,1232,1261,3,170, - 85,0,1233,1261,3,172,86,0,1234,1261,3,176,88,0,1235,1261,3,178,89, - 0,1236,1261,3,180,90,0,1237,1261,3,88,44,0,1238,1261,3,98,49,0,1239, - 1261,3,104,52,0,1240,1261,3,100,50,0,1241,1261,3,106,53,0,1242,1261, - 3,108,54,0,1243,1261,3,110,55,0,1244,1261,3,112,56,0,1245,1261,3, - 114,57,0,1246,1261,3,128,64,0,1247,1261,3,120,60,0,1248,1261,3,130, - 65,0,1249,1261,3,122,61,0,1250,1261,3,116,58,0,1251,1261,3,118,59, - 0,1252,1261,3,126,63,0,1253,1261,3,124,62,0,1254,1261,3,450,225, - 0,1255,1261,3,452,226,0,1256,1261,3,466,233,0,1257,1261,3,954,477, - 0,1258,1261,3,600,300,0,1259,1261,3,610,305,0,1260,1213,1,0,0,0, - 1260,1214,1,0,0,0,1260,1215,1,0,0,0,1260,1216,1,0,0,0,1260,1217, - 1,0,0,0,1260,1218,1,0,0,0,1260,1219,1,0,0,0,1260,1220,1,0,0,0,1260, - 1221,1,0,0,0,1260,1222,1,0,0,0,1260,1223,1,0,0,0,1260,1224,1,0,0, - 0,1260,1225,1,0,0,0,1260,1226,1,0,0,0,1260,1227,1,0,0,0,1260,1228, - 1,0,0,0,1260,1229,1,0,0,0,1260,1230,1,0,0,0,1260,1231,1,0,0,0,1260, - 1232,1,0,0,0,1260,1233,1,0,0,0,1260,1234,1,0,0,0,1260,1235,1,0,0, - 0,1260,1236,1,0,0,0,1260,1237,1,0,0,0,1260,1238,1,0,0,0,1260,1239, - 1,0,0,0,1260,1240,1,0,0,0,1260,1241,1,0,0,0,1260,1242,1,0,0,0,1260, - 1243,1,0,0,0,1260,1244,1,0,0,0,1260,1245,1,0,0,0,1260,1246,1,0,0, - 0,1260,1247,1,0,0,0,1260,1248,1,0,0,0,1260,1249,1,0,0,0,1260,1250, - 1,0,0,0,1260,1251,1,0,0,0,1260,1252,1,0,0,0,1260,1253,1,0,0,0,1260, - 1254,1,0,0,0,1260,1255,1,0,0,0,1260,1256,1,0,0,0,1260,1257,1,0,0, - 0,1260,1258,1,0,0,0,1260,1259,1,0,0,0,1261,39,1,0,0,0,1262,1263, - 5,151,0,0,1263,1264,5,117,0,0,1264,41,1,0,0,0,1265,1266,7,2,0,0, - 1266,43,1,0,0,0,1267,1268,5,151,0,0,1268,1269,5,216,0,0,1269,1270, - 5,117,0,0,1270,45,1,0,0,0,1271,1272,5,135,0,0,1272,47,1,0,0,0,1273, - 1274,3,970,485,0,1274,1275,5,284,0,0,1275,49,1,0,0,0,1276,1277,3, - 972,486,0,1277,1278,5,284,0,0,1278,51,1,0,0,0,1279,1280,5,321,0, - 0,1280,1281,5,17,0,0,1281,1282,5,92,0,0,1282,53,1,0,0,0,1283,1284, - 5,228,0,0,1284,1285,5,278,0,0,1285,55,1,0,0,0,1286,1288,5,58,0,0, - 1287,1289,5,273,0,0,1288,1287,1,0,0,0,1288,1289,1,0,0,0,1289,1290, - 1,0,0,0,1290,1292,3,92,46,0,1291,1293,3,44,22,0,1292,1291,1,0,0, - 0,1292,1293,1,0,0,0,1293,1294,1,0,0,0,1294,1296,3,656,328,0,1295, - 1297,3,72,36,0,1296,1295,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0, - 0,0,1298,1300,3,58,29,0,1299,1298,1,0,0,0,1299,1300,1,0,0,0,1300, - 1302,1,0,0,0,1301,1303,3,60,30,0,1302,1301,1,0,0,0,1302,1303,1,0, - 0,0,1303,1307,1,0,0,0,1304,1305,5,387,0,0,1305,1306,5,76,0,0,1306, - 1308,3,62,31,0,1307,1304,1,0,0,0,1307,1308,1,0,0,0,1308,1326,1,0, - 0,0,1309,1310,5,58,0,0,1310,1311,5,273,0,0,1311,1313,3,92,46,0,1312, - 1314,3,44,22,0,1313,1312,1,0,0,0,1313,1314,1,0,0,0,1314,1315,1,0, - 0,0,1315,1317,3,656,328,0,1316,1318,3,72,36,0,1317,1316,1,0,0,0, - 1317,1318,1,0,0,0,1318,1319,1,0,0,0,1319,1323,3,66,33,0,1320,1321, - 5,387,0,0,1321,1322,5,76,0,0,1322,1324,3,62,31,0,1323,1320,1,0,0, - 0,1323,1324,1,0,0,0,1324,1326,1,0,0,0,1325,1286,1,0,0,0,1325,1309, - 1,0,0,0,1326,57,1,0,0,0,1327,1328,5,189,0,0,1328,1329,5,426,0,0, - 1329,59,1,0,0,0,1330,1331,5,196,0,0,1331,1332,5,426,0,0,1332,61, - 1,0,0,0,1333,1334,5,399,0,0,1334,1335,3,64,32,0,1335,1336,5,400, - 0,0,1336,63,1,0,0,0,1337,1342,3,258,129,0,1338,1339,5,397,0,0,1339, - 1341,3,258,129,0,1340,1338,1,0,0,0,1341,1344,1,0,0,0,1342,1340,1, - 0,0,0,1342,1343,1,0,0,0,1343,65,1,0,0,0,1344,1342,1,0,0,0,1345,1346, - 5,370,0,0,1346,1347,3,654,327,0,1347,67,1,0,0,0,1348,1349,5,368, - 0,0,1349,1350,3,654,327,0,1350,69,1,0,0,0,1351,1352,5,101,0,0,1352, - 1354,3,92,46,0,1353,1355,3,40,20,0,1354,1353,1,0,0,0,1354,1355,1, - 0,0,0,1355,1356,1,0,0,0,1356,1358,3,654,327,0,1357,1359,3,42,21, - 0,1358,1357,1,0,0,0,1358,1359,1,0,0,0,1359,71,1,0,0,0,1360,1361, - 5,47,0,0,1361,1362,5,426,0,0,1362,73,1,0,0,0,1363,1365,5,351,0,0, - 1364,1366,5,329,0,0,1365,1364,1,0,0,0,1365,1366,1,0,0,0,1366,1367, - 1,0,0,0,1367,1373,3,544,272,0,1368,1369,5,46,0,0,1369,1370,5,399, - 0,0,1370,1371,3,282,141,0,1371,1372,5,400,0,0,1372,1374,1,0,0,0, - 1373,1368,1,0,0,0,1373,1374,1,0,0,0,1374,1376,1,0,0,0,1375,1377, - 3,46,23,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,75,1,0,0,0,1378, - 1379,5,101,0,0,1379,1381,5,329,0,0,1380,1382,3,40,20,0,1381,1380, - 1,0,0,0,1381,1382,1,0,0,0,1382,1383,1,0,0,0,1383,1385,3,660,330, - 0,1384,1386,5,255,0,0,1385,1384,1,0,0,0,1385,1386,1,0,0,0,1386,1388, - 1,0,0,0,1387,1389,3,18,9,0,1388,1387,1,0,0,0,1388,1389,1,0,0,0,1389, - 77,1,0,0,0,1390,1391,5,160,0,0,1391,1392,5,426,0,0,1392,1393,5,301, - 0,0,1393,1394,5,426,0,0,1394,79,1,0,0,0,1395,1398,3,926,463,0,1396, - 1397,5,395,0,0,1397,1399,3,926,463,0,1398,1396,1,0,0,0,1398,1399, - 1,0,0,0,1399,1413,1,0,0,0,1400,1410,3,926,463,0,1401,1406,5,395, - 0,0,1402,1407,5,104,0,0,1403,1407,5,175,0,0,1404,1407,5,375,0,0, - 1405,1407,3,926,463,0,1406,1402,1,0,0,0,1406,1403,1,0,0,0,1406,1404, - 1,0,0,0,1406,1405,1,0,0,0,1407,1409,1,0,0,0,1408,1401,1,0,0,0,1409, - 1412,1,0,0,0,1410,1408,1,0,0,0,1410,1411,1,0,0,0,1411,1414,1,0,0, - 0,1412,1410,1,0,0,0,1413,1400,1,0,0,0,1413,1414,1,0,0,0,1414,81, - 1,0,0,0,1415,1417,3,80,40,0,1416,1418,3,912,456,0,1417,1416,1,0, - 0,0,1417,1418,1,0,0,0,1418,83,1,0,0,0,1419,1421,3,658,329,0,1420, - 1422,3,912,456,0,1421,1420,1,0,0,0,1421,1422,1,0,0,0,1422,1424,1, - 0,0,0,1423,1425,3,288,144,0,1424,1423,1,0,0,0,1424,1425,1,0,0,0, - 1425,85,1,0,0,0,1426,1449,7,3,0,0,1427,1429,3,92,46,0,1428,1430, - 5,122,0,0,1429,1428,1,0,0,0,1429,1430,1,0,0,0,1430,1431,1,0,0,0, - 1431,1432,3,654,327,0,1432,1450,1,0,0,0,1433,1435,5,69,0,0,1434, - 1436,5,122,0,0,1435,1434,1,0,0,0,1435,1436,1,0,0,0,1436,1437,1,0, - 0,0,1437,1450,3,654,327,0,1438,1440,5,141,0,0,1439,1441,5,122,0, - 0,1440,1439,1,0,0,0,1440,1441,1,0,0,0,1441,1442,1,0,0,0,1442,1450, - 3,782,391,0,1443,1446,5,138,0,0,1444,1446,5,122,0,0,1445,1443,1, - 0,0,0,1445,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1450,3,84,42,0,1448, - 1450,3,84,42,0,1449,1427,1,0,0,0,1449,1433,1,0,0,0,1449,1438,1,0, - 0,0,1449,1445,1,0,0,0,1449,1448,1,0,0,0,1450,87,1,0,0,0,1451,1452, - 5,10,0,0,1452,1453,5,329,0,0,1453,1466,3,910,455,0,1454,1455,5,52, - 0,0,1455,1462,5,319,0,0,1456,1463,5,215,0,0,1457,1458,5,134,0,0, - 1458,1460,5,46,0,0,1459,1461,3,282,141,0,1460,1459,1,0,0,0,1460, - 1461,1,0,0,0,1461,1463,1,0,0,0,1462,1456,1,0,0,0,1462,1457,1,0,0, - 0,1462,1463,1,0,0,0,1463,1467,1,0,0,0,1464,1465,5,33,0,0,1465,1467, - 5,204,0,0,1466,1454,1,0,0,0,1466,1464,1,0,0,0,1467,89,1,0,0,0,1468, - 1469,7,4,0,0,1469,91,1,0,0,0,1470,1471,7,5,0,0,1471,93,1,0,0,0,1472, - 1473,5,308,0,0,1473,1476,7,6,0,0,1474,1475,5,184,0,0,1475,1477,3, - 216,108,0,1476,1474,1,0,0,0,1476,1477,1,0,0,0,1477,1666,1,0,0,0, - 1478,1480,5,308,0,0,1479,1481,5,122,0,0,1480,1479,1,0,0,0,1480,1481, - 1,0,0,0,1481,1482,1,0,0,0,1482,1486,5,330,0,0,1483,1484,3,90,45, - 0,1484,1485,3,654,327,0,1485,1487,1,0,0,0,1486,1483,1,0,0,0,1486, - 1487,1,0,0,0,1487,1489,1,0,0,0,1488,1490,3,96,48,0,1489,1488,1,0, - 0,0,1489,1490,1,0,0,0,1490,1666,1,0,0,0,1491,1492,5,308,0,0,1492, - 1496,5,379,0,0,1493,1494,3,90,45,0,1494,1495,3,654,327,0,1495,1497, - 1,0,0,0,1496,1493,1,0,0,0,1496,1497,1,0,0,0,1497,1501,1,0,0,0,1498, - 1499,5,184,0,0,1499,1502,3,216,108,0,1500,1502,3,216,108,0,1501, - 1498,1,0,0,0,1501,1500,1,0,0,0,1501,1502,1,0,0,0,1502,1666,1,0,0, - 0,1503,1504,5,308,0,0,1504,1505,5,202,0,0,1505,1509,5,379,0,0,1506, - 1507,3,90,45,0,1507,1508,3,654,327,0,1508,1510,1,0,0,0,1509,1506, - 1,0,0,0,1509,1510,1,0,0,0,1510,1514,1,0,0,0,1511,1512,5,184,0,0, - 1512,1515,3,216,108,0,1513,1515,3,216,108,0,1514,1511,1,0,0,0,1514, - 1513,1,0,0,0,1514,1515,1,0,0,0,1515,1666,1,0,0,0,1516,1518,5,308, - 0,0,1517,1519,5,315,0,0,1518,1517,1,0,0,0,1518,1519,1,0,0,0,1519, - 1520,1,0,0,0,1520,1521,5,46,0,0,1521,1522,3,90,45,0,1522,1526,3, - 658,329,0,1523,1524,3,90,45,0,1524,1525,3,654,327,0,1525,1527,1, - 0,0,0,1526,1523,1,0,0,0,1526,1527,1,0,0,0,1527,1531,1,0,0,0,1528, - 1529,5,184,0,0,1529,1532,3,216,108,0,1530,1532,3,216,108,0,1531, - 1528,1,0,0,0,1531,1530,1,0,0,0,1531,1532,1,0,0,0,1532,1666,1,0,0, - 0,1533,1534,5,308,0,0,1534,1537,5,142,0,0,1535,1536,5,184,0,0,1536, - 1538,3,782,391,0,1537,1535,1,0,0,0,1537,1538,1,0,0,0,1538,1666,1, - 0,0,0,1539,1540,5,308,0,0,1540,1541,5,239,0,0,1541,1543,3,658,329, - 0,1542,1544,3,912,456,0,1543,1542,1,0,0,0,1543,1544,1,0,0,0,1544, - 1546,1,0,0,0,1545,1547,3,676,338,0,1546,1545,1,0,0,0,1546,1547,1, - 0,0,0,1547,1549,1,0,0,0,1548,1550,3,764,382,0,1549,1548,1,0,0,0, - 1549,1550,1,0,0,0,1550,1552,1,0,0,0,1551,1553,3,420,210,0,1552,1551, - 1,0,0,0,1552,1553,1,0,0,0,1553,1666,1,0,0,0,1554,1555,5,308,0,0, - 1555,1561,5,58,0,0,1556,1557,3,92,46,0,1557,1558,3,654,327,0,1558, - 1562,1,0,0,0,1559,1560,5,329,0,0,1560,1562,3,660,330,0,1561,1556, - 1,0,0,0,1561,1559,1,0,0,0,1562,1666,1,0,0,0,1563,1564,5,308,0,0, - 1564,1565,5,329,0,0,1565,1569,5,122,0,0,1566,1567,3,90,45,0,1567, - 1568,3,654,327,0,1568,1570,1,0,0,0,1569,1566,1,0,0,0,1569,1570,1, - 0,0,0,1570,1571,1,0,0,0,1571,1572,5,184,0,0,1572,1574,3,216,108, - 0,1573,1575,3,912,456,0,1574,1573,1,0,0,0,1574,1575,1,0,0,0,1575, - 1666,1,0,0,0,1576,1577,5,308,0,0,1577,1578,5,332,0,0,1578,1582,3, - 660,330,0,1579,1580,5,399,0,0,1580,1581,5,426,0,0,1581,1583,5,400, - 0,0,1582,1579,1,0,0,0,1582,1583,1,0,0,0,1583,1666,1,0,0,0,1584,1585, - 5,308,0,0,1585,1597,5,191,0,0,1586,1587,3,92,46,0,1587,1589,3,654, - 327,0,1588,1590,5,122,0,0,1589,1588,1,0,0,0,1589,1590,1,0,0,0,1590, - 1598,1,0,0,0,1591,1593,3,82,41,0,1592,1591,1,0,0,0,1592,1593,1,0, - 0,0,1593,1595,1,0,0,0,1594,1596,5,122,0,0,1595,1594,1,0,0,0,1595, - 1596,1,0,0,0,1596,1598,1,0,0,0,1597,1586,1,0,0,0,1597,1592,1,0,0, - 0,1598,1666,1,0,0,0,1599,1600,5,308,0,0,1600,1637,5,50,0,0,1601, - 1638,3,468,234,0,1602,1603,3,92,46,0,1603,1605,3,654,327,0,1604, - 1606,3,470,235,0,1605,1604,1,0,0,0,1605,1606,1,0,0,0,1606,1608,1, - 0,0,0,1607,1609,3,472,236,0,1608,1607,1,0,0,0,1608,1609,1,0,0,0, - 1609,1611,1,0,0,0,1610,1612,3,474,237,0,1611,1610,1,0,0,0,1611,1612, - 1,0,0,0,1612,1614,1,0,0,0,1613,1615,3,764,382,0,1614,1613,1,0,0, - 0,1614,1615,1,0,0,0,1615,1617,1,0,0,0,1616,1618,3,420,210,0,1617, - 1616,1,0,0,0,1617,1618,1,0,0,0,1618,1638,1,0,0,0,1619,1621,3,82, - 41,0,1620,1619,1,0,0,0,1620,1621,1,0,0,0,1621,1623,1,0,0,0,1622, - 1624,3,470,235,0,1623,1622,1,0,0,0,1623,1624,1,0,0,0,1624,1626,1, - 0,0,0,1625,1627,3,472,236,0,1626,1625,1,0,0,0,1626,1627,1,0,0,0, - 1627,1629,1,0,0,0,1628,1630,3,474,237,0,1629,1628,1,0,0,0,1629,1630, - 1,0,0,0,1630,1632,1,0,0,0,1631,1633,3,764,382,0,1632,1631,1,0,0, - 0,1632,1633,1,0,0,0,1633,1635,1,0,0,0,1634,1636,3,420,210,0,1635, - 1634,1,0,0,0,1635,1636,1,0,0,0,1636,1638,1,0,0,0,1637,1601,1,0,0, - 0,1637,1602,1,0,0,0,1637,1620,1,0,0,0,1638,1666,1,0,0,0,1639,1640, - 5,308,0,0,1640,1666,5,346,0,0,1641,1642,5,308,0,0,1642,1643,5,54, - 0,0,1643,1666,5,426,0,0,1644,1645,5,308,0,0,1645,1649,5,280,0,0, - 1646,1647,5,243,0,0,1647,1650,3,926,463,0,1648,1650,5,244,0,0,1649, - 1646,1,0,0,0,1649,1648,1,0,0,0,1650,1666,1,0,0,0,1651,1652,5,308, - 0,0,1652,1666,5,70,0,0,1653,1655,5,308,0,0,1654,1656,5,138,0,0,1655, - 1654,1,0,0,0,1655,1656,1,0,0,0,1656,1657,1,0,0,0,1657,1658,7,7,0, - 0,1658,1659,5,224,0,0,1659,1663,3,660,330,0,1660,1661,3,90,45,0, - 1661,1662,3,654,327,0,1662,1664,1,0,0,0,1663,1660,1,0,0,0,1663,1664, - 1,0,0,0,1664,1666,1,0,0,0,1665,1472,1,0,0,0,1665,1478,1,0,0,0,1665, - 1491,1,0,0,0,1665,1503,1,0,0,0,1665,1516,1,0,0,0,1665,1533,1,0,0, - 0,1665,1539,1,0,0,0,1665,1554,1,0,0,0,1665,1563,1,0,0,0,1665,1576, - 1,0,0,0,1665,1584,1,0,0,0,1665,1599,1,0,0,0,1665,1639,1,0,0,0,1665, - 1641,1,0,0,0,1665,1644,1,0,0,0,1665,1651,1,0,0,0,1665,1653,1,0,0, - 0,1666,95,1,0,0,0,1667,1668,5,384,0,0,1668,1669,3,926,463,0,1669, - 1670,5,405,0,0,1670,1671,5,426,0,0,1671,1676,1,0,0,0,1672,1673,5, - 184,0,0,1673,1676,3,216,108,0,1674,1676,3,216,108,0,1675,1667,1, - 0,0,0,1675,1672,1,0,0,0,1675,1674,1,0,0,0,1676,97,1,0,0,0,1677,1678, - 5,190,0,0,1678,1679,5,329,0,0,1679,1681,3,660,330,0,1680,1682,3, - 912,456,0,1681,1680,1,0,0,0,1681,1682,1,0,0,0,1682,1683,1,0,0,0, - 1683,1684,3,102,51,0,1684,99,1,0,0,0,1685,1686,5,190,0,0,1686,1687, - 3,92,46,0,1687,1688,3,654,327,0,1688,1689,3,102,51,0,1689,101,1, - 0,0,0,1690,1691,7,8,0,0,1691,103,1,0,0,0,1692,1693,5,361,0,0,1693, - 1694,5,329,0,0,1694,1696,3,660,330,0,1695,1697,3,912,456,0,1696, - 1695,1,0,0,0,1696,1697,1,0,0,0,1697,105,1,0,0,0,1698,1699,5,361, - 0,0,1699,1700,3,92,46,0,1700,1701,3,654,327,0,1701,107,1,0,0,0,1702, - 1703,5,58,0,0,1703,1704,5,287,0,0,1704,1705,3,926,463,0,1705,109, - 1,0,0,0,1706,1707,5,101,0,0,1707,1708,5,287,0,0,1708,1709,3,926, - 463,0,1709,111,1,0,0,0,1710,1711,5,143,0,0,1711,1713,3,140,70,0, - 1712,1714,3,134,67,0,1713,1712,1,0,0,0,1713,1714,1,0,0,0,1714,1715, - 1,0,0,0,1715,1716,5,341,0,0,1716,1718,3,146,73,0,1717,1719,3,152, - 76,0,1718,1717,1,0,0,0,1718,1719,1,0,0,0,1719,113,1,0,0,0,1720,1722, - 5,283,0,0,1721,1723,3,154,77,0,1722,1721,1,0,0,0,1722,1723,1,0,0, - 0,1723,1724,1,0,0,0,1724,1726,3,140,70,0,1725,1727,3,134,67,0,1726, - 1725,1,0,0,0,1726,1727,1,0,0,0,1727,1728,1,0,0,0,1728,1729,5,139, - 0,0,1729,1730,3,146,73,0,1730,115,1,0,0,0,1731,1733,5,143,0,0,1732, - 1734,5,287,0,0,1733,1732,1,0,0,0,1733,1734,1,0,0,0,1734,1735,1,0, - 0,0,1735,1740,3,926,463,0,1736,1737,5,397,0,0,1737,1739,3,926,463, - 0,1738,1736,1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741, - 1,0,0,0,1741,1743,1,0,0,0,1742,1740,1,0,0,0,1743,1744,5,341,0,0, - 1744,1746,3,146,73,0,1745,1747,3,158,79,0,1746,1745,1,0,0,0,1746, - 1747,1,0,0,0,1747,117,1,0,0,0,1748,1750,5,283,0,0,1749,1751,3,156, - 78,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751,1753,1,0,0,0,1752, - 1754,5,287,0,0,1753,1752,1,0,0,0,1753,1754,1,0,0,0,1754,1755,1,0, - 0,0,1755,1760,3,926,463,0,1756,1757,5,397,0,0,1757,1759,3,926,463, - 0,1758,1756,1,0,0,0,1759,1762,1,0,0,0,1760,1758,1,0,0,0,1760,1761, - 1,0,0,0,1761,1763,1,0,0,0,1762,1760,1,0,0,0,1763,1764,5,139,0,0, - 1764,1765,3,146,73,0,1765,119,1,0,0,0,1766,1767,5,308,0,0,1767,1768, - 5,287,0,0,1768,1769,5,143,0,0,1769,1770,3,148,74,0,1770,121,1,0, - 0,0,1771,1772,5,308,0,0,1772,1773,5,288,0,0,1773,123,1,0,0,0,1774, - 1775,5,308,0,0,1775,1776,5,62,0,0,1776,1777,5,288,0,0,1777,125,1, - 0,0,0,1778,1779,5,304,0,0,1779,1783,5,287,0,0,1780,1784,5,7,0,0, - 1781,1784,5,213,0,0,1782,1784,3,926,463,0,1783,1780,1,0,0,0,1783, - 1781,1,0,0,0,1783,1782,1,0,0,0,1784,127,1,0,0,0,1785,1786,5,308, - 0,0,1786,1788,5,143,0,0,1787,1789,3,148,74,0,1788,1787,1,0,0,0,1788, - 1789,1,0,0,0,1789,1792,1,0,0,0,1790,1791,5,224,0,0,1791,1793,3,132, - 66,0,1792,1790,1,0,0,0,1792,1793,1,0,0,0,1793,129,1,0,0,0,1794,1795, - 5,308,0,0,1795,1796,5,252,0,0,1796,1797,3,926,463,0,1797,131,1,0, - 0,0,1798,1801,5,7,0,0,1799,1801,3,138,69,0,1800,1798,1,0,0,0,1800, - 1799,1,0,0,0,1801,133,1,0,0,0,1802,1803,5,224,0,0,1803,1804,3,136, - 68,0,1804,135,1,0,0,0,1805,1806,3,92,46,0,1806,1807,3,654,327,0, - 1807,1820,1,0,0,0,1808,1810,5,329,0,0,1809,1808,1,0,0,0,1809,1810, - 1,0,0,0,1810,1811,1,0,0,0,1811,1813,3,660,330,0,1812,1814,3,912, - 456,0,1813,1812,1,0,0,0,1813,1814,1,0,0,0,1814,1820,1,0,0,0,1815, - 1816,5,366,0,0,1816,1820,5,426,0,0,1817,1818,5,303,0,0,1818,1820, - 3,926,463,0,1819,1805,1,0,0,0,1819,1809,1,0,0,0,1819,1815,1,0,0, - 0,1819,1817,1,0,0,0,1820,137,1,0,0,0,1821,1822,3,92,46,0,1822,1823, - 3,654,327,0,1823,1842,1,0,0,0,1824,1826,5,329,0,0,1825,1824,1,0, - 0,0,1825,1826,1,0,0,0,1826,1827,1,0,0,0,1827,1832,3,660,330,0,1828, - 1829,5,399,0,0,1829,1830,3,282,141,0,1830,1831,5,400,0,0,1831,1833, - 1,0,0,0,1832,1828,1,0,0,0,1832,1833,1,0,0,0,1833,1835,1,0,0,0,1834, - 1836,3,912,456,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1842,1, - 0,0,0,1837,1838,5,366,0,0,1838,1842,5,426,0,0,1839,1840,5,303,0, - 0,1840,1842,3,926,463,0,1841,1821,1,0,0,0,1841,1825,1,0,0,0,1841, - 1837,1,0,0,0,1841,1839,1,0,0,0,1842,139,1,0,0,0,1843,1848,3,142, - 71,0,1844,1845,5,397,0,0,1845,1847,3,142,71,0,1846,1844,1,0,0,0, - 1847,1850,1,0,0,0,1848,1846,1,0,0,0,1848,1849,1,0,0,0,1849,141,1, - 0,0,0,1850,1848,1,0,0,0,1851,1856,3,144,72,0,1852,1853,5,399,0,0, - 1853,1854,3,282,141,0,1854,1855,5,400,0,0,1855,1857,1,0,0,0,1856, - 1852,1,0,0,0,1856,1857,1,0,0,0,1857,143,1,0,0,0,1858,1859,7,9,0, - 0,1859,145,1,0,0,0,1860,1865,3,148,74,0,1861,1862,5,397,0,0,1862, - 1864,3,148,74,0,1863,1861,1,0,0,0,1864,1867,1,0,0,0,1865,1863,1, - 0,0,0,1865,1866,1,0,0,0,1866,147,1,0,0,0,1867,1865,1,0,0,0,1868, - 1869,5,369,0,0,1869,1875,3,930,465,0,1870,1871,5,144,0,0,1871,1875, - 3,930,465,0,1872,1873,5,287,0,0,1873,1875,3,926,463,0,1874,1868, - 1,0,0,0,1874,1870,1,0,0,0,1874,1872,1,0,0,0,1875,149,1,0,0,0,1876, - 1877,5,369,0,0,1877,1882,3,930,465,0,1878,1879,5,287,0,0,1879,1882, - 3,926,463,0,1880,1882,3,926,463,0,1881,1876,1,0,0,0,1881,1878,1, - 0,0,0,1881,1880,1,0,0,0,1882,151,1,0,0,0,1883,1884,5,387,0,0,1884, - 1885,5,143,0,0,1885,1886,5,227,0,0,1886,153,1,0,0,0,1887,1888,5, - 143,0,0,1888,1889,5,227,0,0,1889,1890,5,134,0,0,1890,155,1,0,0,0, - 1891,1892,5,5,0,0,1892,1893,5,227,0,0,1893,1894,5,134,0,0,1894,157, - 1,0,0,0,1895,1896,5,387,0,0,1896,1897,5,5,0,0,1897,1898,5,227,0, - 0,1898,159,1,0,0,0,1899,1901,5,212,0,0,1900,1902,5,276,0,0,1901, - 1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0,0,0,1903,1904,5,329, - 0,0,1904,1910,3,660,330,0,1905,1906,7,10,0,0,1906,1908,5,239,0,0, - 1907,1909,3,916,458,0,1908,1907,1,0,0,0,1908,1909,1,0,0,0,1909,1911, - 1,0,0,0,1910,1905,1,0,0,0,1910,1911,1,0,0,0,1911,161,1,0,0,0,1912, - 1917,3,164,82,0,1913,1914,5,397,0,0,1914,1916,3,164,82,0,1915,1913, - 1,0,0,0,1916,1919,1,0,0,0,1917,1915,1,0,0,0,1917,1918,1,0,0,0,1918, - 163,1,0,0,0,1919,1917,1,0,0,0,1920,1921,3,166,83,0,1921,1922,5,426, - 0,0,1922,165,1,0,0,0,1923,1924,7,11,0,0,1924,167,1,0,0,0,1925,1927, - 5,58,0,0,1926,1928,5,333,0,0,1927,1926,1,0,0,0,1927,1928,1,0,0,0, - 1928,1929,1,0,0,0,1929,1930,5,141,0,0,1930,1931,3,780,390,0,1931, - 1932,5,17,0,0,1932,1935,5,426,0,0,1933,1934,5,370,0,0,1934,1936, - 3,162,81,0,1935,1933,1,0,0,0,1935,1936,1,0,0,0,1936,169,1,0,0,0, - 1937,1939,5,101,0,0,1938,1940,5,333,0,0,1939,1938,1,0,0,0,1939,1940, - 1,0,0,0,1940,1941,1,0,0,0,1941,1943,5,141,0,0,1942,1944,3,40,20, - 0,1943,1942,1,0,0,0,1943,1944,1,0,0,0,1944,1945,1,0,0,0,1945,1946, - 3,782,391,0,1946,171,1,0,0,0,1947,1948,5,271,0,0,1948,1949,7,12, - 0,0,1949,173,1,0,0,0,1950,1951,5,58,0,0,1951,1952,5,333,0,0,1952, - 1953,5,194,0,0,1953,1954,5,432,0,0,1954,1956,5,399,0,0,1955,1957, - 3,276,138,0,1956,1955,1,0,0,0,1956,1957,1,0,0,0,1957,1958,1,0,0, - 0,1958,1959,5,400,0,0,1959,1960,3,828,414,0,1960,175,1,0,0,0,1961, - 1962,5,101,0,0,1962,1963,5,333,0,0,1963,1965,5,194,0,0,1964,1966, - 3,40,20,0,1965,1964,1,0,0,0,1965,1966,1,0,0,0,1966,1967,1,0,0,0, - 1967,1968,5,432,0,0,1968,177,1,0,0,0,1969,1970,5,58,0,0,1970,1971, - 5,155,0,0,1971,1972,3,926,463,0,1972,1973,5,224,0,0,1973,1974,5, - 329,0,0,1974,1975,3,660,330,0,1975,1976,3,292,146,0,1976,1977,5, - 17,0,0,1977,1981,5,426,0,0,1978,1979,5,387,0,0,1979,1980,5,84,0, - 0,1980,1982,5,265,0,0,1981,1978,1,0,0,0,1981,1982,1,0,0,0,1982,1985, - 1,0,0,0,1983,1984,5,150,0,0,1984,1986,3,254,127,0,1985,1983,1,0, - 0,0,1985,1986,1,0,0,0,1986,1990,1,0,0,0,1987,1988,5,154,0,0,1988, - 1989,5,329,0,0,1989,1991,3,660,330,0,1990,1987,1,0,0,0,1990,1991, - 1,0,0,0,1991,1995,1,0,0,0,1992,1993,5,238,0,0,1993,1994,5,32,0,0, - 1994,1996,3,292,146,0,1995,1992,1,0,0,0,1995,1996,1,0,0,0,1996,2001, - 1,0,0,0,1997,1999,3,250,125,0,1998,1997,1,0,0,0,1998,1999,1,0,0, - 0,1999,2000,1,0,0,0,2000,2002,3,272,136,0,2001,1998,1,0,0,0,2001, - 2002,1,0,0,0,2002,2005,1,0,0,0,2003,2004,5,189,0,0,2004,2006,5,426, - 0,0,2005,2003,1,0,0,0,2005,2006,1,0,0,0,2006,2008,1,0,0,0,2007,2009, - 3,252,126,0,2008,2007,1,0,0,0,2008,2009,1,0,0,0,2009,2011,1,0,0, - 0,2010,2012,3,218,109,0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012, - 179,1,0,0,0,2013,2014,5,101,0,0,2014,2016,5,155,0,0,2015,2017,3, - 40,20,0,2016,2015,1,0,0,0,2016,2017,1,0,0,0,2017,2018,1,0,0,0,2018, - 2019,3,926,463,0,2019,2020,5,224,0,0,2020,2021,3,660,330,0,2021, - 181,1,0,0,0,2022,2024,5,58,0,0,2023,2025,3,54,27,0,2024,2023,1,0, - 0,0,2024,2025,1,0,0,0,2025,2026,1,0,0,0,2026,2028,5,378,0,0,2027, - 2029,3,44,22,0,2028,2027,1,0,0,0,2028,2029,1,0,0,0,2029,2030,1,0, - 0,0,2030,2035,3,666,333,0,2031,2032,5,399,0,0,2032,2033,3,336,168, - 0,2033,2034,5,400,0,0,2034,2036,1,0,0,0,2035,2031,1,0,0,0,2035,2036, - 1,0,0,0,2036,2038,1,0,0,0,2037,2039,3,218,109,0,2038,2037,1,0,0, - 0,2038,2039,1,0,0,0,2039,2041,1,0,0,0,2040,2042,3,184,92,0,2041, - 2040,1,0,0,0,2041,2042,1,0,0,0,2042,2044,1,0,0,0,2043,2045,3,252, - 126,0,2044,2043,1,0,0,0,2044,2045,1,0,0,0,2045,2046,1,0,0,0,2046, - 2047,5,17,0,0,2047,2048,3,414,207,0,2048,183,1,0,0,0,2049,2050,5, - 238,0,0,2050,2056,5,224,0,0,2051,2052,5,399,0,0,2052,2057,3,282, - 141,0,2053,2054,5,316,0,0,2054,2055,5,399,0,0,2055,2057,3,228,114, - 0,2056,2051,1,0,0,0,2056,2053,1,0,0,0,2057,2058,1,0,0,0,2058,2059, - 5,400,0,0,2059,185,1,0,0,0,2060,2063,3,188,94,0,2061,2063,3,190, - 95,0,2062,2060,1,0,0,0,2062,2061,1,0,0,0,2063,187,1,0,0,0,2064,2065, - 5,42,0,0,2065,2066,5,224,0,0,2066,2067,5,399,0,0,2067,2068,3,282, - 141,0,2068,2069,5,400,0,0,2069,189,1,0,0,0,2070,2071,3,192,96,0, - 2071,2072,3,194,97,0,2072,191,1,0,0,0,2073,2074,5,98,0,0,2074,2075, - 5,224,0,0,2075,2076,5,399,0,0,2076,2077,3,282,141,0,2077,2078,5, - 400,0,0,2078,193,1,0,0,0,2079,2080,5,315,0,0,2080,2081,5,224,0,0, - 2081,2082,5,399,0,0,2082,2083,3,282,141,0,2083,2084,5,400,0,0,2084, - 195,1,0,0,0,2085,2086,5,101,0,0,2086,2088,5,378,0,0,2087,2089,3, - 40,20,0,2088,2087,1,0,0,0,2088,2089,1,0,0,0,2089,2090,1,0,0,0,2090, - 2091,3,664,332,0,2091,197,1,0,0,0,2092,2093,5,58,0,0,2093,2094,5, - 202,0,0,2094,2096,5,378,0,0,2095,2097,3,44,22,0,2096,2095,1,0,0, - 0,2096,2097,1,0,0,0,2097,2098,1,0,0,0,2098,2100,3,666,333,0,2099, - 2101,3,50,25,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101,2103,1,0, - 0,0,2102,2104,3,218,109,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104, - 2106,1,0,0,0,2105,2107,3,184,92,0,2106,2105,1,0,0,0,2106,2107,1, - 0,0,0,2107,2109,1,0,0,0,2108,2110,3,186,93,0,2109,2108,1,0,0,0,2109, - 2110,1,0,0,0,2110,2112,1,0,0,0,2111,2113,3,250,125,0,2112,2111,1, - 0,0,0,2112,2113,1,0,0,0,2113,2115,1,0,0,0,2114,2116,3,272,136,0, - 2115,2114,1,0,0,0,2115,2116,1,0,0,0,2116,2118,1,0,0,0,2117,2119, - 3,274,137,0,2118,2117,1,0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0, - 0,2120,2122,3,252,126,0,2121,2120,1,0,0,0,2121,2122,1,0,0,0,2122, - 2123,1,0,0,0,2123,2124,5,17,0,0,2124,2125,3,414,207,0,2125,199,1, - 0,0,0,2126,2127,5,101,0,0,2127,2128,5,202,0,0,2128,2130,5,378,0, - 0,2129,2131,3,40,20,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2132, - 1,0,0,0,2132,2133,3,664,332,0,2133,201,1,0,0,0,2134,2135,5,58,0, - 0,2135,2136,5,293,0,0,2136,2137,5,258,0,0,2137,2138,3,926,463,0, - 2138,2140,3,210,105,0,2139,2141,3,212,106,0,2140,2139,1,0,0,0,2140, - 2141,1,0,0,0,2141,2143,1,0,0,0,2142,2144,3,296,148,0,2143,2142,1, - 0,0,0,2143,2144,1,0,0,0,2144,2145,1,0,0,0,2145,2146,3,214,107,0, - 2146,203,1,0,0,0,2147,2148,5,101,0,0,2148,2149,5,293,0,0,2149,2150, - 5,258,0,0,2150,2151,3,926,463,0,2151,205,1,0,0,0,2152,2153,5,9,0, - 0,2153,2154,5,293,0,0,2154,2155,5,258,0,0,2155,2156,3,926,463,0, - 2156,2157,3,208,104,0,2157,207,1,0,0,0,2158,2164,3,210,105,0,2159, - 2164,3,212,106,0,2160,2164,3,296,148,0,2161,2164,3,214,107,0,2162, - 2164,5,115,0,0,2163,2158,1,0,0,0,2163,2159,1,0,0,0,2163,2160,1,0, - 0,0,2163,2161,1,0,0,0,2163,2162,1,0,0,0,2164,209,1,0,0,0,2165,2166, - 5,59,0,0,2166,2181,5,426,0,0,2167,2169,5,111,0,0,2168,2170,5,431, - 0,0,2169,2168,1,0,0,0,2169,2170,1,0,0,0,2170,2171,1,0,0,0,2171,2178, - 3,826,413,0,2172,2176,5,20,0,0,2173,2174,5,223,0,0,2174,2176,5,32, - 0,0,2175,2172,1,0,0,0,2175,2173,1,0,0,0,2176,2177,1,0,0,0,2177,2179, - 5,426,0,0,2178,2175,1,0,0,0,2178,2179,1,0,0,0,2179,2181,1,0,0,0, - 2180,2165,1,0,0,0,2180,2167,1,0,0,0,2181,211,1,0,0,0,2182,2183,5, - 116,0,0,2183,2184,5,17,0,0,2184,2185,5,426,0,0,2185,213,1,0,0,0, - 2186,2188,5,85,0,0,2187,2186,1,0,0,0,2187,2188,1,0,0,0,2188,2189, - 1,0,0,0,2189,2190,5,17,0,0,2190,2191,3,2,1,0,2191,215,1,0,0,0,2192, - 2195,3,926,463,0,2193,2195,5,426,0,0,2194,2192,1,0,0,0,2194,2193, - 1,0,0,0,2195,217,1,0,0,0,2196,2197,5,47,0,0,2197,2198,5,426,0,0, - 2198,219,1,0,0,0,2199,2200,5,183,0,0,2200,2201,5,431,0,0,2201,221, - 1,0,0,0,2202,2203,5,238,0,0,2203,2212,5,32,0,0,2204,2207,5,399,0, - 0,2205,2208,3,224,112,0,2206,2208,3,226,113,0,2207,2205,1,0,0,0, - 2207,2206,1,0,0,0,2208,2213,1,0,0,0,2209,2210,5,316,0,0,2210,2211, - 5,399,0,0,2211,2213,3,228,114,0,2212,2204,1,0,0,0,2212,2209,1,0, - 0,0,2213,2214,1,0,0,0,2214,2215,5,400,0,0,2215,223,1,0,0,0,2216, - 2221,3,350,175,0,2217,2218,5,397,0,0,2218,2220,3,350,175,0,2219, - 2217,1,0,0,0,2220,2223,1,0,0,0,2221,2219,1,0,0,0,2221,2222,1,0,0, - 0,2222,225,1,0,0,0,2223,2221,1,0,0,0,2224,2229,3,284,142,0,2225, - 2226,5,397,0,0,2226,2228,3,284,142,0,2227,2225,1,0,0,0,2228,2231, - 1,0,0,0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,227,1,0,0,0,2231, - 2229,1,0,0,0,2232,2237,3,230,115,0,2233,2234,5,397,0,0,2234,2236, - 3,230,115,0,2235,2233,1,0,0,0,2236,2239,1,0,0,0,2237,2235,1,0,0, - 0,2237,2238,1,0,0,0,2238,229,1,0,0,0,2239,2237,1,0,0,0,2240,2241, - 3,232,116,0,2241,231,1,0,0,0,2242,2261,3,284,142,0,2243,2248,3,976, - 488,0,2244,2248,3,978,489,0,2245,2248,3,982,491,0,2246,2248,3,984, - 492,0,2247,2243,1,0,0,0,2247,2244,1,0,0,0,2247,2245,1,0,0,0,2247, - 2246,1,0,0,0,2248,2249,1,0,0,0,2249,2250,5,399,0,0,2250,2251,3,284, - 142,0,2251,2252,5,400,0,0,2252,2261,1,0,0,0,2253,2254,7,13,0,0,2254, - 2255,5,399,0,0,2255,2256,5,431,0,0,2256,2257,5,397,0,0,2257,2258, - 3,284,142,0,2258,2259,5,400,0,0,2259,2261,1,0,0,0,2260,2242,1,0, - 0,0,2260,2247,1,0,0,0,2260,2253,1,0,0,0,2261,233,1,0,0,0,2262,2263, - 5,42,0,0,2263,2264,5,32,0,0,2264,2265,5,399,0,0,2265,2266,3,282, - 141,0,2266,2273,5,400,0,0,2267,2268,5,315,0,0,2268,2269,5,32,0,0, - 2269,2270,5,399,0,0,2270,2271,3,290,145,0,2271,2272,5,400,0,0,2272, - 2274,1,0,0,0,2273,2267,1,0,0,0,2273,2274,1,0,0,0,2274,2275,1,0,0, - 0,2275,2276,5,166,0,0,2276,2277,5,431,0,0,2277,2278,5,31,0,0,2278, - 235,1,0,0,0,2279,2280,5,42,0,0,2280,2281,5,166,0,0,2281,2282,5,431, - 0,0,2282,2283,5,31,0,0,2283,237,1,0,0,0,2284,2285,5,310,0,0,2285, - 2286,5,32,0,0,2286,2287,5,399,0,0,2287,2288,3,282,141,0,2288,2289, - 5,400,0,0,2289,2290,5,224,0,0,2290,2291,5,399,0,0,2291,2292,3,318, - 159,0,2292,2294,5,400,0,0,2293,2295,3,52,26,0,2294,2293,1,0,0,0, - 2294,2295,1,0,0,0,2295,239,1,0,0,0,2296,2299,3,246,123,0,2297,2299, - 3,248,124,0,2298,2296,1,0,0,0,2298,2297,1,0,0,0,2299,241,1,0,0,0, - 2300,2301,5,266,0,0,2301,2302,5,426,0,0,2302,243,1,0,0,0,2303,2304, - 5,267,0,0,2304,2305,5,426,0,0,2305,245,1,0,0,0,2306,2307,5,291,0, - 0,2307,2308,5,137,0,0,2308,2309,5,301,0,0,2309,2313,5,426,0,0,2310, - 2311,5,387,0,0,2311,2312,5,302,0,0,2312,2314,3,254,127,0,2313,2310, - 1,0,0,0,2313,2314,1,0,0,0,2314,247,1,0,0,0,2315,2316,5,291,0,0,2316, - 2317,5,137,0,0,2317,2319,5,87,0,0,2318,2320,3,262,131,0,2319,2318, - 1,0,0,0,2319,2320,1,0,0,0,2320,2322,1,0,0,0,2321,2323,3,264,132, - 0,2322,2321,1,0,0,0,2322,2323,1,0,0,0,2323,2325,1,0,0,0,2324,2326, - 3,266,133,0,2325,2324,1,0,0,0,2325,2326,1,0,0,0,2326,2328,1,0,0, - 0,2327,2329,3,268,134,0,2328,2327,1,0,0,0,2328,2329,1,0,0,0,2329, - 2331,1,0,0,0,2330,2332,3,270,135,0,2331,2330,1,0,0,0,2331,2332,1, - 0,0,0,2332,249,1,0,0,0,2333,2336,3,248,124,0,2334,2336,3,246,123, - 0,2335,2333,1,0,0,0,2335,2334,1,0,0,0,2336,251,1,0,0,0,2337,2338, - 5,332,0,0,2338,2339,3,254,127,0,2339,253,1,0,0,0,2340,2341,5,399, - 0,0,2341,2342,3,256,128,0,2342,2343,5,400,0,0,2343,255,1,0,0,0,2344, - 2349,3,258,129,0,2345,2346,5,397,0,0,2346,2348,3,258,129,0,2347, - 2345,1,0,0,0,2348,2351,1,0,0,0,2349,2347,1,0,0,0,2349,2350,1,0,0, - 0,2350,2361,1,0,0,0,2351,2349,1,0,0,0,2352,2357,3,260,130,0,2353, - 2354,5,397,0,0,2354,2356,3,260,130,0,2355,2353,1,0,0,0,2356,2359, - 1,0,0,0,2357,2355,1,0,0,0,2357,2358,1,0,0,0,2358,2361,1,0,0,0,2359, - 2357,1,0,0,0,2360,2344,1,0,0,0,2360,2352,1,0,0,0,2361,257,1,0,0, - 0,2362,2363,5,426,0,0,2363,2364,5,405,0,0,2364,2365,5,426,0,0,2365, - 259,1,0,0,0,2366,2367,5,426,0,0,2367,261,1,0,0,0,2368,2369,5,127, - 0,0,2369,2370,5,334,0,0,2370,2371,5,32,0,0,2371,2375,5,426,0,0,2372, - 2373,5,110,0,0,2373,2374,5,32,0,0,2374,2376,5,426,0,0,2375,2372, - 1,0,0,0,2375,2376,1,0,0,0,2376,263,1,0,0,0,2377,2378,5,44,0,0,2378, - 2379,5,169,0,0,2379,2380,5,334,0,0,2380,2381,5,32,0,0,2381,2382, - 5,426,0,0,2382,265,1,0,0,0,2383,2384,5,198,0,0,2384,2385,5,174,0, - 0,2385,2386,5,334,0,0,2386,2387,5,32,0,0,2387,2388,5,426,0,0,2388, - 267,1,0,0,0,2389,2390,5,186,0,0,2390,2391,5,334,0,0,2391,2392,5, - 32,0,0,2392,2393,5,426,0,0,2393,269,1,0,0,0,2394,2395,5,219,0,0, - 2395,2396,5,85,0,0,2396,2397,5,17,0,0,2397,2398,5,426,0,0,2398,271, - 1,0,0,0,2399,2400,5,321,0,0,2400,2401,5,17,0,0,2401,2402,5,160,0, - 0,2402,2403,5,426,0,0,2403,2404,5,233,0,0,2404,2409,5,426,0,0,2405, - 2406,5,159,0,0,2406,2407,5,426,0,0,2407,2408,5,232,0,0,2408,2410, - 5,426,0,0,2409,2405,1,0,0,0,2409,2410,1,0,0,0,2410,2441,1,0,0,0, - 2411,2412,5,321,0,0,2412,2413,5,32,0,0,2413,2417,5,426,0,0,2414, - 2415,5,387,0,0,2415,2416,5,302,0,0,2416,2418,3,254,127,0,2417,2414, - 1,0,0,0,2417,2418,1,0,0,0,2418,2422,1,0,0,0,2419,2420,5,321,0,0, - 2420,2421,5,17,0,0,2421,2423,3,926,463,0,2422,2419,1,0,0,0,2422, - 2423,1,0,0,0,2423,2441,1,0,0,0,2424,2425,5,321,0,0,2425,2426,5,32, - 0,0,2426,2430,3,926,463,0,2427,2428,5,387,0,0,2428,2429,5,302,0, - 0,2429,2431,3,254,127,0,2430,2427,1,0,0,0,2430,2431,1,0,0,0,2431, - 2435,1,0,0,0,2432,2433,5,321,0,0,2433,2434,5,17,0,0,2434,2436,3, - 926,463,0,2435,2432,1,0,0,0,2435,2436,1,0,0,0,2436,2441,1,0,0,0, - 2437,2438,5,321,0,0,2438,2439,5,17,0,0,2439,2441,3,926,463,0,2440, - 2399,1,0,0,0,2440,2411,1,0,0,0,2440,2424,1,0,0,0,2440,2437,1,0,0, - 0,2441,273,1,0,0,0,2442,2443,5,189,0,0,2443,2444,5,426,0,0,2444, - 275,1,0,0,0,2445,2450,3,344,172,0,2446,2447,5,397,0,0,2447,2449, - 3,344,172,0,2448,2446,1,0,0,0,2449,2452,1,0,0,0,2450,2448,1,0,0, - 0,2450,2451,1,0,0,0,2451,277,1,0,0,0,2452,2450,1,0,0,0,2453,2458, - 3,346,173,0,2454,2455,5,397,0,0,2455,2457,3,346,173,0,2456,2454, - 1,0,0,0,2457,2460,1,0,0,0,2458,2456,1,0,0,0,2458,2459,1,0,0,0,2459, - 279,1,0,0,0,2460,2458,1,0,0,0,2461,2466,3,374,187,0,2462,2463,5, - 397,0,0,2463,2465,3,374,187,0,2464,2462,1,0,0,0,2465,2468,1,0,0, - 0,2466,2464,1,0,0,0,2466,2467,1,0,0,0,2467,281,1,0,0,0,2468,2466, - 1,0,0,0,2469,2474,3,284,142,0,2470,2471,5,397,0,0,2471,2473,3,284, - 142,0,2472,2470,1,0,0,0,2473,2476,1,0,0,0,2474,2472,1,0,0,0,2474, - 2475,1,0,0,0,2475,283,1,0,0,0,2476,2474,1,0,0,0,2477,2482,3,926, - 463,0,2478,2479,5,395,0,0,2479,2481,3,926,463,0,2480,2478,1,0,0, - 0,2481,2484,1,0,0,0,2482,2480,1,0,0,0,2482,2483,1,0,0,0,2483,2487, - 1,0,0,0,2484,2482,1,0,0,0,2485,2487,4,142,0,0,2486,2477,1,0,0,0, - 2486,2485,1,0,0,0,2487,285,1,0,0,0,2488,2489,3,926,463,0,2489,287, - 1,0,0,0,2490,2500,3,284,142,0,2491,2496,5,395,0,0,2492,2497,5,104, - 0,0,2493,2497,5,175,0,0,2494,2497,5,375,0,0,2495,2497,3,926,463, - 0,2496,2492,1,0,0,0,2496,2493,1,0,0,0,2496,2494,1,0,0,0,2496,2495, - 1,0,0,0,2497,2499,1,0,0,0,2498,2491,1,0,0,0,2499,2502,1,0,0,0,2500, - 2498,1,0,0,0,2500,2501,1,0,0,0,2501,289,1,0,0,0,2502,2500,1,0,0, - 0,2503,2508,3,334,167,0,2504,2505,5,397,0,0,2505,2507,3,334,167, - 0,2506,2504,1,0,0,0,2507,2510,1,0,0,0,2508,2506,1,0,0,0,2508,2509, - 1,0,0,0,2509,291,1,0,0,0,2510,2508,1,0,0,0,2511,2512,5,399,0,0,2512, - 2513,3,282,141,0,2513,2514,5,400,0,0,2514,293,1,0,0,0,2515,2517, - 3,296,148,0,2516,2518,3,298,149,0,2517,2516,1,0,0,0,2517,2518,1, - 0,0,0,2518,2521,1,0,0,0,2519,2521,3,300,150,0,2520,2515,1,0,0,0, - 2520,2519,1,0,0,0,2521,295,1,0,0,0,2522,2525,3,970,485,0,2523,2525, - 3,972,486,0,2524,2522,1,0,0,0,2524,2523,1,0,0,0,2525,297,1,0,0,0, - 2526,2527,7,14,0,0,2527,299,1,0,0,0,2528,2532,5,109,0,0,2529,2530, - 5,216,0,0,2530,2532,5,109,0,0,2531,2528,1,0,0,0,2531,2529,1,0,0, - 0,2532,301,1,0,0,0,2533,2534,7,15,0,0,2534,303,1,0,0,0,2535,2536, - 5,55,0,0,2536,2538,3,926,463,0,2537,2535,1,0,0,0,2537,2538,1,0,0, - 0,2538,2539,1,0,0,0,2539,2541,3,308,154,0,2540,2542,3,370,185,0, - 2541,2540,1,0,0,0,2541,2542,1,0,0,0,2542,305,1,0,0,0,2543,2544,5, - 55,0,0,2544,2545,3,926,463,0,2545,2547,3,308,154,0,2546,2548,3,372, - 186,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,307,1,0,0,0,2549, - 2552,3,310,155,0,2550,2552,3,312,156,0,2551,2549,1,0,0,0,2551,2550, - 1,0,0,0,2552,309,1,0,0,0,2553,2554,3,368,184,0,2554,2555,3,292,146, - 0,2555,311,1,0,0,0,2556,2557,5,40,0,0,2557,2558,5,399,0,0,2558,2559, - 3,828,414,0,2559,2560,5,400,0,0,2560,313,1,0,0,0,2561,2562,5,55, - 0,0,2562,2564,3,926,463,0,2563,2561,1,0,0,0,2563,2564,1,0,0,0,2564, - 2565,1,0,0,0,2565,2566,5,136,0,0,2566,2567,5,173,0,0,2567,2568,3, - 292,146,0,2568,2569,5,269,0,0,2569,2570,3,660,330,0,2570,2572,3, - 292,146,0,2571,2573,3,370,185,0,2572,2571,1,0,0,0,2572,2573,1,0, - 0,0,2573,315,1,0,0,0,2574,2575,5,55,0,0,2575,2576,3,926,463,0,2576, - 2577,5,136,0,0,2577,2578,5,173,0,0,2578,2579,3,292,146,0,2579,2580, - 5,269,0,0,2580,2581,3,660,330,0,2581,2583,3,292,146,0,2582,2584, - 3,372,186,0,2583,2582,1,0,0,0,2583,2584,1,0,0,0,2584,317,1,0,0,0, - 2585,2588,3,324,162,0,2586,2588,3,320,160,0,2587,2585,1,0,0,0,2587, - 2586,1,0,0,0,2588,319,1,0,0,0,2589,2594,3,322,161,0,2590,2591,5, - 397,0,0,2591,2593,3,322,161,0,2592,2590,1,0,0,0,2593,2596,1,0,0, - 0,2594,2592,1,0,0,0,2594,2595,1,0,0,0,2595,321,1,0,0,0,2596,2594, - 1,0,0,0,2597,2598,5,399,0,0,2598,2599,3,324,162,0,2599,2600,5,400, - 0,0,2600,323,1,0,0,0,2601,2606,3,326,163,0,2602,2603,5,397,0,0,2603, - 2605,3,326,163,0,2604,2602,1,0,0,0,2605,2608,1,0,0,0,2606,2604,1, - 0,0,0,2606,2607,1,0,0,0,2607,325,1,0,0,0,2608,2606,1,0,0,0,2609, - 2610,3,804,402,0,2610,327,1,0,0,0,2611,2614,3,326,163,0,2612,2614, - 3,322,161,0,2613,2611,1,0,0,0,2613,2612,1,0,0,0,2614,329,1,0,0,0, - 2615,2616,7,16,0,0,2616,331,1,0,0,0,2617,2618,5,220,0,0,2618,2619, - 7,17,0,0,2619,333,1,0,0,0,2620,2622,3,284,142,0,2621,2623,3,330, - 165,0,2622,2621,1,0,0,0,2622,2623,1,0,0,0,2623,2625,1,0,0,0,2624, - 2626,3,332,166,0,2625,2624,1,0,0,0,2625,2626,1,0,0,0,2626,335,1, - 0,0,0,2627,2632,3,338,169,0,2628,2629,5,397,0,0,2629,2631,3,338, - 169,0,2630,2628,1,0,0,0,2631,2634,1,0,0,0,2632,2630,1,0,0,0,2632, - 2633,1,0,0,0,2633,337,1,0,0,0,2634,2632,1,0,0,0,2635,2638,3,286, - 143,0,2636,2637,5,47,0,0,2637,2639,5,426,0,0,2638,2636,1,0,0,0,2638, - 2639,1,0,0,0,2639,339,1,0,0,0,2640,2641,7,16,0,0,2641,341,1,0,0, - 0,2642,2645,3,284,142,0,2643,2645,3,828,414,0,2644,2642,1,0,0,0, - 2644,2643,1,0,0,0,2645,2647,1,0,0,0,2646,2648,3,340,170,0,2647,2646, - 1,0,0,0,2647,2648,1,0,0,0,2648,2650,1,0,0,0,2649,2651,3,332,166, - 0,2650,2649,1,0,0,0,2650,2651,1,0,0,0,2651,343,1,0,0,0,2652,2653, - 3,286,143,0,2653,2656,3,376,188,0,2654,2655,5,47,0,0,2655,2657,5, - 426,0,0,2656,2654,1,0,0,0,2656,2657,1,0,0,0,2657,345,1,0,0,0,2658, - 2661,3,348,174,0,2659,2661,3,350,175,0,2660,2658,1,0,0,0,2660,2659, - 1,0,0,0,2661,347,1,0,0,0,2662,2665,3,314,157,0,2663,2665,3,304,152, - 0,2664,2662,1,0,0,0,2664,2663,1,0,0,0,2665,349,1,0,0,0,2666,2667, - 3,286,143,0,2667,2669,3,376,188,0,2668,2670,3,352,176,0,2669,2668, - 1,0,0,0,2669,2670,1,0,0,0,2670,2673,1,0,0,0,2671,2672,5,47,0,0,2672, - 2674,5,426,0,0,2673,2671,1,0,0,0,2673,2674,1,0,0,0,2674,351,1,0, - 0,0,2675,2678,3,354,177,0,2676,2678,3,356,178,0,2677,2675,1,0,0, - 0,2677,2676,1,0,0,0,2678,353,1,0,0,0,2679,2680,5,55,0,0,2680,2682, - 3,926,463,0,2681,2679,1,0,0,0,2681,2682,1,0,0,0,2682,2683,1,0,0, - 0,2683,2684,5,269,0,0,2684,2685,3,660,330,0,2685,2686,5,399,0,0, - 2686,2687,3,284,142,0,2687,2689,5,400,0,0,2688,2690,3,370,185,0, - 2689,2688,1,0,0,0,2689,2690,1,0,0,0,2690,355,1,0,0,0,2691,2692,5, - 55,0,0,2692,2694,3,926,463,0,2693,2691,1,0,0,0,2693,2694,1,0,0,0, - 2694,2695,1,0,0,0,2695,2697,3,364,182,0,2696,2698,3,370,185,0,2697, - 2696,1,0,0,0,2697,2698,1,0,0,0,2698,357,1,0,0,0,2699,2702,3,360, - 180,0,2700,2702,3,362,181,0,2701,2699,1,0,0,0,2701,2700,1,0,0,0, - 2702,359,1,0,0,0,2703,2704,5,55,0,0,2704,2706,3,926,463,0,2705,2703, - 1,0,0,0,2705,2706,1,0,0,0,2706,2707,1,0,0,0,2707,2708,5,269,0,0, - 2708,2709,3,660,330,0,2709,2710,5,399,0,0,2710,2711,3,284,142,0, - 2711,2713,5,400,0,0,2712,2714,3,372,186,0,2713,2712,1,0,0,0,2713, - 2714,1,0,0,0,2714,361,1,0,0,0,2715,2716,5,55,0,0,2716,2718,3,926, - 463,0,2717,2715,1,0,0,0,2717,2718,1,0,0,0,2718,2719,1,0,0,0,2719, - 2721,3,364,182,0,2720,2722,3,372,186,0,2721,2720,1,0,0,0,2721,2722, - 1,0,0,0,2722,363,1,0,0,0,2723,2724,5,216,0,0,2724,2730,5,219,0,0, - 2725,2726,5,83,0,0,2726,2730,3,366,183,0,2727,2730,3,312,156,0,2728, - 2730,3,368,184,0,2729,2723,1,0,0,0,2729,2725,1,0,0,0,2729,2727,1, - 0,0,0,2729,2728,1,0,0,0,2730,365,1,0,0,0,2731,2735,3,804,402,0,2732, - 2735,3,776,388,0,2733,2735,3,790,395,0,2734,2731,1,0,0,0,2734,2732, - 1,0,0,0,2734,2733,1,0,0,0,2735,367,1,0,0,0,2736,2737,5,251,0,0,2737, - 2740,5,173,0,0,2738,2740,5,358,0,0,2739,2736,1,0,0,0,2739,2738,1, - 0,0,0,2740,369,1,0,0,0,2741,2743,3,294,147,0,2742,2744,3,302,151, - 0,2743,2742,1,0,0,0,2743,2744,1,0,0,0,2744,371,1,0,0,0,2745,2747, - 3,294,147,0,2746,2748,3,302,151,0,2747,2746,1,0,0,0,2747,2748,1, - 0,0,0,2748,373,1,0,0,0,2749,2750,3,286,143,0,2750,2751,5,396,0,0, - 2751,2754,3,376,188,0,2752,2753,5,47,0,0,2753,2755,5,426,0,0,2754, - 2752,1,0,0,0,2754,2755,1,0,0,0,2755,375,1,0,0,0,2756,2757,3,380, - 190,0,2757,377,1,0,0,0,2758,2763,3,376,188,0,2759,2760,5,397,0,0, - 2760,2762,3,376,188,0,2761,2759,1,0,0,0,2762,2765,1,0,0,0,2763,2761, - 1,0,0,0,2763,2764,1,0,0,0,2764,379,1,0,0,0,2765,2763,1,0,0,0,2766, - 2772,3,382,191,0,2767,2772,3,384,192,0,2768,2772,3,386,193,0,2769, - 2772,3,388,194,0,2770,2772,3,390,195,0,2771,2766,1,0,0,0,2771,2767, - 1,0,0,0,2771,2768,1,0,0,0,2771,2769,1,0,0,0,2771,2770,1,0,0,0,2772, - 381,1,0,0,0,2773,2811,5,340,0,0,2774,2811,5,311,0,0,2775,2811,5, - 162,0,0,2776,2811,5,163,0,0,2777,2811,5,26,0,0,2778,2811,5,28,0, - 0,2779,2811,5,131,0,0,2780,2811,5,264,0,0,2781,2783,5,100,0,0,2782, - 2784,5,248,0,0,2783,2782,1,0,0,0,2783,2784,1,0,0,0,2784,2811,1,0, - 0,0,2785,2811,5,71,0,0,2786,2811,5,72,0,0,2787,2811,5,337,0,0,2788, - 2811,5,338,0,0,2789,2790,5,337,0,0,2790,2791,5,387,0,0,2791,2792, - 5,188,0,0,2792,2793,5,336,0,0,2793,2811,5,394,0,0,2794,2811,5,323, - 0,0,2795,2811,5,27,0,0,2796,2804,3,990,495,0,2797,2798,5,399,0,0, - 2798,2801,5,431,0,0,2799,2800,5,397,0,0,2800,2802,5,431,0,0,2801, - 2799,1,0,0,0,2801,2802,1,0,0,0,2802,2803,1,0,0,0,2803,2805,5,400, - 0,0,2804,2797,1,0,0,0,2804,2805,1,0,0,0,2805,2811,1,0,0,0,2806,2807, - 7,18,0,0,2807,2808,5,399,0,0,2808,2809,5,431,0,0,2809,2811,5,400, - 0,0,2810,2773,1,0,0,0,2810,2774,1,0,0,0,2810,2775,1,0,0,0,2810,2776, - 1,0,0,0,2810,2777,1,0,0,0,2810,2778,1,0,0,0,2810,2779,1,0,0,0,2810, - 2780,1,0,0,0,2810,2781,1,0,0,0,2810,2785,1,0,0,0,2810,2786,1,0,0, - 0,2810,2787,1,0,0,0,2810,2788,1,0,0,0,2810,2789,1,0,0,0,2810,2794, - 1,0,0,0,2810,2795,1,0,0,0,2810,2796,1,0,0,0,2810,2806,1,0,0,0,2811, - 383,1,0,0,0,2812,2813,5,16,0,0,2813,2814,5,409,0,0,2814,2815,3,380, - 190,0,2815,2816,5,411,0,0,2816,385,1,0,0,0,2817,2818,5,324,0,0,2818, - 2819,5,409,0,0,2819,2820,3,280,140,0,2820,2821,5,411,0,0,2821,387, - 1,0,0,0,2822,2823,5,198,0,0,2823,2824,5,409,0,0,2824,2825,3,382, - 191,0,2825,2826,5,397,0,0,2826,2827,3,380,190,0,2827,2828,5,411, - 0,0,2828,389,1,0,0,0,2829,2830,5,357,0,0,2830,2831,5,409,0,0,2831, - 2832,3,378,189,0,2832,2833,5,411,0,0,2833,391,1,0,0,0,2834,2836, - 7,19,0,0,2835,2837,7,20,0,0,2836,2835,1,0,0,0,2836,2837,1,0,0,0, - 2837,393,1,0,0,0,2838,2840,3,398,199,0,2839,2838,1,0,0,0,2839,2840, - 1,0,0,0,2840,2841,1,0,0,0,2841,2842,3,396,198,0,2842,395,1,0,0,0, - 2843,2846,3,402,201,0,2844,2846,3,406,203,0,2845,2843,1,0,0,0,2845, - 2844,1,0,0,0,2846,397,1,0,0,0,2847,2848,5,387,0,0,2848,2853,3,400, - 200,0,2849,2850,5,397,0,0,2850,2852,3,400,200,0,2851,2849,1,0,0, - 0,2852,2855,1,0,0,0,2853,2851,1,0,0,0,2853,2854,1,0,0,0,2854,399, - 1,0,0,0,2855,2853,1,0,0,0,2856,2861,3,926,463,0,2857,2858,5,399, - 0,0,2858,2859,3,282,141,0,2859,2860,5,400,0,0,2860,2862,1,0,0,0, - 2861,2857,1,0,0,0,2861,2862,1,0,0,0,2862,2863,1,0,0,0,2863,2864, - 5,17,0,0,2864,2865,5,399,0,0,2865,2866,3,394,197,0,2866,2867,5,400, - 0,0,2867,401,1,0,0,0,2868,2874,3,404,202,0,2869,2870,3,392,196,0, - 2870,2871,3,404,202,0,2871,2873,1,0,0,0,2872,2869,1,0,0,0,2873,2876, - 1,0,0,0,2874,2872,1,0,0,0,2874,2875,1,0,0,0,2875,403,1,0,0,0,2876, - 2874,1,0,0,0,2877,2878,3,620,310,0,2878,2879,3,416,208,0,2879,2881, - 3,692,346,0,2880,2882,3,638,319,0,2881,2880,1,0,0,0,2881,2882,1, - 0,0,0,2882,2884,1,0,0,0,2883,2885,3,676,338,0,2884,2883,1,0,0,0, - 2884,2885,1,0,0,0,2885,2887,1,0,0,0,2886,2888,3,724,362,0,2887,2886, - 1,0,0,0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2891,3,740,370, - 0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,2893,1,0,0,0,2892,2894, - 3,708,354,0,2893,2892,1,0,0,0,2893,2894,1,0,0,0,2894,2896,1,0,0, - 0,2895,2897,3,742,371,0,2896,2895,1,0,0,0,2896,2897,1,0,0,0,2897, - 2899,1,0,0,0,2898,2900,3,764,382,0,2899,2898,1,0,0,0,2899,2900,1, - 0,0,0,2900,2902,1,0,0,0,2901,2903,3,766,383,0,2902,2901,1,0,0,0, - 2902,2903,1,0,0,0,2903,2905,1,0,0,0,2904,2906,3,770,385,0,2905,2904, - 1,0,0,0,2905,2906,1,0,0,0,2906,2908,1,0,0,0,2907,2909,3,772,386, - 0,2908,2907,1,0,0,0,2908,2909,1,0,0,0,2909,2911,1,0,0,0,2910,2912, - 3,420,210,0,2911,2910,1,0,0,0,2911,2912,1,0,0,0,2912,2949,1,0,0, - 0,2913,2914,3,620,310,0,2914,2916,3,692,346,0,2915,2917,3,638,319, - 0,2916,2915,1,0,0,0,2916,2917,1,0,0,0,2917,2919,1,0,0,0,2918,2920, - 3,676,338,0,2919,2918,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0, - 0,2921,2923,3,724,362,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923, - 2925,1,0,0,0,2924,2926,3,740,370,0,2925,2924,1,0,0,0,2925,2926,1, - 0,0,0,2926,2928,1,0,0,0,2927,2929,3,708,354,0,2928,2927,1,0,0,0, - 2928,2929,1,0,0,0,2929,2931,1,0,0,0,2930,2932,3,742,371,0,2931,2930, - 1,0,0,0,2931,2932,1,0,0,0,2932,2934,1,0,0,0,2933,2935,3,764,382, - 0,2934,2933,1,0,0,0,2934,2935,1,0,0,0,2935,2937,1,0,0,0,2936,2938, - 3,766,383,0,2937,2936,1,0,0,0,2937,2938,1,0,0,0,2938,2940,1,0,0, - 0,2939,2941,3,770,385,0,2940,2939,1,0,0,0,2940,2941,1,0,0,0,2941, - 2943,1,0,0,0,2942,2944,3,772,386,0,2943,2942,1,0,0,0,2943,2944,1, - 0,0,0,2944,2946,1,0,0,0,2945,2947,3,420,210,0,2946,2945,1,0,0,0, - 2946,2947,1,0,0,0,2947,2949,1,0,0,0,2948,2877,1,0,0,0,2948,2913, - 1,0,0,0,2949,405,1,0,0,0,2950,2951,3,416,208,0,2951,2952,3,410,205, - 0,2952,2955,1,0,0,0,2953,2955,3,410,205,0,2954,2950,1,0,0,0,2954, - 2953,1,0,0,0,2955,407,1,0,0,0,2956,2958,3,692,346,0,2957,2959,3, - 620,310,0,2958,2957,1,0,0,0,2958,2959,1,0,0,0,2959,2961,1,0,0,0, - 2960,2962,3,676,338,0,2961,2960,1,0,0,0,2961,2962,1,0,0,0,2962,2964, - 1,0,0,0,2963,2965,3,724,362,0,2964,2963,1,0,0,0,2964,2965,1,0,0, - 0,2965,2967,1,0,0,0,2966,2968,3,740,370,0,2967,2966,1,0,0,0,2967, - 2968,1,0,0,0,2968,2970,1,0,0,0,2969,2971,3,708,354,0,2970,2969,1, - 0,0,0,2970,2971,1,0,0,0,2971,2973,1,0,0,0,2972,2974,3,742,371,0, - 2973,2972,1,0,0,0,2973,2974,1,0,0,0,2974,2981,1,0,0,0,2975,2976, - 5,399,0,0,2976,2977,3,410,205,0,2977,2978,5,400,0,0,2978,2981,1, - 0,0,0,2979,2981,3,680,340,0,2980,2956,1,0,0,0,2980,2975,1,0,0,0, - 2980,2979,1,0,0,0,2981,409,1,0,0,0,2982,2984,3,408,204,0,2983,2985, - 3,412,206,0,2984,2983,1,0,0,0,2984,2985,1,0,0,0,2985,2987,1,0,0, - 0,2986,2988,3,764,382,0,2987,2986,1,0,0,0,2987,2988,1,0,0,0,2988, - 2990,1,0,0,0,2989,2991,3,766,383,0,2990,2989,1,0,0,0,2990,2991,1, - 0,0,0,2991,2993,1,0,0,0,2992,2994,3,770,385,0,2993,2992,1,0,0,0, - 2993,2994,1,0,0,0,2994,2996,1,0,0,0,2995,2997,3,772,386,0,2996,2995, - 1,0,0,0,2996,2997,1,0,0,0,2997,2999,1,0,0,0,2998,3000,3,420,210, - 0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,411,1,0,0,0,3001,3002, - 3,392,196,0,3002,3003,3,408,204,0,3003,3005,1,0,0,0,3004,3001,1, - 0,0,0,3005,3006,1,0,0,0,3006,3004,1,0,0,0,3006,3007,1,0,0,0,3007, - 413,1,0,0,0,3008,3010,3,398,199,0,3009,3008,1,0,0,0,3009,3010,1, - 0,0,0,3010,3011,1,0,0,0,3011,3012,3,410,205,0,3012,415,1,0,0,0,3013, - 3030,5,161,0,0,3014,3015,5,235,0,0,3015,3017,3,418,209,0,3016,3018, - 3,44,22,0,3017,3016,1,0,0,0,3017,3018,1,0,0,0,3018,3031,1,0,0,0, - 3019,3021,5,166,0,0,3020,3022,5,329,0,0,3021,3020,1,0,0,0,3021,3022, - 1,0,0,0,3022,3023,1,0,0,0,3023,3028,3,910,455,0,3024,3025,5,399, - 0,0,3025,3026,3,282,141,0,3026,3027,5,400,0,0,3027,3029,1,0,0,0, - 3028,3024,1,0,0,0,3028,3029,1,0,0,0,3029,3031,1,0,0,0,3030,3014, - 1,0,0,0,3030,3019,1,0,0,0,3031,417,1,0,0,0,3032,3034,5,188,0,0,3033, - 3032,1,0,0,0,3033,3034,1,0,0,0,3034,3035,1,0,0,0,3035,3036,5,93, - 0,0,3036,3038,5,426,0,0,3037,3039,3,250,125,0,3038,3037,1,0,0,0, - 3038,3039,1,0,0,0,3039,3041,1,0,0,0,3040,3042,3,272,136,0,3041,3040, - 1,0,0,0,3041,3042,1,0,0,0,3042,3046,1,0,0,0,3043,3044,5,329,0,0, - 3044,3046,3,910,455,0,3045,3033,1,0,0,0,3045,3043,1,0,0,0,3046,419, - 1,0,0,0,3047,3056,5,185,0,0,3048,3049,5,431,0,0,3049,3051,5,397, - 0,0,3050,3048,1,0,0,0,3050,3051,1,0,0,0,3051,3052,1,0,0,0,3052,3057, - 5,431,0,0,3053,3054,5,431,0,0,3054,3055,5,223,0,0,3055,3057,5,431, - 0,0,3056,3050,1,0,0,0,3056,3053,1,0,0,0,3057,421,1,0,0,0,3058,3059, - 5,86,0,0,3059,3060,5,139,0,0,3060,3062,3,660,330,0,3061,3063,3,676, - 338,0,3062,3061,1,0,0,0,3062,3063,1,0,0,0,3063,423,1,0,0,0,3064, - 3065,3,284,142,0,3065,3066,5,405,0,0,3066,3067,3,426,213,0,3067, - 425,1,0,0,0,3068,3071,3,614,307,0,3069,3071,3,848,424,0,3070,3068, - 1,0,0,0,3070,3069,1,0,0,0,3071,427,1,0,0,0,3072,3073,5,304,0,0,3073, - 3078,3,424,212,0,3074,3075,5,397,0,0,3075,3077,3,424,212,0,3076, - 3074,1,0,0,0,3077,3080,1,0,0,0,3078,3076,1,0,0,0,3078,3079,1,0,0, - 0,3079,429,1,0,0,0,3080,3078,1,0,0,0,3081,3082,5,365,0,0,3082,3083, - 3,660,330,0,3083,3085,3,428,214,0,3084,3086,3,676,338,0,3085,3084, - 1,0,0,0,3085,3086,1,0,0,0,3086,431,1,0,0,0,3087,3092,3,434,217,0, - 3088,3092,3,444,222,0,3089,3092,3,446,223,0,3090,3092,3,448,224, - 0,3091,3087,1,0,0,0,3091,3088,1,0,0,0,3091,3089,1,0,0,0,3091,3090, - 1,0,0,0,3092,433,1,0,0,0,3093,3094,5,318,0,0,3094,3103,5,344,0,0, - 3095,3100,3,436,218,0,3096,3097,5,397,0,0,3097,3099,3,436,218,0, - 3098,3096,1,0,0,0,3099,3102,1,0,0,0,3100,3098,1,0,0,0,3100,3101, - 1,0,0,0,3101,3104,1,0,0,0,3102,3100,1,0,0,0,3103,3095,1,0,0,0,3103, - 3104,1,0,0,0,3104,435,1,0,0,0,3105,3108,3,440,220,0,3106,3108,3, - 438,219,0,3107,3105,1,0,0,0,3107,3106,1,0,0,0,3108,437,1,0,0,0,3109, - 3110,5,261,0,0,3110,3111,7,21,0,0,3111,439,1,0,0,0,3112,3113,5,168, - 0,0,3113,3114,5,182,0,0,3114,3115,3,442,221,0,3115,441,1,0,0,0,3116, - 3117,5,312,0,0,3117,443,1,0,0,0,3118,3120,5,48,0,0,3119,3121,5,389, - 0,0,3120,3119,1,0,0,0,3120,3121,1,0,0,0,3121,445,1,0,0,0,3122,3124, - 5,289,0,0,3123,3125,5,389,0,0,3124,3123,1,0,0,0,3124,3125,1,0,0, - 0,3125,447,1,0,0,0,3126,3127,5,304,0,0,3127,3128,5,22,0,0,3128,3129, - 3,908,454,0,3129,449,1,0,0,0,3130,3131,5,1,0,0,3131,3133,5,346,0, - 0,3132,3134,5,431,0,0,3133,3132,1,0,0,0,3134,3135,1,0,0,0,3135,3133, - 1,0,0,0,3135,3136,1,0,0,0,3136,451,1,0,0,0,3137,3138,5,1,0,0,3138, - 3140,5,50,0,0,3139,3141,5,431,0,0,3140,3139,1,0,0,0,3141,3142,1, - 0,0,0,3142,3140,1,0,0,0,3142,3143,1,0,0,0,3143,453,1,0,0,0,3144, - 3146,5,203,0,0,3145,3147,5,436,0,0,3146,3145,1,0,0,0,3146,3147,1, - 0,0,0,3147,3148,1,0,0,0,3148,3149,5,166,0,0,3149,3154,3,660,330, - 0,3150,3152,5,17,0,0,3151,3150,1,0,0,0,3151,3152,1,0,0,0,3152,3153, - 1,0,0,0,3153,3155,3,926,463,0,3154,3151,1,0,0,0,3154,3155,1,0,0, - 0,3155,3156,1,0,0,0,3156,3157,5,370,0,0,3157,3158,3,628,314,0,3158, - 3159,5,224,0,0,3159,3160,3,828,414,0,3160,3161,3,456,228,0,3161, - 455,1,0,0,0,3162,3165,3,460,230,0,3163,3165,3,462,231,0,3164,3162, - 1,0,0,0,3164,3163,1,0,0,0,3165,3168,1,0,0,0,3166,3164,1,0,0,0,3166, - 3167,1,0,0,0,3167,3170,1,0,0,0,3168,3166,1,0,0,0,3169,3171,3,458, - 229,0,3170,3169,1,0,0,0,3170,3171,1,0,0,0,3171,457,1,0,0,0,3172, - 3173,5,383,0,0,3173,3174,5,216,0,0,3174,3177,5,201,0,0,3175,3176, - 5,11,0,0,3176,3178,3,828,414,0,3177,3175,1,0,0,0,3177,3178,1,0,0, - 0,3178,3179,1,0,0,0,3179,3180,5,335,0,0,3180,3182,5,161,0,0,3181, - 3183,3,292,146,0,3182,3181,1,0,0,0,3182,3183,1,0,0,0,3183,3184,1, - 0,0,0,3184,3185,5,374,0,0,3185,3186,3,686,343,0,3186,459,1,0,0,0, - 3187,3188,5,383,0,0,3188,3189,5,201,0,0,3189,3190,5,11,0,0,3190, - 3191,3,828,414,0,3191,3192,5,335,0,0,3192,3193,3,464,232,0,3193, - 461,1,0,0,0,3194,3195,5,383,0,0,3195,3196,5,201,0,0,3196,3197,5, - 335,0,0,3197,3198,3,464,232,0,3198,463,1,0,0,0,3199,3200,5,365,0, - 0,3200,3203,3,428,214,0,3201,3203,5,86,0,0,3202,3199,1,0,0,0,3202, - 3201,1,0,0,0,3203,465,1,0,0,0,3204,3205,5,176,0,0,3205,3207,5,258, - 0,0,3206,3208,5,426,0,0,3207,3206,1,0,0,0,3208,3209,1,0,0,0,3209, - 3207,1,0,0,0,3209,3210,1,0,0,0,3210,467,1,0,0,0,3211,3212,5,51,0, - 0,3212,3213,5,405,0,0,3213,3214,5,431,0,0,3214,469,1,0,0,0,3215, - 3216,5,246,0,0,3216,3217,5,426,0,0,3217,471,1,0,0,0,3218,3219,5, - 352,0,0,3219,3220,5,426,0,0,3220,473,1,0,0,0,3221,3222,5,320,0,0, - 3222,3223,5,426,0,0,3223,475,1,0,0,0,3224,3248,5,9,0,0,3225,3226, - 5,329,0,0,3226,3227,3,660,330,0,3227,3228,3,478,239,0,3228,3249, - 1,0,0,0,3229,3230,5,378,0,0,3230,3232,3,664,332,0,3231,3233,5,17, - 0,0,3232,3231,1,0,0,0,3232,3233,1,0,0,0,3233,3234,1,0,0,0,3234,3235, - 3,484,242,0,3235,3249,1,0,0,0,3236,3237,5,202,0,0,3237,3238,5,378, - 0,0,3238,3239,3,664,332,0,3239,3240,3,486,243,0,3240,3249,1,0,0, - 0,3241,3242,3,92,46,0,3242,3243,3,492,246,0,3243,3249,1,0,0,0,3244, - 3245,5,69,0,0,3245,3249,3,588,294,0,3246,3247,5,155,0,0,3247,3249, - 3,584,292,0,3248,3225,1,0,0,0,3248,3229,1,0,0,0,3248,3236,1,0,0, - 0,3248,3241,1,0,0,0,3248,3244,1,0,0,0,3248,3246,1,0,0,0,3249,477, - 1,0,0,0,3250,3272,3,502,251,0,3251,3272,3,534,267,0,3252,3272,3, - 536,268,0,3253,3272,3,522,261,0,3254,3272,3,526,263,0,3255,3272, - 3,528,264,0,3256,3272,3,530,265,0,3257,3272,3,538,269,0,3258,3272, - 3,560,280,0,3259,3272,3,562,281,0,3260,3272,3,482,241,0,3261,3272, - 3,512,256,0,3262,3272,3,506,253,0,3263,3272,3,480,240,0,3264,3266, - 3,912,456,0,3265,3264,1,0,0,0,3265,3266,1,0,0,0,3266,3267,1,0,0, - 0,3267,3272,3,480,240,0,3268,3272,3,578,289,0,3269,3272,3,580,290, - 0,3270,3272,3,582,291,0,3271,3250,1,0,0,0,3271,3251,1,0,0,0,3271, - 3252,1,0,0,0,3271,3253,1,0,0,0,3271,3254,1,0,0,0,3271,3255,1,0,0, - 0,3271,3256,1,0,0,0,3271,3257,1,0,0,0,3271,3258,1,0,0,0,3271,3259, - 1,0,0,0,3271,3260,1,0,0,0,3271,3261,1,0,0,0,3271,3262,1,0,0,0,3271, - 3263,1,0,0,0,3271,3265,1,0,0,0,3271,3268,1,0,0,0,3271,3269,1,0,0, - 0,3271,3270,1,0,0,0,3272,479,1,0,0,0,3273,3289,3,546,273,0,3274, - 3289,3,558,279,0,3275,3289,3,568,284,0,3276,3289,3,542,271,0,3277, - 3289,3,564,282,0,3278,3289,3,570,285,0,3279,3289,3,550,275,0,3280, - 3289,3,548,274,0,3281,3289,3,576,288,0,3282,3289,3,516,258,0,3283, - 3289,3,518,259,0,3284,3289,3,514,257,0,3285,3289,3,504,252,0,3286, - 3289,3,508,254,0,3287,3289,3,510,255,0,3288,3273,1,0,0,0,3288,3274, - 1,0,0,0,3288,3275,1,0,0,0,3288,3276,1,0,0,0,3288,3277,1,0,0,0,3288, - 3278,1,0,0,0,3288,3279,1,0,0,0,3288,3280,1,0,0,0,3288,3281,1,0,0, - 0,3288,3282,1,0,0,0,3288,3283,1,0,0,0,3288,3284,1,0,0,0,3288,3285, - 1,0,0,0,3288,3286,1,0,0,0,3288,3287,1,0,0,0,3289,481,1,0,0,0,3290, - 3291,5,237,0,0,3291,3292,5,45,0,0,3292,3293,5,399,0,0,3293,3294, - 3,344,172,0,3294,3295,5,400,0,0,3295,483,1,0,0,0,3296,3302,3,540, - 270,0,3297,3302,3,502,251,0,3298,3302,3,522,261,0,3299,3302,3,536, - 268,0,3300,3302,3,414,207,0,3301,3296,1,0,0,0,3301,3297,1,0,0,0, - 3301,3298,1,0,0,0,3301,3299,1,0,0,0,3301,3300,1,0,0,0,3302,485,1, - 0,0,0,3303,3306,3,488,244,0,3304,3306,3,490,245,0,3305,3303,1,0, - 0,0,3305,3304,1,0,0,0,3306,487,1,0,0,0,3307,3310,3,48,24,0,3308, - 3310,3,50,25,0,3309,3307,1,0,0,0,3309,3308,1,0,0,0,3310,489,1,0, - 0,0,3311,3312,5,265,0,0,3312,491,1,0,0,0,3313,3317,3,494,247,0,3314, - 3317,3,496,248,0,3315,3317,3,498,249,0,3316,3313,1,0,0,0,3316,3314, - 1,0,0,0,3316,3315,1,0,0,0,3317,493,1,0,0,0,3318,3319,3,654,327,0, - 3319,3320,5,304,0,0,3320,3321,5,76,0,0,3321,3322,3,62,31,0,3322, - 495,1,0,0,0,3323,3324,3,654,327,0,3324,3325,5,304,0,0,3325,3326, - 5,236,0,0,3326,3327,3,150,75,0,3327,497,1,0,0,0,3328,3329,3,654, - 327,0,3329,3330,5,304,0,0,3330,3331,7,22,0,0,3331,3332,5,426,0,0, - 3332,499,1,0,0,0,3333,3334,3,654,327,0,3334,3335,5,304,0,0,3335, - 3336,5,196,0,0,3336,3337,5,426,0,0,3337,501,1,0,0,0,3338,3339,5, - 274,0,0,3339,3340,5,341,0,0,3340,3341,3,662,331,0,3341,503,1,0,0, - 0,3342,3345,5,4,0,0,3343,3345,5,278,0,0,3344,3342,1,0,0,0,3344,3343, - 1,0,0,0,3345,3346,1,0,0,0,3346,3347,5,46,0,0,3347,3348,5,399,0,0, - 3348,3349,3,276,138,0,3349,3351,5,400,0,0,3350,3352,3,42,21,0,3351, - 3350,1,0,0,0,3351,3352,1,0,0,0,3352,505,1,0,0,0,3353,3356,5,4,0, - 0,3354,3357,3,316,158,0,3355,3357,3,306,153,0,3356,3354,1,0,0,0, - 3356,3355,1,0,0,0,3357,507,1,0,0,0,3358,3359,5,365,0,0,3359,3361, - 5,46,0,0,3360,3362,3,42,21,0,3361,3360,1,0,0,0,3361,3362,1,0,0,0, - 3362,509,1,0,0,0,3363,3364,3,296,148,0,3364,3366,5,218,0,0,3365, - 3367,5,34,0,0,3366,3365,1,0,0,0,3366,3367,1,0,0,0,3367,3372,1,0, - 0,0,3368,3369,3,296,148,0,3369,3370,5,222,0,0,3370,3372,1,0,0,0, - 3371,3363,1,0,0,0,3371,3368,1,0,0,0,3372,511,1,0,0,0,3373,3374,5, - 101,0,0,3374,3375,5,55,0,0,3375,3376,3,926,463,0,3376,513,1,0,0, - 0,3377,3379,5,38,0,0,3378,3380,5,45,0,0,3379,3378,1,0,0,0,3379,3380, - 1,0,0,0,3380,3381,1,0,0,0,3381,3382,3,284,142,0,3382,3383,3,286, - 143,0,3383,3385,3,376,188,0,3384,3386,3,358,179,0,3385,3384,1,0, - 0,0,3385,3386,1,0,0,0,3386,3389,1,0,0,0,3387,3388,5,47,0,0,3388, - 3390,5,426,0,0,3389,3387,1,0,0,0,3389,3390,1,0,0,0,3390,3392,1,0, - 0,0,3391,3393,3,520,260,0,3392,3391,1,0,0,0,3392,3393,1,0,0,0,3393, - 3395,1,0,0,0,3394,3396,3,42,21,0,3395,3394,1,0,0,0,3395,3396,1,0, - 0,0,3396,515,1,0,0,0,3397,3398,5,365,0,0,3398,3399,5,319,0,0,3399, - 3401,5,134,0,0,3400,3402,5,45,0,0,3401,3400,1,0,0,0,3401,3402,1, - 0,0,0,3402,3403,1,0,0,0,3403,3404,3,284,142,0,3404,3405,5,304,0, - 0,3405,3408,3,254,127,0,3406,3407,5,47,0,0,3407,3409,5,426,0,0,3408, - 3406,1,0,0,0,3408,3409,1,0,0,0,3409,517,1,0,0,0,3410,3411,5,365, - 0,0,3411,3412,5,319,0,0,3412,3413,5,304,0,0,3413,3414,3,254,127, - 0,3414,519,1,0,0,0,3415,3419,5,130,0,0,3416,3417,5,6,0,0,3417,3419, - 3,926,463,0,3418,3415,1,0,0,0,3418,3416,1,0,0,0,3419,521,1,0,0,0, - 3420,3422,5,4,0,0,3421,3423,3,44,22,0,3422,3421,1,0,0,0,3422,3423, - 1,0,0,0,3423,3425,1,0,0,0,3424,3426,3,524,262,0,3425,3424,1,0,0, - 0,3426,3427,1,0,0,0,3427,3425,1,0,0,0,3427,3428,1,0,0,0,3428,523, - 1,0,0,0,3429,3431,3,912,456,0,3430,3432,3,532,266,0,3431,3430,1, - 0,0,0,3431,3432,1,0,0,0,3432,525,1,0,0,0,3433,3437,5,342,0,0,3434, - 3436,3,912,456,0,3435,3434,1,0,0,0,3436,3439,1,0,0,0,3437,3435,1, - 0,0,0,3437,3438,1,0,0,0,3438,527,1,0,0,0,3439,3437,1,0,0,0,3440, - 3444,5,15,0,0,3441,3443,3,912,456,0,3442,3441,1,0,0,0,3443,3446, - 1,0,0,0,3444,3442,1,0,0,0,3444,3445,1,0,0,0,3445,529,1,0,0,0,3446, - 3444,1,0,0,0,3447,3451,5,353,0,0,3448,3450,3,912,456,0,3449,3448, - 1,0,0,0,3450,3453,1,0,0,0,3451,3449,1,0,0,0,3451,3452,1,0,0,0,3452, - 531,1,0,0,0,3453,3451,1,0,0,0,3454,3455,5,189,0,0,3455,3456,5,426, - 0,0,3456,533,1,0,0,0,3457,3458,5,102,0,0,3458,3459,5,239,0,0,3459, - 535,1,0,0,0,3460,3462,5,101,0,0,3461,3463,3,40,20,0,3462,3461,1, - 0,0,0,3462,3463,1,0,0,0,3463,3464,1,0,0,0,3464,3465,5,237,0,0,3465, - 3471,3,916,458,0,3466,3467,5,397,0,0,3467,3468,5,237,0,0,3468,3470, - 3,916,458,0,3469,3466,1,0,0,0,3470,3473,1,0,0,0,3471,3469,1,0,0, - 0,3471,3472,1,0,0,0,3472,3475,1,0,0,0,3473,3471,1,0,0,0,3474,3476, - 3,16,8,0,3475,3474,1,0,0,0,3475,3476,1,0,0,0,3476,3478,1,0,0,0,3477, - 3479,5,255,0,0,3478,3477,1,0,0,0,3478,3479,1,0,0,0,3479,3481,1,0, - 0,0,3480,3482,3,18,9,0,3481,3480,1,0,0,0,3481,3482,1,0,0,0,3482, - 537,1,0,0,0,3483,3484,5,304,0,0,3484,3485,5,332,0,0,3485,3493,3, - 254,127,0,3486,3487,5,363,0,0,3487,3489,5,332,0,0,3488,3490,3,40, - 20,0,3489,3488,1,0,0,0,3489,3490,1,0,0,0,3490,3491,1,0,0,0,3491, - 3493,3,254,127,0,3492,3483,1,0,0,0,3492,3486,1,0,0,0,3493,539,1, - 0,0,0,3494,3495,5,304,0,0,3495,3496,5,332,0,0,3496,3504,3,254,127, - 0,3497,3498,5,363,0,0,3498,3500,5,332,0,0,3499,3501,3,40,20,0,3500, - 3499,1,0,0,0,3500,3501,1,0,0,0,3501,3502,1,0,0,0,3502,3504,3,254, - 127,0,3503,3494,1,0,0,0,3503,3497,1,0,0,0,3504,541,1,0,0,0,3505, - 3515,5,304,0,0,3506,3507,5,301,0,0,3507,3511,5,426,0,0,3508,3509, - 5,387,0,0,3509,3510,5,302,0,0,3510,3512,3,254,127,0,3511,3508,1, - 0,0,0,3511,3512,1,0,0,0,3512,3516,1,0,0,0,3513,3514,5,302,0,0,3514, - 3516,3,254,127,0,3515,3506,1,0,0,0,3515,3513,1,0,0,0,3516,3521,1, - 0,0,0,3517,3518,5,363,0,0,3518,3519,5,302,0,0,3519,3521,3,254,127, - 0,3520,3505,1,0,0,0,3520,3517,1,0,0,0,3521,543,1,0,0,0,3522,3524, - 3,660,330,0,3523,3525,3,912,456,0,3524,3523,1,0,0,0,3524,3525,1, - 0,0,0,3525,545,1,0,0,0,3526,3527,5,304,0,0,3527,3528,5,129,0,0,3528, - 3529,3,586,293,0,3529,547,1,0,0,0,3530,3531,5,216,0,0,3531,3534, - 7,23,0,0,3532,3534,3,234,117,0,3533,3530,1,0,0,0,3533,3532,1,0,0, - 0,3534,549,1,0,0,0,3535,3536,5,304,0,0,3536,3537,5,310,0,0,3537, - 3538,5,189,0,0,3538,3539,3,552,276,0,3539,551,1,0,0,0,3540,3541, - 5,399,0,0,3541,3542,3,554,277,0,3542,3543,5,400,0,0,3543,553,1,0, - 0,0,3544,3549,3,556,278,0,3545,3546,5,397,0,0,3546,3548,3,556,278, - 0,3547,3545,1,0,0,0,3548,3551,1,0,0,0,3549,3547,1,0,0,0,3549,3550, - 1,0,0,0,3550,555,1,0,0,0,3551,3549,1,0,0,0,3552,3553,3,328,164,0, - 3553,3554,5,405,0,0,3554,3555,5,426,0,0,3555,557,1,0,0,0,3556,3557, - 5,304,0,0,3557,3558,5,189,0,0,3558,3559,5,426,0,0,3559,559,1,0,0, - 0,3560,3567,3,238,119,0,3561,3564,5,216,0,0,3562,3565,5,310,0,0, - 3563,3565,3,52,26,0,3564,3562,1,0,0,0,3564,3563,1,0,0,0,3565,3567, - 1,0,0,0,3566,3560,1,0,0,0,3566,3561,1,0,0,0,3567,561,1,0,0,0,3568, - 3569,5,113,0,0,3569,3570,3,912,456,0,3570,3571,5,387,0,0,3571,3572, - 5,329,0,0,3572,3573,3,660,330,0,3573,563,1,0,0,0,3574,3575,5,274, - 0,0,3575,3576,5,341,0,0,3576,3577,3,912,456,0,3577,565,1,0,0,0,3578, - 3579,5,365,0,0,3579,3580,5,319,0,0,3580,3582,5,134,0,0,3581,3583, - 5,45,0,0,3582,3581,1,0,0,0,3582,3583,1,0,0,0,3583,3584,1,0,0,0,3584, - 3585,3,284,142,0,3585,3586,5,304,0,0,3586,3589,3,254,127,0,3587, - 3588,5,47,0,0,3588,3590,5,426,0,0,3589,3587,1,0,0,0,3589,3590,1, - 0,0,0,3590,567,1,0,0,0,3591,3592,5,53,0,0,3592,569,1,0,0,0,3593, - 3594,5,166,0,0,3594,3595,5,431,0,0,3595,3596,5,31,0,0,3596,571,1, - 0,0,0,3597,3598,5,11,0,0,3598,3599,5,380,0,0,3599,573,1,0,0,0,3600, - 3601,5,246,0,0,3601,3602,5,426,0,0,3602,575,1,0,0,0,3603,3604,5, - 49,0,0,3604,3606,5,426,0,0,3605,3607,3,572,286,0,3606,3605,1,0,0, - 0,3606,3607,1,0,0,0,3607,3609,1,0,0,0,3608,3610,3,236,118,0,3609, - 3608,1,0,0,0,3609,3610,1,0,0,0,3610,3612,1,0,0,0,3611,3613,3,764, - 382,0,3612,3611,1,0,0,0,3612,3613,1,0,0,0,3613,3615,1,0,0,0,3614, - 3616,3,574,287,0,3615,3614,1,0,0,0,3615,3616,1,0,0,0,3616,3621,1, - 0,0,0,3617,3618,5,387,0,0,3618,3619,5,235,0,0,3619,3620,5,332,0, - 0,3620,3622,3,254,127,0,3621,3617,1,0,0,0,3621,3622,1,0,0,0,3622, - 577,1,0,0,0,3623,3624,5,304,0,0,3624,3625,5,236,0,0,3625,3626,3, - 148,74,0,3626,579,1,0,0,0,3627,3628,5,304,0,0,3628,3629,5,237,0, - 0,3629,3630,5,316,0,0,3630,3631,5,399,0,0,3631,3632,3,228,114,0, - 3632,3633,5,400,0,0,3633,581,1,0,0,0,3634,3644,5,115,0,0,3635,3636, - 5,289,0,0,3636,3637,5,399,0,0,3637,3645,7,24,0,0,3638,3639,5,118, - 0,0,3639,3640,5,399,0,0,3640,3645,5,426,0,0,3641,3642,5,306,0,0, - 3642,3643,5,399,0,0,3643,3645,5,431,0,0,3644,3635,1,0,0,0,3644,3638, - 1,0,0,0,3644,3641,1,0,0,0,3645,3646,1,0,0,0,3646,3647,5,400,0,0, - 3647,583,1,0,0,0,3648,3649,3,926,463,0,3649,3650,5,224,0,0,3650, - 3652,3,660,330,0,3651,3653,3,912,456,0,3652,3651,1,0,0,0,3652,3653, - 1,0,0,0,3653,3654,1,0,0,0,3654,3655,5,265,0,0,3655,585,1,0,0,0,3656, - 3657,5,160,0,0,3657,3658,5,426,0,0,3658,3659,5,233,0,0,3659,3660, - 5,426,0,0,3660,3661,5,301,0,0,3661,3666,5,426,0,0,3662,3663,5,159, - 0,0,3663,3664,5,426,0,0,3664,3665,5,232,0,0,3665,3667,5,426,0,0, - 3666,3662,1,0,0,0,3666,3667,1,0,0,0,3667,3670,1,0,0,0,3668,3670, - 3,926,463,0,3669,3656,1,0,0,0,3669,3668,1,0,0,0,3670,587,1,0,0,0, - 3671,3675,3,590,295,0,3672,3675,3,592,296,0,3673,3675,3,594,297, - 0,3674,3671,1,0,0,0,3674,3672,1,0,0,0,3674,3673,1,0,0,0,3675,589, - 1,0,0,0,3676,3677,3,654,327,0,3677,3678,5,304,0,0,3678,3679,5,77, - 0,0,3679,3680,3,608,304,0,3680,591,1,0,0,0,3681,3682,3,654,327,0, - 3682,3683,5,304,0,0,3683,3684,5,236,0,0,3684,3685,3,150,75,0,3685, - 593,1,0,0,0,3686,3687,3,654,327,0,3687,3688,5,304,0,0,3688,3689, - 5,367,0,0,3689,3690,5,426,0,0,3690,595,1,0,0,0,3691,3692,5,184,0, - 0,3692,3701,5,128,0,0,3693,3694,5,184,0,0,3694,3695,5,128,0,0,3695, - 3696,3,926,463,0,3696,3697,5,426,0,0,3697,3701,1,0,0,0,3698,3699, - 5,184,0,0,3699,3701,3,660,330,0,3700,3691,1,0,0,0,3700,3693,1,0, - 0,0,3700,3698,1,0,0,0,3701,597,1,0,0,0,3702,3704,5,58,0,0,3703,3705, - 5,333,0,0,3704,3703,1,0,0,0,3704,3705,1,0,0,0,3705,3707,1,0,0,0, - 3706,3708,5,345,0,0,3707,3706,1,0,0,0,3707,3708,1,0,0,0,3708,3710, - 1,0,0,0,3709,3711,5,123,0,0,3710,3709,1,0,0,0,3710,3711,1,0,0,0, - 3711,3712,1,0,0,0,3712,3714,5,329,0,0,3713,3715,3,44,22,0,3714,3713, - 1,0,0,0,3714,3715,1,0,0,0,3715,3716,1,0,0,0,3716,3773,3,662,331, - 0,3717,3719,3,596,298,0,3718,3720,3,222,111,0,3719,3718,1,0,0,0, - 3719,3720,1,0,0,0,3720,3722,1,0,0,0,3721,3723,3,250,125,0,3722,3721, - 1,0,0,0,3722,3723,1,0,0,0,3723,3725,1,0,0,0,3724,3726,3,272,136, - 0,3725,3724,1,0,0,0,3725,3726,1,0,0,0,3726,3728,1,0,0,0,3727,3729, - 3,274,137,0,3728,3727,1,0,0,0,3728,3729,1,0,0,0,3729,3731,1,0,0, - 0,3730,3732,3,252,126,0,3731,3730,1,0,0,0,3731,3732,1,0,0,0,3732, - 3734,1,0,0,0,3733,3735,3,220,110,0,3734,3733,1,0,0,0,3734,3735,1, - 0,0,0,3735,3774,1,0,0,0,3736,3737,5,399,0,0,3737,3738,3,278,139, - 0,3738,3739,5,400,0,0,3739,3741,1,0,0,0,3740,3736,1,0,0,0,3740,3741, - 1,0,0,0,3741,3743,1,0,0,0,3742,3744,3,218,109,0,3743,3742,1,0,0, - 0,3743,3744,1,0,0,0,3744,3746,1,0,0,0,3745,3747,3,222,111,0,3746, - 3745,1,0,0,0,3746,3747,1,0,0,0,3747,3749,1,0,0,0,3748,3750,3,234, - 117,0,3749,3748,1,0,0,0,3749,3750,1,0,0,0,3750,3752,1,0,0,0,3751, - 3753,3,238,119,0,3752,3751,1,0,0,0,3752,3753,1,0,0,0,3753,3755,1, - 0,0,0,3754,3756,3,250,125,0,3755,3754,1,0,0,0,3755,3756,1,0,0,0, - 3756,3758,1,0,0,0,3757,3759,3,272,136,0,3758,3757,1,0,0,0,3758,3759, - 1,0,0,0,3759,3761,1,0,0,0,3760,3762,3,274,137,0,3761,3760,1,0,0, - 0,3761,3762,1,0,0,0,3762,3764,1,0,0,0,3763,3765,3,252,126,0,3764, - 3763,1,0,0,0,3764,3765,1,0,0,0,3765,3767,1,0,0,0,3766,3768,3,220, - 110,0,3767,3766,1,0,0,0,3767,3768,1,0,0,0,3768,3771,1,0,0,0,3769, - 3770,5,17,0,0,3770,3772,3,414,207,0,3771,3769,1,0,0,0,3771,3772, - 1,0,0,0,3772,3774,1,0,0,0,3773,3717,1,0,0,0,3773,3740,1,0,0,0,3774, - 3838,1,0,0,0,3775,3776,5,58,0,0,3776,3777,5,195,0,0,3777,3779,5, - 329,0,0,3778,3780,3,44,22,0,3779,3778,1,0,0,0,3779,3780,1,0,0,0, - 3780,3781,1,0,0,0,3781,3835,3,662,331,0,3782,3784,3,596,298,0,3783, - 3785,3,250,125,0,3784,3783,1,0,0,0,3784,3785,1,0,0,0,3785,3787,1, - 0,0,0,3786,3788,3,272,136,0,3787,3786,1,0,0,0,3787,3788,1,0,0,0, - 3788,3790,1,0,0,0,3789,3791,3,274,137,0,3790,3789,1,0,0,0,3790,3791, - 1,0,0,0,3791,3793,1,0,0,0,3792,3794,3,252,126,0,3793,3792,1,0,0, - 0,3793,3794,1,0,0,0,3794,3796,1,0,0,0,3795,3797,3,220,110,0,3796, - 3795,1,0,0,0,3796,3797,1,0,0,0,3797,3836,1,0,0,0,3798,3799,5,399, - 0,0,3799,3800,3,278,139,0,3800,3801,5,400,0,0,3801,3803,1,0,0,0, - 3802,3798,1,0,0,0,3802,3803,1,0,0,0,3803,3805,1,0,0,0,3804,3806, - 3,218,109,0,3805,3804,1,0,0,0,3805,3806,1,0,0,0,3806,3808,1,0,0, - 0,3807,3809,3,222,111,0,3808,3807,1,0,0,0,3808,3809,1,0,0,0,3809, - 3811,1,0,0,0,3810,3812,3,234,117,0,3811,3810,1,0,0,0,3811,3812,1, - 0,0,0,3812,3814,1,0,0,0,3813,3815,3,238,119,0,3814,3813,1,0,0,0, - 3814,3815,1,0,0,0,3815,3817,1,0,0,0,3816,3818,3,250,125,0,3817,3816, - 1,0,0,0,3817,3818,1,0,0,0,3818,3820,1,0,0,0,3819,3821,3,272,136, - 0,3820,3819,1,0,0,0,3820,3821,1,0,0,0,3821,3823,1,0,0,0,3822,3824, - 3,274,137,0,3823,3822,1,0,0,0,3823,3824,1,0,0,0,3824,3826,1,0,0, - 0,3825,3827,3,252,126,0,3826,3825,1,0,0,0,3826,3827,1,0,0,0,3827, - 3829,1,0,0,0,3828,3830,3,220,110,0,3829,3828,1,0,0,0,3829,3830,1, - 0,0,0,3830,3833,1,0,0,0,3831,3832,5,17,0,0,3832,3834,3,414,207,0, - 3833,3831,1,0,0,0,3833,3834,1,0,0,0,3834,3836,1,0,0,0,3835,3782, - 1,0,0,0,3835,3802,1,0,0,0,3836,3838,1,0,0,0,3837,3702,1,0,0,0,3837, - 3775,1,0,0,0,3838,599,1,0,0,0,3839,3840,5,58,0,0,3840,3842,5,69, - 0,0,3841,3843,3,44,22,0,3842,3841,1,0,0,0,3842,3843,1,0,0,0,3843, - 3844,1,0,0,0,3844,3846,3,926,463,0,3845,3847,3,606,303,0,3846,3845, - 1,0,0,0,3846,3847,1,0,0,0,3847,3849,1,0,0,0,3848,3850,3,604,302, - 0,3849,3848,1,0,0,0,3849,3850,1,0,0,0,3850,3852,1,0,0,0,3851,3853, - 3,602,301,0,3852,3851,1,0,0,0,3852,3853,1,0,0,0,3853,3857,1,0,0, - 0,3854,3855,5,387,0,0,3855,3856,5,77,0,0,3856,3858,3,608,304,0,3857, - 3854,1,0,0,0,3857,3858,1,0,0,0,3858,601,1,0,0,0,3859,3860,5,47,0, - 0,3860,3861,5,426,0,0,3861,603,1,0,0,0,3862,3863,5,367,0,0,3863, - 3864,5,426,0,0,3864,605,1,0,0,0,3865,3866,5,352,0,0,3866,3867,5, - 426,0,0,3867,607,1,0,0,0,3868,3869,5,399,0,0,3869,3870,3,64,32,0, - 3870,3871,5,400,0,0,3871,609,1,0,0,0,3872,3873,5,101,0,0,3873,3875, - 5,69,0,0,3874,3876,3,40,20,0,3875,3874,1,0,0,0,3875,3876,1,0,0,0, - 3876,3877,1,0,0,0,3877,3878,3,926,463,0,3878,611,1,0,0,0,3879,3880, - 3,926,463,0,3880,3881,5,395,0,0,3881,3883,1,0,0,0,3882,3879,1,0, - 0,0,3883,3886,1,0,0,0,3884,3882,1,0,0,0,3884,3885,1,0,0,0,3885,3887, - 1,0,0,0,3886,3884,1,0,0,0,3887,3888,5,415,0,0,3888,613,1,0,0,0,3889, - 3890,5,83,0,0,3890,615,1,0,0,0,3891,3896,3,828,414,0,3892,3893,5, - 397,0,0,3893,3895,3,828,414,0,3894,3892,1,0,0,0,3895,3898,1,0,0, - 0,3896,3894,1,0,0,0,3896,3897,1,0,0,0,3897,617,1,0,0,0,3898,3896, - 1,0,0,0,3899,3904,3,926,463,0,3900,3901,5,397,0,0,3901,3903,3,926, - 463,0,3902,3900,1,0,0,0,3903,3906,1,0,0,0,3904,3902,1,0,0,0,3904, - 3905,1,0,0,0,3905,619,1,0,0,0,3906,3904,1,0,0,0,3907,3908,5,139, - 0,0,3908,3909,3,622,311,0,3909,621,1,0,0,0,3910,3911,3,634,317,0, - 3911,3914,3,630,315,0,3912,3913,5,397,0,0,3913,3915,3,630,315,0, - 3914,3912,1,0,0,0,3915,3916,1,0,0,0,3916,3914,1,0,0,0,3916,3917, - 1,0,0,0,3917,3920,1,0,0,0,3918,3920,3,626,313,0,3919,3910,1,0,0, - 0,3919,3918,1,0,0,0,3920,623,1,0,0,0,3921,3925,3,648,324,0,3922, - 3924,3,638,319,0,3923,3922,1,0,0,0,3924,3927,1,0,0,0,3925,3923,1, - 0,0,0,3925,3926,1,0,0,0,3926,3954,1,0,0,0,3927,3925,1,0,0,0,3928, - 3932,3,690,345,0,3929,3931,3,638,319,0,3930,3929,1,0,0,0,3931,3934, - 1,0,0,0,3932,3930,1,0,0,0,3932,3933,1,0,0,0,3933,3954,1,0,0,0,3934, - 3932,1,0,0,0,3935,3939,3,668,334,0,3936,3938,3,638,319,0,3937,3936, - 1,0,0,0,3938,3941,1,0,0,0,3939,3937,1,0,0,0,3939,3940,1,0,0,0,3940, - 3954,1,0,0,0,3941,3939,1,0,0,0,3942,3946,3,674,337,0,3943,3945,3, - 638,319,0,3944,3943,1,0,0,0,3945,3948,1,0,0,0,3946,3944,1,0,0,0, - 3946,3947,1,0,0,0,3947,3954,1,0,0,0,3948,3946,1,0,0,0,3949,3950, - 5,399,0,0,3950,3951,3,626,313,0,3951,3952,5,400,0,0,3952,3954,1, - 0,0,0,3953,3921,1,0,0,0,3953,3928,1,0,0,0,3953,3935,1,0,0,0,3953, - 3942,1,0,0,0,3953,3949,1,0,0,0,3954,625,1,0,0,0,3955,3966,3,624, - 312,0,3956,3957,3,636,318,0,3957,3962,3,628,314,0,3958,3959,5,224, - 0,0,3959,3963,3,828,414,0,3960,3961,5,370,0,0,3961,3963,3,292,146, - 0,3962,3958,1,0,0,0,3962,3960,1,0,0,0,3962,3963,1,0,0,0,3963,3965, - 1,0,0,0,3964,3956,1,0,0,0,3965,3968,1,0,0,0,3966,3964,1,0,0,0,3966, - 3967,1,0,0,0,3967,627,1,0,0,0,3968,3966,1,0,0,0,3969,3974,3,648, - 324,0,3970,3974,3,690,345,0,3971,3974,3,668,334,0,3972,3974,3,674, - 337,0,3973,3969,1,0,0,0,3973,3970,1,0,0,0,3973,3971,1,0,0,0,3973, - 3972,1,0,0,0,3974,3978,1,0,0,0,3975,3977,3,638,319,0,3976,3975,1, - 0,0,0,3977,3980,1,0,0,0,3978,3976,1,0,0,0,3978,3979,1,0,0,0,3979, - 629,1,0,0,0,3980,3978,1,0,0,0,3981,3983,5,250,0,0,3982,3981,1,0, - 0,0,3982,3983,1,0,0,0,3983,3984,1,0,0,0,3984,3985,3,652,326,0,3985, - 3986,3,632,316,0,3986,631,1,0,0,0,3987,3988,5,399,0,0,3988,3989, - 3,616,308,0,3989,3990,5,400,0,0,3990,633,1,0,0,0,3991,3992,5,359, - 0,0,3992,635,1,0,0,0,3993,4008,5,397,0,0,3994,4005,5,157,0,0,3995, - 4005,5,60,0,0,3996,3998,7,25,0,0,3997,3999,5,231,0,0,3998,3997,1, - 0,0,0,3998,3999,1,0,0,0,3999,4005,1,0,0,0,4000,4002,5,180,0,0,4001, - 4003,7,26,0,0,4002,4001,1,0,0,0,4002,4003,1,0,0,0,4003,4005,1,0, - 0,0,4004,3994,1,0,0,0,4004,3995,1,0,0,0,4004,3996,1,0,0,0,4004,4000, - 1,0,0,0,4004,4005,1,0,0,0,4005,4006,1,0,0,0,4006,4008,5,171,0,0, - 4007,3993,1,0,0,0,4007,4004,1,0,0,0,4008,637,1,0,0,0,4009,4010,5, - 178,0,0,4010,4011,5,378,0,0,4011,4012,5,231,0,0,4012,4013,3,776, - 388,0,4013,4023,3,640,320,0,4014,4015,5,17,0,0,4015,4020,3,926,463, - 0,4016,4017,5,397,0,0,4017,4019,3,926,463,0,4018,4016,1,0,0,0,4019, - 4022,1,0,0,0,4020,4018,1,0,0,0,4020,4021,1,0,0,0,4021,4024,1,0,0, - 0,4022,4020,1,0,0,0,4023,4014,1,0,0,0,4023,4024,1,0,0,0,4024,4067, - 1,0,0,0,4025,4027,5,397,0,0,4026,4025,1,0,0,0,4026,4027,1,0,0,0, - 4027,4028,1,0,0,0,4028,4064,5,178,0,0,4029,4030,5,378,0,0,4030,4031, - 3,776,388,0,4031,4041,3,640,320,0,4032,4033,5,17,0,0,4033,4038,3, - 926,463,0,4034,4035,5,397,0,0,4035,4037,3,926,463,0,4036,4034,1, - 0,0,0,4037,4040,1,0,0,0,4038,4036,1,0,0,0,4038,4039,1,0,0,0,4039, - 4042,1,0,0,0,4040,4038,1,0,0,0,4041,4032,1,0,0,0,4041,4042,1,0,0, - 0,4042,4065,1,0,0,0,4043,4044,5,329,0,0,4044,4045,5,399,0,0,4045, - 4046,3,682,341,0,4046,4048,5,400,0,0,4047,4049,5,17,0,0,4048,4047, - 1,0,0,0,4048,4049,1,0,0,0,4049,4050,1,0,0,0,4050,4062,3,640,320, - 0,4051,4052,5,399,0,0,4052,4057,3,926,463,0,4053,4054,5,397,0,0, - 4054,4056,3,926,463,0,4055,4053,1,0,0,0,4056,4059,1,0,0,0,4057,4055, - 1,0,0,0,4057,4058,1,0,0,0,4058,4060,1,0,0,0,4059,4057,1,0,0,0,4060, - 4061,5,400,0,0,4061,4063,1,0,0,0,4062,4051,1,0,0,0,4062,4063,1,0, - 0,0,4063,4065,1,0,0,0,4064,4029,1,0,0,0,4064,4043,1,0,0,0,4065,4067, - 1,0,0,0,4066,4009,1,0,0,0,4066,4026,1,0,0,0,4067,639,1,0,0,0,4068, - 4069,3,926,463,0,4069,641,1,0,0,0,4070,4071,5,331,0,0,4071,4072, - 5,399,0,0,4072,4073,5,30,0,0,4073,4074,5,431,0,0,4074,4075,5,230, - 0,0,4075,4076,5,221,0,0,4076,4086,5,431,0,0,4077,4078,5,224,0,0, - 4078,4083,3,828,414,0,4079,4080,5,397,0,0,4080,4082,3,828,414,0, - 4081,4079,1,0,0,0,4082,4085,1,0,0,0,4083,4081,1,0,0,0,4083,4084, - 1,0,0,0,4084,4087,1,0,0,0,4085,4083,1,0,0,0,4086,4077,1,0,0,0,4086, - 4087,1,0,0,0,4087,4088,1,0,0,0,4088,4089,5,400,0,0,4089,643,1,0, - 0,0,4090,4091,5,331,0,0,4091,4095,5,399,0,0,4092,4093,5,431,0,0, - 4093,4096,7,27,0,0,4094,4096,5,430,0,0,4095,4092,1,0,0,0,4095,4094, - 1,0,0,0,4096,4097,1,0,0,0,4097,4098,5,400,0,0,4098,645,1,0,0,0,4099, - 4102,3,642,321,0,4100,4102,3,644,322,0,4101,4099,1,0,0,0,4101,4100, - 1,0,0,0,4102,647,1,0,0,0,4103,4105,3,658,329,0,4104,4106,3,254,127, - 0,4105,4104,1,0,0,0,4105,4106,1,0,0,0,4106,4108,1,0,0,0,4107,4109, - 3,646,323,0,4108,4107,1,0,0,0,4108,4109,1,0,0,0,4109,4111,1,0,0, - 0,4110,4112,3,650,325,0,4111,4110,1,0,0,0,4111,4112,1,0,0,0,4112, - 4117,1,0,0,0,4113,4115,5,17,0,0,4114,4113,1,0,0,0,4114,4115,1,0, - 0,0,4115,4116,1,0,0,0,4116,4118,3,926,463,0,4117,4114,1,0,0,0,4117, - 4118,1,0,0,0,4118,649,1,0,0,0,4119,4129,5,134,0,0,4120,4121,5,327, - 0,0,4121,4122,5,17,0,0,4122,4123,5,221,0,0,4123,4130,3,828,414,0, - 4124,4125,5,134,0,0,4125,4126,5,328,0,0,4126,4127,5,17,0,0,4127, - 4128,5,221,0,0,4128,4130,5,431,0,0,4129,4120,1,0,0,0,4129,4124,1, - 0,0,0,4130,651,1,0,0,0,4131,4133,3,658,329,0,4132,4134,3,646,323, - 0,4133,4132,1,0,0,0,4133,4134,1,0,0,0,4134,4139,1,0,0,0,4135,4137, - 5,17,0,0,4136,4135,1,0,0,0,4136,4137,1,0,0,0,4137,4138,1,0,0,0,4138, - 4140,3,926,463,0,4139,4136,1,0,0,0,4139,4140,1,0,0,0,4140,653,1, - 0,0,0,4141,4142,3,926,463,0,4142,655,1,0,0,0,4143,4144,3,926,463, - 0,4144,657,1,0,0,0,4145,4148,3,660,330,0,4146,4148,3,664,332,0,4147, - 4145,1,0,0,0,4147,4146,1,0,0,0,4148,659,1,0,0,0,4149,4150,3,926, - 463,0,4150,4151,5,395,0,0,4151,4154,3,926,463,0,4152,4153,5,395, - 0,0,4153,4155,3,926,463,0,4154,4152,1,0,0,0,4154,4155,1,0,0,0,4155, - 4158,1,0,0,0,4156,4158,3,926,463,0,4157,4149,1,0,0,0,4157,4156,1, - 0,0,0,4158,661,1,0,0,0,4159,4160,3,926,463,0,4160,4161,5,395,0,0, - 4161,4164,3,926,463,0,4162,4163,5,395,0,0,4163,4165,3,926,463,0, - 4164,4162,1,0,0,0,4164,4165,1,0,0,0,4165,4168,1,0,0,0,4166,4168, - 3,926,463,0,4167,4159,1,0,0,0,4167,4166,1,0,0,0,4168,663,1,0,0,0, - 4169,4170,3,926,463,0,4170,4171,5,395,0,0,4171,4173,1,0,0,0,4172, - 4169,1,0,0,0,4172,4173,1,0,0,0,4173,4174,1,0,0,0,4174,4175,3,926, - 463,0,4175,665,1,0,0,0,4176,4177,3,926,463,0,4177,4178,5,395,0,0, - 4178,4180,1,0,0,0,4179,4176,1,0,0,0,4179,4180,1,0,0,0,4180,4181, - 1,0,0,0,4181,4182,3,926,463,0,4182,667,1,0,0,0,4183,4184,5,399,0, - 0,4184,4185,3,394,197,0,4185,4187,5,400,0,0,4186,4188,5,17,0,0,4187, - 4186,1,0,0,0,4187,4188,1,0,0,0,4188,4189,1,0,0,0,4189,4190,3,926, - 463,0,4190,669,1,0,0,0,4191,4193,3,768,384,0,4192,4194,3,764,382, - 0,4193,4192,1,0,0,0,4193,4194,1,0,0,0,4194,4203,1,0,0,0,4195,4203, - 3,764,382,0,4196,4198,3,770,385,0,4197,4199,3,772,386,0,4198,4197, - 1,0,0,0,4198,4199,1,0,0,0,4199,4203,1,0,0,0,4200,4203,3,772,386, - 0,4201,4203,3,766,383,0,4202,4191,1,0,0,0,4202,4195,1,0,0,0,4202, - 4196,1,0,0,0,4202,4200,1,0,0,0,4202,4201,1,0,0,0,4203,671,1,0,0, - 0,4204,4208,3,668,334,0,4205,4208,3,648,324,0,4206,4208,3,674,337, - 0,4207,4204,1,0,0,0,4207,4205,1,0,0,0,4207,4206,1,0,0,0,4208,673, - 1,0,0,0,4209,4210,3,926,463,0,4210,4211,5,399,0,0,4211,4212,5,224, - 0,0,4212,4214,3,672,336,0,4213,4215,3,670,335,0,4214,4213,1,0,0, - 0,4214,4215,1,0,0,0,4215,4231,1,0,0,0,4216,4217,5,432,0,0,4217,4218, - 5,399,0,0,4218,4219,3,828,414,0,4219,4228,5,400,0,0,4220,4221,5, - 397,0,0,4221,4222,5,432,0,0,4222,4223,5,399,0,0,4223,4224,3,828, - 414,0,4224,4225,5,400,0,0,4225,4227,1,0,0,0,4226,4220,1,0,0,0,4227, - 4230,1,0,0,0,4228,4226,1,0,0,0,4228,4229,1,0,0,0,4229,4232,1,0,0, - 0,4230,4228,1,0,0,0,4231,4216,1,0,0,0,4231,4232,1,0,0,0,4232,4233, - 1,0,0,0,4233,4235,5,400,0,0,4234,4236,3,926,463,0,4235,4234,1,0, - 0,0,4235,4236,1,0,0,0,4236,675,1,0,0,0,4237,4238,5,384,0,0,4238, - 4239,3,678,339,0,4239,677,1,0,0,0,4240,4241,3,828,414,0,4241,679, - 1,0,0,0,4242,4243,3,682,341,0,4243,681,1,0,0,0,4244,4245,5,374,0, - 0,4245,4246,3,684,342,0,4246,683,1,0,0,0,4247,4252,3,686,343,0,4248, - 4249,5,397,0,0,4249,4251,3,686,343,0,4250,4248,1,0,0,0,4251,4254, - 1,0,0,0,4252,4250,1,0,0,0,4252,4253,1,0,0,0,4253,4264,1,0,0,0,4254, - 4252,1,0,0,0,4255,4260,3,688,344,0,4256,4257,5,397,0,0,4257,4259, - 3,686,343,0,4258,4256,1,0,0,0,4259,4262,1,0,0,0,4260,4258,1,0,0, - 0,4260,4261,1,0,0,0,4261,4264,1,0,0,0,4262,4260,1,0,0,0,4263,4247, - 1,0,0,0,4263,4255,1,0,0,0,4264,685,1,0,0,0,4265,4266,3,746,373,0, - 4266,687,1,0,0,0,4267,4268,5,399,0,0,4268,4269,3,754,377,0,4269, - 4270,5,400,0,0,4270,689,1,0,0,0,4271,4272,5,329,0,0,4272,4273,5, - 399,0,0,4273,4274,3,682,341,0,4274,4276,5,400,0,0,4275,4277,5,17, - 0,0,4276,4275,1,0,0,0,4276,4277,1,0,0,0,4277,4278,1,0,0,0,4278,4288, - 3,640,320,0,4279,4280,5,399,0,0,4280,4285,3,926,463,0,4281,4282, - 5,397,0,0,4282,4284,3,926,463,0,4283,4281,1,0,0,0,4284,4287,1,0, - 0,0,4285,4283,1,0,0,0,4285,4286,1,0,0,0,4286,4289,1,0,0,0,4287,4285, - 1,0,0,0,4288,4279,1,0,0,0,4288,4289,1,0,0,0,4289,4290,1,0,0,0,4290, - 4291,5,400,0,0,4291,691,1,0,0,0,4292,4294,5,299,0,0,4293,4295,5, - 436,0,0,4294,4293,1,0,0,0,4294,4295,1,0,0,0,4295,4302,1,0,0,0,4296, - 4298,3,694,347,0,4297,4296,1,0,0,0,4297,4298,1,0,0,0,4298,4299,1, - 0,0,0,4299,4303,3,696,348,0,4300,4301,5,347,0,0,4301,4303,3,698, - 349,0,4302,4297,1,0,0,0,4302,4300,1,0,0,0,4303,4306,1,0,0,0,4304, - 4306,3,702,351,0,4305,4292,1,0,0,0,4305,4304,1,0,0,0,4306,693,1, - 0,0,0,4307,4308,7,20,0,0,4308,695,1,0,0,0,4309,4314,3,700,350,0, - 4310,4311,5,397,0,0,4311,4313,3,700,350,0,4312,4310,1,0,0,0,4313, - 4316,1,0,0,0,4314,4312,1,0,0,0,4314,4315,1,0,0,0,4315,697,1,0,0, - 0,4316,4314,1,0,0,0,4317,4318,5,399,0,0,4318,4319,3,706,353,0,4319, - 4320,5,400,0,0,4320,4321,3,240,120,0,4321,4322,3,244,122,0,4322, - 4323,5,370,0,0,4323,4336,5,426,0,0,4324,4334,5,17,0,0,4325,4328, - 5,399,0,0,4326,4329,3,618,309,0,4327,4329,3,276,138,0,4328,4326, - 1,0,0,0,4328,4327,1,0,0,0,4329,4330,1,0,0,0,4330,4331,5,400,0,0, - 4331,4335,1,0,0,0,4332,4335,3,618,309,0,4333,4335,3,276,138,0,4334, - 4325,1,0,0,0,4334,4332,1,0,0,0,4334,4333,1,0,0,0,4335,4337,1,0,0, - 0,4336,4324,1,0,0,0,4336,4337,1,0,0,0,4337,4338,1,0,0,0,4338,4339, - 3,240,120,0,4339,4340,3,242,121,0,4340,699,1,0,0,0,4341,4365,3,612, - 306,0,4342,4345,3,284,142,0,4343,4345,3,828,414,0,4344,4342,1,0, - 0,0,4344,4343,1,0,0,0,4345,4362,1,0,0,0,4346,4348,5,17,0,0,4347, - 4346,1,0,0,0,4347,4348,1,0,0,0,4348,4349,1,0,0,0,4349,4363,3,926, - 463,0,4350,4351,5,17,0,0,4351,4352,5,399,0,0,4352,4357,3,926,463, - 0,4353,4354,5,397,0,0,4354,4356,3,926,463,0,4355,4353,1,0,0,0,4356, - 4359,1,0,0,0,4357,4355,1,0,0,0,4357,4358,1,0,0,0,4358,4360,1,0,0, - 0,4359,4357,1,0,0,0,4360,4361,5,400,0,0,4361,4363,1,0,0,0,4362,4347, - 1,0,0,0,4362,4350,1,0,0,0,4362,4363,1,0,0,0,4363,4365,1,0,0,0,4364, - 4341,1,0,0,0,4364,4344,1,0,0,0,4365,701,1,0,0,0,4366,4367,7,28,0, - 0,4367,4368,3,706,353,0,4368,4369,3,240,120,0,4369,4370,3,244,122, - 0,4370,4371,5,370,0,0,4371,4384,5,426,0,0,4372,4382,5,17,0,0,4373, - 4376,5,399,0,0,4374,4377,3,618,309,0,4375,4377,3,276,138,0,4376, - 4374,1,0,0,0,4376,4375,1,0,0,0,4377,4378,1,0,0,0,4378,4379,5,400, - 0,0,4379,4383,1,0,0,0,4380,4383,3,618,309,0,4381,4383,3,276,138, - 0,4382,4373,1,0,0,0,4382,4380,1,0,0,0,4382,4381,1,0,0,0,4383,4385, - 1,0,0,0,4384,4372,1,0,0,0,4384,4385,1,0,0,0,4385,4386,1,0,0,0,4386, - 4387,3,240,120,0,4387,4388,3,242,121,0,4388,703,1,0,0,0,4389,4392, - 3,612,306,0,4390,4392,3,828,414,0,4391,4389,1,0,0,0,4391,4390,1, - 0,0,0,4392,705,1,0,0,0,4393,4398,3,704,352,0,4394,4395,5,397,0,0, - 4395,4397,3,704,352,0,4396,4394,1,0,0,0,4397,4400,1,0,0,0,4398,4396, - 1,0,0,0,4398,4399,1,0,0,0,4399,707,1,0,0,0,4400,4398,1,0,0,0,4401, - 4402,5,386,0,0,4402,4407,3,710,355,0,4403,4404,5,397,0,0,4404,4406, - 3,710,355,0,4405,4403,1,0,0,0,4406,4409,1,0,0,0,4407,4405,1,0,0, - 0,4407,4408,1,0,0,0,4408,709,1,0,0,0,4409,4407,1,0,0,0,4410,4411, - 3,926,463,0,4411,4412,5,17,0,0,4412,4413,3,712,356,0,4413,711,1, - 0,0,0,4414,4427,3,926,463,0,4415,4417,5,399,0,0,4416,4418,3,926, - 463,0,4417,4416,1,0,0,0,4417,4418,1,0,0,0,4418,4420,1,0,0,0,4419, - 4421,3,670,335,0,4420,4419,1,0,0,0,4420,4421,1,0,0,0,4421,4423,1, - 0,0,0,4422,4424,3,714,357,0,4423,4422,1,0,0,0,4423,4424,1,0,0,0, - 4424,4425,1,0,0,0,4425,4427,5,400,0,0,4426,4414,1,0,0,0,4426,4415, - 1,0,0,0,4427,713,1,0,0,0,4428,4431,3,716,358,0,4429,4431,3,718,359, - 0,4430,4428,1,0,0,0,4430,4429,1,0,0,0,4431,715,1,0,0,0,4432,4439, - 5,292,0,0,4433,4440,3,720,360,0,4434,4435,5,25,0,0,4435,4436,3,722, - 361,0,4436,4437,5,11,0,0,4437,4438,3,722,361,0,4438,4440,1,0,0,0, - 4439,4433,1,0,0,0,4439,4434,1,0,0,0,4440,717,1,0,0,0,4441,4448,5, - 260,0,0,4442,4449,3,720,360,0,4443,4444,5,25,0,0,4444,4445,3,722, - 361,0,4445,4446,5,11,0,0,4446,4447,3,722,361,0,4447,4449,1,0,0,0, - 4448,4442,1,0,0,0,4448,4443,1,0,0,0,4449,719,1,0,0,0,4450,4451,5, - 354,0,0,4451,4457,5,247,0,0,4452,4453,5,62,0,0,4453,4457,5,291,0, - 0,4454,4455,5,431,0,0,4455,4457,5,247,0,0,4456,4450,1,0,0,0,4456, - 4452,1,0,0,0,4456,4454,1,0,0,0,4457,721,1,0,0,0,4458,4459,7,29,0, - 0,4459,4463,7,30,0,0,4460,4461,5,62,0,0,4461,4463,5,291,0,0,4462, - 4458,1,0,0,0,4462,4460,1,0,0,0,4463,723,1,0,0,0,4464,4465,5,144, - 0,0,4465,4466,5,32,0,0,4466,4467,3,726,363,0,4467,725,1,0,0,0,4468, - 4473,3,284,142,0,4469,4473,3,730,365,0,4470,4473,3,732,366,0,4471, - 4473,3,728,364,0,4472,4468,1,0,0,0,4472,4469,1,0,0,0,4472,4470,1, - 0,0,0,4472,4471,1,0,0,0,4473,727,1,0,0,0,4474,4475,5,399,0,0,4475, - 4476,5,400,0,0,4476,729,1,0,0,0,4477,4480,5,290,0,0,4478,4480,5, - 61,0,0,4479,4477,1,0,0,0,4479,4478,1,0,0,0,4480,4481,1,0,0,0,4481, - 4482,5,399,0,0,4482,4487,3,828,414,0,4483,4484,5,397,0,0,4484,4486, - 3,828,414,0,4485,4483,1,0,0,0,4486,4489,1,0,0,0,4487,4485,1,0,0, - 0,4487,4488,1,0,0,0,4488,4490,1,0,0,0,4489,4487,1,0,0,0,4490,4491, - 5,400,0,0,4491,731,1,0,0,0,4492,4497,3,748,374,0,4493,4494,5,387, - 0,0,4494,4498,5,290,0,0,4495,4496,5,387,0,0,4496,4498,5,61,0,0,4497, - 4493,1,0,0,0,4497,4495,1,0,0,0,4497,4498,1,0,0,0,4498,4512,1,0,0, - 0,4499,4500,5,145,0,0,4500,4501,5,305,0,0,4501,4502,5,399,0,0,4502, - 4507,3,734,367,0,4503,4504,5,397,0,0,4504,4506,3,734,367,0,4505, - 4503,1,0,0,0,4506,4509,1,0,0,0,4507,4505,1,0,0,0,4507,4508,1,0,0, - 0,4508,4510,1,0,0,0,4509,4507,1,0,0,0,4510,4511,5,400,0,0,4511,4513, - 1,0,0,0,4512,4499,1,0,0,0,4512,4513,1,0,0,0,4513,733,1,0,0,0,4514, - 4517,3,736,368,0,4515,4517,3,738,369,0,4516,4514,1,0,0,0,4516,4515, - 1,0,0,0,4517,735,1,0,0,0,4518,4520,5,399,0,0,4519,4521,3,828,414, - 0,4520,4519,1,0,0,0,4520,4521,1,0,0,0,4521,4526,1,0,0,0,4522,4523, - 5,397,0,0,4523,4525,3,828,414,0,4524,4522,1,0,0,0,4525,4528,1,0, - 0,0,4526,4524,1,0,0,0,4526,4527,1,0,0,0,4527,4529,1,0,0,0,4528,4526, - 1,0,0,0,4529,4530,5,400,0,0,4530,737,1,0,0,0,4531,4532,3,828,414, - 0,4532,739,1,0,0,0,4533,4534,5,146,0,0,4534,4535,3,744,372,0,4535, - 741,1,0,0,0,4536,4537,5,256,0,0,4537,4538,3,828,414,0,4538,743,1, - 0,0,0,4539,4540,3,828,414,0,4540,745,1,0,0,0,4541,4542,5,399,0,0, - 4542,4543,3,748,374,0,4543,4544,5,400,0,0,4544,747,1,0,0,0,4545, - 4547,3,752,376,0,4546,4548,3,750,375,0,4547,4546,1,0,0,0,4547,4548, - 1,0,0,0,4548,749,1,0,0,0,4549,4550,5,397,0,0,4550,4552,3,752,376, - 0,4551,4549,1,0,0,0,4552,4553,1,0,0,0,4553,4551,1,0,0,0,4553,4554, - 1,0,0,0,4554,751,1,0,0,0,4555,4558,3,614,307,0,4556,4558,3,828,414, - 0,4557,4555,1,0,0,0,4557,4556,1,0,0,0,4558,753,1,0,0,0,4559,4561, - 3,828,414,0,4560,4562,5,17,0,0,4561,4560,1,0,0,0,4561,4562,1,0,0, - 0,4562,4564,1,0,0,0,4563,4565,3,926,463,0,4564,4563,1,0,0,0,4564, - 4565,1,0,0,0,4565,4570,1,0,0,0,4566,4567,5,397,0,0,4567,4569,3,756, - 378,0,4568,4566,1,0,0,0,4569,4572,1,0,0,0,4570,4568,1,0,0,0,4570, - 4571,1,0,0,0,4571,755,1,0,0,0,4572,4570,1,0,0,0,4573,4575,3,828, - 414,0,4574,4576,5,17,0,0,4575,4574,1,0,0,0,4575,4576,1,0,0,0,4576, - 4578,1,0,0,0,4577,4579,3,926,463,0,4578,4577,1,0,0,0,4578,4579,1, - 0,0,0,4579,757,1,0,0,0,4580,4583,3,746,373,0,4581,4583,3,748,374, - 0,4582,4580,1,0,0,0,4582,4581,1,0,0,0,4583,759,1,0,0,0,4584,4585, - 5,399,0,0,4585,4590,3,342,171,0,4586,4587,5,397,0,0,4587,4589,3, - 342,171,0,4588,4586,1,0,0,0,4589,4592,1,0,0,0,4590,4588,1,0,0,0, - 4590,4591,1,0,0,0,4591,4593,1,0,0,0,4592,4590,1,0,0,0,4593,4594, - 5,400,0,0,4594,761,1,0,0,0,4595,4600,3,342,171,0,4596,4597,5,397, - 0,0,4597,4599,3,342,171,0,4598,4596,1,0,0,0,4599,4602,1,0,0,0,4600, - 4598,1,0,0,0,4600,4601,1,0,0,0,4601,763,1,0,0,0,4602,4600,1,0,0, - 0,4603,4604,5,229,0,0,4604,4605,5,32,0,0,4605,4610,3,342,171,0,4606, - 4607,5,397,0,0,4607,4609,3,342,171,0,4608,4606,1,0,0,0,4609,4612, - 1,0,0,0,4610,4608,1,0,0,0,4610,4611,1,0,0,0,4611,765,1,0,0,0,4612, - 4610,1,0,0,0,4613,4614,5,41,0,0,4614,4615,5,32,0,0,4615,4616,3,758, - 379,0,4616,767,1,0,0,0,4617,4618,5,237,0,0,4618,4619,5,32,0,0,4619, - 4620,3,758,379,0,4620,769,1,0,0,0,4621,4622,5,97,0,0,4622,4623,5, - 32,0,0,4623,4624,3,758,379,0,4624,771,1,0,0,0,4625,4626,5,314,0, - 0,4626,4629,5,32,0,0,4627,4630,3,760,380,0,4628,4630,3,762,381,0, - 4629,4627,1,0,0,0,4629,4628,1,0,0,0,4630,773,1,0,0,0,4631,4632,5, - 349,0,0,4632,4636,5,399,0,0,4633,4637,5,179,0,0,4634,4637,5,343, - 0,0,4635,4637,5,29,0,0,4636,4633,1,0,0,0,4636,4634,1,0,0,0,4636, - 4635,1,0,0,0,4636,4637,1,0,0,0,4637,4639,1,0,0,0,4638,4640,3,704, - 352,0,4639,4638,1,0,0,0,4639,4640,1,0,0,0,4640,4641,1,0,0,0,4641, - 4642,5,139,0,0,4642,4643,3,704,352,0,4643,4644,5,400,0,0,4644,775, - 1,0,0,0,4645,4686,3,774,387,0,4646,4647,3,784,392,0,4647,4662,5, - 399,0,0,4648,4663,5,415,0,0,4649,4651,3,694,347,0,4650,4649,1,0, - 0,0,4650,4651,1,0,0,0,4651,4660,1,0,0,0,4652,4657,3,704,352,0,4653, - 4654,5,397,0,0,4654,4656,3,704,352,0,4655,4653,1,0,0,0,4656,4659, - 1,0,0,0,4657,4655,1,0,0,0,4657,4658,1,0,0,0,4658,4661,1,0,0,0,4659, - 4657,1,0,0,0,4660,4652,1,0,0,0,4660,4661,1,0,0,0,4661,4663,1,0,0, - 0,4662,4648,1,0,0,0,4662,4650,1,0,0,0,4663,4683,1,0,0,0,4664,4665, - 5,400,0,0,4665,4666,5,388,0,0,4666,4667,5,144,0,0,4667,4668,5,399, - 0,0,4668,4669,3,764,382,0,4669,4670,5,400,0,0,4670,4684,1,0,0,0, - 4671,4673,5,400,0,0,4672,4674,3,778,389,0,4673,4672,1,0,0,0,4673, - 4674,1,0,0,0,4674,4675,1,0,0,0,4675,4676,5,234,0,0,4676,4684,3,712, - 356,0,4677,4678,3,778,389,0,4678,4679,5,400,0,0,4679,4680,5,234, - 0,0,4680,4681,3,712,356,0,4681,4684,1,0,0,0,4682,4684,5,400,0,0, - 4683,4664,1,0,0,0,4683,4671,1,0,0,0,4683,4677,1,0,0,0,4683,4682, - 1,0,0,0,4684,4686,1,0,0,0,4685,4645,1,0,0,0,4685,4646,1,0,0,0,4686, - 777,1,0,0,0,4687,4688,5,281,0,0,4688,4692,5,220,0,0,4689,4690,5, - 152,0,0,4690,4692,5,220,0,0,4691,4687,1,0,0,0,4691,4689,1,0,0,0, - 4692,779,1,0,0,0,4693,4694,3,928,464,0,4694,781,1,0,0,0,4695,4698, - 3,786,393,0,4696,4698,5,426,0,0,4697,4695,1,0,0,0,4697,4696,1,0, - 0,0,4698,783,1,0,0,0,4699,4702,3,786,393,0,4700,4702,3,788,394,0, - 4701,4699,1,0,0,0,4701,4700,1,0,0,0,4702,785,1,0,0,0,4703,4704,3, - 928,464,0,4704,787,1,0,0,0,4705,4708,3,934,467,0,4706,4708,3,924, - 462,0,4707,4705,1,0,0,0,4707,4706,1,0,0,0,4708,789,1,0,0,0,4709, - 4710,5,36,0,0,4710,4711,5,399,0,0,4711,4712,3,828,414,0,4712,4713, - 5,17,0,0,4713,4716,3,382,191,0,4714,4715,5,137,0,0,4715,4717,5,426, - 0,0,4716,4714,1,0,0,0,4716,4717,1,0,0,0,4717,4718,1,0,0,0,4718,4719, - 5,400,0,0,4719,791,1,0,0,0,4720,4721,5,35,0,0,4721,4727,3,828,414, - 0,4722,4723,5,383,0,0,4723,4724,3,828,414,0,4724,4725,5,335,0,0, - 4725,4726,3,828,414,0,4726,4728,1,0,0,0,4727,4722,1,0,0,0,4728,4729, - 1,0,0,0,4729,4727,1,0,0,0,4729,4730,1,0,0,0,4730,4733,1,0,0,0,4731, - 4732,5,105,0,0,4732,4734,3,828,414,0,4733,4731,1,0,0,0,4733,4734, - 1,0,0,0,4734,4735,1,0,0,0,4735,4736,5,108,0,0,4736,793,1,0,0,0,4737, - 4743,5,35,0,0,4738,4739,5,383,0,0,4739,4740,3,828,414,0,4740,4741, - 5,335,0,0,4741,4742,3,828,414,0,4742,4744,1,0,0,0,4743,4738,1,0, - 0,0,4744,4745,1,0,0,0,4745,4743,1,0,0,0,4745,4746,1,0,0,0,4746,4749, - 1,0,0,0,4747,4748,5,105,0,0,4748,4750,3,828,414,0,4749,4747,1,0, - 0,0,4749,4750,1,0,0,0,4750,4751,1,0,0,0,4751,4752,5,108,0,0,4752, - 795,1,0,0,0,4753,4754,5,132,0,0,4754,4755,5,399,0,0,4755,4758,3, - 828,414,0,4756,4757,5,341,0,0,4757,4759,3,798,399,0,4758,4756,1, - 0,0,0,4758,4759,1,0,0,0,4759,4760,1,0,0,0,4760,4761,5,400,0,0,4761, - 797,1,0,0,0,4762,4771,3,976,488,0,4763,4771,5,257,0,0,4764,4771, - 3,978,489,0,4765,4771,3,980,490,0,4766,4771,3,982,491,0,4767,4771, - 3,984,492,0,4768,4771,3,986,493,0,4769,4771,3,988,494,0,4770,4762, - 1,0,0,0,4770,4763,1,0,0,0,4770,4764,1,0,0,0,4770,4765,1,0,0,0,4770, - 4766,1,0,0,0,4770,4767,1,0,0,0,4770,4768,1,0,0,0,4770,4769,1,0,0, - 0,4771,799,1,0,0,0,4772,4773,5,124,0,0,4773,4774,5,399,0,0,4774, - 4775,3,802,401,0,4775,4776,5,139,0,0,4776,4777,3,828,414,0,4777, - 4778,5,400,0,0,4778,801,1,0,0,0,4779,4788,3,976,488,0,4780,4788, - 5,257,0,0,4781,4788,3,978,489,0,4782,4788,3,980,490,0,4783,4788, - 3,982,491,0,4784,4788,3,984,492,0,4785,4788,3,986,493,0,4786,4788, - 3,988,494,0,4787,4779,1,0,0,0,4787,4780,1,0,0,0,4787,4781,1,0,0, - 0,4787,4782,1,0,0,0,4787,4783,1,0,0,0,4787,4784,1,0,0,0,4787,4785, - 1,0,0,0,4787,4786,1,0,0,0,4788,803,1,0,0,0,4789,4803,3,822,411,0, - 4790,4803,5,431,0,0,4791,4803,3,814,407,0,4792,4803,3,816,408,0, - 4793,4803,3,818,409,0,4794,4803,5,426,0,0,4795,4803,3,810,405,0, - 4796,4803,5,428,0,0,4797,4803,5,429,0,0,4798,4803,3,812,406,0,4799, - 4803,3,906,453,0,4800,4803,5,219,0,0,4801,4803,3,806,403,0,4802, - 4789,1,0,0,0,4802,4790,1,0,0,0,4802,4791,1,0,0,0,4802,4792,1,0,0, - 0,4802,4793,1,0,0,0,4802,4794,1,0,0,0,4802,4795,1,0,0,0,4802,4796, - 1,0,0,0,4802,4797,1,0,0,0,4802,4798,1,0,0,0,4802,4799,1,0,0,0,4802, - 4800,1,0,0,0,4802,4801,1,0,0,0,4803,805,1,0,0,0,4804,4805,3,808, - 404,0,4805,807,1,0,0,0,4806,4807,5,424,0,0,4807,809,1,0,0,0,4808, - 4810,5,426,0,0,4809,4811,5,426,0,0,4810,4809,1,0,0,0,4811,4812,1, - 0,0,0,4812,4810,1,0,0,0,4812,4813,1,0,0,0,4813,811,1,0,0,0,4814, - 4815,5,433,0,0,4815,4816,5,427,0,0,4816,813,1,0,0,0,4817,4818,5, - 71,0,0,4818,4821,5,426,0,0,4819,4821,5,63,0,0,4820,4817,1,0,0,0, - 4820,4819,1,0,0,0,4821,815,1,0,0,0,4822,4823,5,337,0,0,4823,4826, - 5,426,0,0,4824,4826,5,64,0,0,4825,4822,1,0,0,0,4825,4824,1,0,0,0, - 4826,817,1,0,0,0,4827,4828,5,338,0,0,4828,4829,5,426,0,0,4829,819, - 1,0,0,0,4830,4831,7,24,0,0,4831,821,1,0,0,0,4832,4833,3,820,410, - 0,4833,4834,3,826,413,0,4834,823,1,0,0,0,4835,4836,5,399,0,0,4836, - 4837,3,820,410,0,4837,4838,5,400,0,0,4838,4839,3,826,413,0,4839, - 4851,1,0,0,0,4840,4846,5,165,0,0,4841,4847,3,820,410,0,4842,4843, - 5,399,0,0,4843,4844,3,828,414,0,4844,4845,5,400,0,0,4845,4847,1, - 0,0,0,4846,4841,1,0,0,0,4846,4842,1,0,0,0,4847,4848,1,0,0,0,4848, - 4849,3,826,413,0,4849,4851,1,0,0,0,4850,4835,1,0,0,0,4850,4840,1, - 0,0,0,4851,825,1,0,0,0,4852,4853,3,976,488,0,4853,4854,5,341,0,0, - 4854,4855,3,978,489,0,4855,4867,1,0,0,0,4856,4857,3,982,491,0,4857, - 4858,5,341,0,0,4858,4859,3,988,494,0,4859,4867,1,0,0,0,4860,4867, - 3,976,488,0,4861,4867,3,978,489,0,4862,4867,3,982,491,0,4863,4867, - 3,984,492,0,4864,4867,3,986,493,0,4865,4867,3,988,494,0,4866,4852, - 1,0,0,0,4866,4856,1,0,0,0,4866,4860,1,0,0,0,4866,4861,1,0,0,0,4866, - 4862,1,0,0,0,4866,4863,1,0,0,0,4866,4864,1,0,0,0,4866,4865,1,0,0, - 0,4867,827,1,0,0,0,4868,4869,3,904,452,0,4869,829,1,0,0,0,4870,4882, - 3,804,402,0,4871,4882,3,824,412,0,4872,4882,3,790,395,0,4873,4882, - 3,800,400,0,4874,4882,3,796,398,0,4875,4882,3,792,396,0,4876,4882, - 3,794,397,0,4877,4882,3,866,433,0,4878,4882,3,776,388,0,4879,4882, - 3,746,373,0,4880,4882,3,926,463,0,4881,4870,1,0,0,0,4881,4871,1, - 0,0,0,4881,4872,1,0,0,0,4881,4873,1,0,0,0,4881,4874,1,0,0,0,4881, - 4875,1,0,0,0,4881,4876,1,0,0,0,4881,4877,1,0,0,0,4881,4878,1,0,0, - 0,4881,4879,1,0,0,0,4881,4880,1,0,0,0,4882,831,1,0,0,0,4883,4892, - 3,830,415,0,4884,4885,5,401,0,0,4885,4886,3,828,414,0,4886,4887, - 5,402,0,0,4887,4891,1,0,0,0,4888,4889,5,395,0,0,4889,4891,3,926, - 463,0,4890,4884,1,0,0,0,4890,4888,1,0,0,0,4891,4894,1,0,0,0,4892, - 4890,1,0,0,0,4892,4893,1,0,0,0,4893,833,1,0,0,0,4894,4892,1,0,0, - 0,4895,4896,7,31,0,0,4896,835,1,0,0,0,4897,4899,3,834,417,0,4898, - 4897,1,0,0,0,4899,4902,1,0,0,0,4900,4898,1,0,0,0,4900,4901,1,0,0, - 0,4901,4903,1,0,0,0,4902,4900,1,0,0,0,4903,4904,3,832,416,0,4904, - 837,1,0,0,0,4905,4906,5,423,0,0,4906,839,1,0,0,0,4907,4913,3,836, - 418,0,4908,4909,3,838,419,0,4909,4910,3,836,418,0,4910,4912,1,0, - 0,0,4911,4908,1,0,0,0,4912,4915,1,0,0,0,4913,4911,1,0,0,0,4913,4914, - 1,0,0,0,4914,841,1,0,0,0,4915,4913,1,0,0,0,4916,4917,7,32,0,0,4917, - 843,1,0,0,0,4918,4924,3,840,420,0,4919,4920,3,842,421,0,4920,4921, - 3,840,420,0,4921,4923,1,0,0,0,4922,4919,1,0,0,0,4923,4926,1,0,0, - 0,4924,4922,1,0,0,0,4924,4925,1,0,0,0,4925,845,1,0,0,0,4926,4924, - 1,0,0,0,4927,4928,7,33,0,0,4928,847,1,0,0,0,4929,4935,3,844,422, - 0,4930,4931,3,846,423,0,4931,4932,3,844,422,0,4932,4934,1,0,0,0, - 4933,4930,1,0,0,0,4934,4937,1,0,0,0,4935,4933,1,0,0,0,4935,4936, - 1,0,0,0,4936,849,1,0,0,0,4937,4935,1,0,0,0,4938,4939,5,422,0,0,4939, - 851,1,0,0,0,4940,4946,3,848,424,0,4941,4942,3,850,425,0,4942,4943, - 3,848,424,0,4943,4945,1,0,0,0,4944,4941,1,0,0,0,4945,4948,1,0,0, - 0,4946,4944,1,0,0,0,4946,4947,1,0,0,0,4947,853,1,0,0,0,4948,4946, - 1,0,0,0,4949,4950,5,419,0,0,4950,855,1,0,0,0,4951,4957,3,852,426, - 0,4952,4953,3,854,427,0,4953,4954,3,852,426,0,4954,4956,1,0,0,0, - 4955,4952,1,0,0,0,4956,4959,1,0,0,0,4957,4955,1,0,0,0,4957,4958, - 1,0,0,0,4958,857,1,0,0,0,4959,4957,1,0,0,0,4960,4961,5,421,0,0,4961, - 859,1,0,0,0,4962,4968,3,856,428,0,4963,4964,3,858,429,0,4964,4965, - 3,856,428,0,4965,4967,1,0,0,0,4966,4963,1,0,0,0,4967,4970,1,0,0, - 0,4968,4966,1,0,0,0,4968,4969,1,0,0,0,4969,861,1,0,0,0,4970,4968, - 1,0,0,0,4971,4972,7,34,0,0,4972,863,1,0,0,0,4973,4979,3,862,431, - 0,4974,4979,5,408,0,0,4975,4979,5,409,0,0,4976,4979,5,410,0,0,4977, - 4979,5,411,0,0,4978,4973,1,0,0,0,4978,4974,1,0,0,0,4978,4975,1,0, - 0,0,4978,4976,1,0,0,0,4978,4977,1,0,0,0,4979,865,1,0,0,0,4980,4981, - 5,399,0,0,4981,4982,3,410,205,0,4982,4983,5,400,0,0,4983,867,1,0, - 0,0,4984,4988,3,870,435,0,4985,4986,5,117,0,0,4986,4988,3,866,433, - 0,4987,4984,1,0,0,0,4987,4985,1,0,0,0,4988,869,1,0,0,0,4989,4991, - 3,860,430,0,4990,4992,3,872,436,0,4991,4990,1,0,0,0,4991,4992,1, - 0,0,0,4992,871,1,0,0,0,4993,4994,3,864,432,0,4994,4995,3,860,430, - 0,4995,5000,1,0,0,0,4996,5000,3,874,437,0,4997,4998,5,216,0,0,4998, - 5000,3,882,441,0,4999,4993,1,0,0,0,4999,4996,1,0,0,0,4999,4997,1, - 0,0,0,5000,873,1,0,0,0,5001,5002,5,154,0,0,5002,5013,3,880,440,0, - 5003,5004,5,25,0,0,5004,5005,3,860,430,0,5005,5006,5,11,0,0,5006, - 5007,3,860,430,0,5007,5013,1,0,0,0,5008,5009,5,184,0,0,5009,5010, - 7,35,0,0,5010,5013,3,746,373,0,5011,5013,3,876,438,0,5012,5001,1, - 0,0,0,5012,5003,1,0,0,0,5012,5008,1,0,0,0,5012,5011,1,0,0,0,5013, - 875,1,0,0,0,5014,5015,3,922,461,0,5015,5016,3,878,439,0,5016,5017, - 3,866,433,0,5017,877,1,0,0,0,5018,5019,7,36,0,0,5019,879,1,0,0,0, - 5020,5023,3,866,433,0,5021,5023,3,746,373,0,5022,5020,1,0,0,0,5022, - 5021,1,0,0,0,5023,881,1,0,0,0,5024,5025,3,862,431,0,5025,5026,3, - 860,430,0,5026,5029,1,0,0,0,5027,5029,3,874,437,0,5028,5024,1,0, - 0,0,5028,5027,1,0,0,0,5029,883,1,0,0,0,5030,5031,5,167,0,0,5031, - 5032,5,96,0,0,5032,5033,5,139,0,0,5033,885,1,0,0,0,5034,5042,5,405, - 0,0,5035,5042,5,406,0,0,5036,5042,5,407,0,0,5037,5038,5,167,0,0, - 5038,5039,5,216,0,0,5039,5040,5,96,0,0,5040,5042,5,139,0,0,5041, - 5034,1,0,0,0,5041,5035,1,0,0,0,5041,5036,1,0,0,0,5041,5037,1,0,0, - 0,5042,887,1,0,0,0,5043,5052,3,868,434,0,5044,5045,3,886,443,0,5045, - 5046,3,868,434,0,5046,5051,1,0,0,0,5047,5048,3,884,442,0,5048,5049, - 3,868,434,0,5049,5051,1,0,0,0,5050,5044,1,0,0,0,5050,5047,1,0,0, - 0,5051,5054,1,0,0,0,5052,5050,1,0,0,0,5052,5053,1,0,0,0,5053,889, - 1,0,0,0,5054,5052,1,0,0,0,5055,5068,5,219,0,0,5056,5068,5,350,0, - 0,5057,5068,5,125,0,0,5058,5068,5,360,0,0,5059,5060,5,216,0,0,5060, - 5068,5,219,0,0,5061,5062,5,216,0,0,5062,5068,5,350,0,0,5063,5064, - 5,216,0,0,5064,5068,5,125,0,0,5065,5066,5,216,0,0,5066,5068,5,360, - 0,0,5067,5055,1,0,0,0,5067,5056,1,0,0,0,5067,5057,1,0,0,0,5067,5058, - 1,0,0,0,5067,5059,1,0,0,0,5067,5061,1,0,0,0,5067,5063,1,0,0,0,5067, - 5065,1,0,0,0,5068,891,1,0,0,0,5069,5072,3,888,444,0,5070,5071,5, - 167,0,0,5071,5073,3,890,445,0,5072,5070,1,0,0,0,5072,5073,1,0,0, - 0,5073,893,1,0,0,0,5074,5075,5,216,0,0,5075,895,1,0,0,0,5076,5078, - 3,894,447,0,5077,5076,1,0,0,0,5078,5081,1,0,0,0,5079,5077,1,0,0, - 0,5079,5080,1,0,0,0,5080,5082,1,0,0,0,5081,5079,1,0,0,0,5082,5083, - 3,892,446,0,5083,897,1,0,0,0,5084,5085,5,11,0,0,5085,899,1,0,0,0, - 5086,5092,3,896,448,0,5087,5088,3,898,449,0,5088,5089,3,896,448, - 0,5089,5091,1,0,0,0,5090,5087,1,0,0,0,5091,5094,1,0,0,0,5092,5090, - 1,0,0,0,5092,5093,1,0,0,0,5093,901,1,0,0,0,5094,5092,1,0,0,0,5095, - 5096,5,228,0,0,5096,903,1,0,0,0,5097,5103,3,900,450,0,5098,5099, - 3,902,451,0,5099,5100,3,900,450,0,5100,5102,1,0,0,0,5101,5098,1, - 0,0,0,5102,5105,1,0,0,0,5103,5101,1,0,0,0,5103,5104,1,0,0,0,5104, - 905,1,0,0,0,5105,5103,1,0,0,0,5106,5107,7,37,0,0,5107,907,1,0,0, - 0,5108,5109,7,37,0,0,5109,909,1,0,0,0,5110,5112,3,660,330,0,5111, - 5113,3,912,456,0,5112,5111,1,0,0,0,5112,5113,1,0,0,0,5113,911,1, - 0,0,0,5114,5115,5,237,0,0,5115,5116,5,399,0,0,5116,5121,3,914,457, - 0,5117,5118,5,397,0,0,5118,5120,3,914,457,0,5119,5117,1,0,0,0,5120, - 5123,1,0,0,0,5121,5119,1,0,0,0,5121,5122,1,0,0,0,5122,5124,1,0,0, - 0,5123,5121,1,0,0,0,5124,5125,5,400,0,0,5125,913,1,0,0,0,5126,5129, - 3,926,463,0,5127,5128,5,405,0,0,5128,5130,3,804,402,0,5129,5127, - 1,0,0,0,5129,5130,1,0,0,0,5130,915,1,0,0,0,5131,5132,5,399,0,0,5132, - 5137,3,918,459,0,5133,5134,5,397,0,0,5134,5136,3,918,459,0,5135, - 5133,1,0,0,0,5136,5139,1,0,0,0,5137,5135,1,0,0,0,5137,5138,1,0,0, - 0,5138,5140,1,0,0,0,5139,5137,1,0,0,0,5140,5141,5,400,0,0,5141,917, - 1,0,0,0,5142,5143,3,926,463,0,5143,5144,3,920,460,0,5144,5145,3, - 804,402,0,5145,919,1,0,0,0,5146,5149,5,184,0,0,5147,5149,3,922,461, - 0,5148,5146,1,0,0,0,5148,5147,1,0,0,0,5149,921,1,0,0,0,5150,5151, - 7,38,0,0,5151,923,1,0,0,0,5152,5153,7,39,0,0,5153,925,1,0,0,0,5154, - 5157,5,432,0,0,5155,5157,3,932,466,0,5156,5154,1,0,0,0,5156,5155, - 1,0,0,0,5157,927,1,0,0,0,5158,5161,3,926,463,0,5159,5160,5,395,0, - 0,5160,5162,3,926,463,0,5161,5159,1,0,0,0,5161,5162,1,0,0,0,5162, - 929,1,0,0,0,5163,5164,3,926,463,0,5164,931,1,0,0,0,5165,5166,7,40, - 0,0,5166,933,1,0,0,0,5167,5168,7,41,0,0,5168,935,1,0,0,0,5169,5170, - 3,938,469,0,5170,5171,5,0,0,1,5171,937,1,0,0,0,5172,5177,3,940,470, - 0,5173,5174,5,397,0,0,5174,5176,3,940,470,0,5175,5173,1,0,0,0,5176, - 5179,1,0,0,0,5177,5175,1,0,0,0,5177,5178,1,0,0,0,5178,939,1,0,0, - 0,5179,5177,1,0,0,0,5180,5185,3,942,471,0,5181,5182,5,399,0,0,5182, - 5183,3,944,472,0,5183,5184,5,400,0,0,5184,5186,1,0,0,0,5185,5181, - 1,0,0,0,5185,5186,1,0,0,0,5186,941,1,0,0,0,5187,5188,7,42,0,0,5188, - 943,1,0,0,0,5189,5194,3,946,473,0,5190,5191,5,397,0,0,5191,5193, - 3,946,473,0,5192,5190,1,0,0,0,5193,5196,1,0,0,0,5194,5192,1,0,0, - 0,5194,5195,1,0,0,0,5195,945,1,0,0,0,5196,5194,1,0,0,0,5197,5198, - 7,43,0,0,5198,947,1,0,0,0,5199,5200,5,249,0,0,5200,5201,3,926,463, - 0,5201,5202,5,139,0,0,5202,5203,3,394,197,0,5203,949,1,0,0,0,5204, - 5205,5,115,0,0,5205,5206,3,926,463,0,5206,5207,5,370,0,0,5207,5208, - 3,952,476,0,5208,951,1,0,0,0,5209,5214,3,804,402,0,5210,5211,5,397, - 0,0,5211,5213,3,804,402,0,5212,5210,1,0,0,0,5213,5216,1,0,0,0,5214, - 5212,1,0,0,0,5214,5215,1,0,0,0,5215,953,1,0,0,0,5216,5214,1,0,0, - 0,5217,5232,3,964,482,0,5218,5232,3,992,496,0,5219,5232,3,998,499, - 0,5220,5232,3,994,497,0,5221,5232,3,996,498,0,5222,5232,3,1020,510, - 0,5223,5232,3,1022,511,0,5224,5232,3,1024,512,0,5225,5232,3,1030, - 515,0,5226,5232,3,1032,516,0,5227,5232,3,1034,517,0,5228,5232,3, - 1036,518,0,5229,5232,3,1038,519,0,5230,5232,3,1040,520,0,5231,5217, - 1,0,0,0,5231,5218,1,0,0,0,5231,5219,1,0,0,0,5231,5220,1,0,0,0,5231, - 5221,1,0,0,0,5231,5222,1,0,0,0,5231,5223,1,0,0,0,5231,5224,1,0,0, - 0,5231,5225,1,0,0,0,5231,5226,1,0,0,0,5231,5227,1,0,0,0,5231,5228, - 1,0,0,0,5231,5229,1,0,0,0,5231,5230,1,0,0,0,5232,955,1,0,0,0,5233, - 5234,5,259,0,0,5234,5235,5,405,0,0,5235,5241,5,431,0,0,5236,5237, - 5,83,0,0,5237,5238,5,246,0,0,5238,5239,5,405,0,0,5239,5241,3,1000, - 500,0,5240,5233,1,0,0,0,5240,5236,1,0,0,0,5241,957,1,0,0,0,5242, - 5247,3,956,478,0,5243,5244,5,397,0,0,5244,5246,3,956,478,0,5245, - 5243,1,0,0,0,5246,5249,1,0,0,0,5247,5245,1,0,0,0,5247,5248,1,0,0, - 0,5248,959,1,0,0,0,5249,5247,1,0,0,0,5250,5254,5,259,0,0,5251,5252, - 5,83,0,0,5252,5254,5,246,0,0,5253,5250,1,0,0,0,5253,5251,1,0,0,0, - 5254,961,1,0,0,0,5255,5260,3,960,480,0,5256,5257,5,397,0,0,5257, - 5259,3,960,480,0,5258,5256,1,0,0,0,5259,5262,1,0,0,0,5260,5258,1, - 0,0,0,5260,5261,1,0,0,0,5261,963,1,0,0,0,5262,5260,1,0,0,0,5263, - 5264,5,58,0,0,5264,5265,5,280,0,0,5265,5267,5,243,0,0,5266,5268, - 3,44,22,0,5267,5266,1,0,0,0,5267,5268,1,0,0,0,5268,5278,1,0,0,0, - 5269,5270,3,926,463,0,5270,5271,5,184,0,0,5271,5272,3,926,463,0, - 5272,5279,1,0,0,0,5273,5276,3,926,463,0,5274,5275,5,387,0,0,5275, - 5277,3,958,479,0,5276,5274,1,0,0,0,5276,5277,1,0,0,0,5277,5279,1, - 0,0,0,5278,5269,1,0,0,0,5278,5273,1,0,0,0,5279,965,1,0,0,0,5280, - 5281,5,387,0,0,5281,5282,5,278,0,0,5282,967,1,0,0,0,5283,5285,5, - 2,0,0,5284,5286,3,966,483,0,5285,5284,1,0,0,0,5285,5286,1,0,0,0, - 5286,969,1,0,0,0,5287,5288,7,44,0,0,5288,971,1,0,0,0,5289,5290,7, - 45,0,0,5290,973,1,0,0,0,5291,5292,5,362,0,0,5292,975,1,0,0,0,5293, - 5294,7,46,0,0,5294,977,1,0,0,0,5295,5296,7,47,0,0,5296,979,1,0,0, - 0,5297,5298,7,48,0,0,5298,981,1,0,0,0,5299,5300,7,49,0,0,5300,983, - 1,0,0,0,5301,5302,7,50,0,0,5302,985,1,0,0,0,5303,5304,7,51,0,0,5304, - 987,1,0,0,0,5305,5306,7,52,0,0,5306,989,1,0,0,0,5307,5308,7,53,0, - 0,5308,991,1,0,0,0,5309,5310,5,9,0,0,5310,5311,5,280,0,0,5311,5312, - 5,243,0,0,5312,5330,3,926,463,0,5313,5331,5,373,0,0,5314,5331,3, - 972,486,0,5315,5316,5,304,0,0,5316,5331,3,958,479,0,5317,5318,5, - 363,0,0,5318,5331,3,962,481,0,5319,5320,5,274,0,0,5320,5321,5,341, - 0,0,5321,5331,3,926,463,0,5322,5324,3,968,484,0,5323,5325,3,970, - 485,0,5324,5323,1,0,0,0,5324,5325,1,0,0,0,5325,5331,1,0,0,0,5326, - 5328,3,970,485,0,5327,5329,3,968,484,0,5328,5327,1,0,0,0,5328,5329, - 1,0,0,0,5329,5331,1,0,0,0,5330,5313,1,0,0,0,5330,5314,1,0,0,0,5330, - 5315,1,0,0,0,5330,5317,1,0,0,0,5330,5319,1,0,0,0,5330,5322,1,0,0, - 0,5330,5326,1,0,0,0,5331,993,1,0,0,0,5332,5335,3,970,485,0,5333, - 5335,3,972,486,0,5334,5332,1,0,0,0,5334,5333,1,0,0,0,5335,5336,1, - 0,0,0,5336,5337,5,390,0,0,5337,5338,5,197,0,0,5338,995,1,0,0,0,5339, - 5351,5,278,0,0,5340,5341,5,3,0,0,5341,5342,5,280,0,0,5342,5343,5, - 243,0,0,5343,5344,5,387,0,0,5344,5352,3,926,463,0,5345,5346,5,280, - 0,0,5346,5347,5,243,0,0,5347,5348,3,926,463,0,5348,5349,5,387,0, - 0,5349,5350,3,926,463,0,5350,5352,1,0,0,0,5351,5340,1,0,0,0,5351, - 5345,1,0,0,0,5352,997,1,0,0,0,5353,5354,5,101,0,0,5354,5355,5,280, - 0,0,5355,5357,5,243,0,0,5356,5358,3,40,20,0,5357,5356,1,0,0,0,5357, - 5358,1,0,0,0,5358,5359,1,0,0,0,5359,5360,3,926,463,0,5360,999,1, - 0,0,0,5361,5366,3,926,463,0,5362,5363,5,395,0,0,5363,5365,3,926, - 463,0,5364,5362,1,0,0,0,5365,5368,1,0,0,0,5366,5364,1,0,0,0,5366, - 5367,1,0,0,0,5367,1001,1,0,0,0,5368,5366,1,0,0,0,5369,5370,3,1010, - 505,0,5370,1003,1,0,0,0,5371,5372,3,1002,501,0,5372,5373,5,0,0,1, - 5373,1005,1,0,0,0,5374,5379,3,1008,504,0,5375,5376,5,228,0,0,5376, - 5378,3,1008,504,0,5377,5375,1,0,0,0,5378,5381,1,0,0,0,5379,5377, - 1,0,0,0,5379,5380,1,0,0,0,5380,1007,1,0,0,0,5381,5379,1,0,0,0,5382, - 5387,3,1010,505,0,5383,5384,5,11,0,0,5384,5386,3,1010,505,0,5385, - 5383,1,0,0,0,5386,5389,1,0,0,0,5387,5385,1,0,0,0,5387,5388,1,0,0, - 0,5388,1009,1,0,0,0,5389,5387,1,0,0,0,5390,5391,3,926,463,0,5391, - 5392,3,1014,507,0,5392,5393,3,1012,506,0,5393,1011,1,0,0,0,5394, - 5395,7,24,0,0,5395,1013,1,0,0,0,5396,5397,5,411,0,0,5397,1015,1, - 0,0,0,5398,5403,5,176,0,0,5399,5400,5,211,0,0,5400,5401,5,341,0, - 0,5401,5403,3,1000,500,0,5402,5398,1,0,0,0,5402,5399,1,0,0,0,5403, - 1017,1,0,0,0,5404,5405,3,1016,508,0,5405,5406,5,0,0,1,5406,1019, - 1,0,0,0,5407,5408,5,58,0,0,5408,5409,5,348,0,0,5409,5410,3,926,463, - 0,5410,5411,5,395,0,0,5411,5412,3,926,463,0,5412,5413,5,383,0,0, - 5413,5414,3,1002,501,0,5414,5415,5,99,0,0,5415,5416,3,1016,508,0, - 5416,1021,1,0,0,0,5417,5418,5,9,0,0,5418,5419,5,348,0,0,5419,5420, - 3,926,463,0,5420,5421,5,395,0,0,5421,5438,3,926,463,0,5422,5423, - 5,383,0,0,5423,5424,3,1002,501,0,5424,5425,5,99,0,0,5425,5426,3, - 1016,508,0,5426,5439,1,0,0,0,5427,5428,5,4,0,0,5428,5432,5,341,0, - 0,5429,5430,5,101,0,0,5430,5432,5,139,0,0,5431,5427,1,0,0,0,5431, - 5429,1,0,0,0,5432,5436,1,0,0,0,5433,5434,5,246,0,0,5434,5437,3,1000, - 500,0,5435,5437,5,362,0,0,5436,5433,1,0,0,0,5436,5435,1,0,0,0,5437, - 5439,1,0,0,0,5438,5422,1,0,0,0,5438,5431,1,0,0,0,5439,1023,1,0,0, - 0,5440,5441,5,101,0,0,5441,5442,5,348,0,0,5442,5443,3,926,463,0, - 5443,5444,5,395,0,0,5444,5445,3,926,463,0,5445,1025,1,0,0,0,5446, - 5447,5,8,0,0,5447,5448,5,405,0,0,5448,5459,5,431,0,0,5449,5450,5, - 259,0,0,5450,5451,5,405,0,0,5451,5459,5,431,0,0,5452,5453,5,294, - 0,0,5453,5454,5,405,0,0,5454,5459,5,426,0,0,5455,5456,5,240,0,0, - 5456,5457,5,405,0,0,5457,5459,3,1000,500,0,5458,5446,1,0,0,0,5458, - 5449,1,0,0,0,5458,5452,1,0,0,0,5458,5455,1,0,0,0,5459,1027,1,0,0, - 0,5460,5465,3,1026,513,0,5461,5462,5,397,0,0,5462,5464,3,1026,513, - 0,5463,5461,1,0,0,0,5464,5467,1,0,0,0,5465,5463,1,0,0,0,5465,5466, - 1,0,0,0,5466,1029,1,0,0,0,5467,5465,1,0,0,0,5468,5469,5,58,0,0,5469, - 5470,5,246,0,0,5470,5471,3,926,463,0,5471,5472,5,395,0,0,5472,5473, - 3,1000,500,0,5473,5474,5,387,0,0,5474,5475,3,1028,514,0,5475,1031, - 1,0,0,0,5476,5477,5,9,0,0,5477,5478,5,246,0,0,5478,5479,3,926,463, - 0,5479,5480,5,395,0,0,5480,5488,3,1000,500,0,5481,5482,5,304,0,0, - 5482,5489,3,1028,514,0,5483,5484,5,363,0,0,5484,5489,5,294,0,0,5485, - 5486,7,54,0,0,5486,5487,5,348,0,0,5487,5489,3,926,463,0,5488,5481, - 1,0,0,0,5488,5483,1,0,0,0,5488,5485,1,0,0,0,5489,1033,1,0,0,0,5490, - 5491,5,101,0,0,5491,5492,5,246,0,0,5492,5493,3,926,463,0,5493,5494, - 5,395,0,0,5494,5495,3,1000,500,0,5495,1035,1,0,0,0,5496,5497,5,58, - 0,0,5497,5498,7,55,0,0,5498,5499,5,200,0,0,5499,5500,5,426,0,0,5500, - 5501,5,154,0,0,5501,5505,3,926,463,0,5502,5503,5,341,0,0,5503,5506, - 3,1000,500,0,5504,5506,3,974,487,0,5505,5502,1,0,0,0,5505,5504,1, - 0,0,0,5506,5510,1,0,0,0,5507,5508,5,387,0,0,5508,5509,5,229,0,0, - 5509,5511,5,431,0,0,5510,5507,1,0,0,0,5510,5511,1,0,0,0,5511,1037, - 1,0,0,0,5512,5513,5,9,0,0,5513,5514,7,55,0,0,5514,5515,5,200,0,0, - 5515,5516,5,426,0,0,5516,5517,5,154,0,0,5517,5521,3,926,463,0,5518, - 5519,5,341,0,0,5519,5522,3,1000,500,0,5520,5522,3,974,487,0,5521, - 5518,1,0,0,0,5521,5520,1,0,0,0,5522,5526,1,0,0,0,5523,5524,5,387, - 0,0,5524,5525,5,229,0,0,5525,5527,5,431,0,0,5526,5523,1,0,0,0,5526, - 5527,1,0,0,0,5527,1039,1,0,0,0,5528,5529,5,101,0,0,5529,5530,7,55, - 0,0,5530,5531,5,200,0,0,5531,5532,5,426,0,0,5532,5533,5,154,0,0, - 5533,5534,3,926,463,0,5534,1041,1,0,0,0,653,1045,1052,1055,1061, - 1067,1074,1084,1087,1091,1111,1116,1121,1127,1134,1147,1151,1155, - 1160,1167,1171,1176,1183,1187,1198,1204,1211,1260,1288,1292,1296, - 1299,1302,1307,1313,1317,1323,1325,1342,1354,1358,1365,1373,1376, - 1381,1385,1388,1398,1406,1410,1413,1417,1421,1424,1429,1435,1440, - 1445,1449,1460,1462,1466,1476,1480,1486,1489,1496,1501,1509,1514, - 1518,1526,1531,1537,1543,1546,1549,1552,1561,1569,1574,1582,1589, - 1592,1595,1597,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632, - 1635,1637,1649,1655,1663,1665,1675,1681,1696,1713,1718,1722,1726, - 1733,1740,1746,1750,1753,1760,1783,1788,1792,1800,1809,1813,1819, - 1825,1832,1835,1841,1848,1856,1865,1874,1881,1901,1908,1910,1917, - 1927,1935,1939,1943,1956,1965,1981,1985,1990,1995,1998,2001,2005, - 2008,2011,2016,2024,2028,2035,2038,2041,2044,2056,2062,2088,2096, - 2100,2103,2106,2109,2112,2115,2118,2121,2130,2140,2143,2163,2169, - 2175,2178,2180,2187,2194,2207,2212,2221,2229,2237,2247,2260,2273, - 2294,2298,2313,2319,2322,2325,2328,2331,2335,2349,2357,2360,2375, - 2409,2417,2422,2430,2435,2440,2450,2458,2466,2474,2482,2486,2496, - 2500,2508,2517,2520,2524,2531,2537,2541,2547,2551,2563,2572,2583, - 2587,2594,2606,2613,2622,2625,2632,2638,2644,2647,2650,2656,2660, - 2664,2669,2673,2677,2681,2689,2693,2697,2701,2705,2713,2717,2721, - 2729,2734,2739,2743,2747,2754,2763,2771,2783,2801,2804,2810,2836, - 2839,2845,2853,2861,2874,2881,2884,2887,2890,2893,2896,2899,2902, - 2905,2908,2911,2916,2919,2922,2925,2928,2931,2934,2937,2940,2943, - 2946,2948,2954,2958,2961,2964,2967,2970,2973,2980,2984,2987,2990, - 2993,2996,2999,3006,3009,3017,3021,3028,3030,3033,3038,3041,3045, - 3050,3056,3062,3070,3078,3085,3091,3100,3103,3107,3120,3124,3135, - 3142,3146,3151,3154,3164,3166,3170,3177,3182,3202,3209,3232,3248, - 3265,3271,3288,3301,3305,3309,3316,3344,3351,3356,3361,3366,3371, - 3379,3385,3389,3392,3395,3401,3408,3418,3422,3427,3431,3437,3444, - 3451,3462,3471,3475,3478,3481,3489,3492,3500,3503,3511,3515,3520, - 3524,3533,3549,3564,3566,3582,3589,3606,3609,3612,3615,3621,3644, - 3652,3666,3669,3674,3700,3704,3707,3710,3714,3719,3722,3725,3728, - 3731,3734,3740,3743,3746,3749,3752,3755,3758,3761,3764,3767,3771, - 3773,3779,3784,3787,3790,3793,3796,3802,3805,3808,3811,3814,3817, - 3820,3823,3826,3829,3833,3835,3837,3842,3846,3849,3852,3857,3875, - 3884,3896,3904,3916,3919,3925,3932,3939,3946,3953,3962,3966,3973, - 3978,3982,3998,4002,4004,4007,4020,4023,4026,4038,4041,4048,4057, - 4062,4064,4066,4083,4086,4095,4101,4105,4108,4111,4114,4117,4129, - 4133,4136,4139,4147,4154,4157,4164,4167,4172,4179,4187,4193,4198, - 4202,4207,4214,4228,4231,4235,4252,4260,4263,4276,4285,4288,4294, - 4297,4302,4305,4314,4328,4334,4336,4344,4347,4357,4362,4364,4376, - 4382,4384,4391,4398,4407,4417,4420,4423,4426,4430,4439,4448,4456, - 4462,4472,4479,4487,4497,4507,4512,4516,4520,4526,4547,4553,4557, - 4561,4564,4570,4575,4578,4582,4590,4600,4610,4629,4636,4639,4650, - 4657,4660,4662,4673,4683,4685,4691,4697,4701,4707,4716,4729,4733, - 4745,4749,4758,4770,4787,4802,4812,4820,4825,4846,4850,4866,4881, - 4890,4892,4900,4913,4924,4935,4946,4957,4968,4978,4987,4991,4999, - 5012,5022,5028,5041,5050,5052,5067,5072,5079,5092,5103,5112,5121, - 5129,5137,5148,5156,5161,5177,5185,5194,5214,5231,5240,5247,5253, - 5260,5267,5276,5278,5285,5324,5328,5330,5334,5351,5357,5366,5379, - 5387,5402,5431,5436,5438,5458,5465,5488,5505,5510,5521,5526 + 1,0,5,0,694,8,0,10,0,12,0,697,9,0,1,0,1,0,1,1,1,1,3,1,703,8,1,1, + 1,3,1,706,8,1,1,2,1,2,5,2,710,8,2,10,2,12,2,713,9,2,1,2,1,2,1,2, + 3,2,718,8,2,1,3,1,3,1,3,1,3,1,3,3,3,725,8,3,1,3,1,3,1,3,1,3,1,3, + 1,3,1,3,1,3,3,3,735,8,3,1,3,3,3,738,8,3,1,3,1,3,3,3,742,8,3,1,4, + 1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,757,8,5,1,5, + 1,5,1,5,1,5,1,5,3,5,764,8,5,1,5,1,5,1,5,1,5,3,5,770,8,5,1,5,1,5, + 1,5,3,5,775,8,5,1,5,1,5,1,5,3,5,780,8,5,1,5,3,5,783,8,5,1,5,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 1,5,1,5,5,5,805,8,5,10,5,12,5,808,9,5,1,5,1,5,5,5,812,8,5,10,5,12, + 5,815,9,5,3,5,817,8,5,1,6,1,6,1,6,3,6,822,8,6,1,6,1,6,1,6,3,6,827, + 8,6,1,6,1,6,1,6,1,6,3,6,833,8,6,1,7,1,7,3,7,837,8,7,1,7,1,7,1,7, + 1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,3,8,850,8,8,1,9,1,9,3,9,854,8,9, + 1,9,1,9,3,9,858,8,9,1,9,1,9,1,9,3,9,863,8,9,1,10,1,10,1,10,1,10, + 1,10,3,10,870,8,10,1,10,1,10,3,10,874,8,10,1,11,1,11,1,11,3,11,879, + 8,11,1,12,1,12,1,12,1,12,1,12,3,12,886,8,12,1,12,1,12,3,12,890,8, + 12,1,13,1,13,1,13,3,13,895,8,13,1,14,1,14,1,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1, + 14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,4,14,941, + 8,14,11,14,12,14,942,1,14,1,14,1,14,4,14,948,8,14,11,14,12,14,949, + 1,14,1,14,1,14,3,14,955,8,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16, + 1,17,1,17,1,18,1,18,1,18,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,21, + 1,21,3,21,978,8,21,1,21,1,21,3,21,982,8,21,1,21,1,21,3,21,986,8, + 21,1,21,3,21,989,8,21,1,21,1,21,3,21,993,8,21,1,21,1,21,1,21,3,21, + 998,8,21,1,21,1,21,1,21,1,21,3,21,1004,8,21,1,21,1,21,3,21,1008, + 8,21,1,21,1,21,1,21,1,21,3,21,1014,8,21,3,21,1016,8,21,1,22,1,22, + 1,22,1,23,1,23,1,23,1,24,1,24,1,24,3,24,1027,8,24,1,24,1,24,3,24, + 1031,8,24,1,25,1,25,1,25,1,26,1,26,3,26,1038,8,26,1,26,1,26,1,26, + 1,26,1,26,1,26,3,26,1046,8,26,1,26,3,26,1049,8,26,1,27,1,27,1,27, + 3,27,1054,8,27,1,27,1,27,3,27,1058,8,27,1,27,3,27,1061,8,27,1,28, + 1,28,1,28,1,28,1,28,1,29,1,29,1,29,3,29,1071,8,29,1,29,1,29,1,29, + 1,29,1,29,1,29,3,29,1079,8,29,5,29,1081,8,29,10,29,12,29,1084,9, + 29,3,29,1086,8,29,1,30,1,30,3,30,1090,8,30,1,31,1,31,3,31,1094,8, + 31,1,31,3,31,1097,8,31,1,32,1,32,1,32,3,32,1102,8,32,1,32,1,32,1, + 32,1,32,3,32,1108,8,32,1,32,1,32,1,32,3,32,1113,8,32,1,32,1,32,1, + 32,3,32,1118,8,32,1,32,1,32,3,32,1122,8,32,1,33,1,33,1,33,1,33,1, + 33,1,33,1,33,1,33,1,33,3,33,1133,8,33,3,33,1135,8,33,1,33,1,33,3, + 33,1139,8,33,1,34,1,34,1,35,1,35,1,36,1,36,1,36,1,36,3,36,1149,8, + 36,1,36,1,36,3,36,1153,8,36,1,36,1,36,1,36,1,36,3,36,1159,8,36,1, + 36,3,36,1162,8,36,1,36,1,36,1,36,1,36,1,36,3,36,1169,8,36,1,36,1, + 36,1,36,3,36,1174,8,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1182,8, + 36,1,36,1,36,1,36,3,36,1187,8,36,1,36,1,36,3,36,1191,8,36,1,36,1, + 36,1,36,1,36,1,36,1,36,3,36,1199,8,36,1,36,1,36,1,36,3,36,1204,8, + 36,1,36,1,36,1,36,1,36,3,36,1210,8,36,1,36,1,36,1,36,1,36,3,36,1216, + 8,36,1,36,3,36,1219,8,36,1,36,3,36,1222,8,36,1,36,3,36,1225,8,36, + 1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1234,8,36,1,36,1,36,1,36, + 1,36,1,36,1,36,3,36,1242,8,36,1,36,1,36,1,36,3,36,1247,8,36,1,36, + 1,36,1,36,1,36,1,36,1,36,3,36,1255,8,36,1,36,1,36,1,36,1,36,1,36, + 3,36,1262,8,36,1,36,3,36,1265,8,36,1,36,3,36,1268,8,36,3,36,1270, + 8,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1281,8,36, + 3,36,1283,8,36,1,36,3,36,1286,8,36,1,36,3,36,1289,8,36,1,36,3,36, + 1292,8,36,1,36,3,36,1295,8,36,1,36,3,36,1298,8,36,3,36,1300,8,36, + 1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1312,8,36, + 1,36,1,36,1,36,1,36,3,36,1318,8,36,1,36,1,36,1,36,1,36,1,36,1,36, + 3,36,1326,8,36,3,36,1328,8,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37, + 1,37,3,37,1338,8,37,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39, + 1,39,1,40,1,40,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,43,1,43, + 1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,3,45,1371,8,45,1,45, + 1,45,1,45,3,45,1376,8,45,1,46,1,46,3,46,1380,8,46,1,46,1,46,3,46, + 1384,8,46,1,46,1,46,1,46,1,47,1,47,3,47,1391,8,47,1,47,1,47,1,47, + 5,47,1396,8,47,10,47,12,47,1399,9,47,1,47,1,47,1,47,3,47,1404,8, + 47,1,48,1,48,3,48,1408,8,48,1,48,3,48,1411,8,48,1,48,1,48,1,48,5, + 48,1416,8,48,10,48,12,48,1419,9,48,1,48,1,48,1,48,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,52,1,52,1,52,1,52, + 1,52,3,52,1441,8,52,1,53,1,53,1,53,3,53,1446,8,53,1,53,1,53,3,53, + 1450,8,53,1,54,1,54,1,54,1,54,1,55,1,55,3,55,1458,8,55,1,56,1,56, + 1,56,1,57,1,57,1,57,1,57,3,57,1467,8,57,1,57,1,57,1,57,1,57,1,57, + 3,57,1474,8,57,1,58,1,58,1,58,1,58,3,58,1480,8,58,1,58,1,58,1,58, + 1,58,1,58,3,58,1487,8,58,1,58,3,58,1490,8,58,1,58,1,58,1,58,1,58, + 3,58,1496,8,58,1,59,1,59,1,59,5,59,1501,8,59,10,59,12,59,1504,9, + 59,1,60,1,60,1,60,1,60,1,60,3,60,1511,8,60,1,61,1,61,1,62,1,62,1, + 62,5,62,1518,8,62,10,62,12,62,1521,9,62,1,63,1,63,1,63,1,63,1,63, + 1,63,3,63,1529,8,63,1,64,1,64,1,64,1,64,1,64,3,64,1536,8,64,1,65, + 1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,68,1,68, + 1,68,1,68,1,69,1,69,3,69,1556,8,69,1,69,1,69,1,69,1,69,1,69,3,69, + 1563,8,69,3,69,1565,8,69,1,70,1,70,1,70,5,70,1570,8,70,10,70,12, + 70,1573,9,70,1,71,1,71,1,71,1,72,1,72,1,73,1,73,3,73,1582,8,73,1, + 73,1,73,1,73,1,73,1,73,1,73,3,73,1590,8,73,1,74,1,74,3,74,1594,8, + 74,1,74,1,74,3,74,1598,8,74,1,74,1,74,1,75,1,75,1,75,1,76,1,76,1, + 76,1,76,1,76,1,76,3,76,1611,8,76,1,76,1,76,1,76,1,77,1,77,1,77,1, + 77,3,77,1620,8,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, + 78,1,78,1,78,1,78,1,78,3,78,1636,8,78,1,78,1,78,3,78,1640,8,78,1, + 78,1,78,1,78,3,78,1645,8,78,1,78,1,78,1,78,3,78,1650,8,78,1,78,3, + 78,1653,8,78,1,78,3,78,1656,8,78,1,78,3,78,1659,8,78,1,78,3,78,1662, + 8,78,1,78,3,78,1665,8,78,1,79,1,79,1,79,3,79,1670,8,79,1,79,1,79, + 1,79,1,79,1,80,1,80,1,80,3,80,1679,8,80,1,80,1,80,3,80,1683,8,80, + 1,80,1,80,1,80,1,80,1,80,3,80,1690,8,80,1,80,3,80,1693,8,80,1,80, + 3,80,1696,8,80,1,80,3,80,1699,8,80,1,80,1,80,1,80,1,81,1,81,1,81, + 1,81,1,81,1,81,1,81,3,81,1711,8,81,1,81,1,81,1,82,1,82,3,82,1717, + 8,82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,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,87,1,87,1,87,3,87, + 1743,8,87,1,87,1,87,1,88,1,88,1,88,1,88,3,88,1751,8,88,1,88,1,88, + 3,88,1755,8,88,1,88,3,88,1758,8,88,1,88,3,88,1761,8,88,1,88,3,88, + 1764,8,88,1,88,3,88,1767,8,88,1,88,3,88,1770,8,88,1,88,3,88,1773, + 8,88,1,88,3,88,1776,8,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,3,89, + 1785,8,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,3,90,1795,8,90, + 1,90,3,90,1798,8,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92, + 1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,3,93,1818,8,93,1,94, + 1,94,1,94,1,94,3,94,1824,8,94,1,94,1,94,1,94,1,94,3,94,1830,8,94, + 1,94,3,94,1833,8,94,3,94,1835,8,94,1,95,1,95,1,95,1,95,1,96,3,96, + 1842,8,96,1,96,1,96,1,96,1,97,1,97,3,97,1849,8,97,1,98,1,98,1,98, + 1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,3,100,1862,8,100,1, + 100,1,100,1,100,3,100,1867,8,100,1,100,1,100,1,101,1,101,1,101,5, + 101,1874,8,101,10,101,12,101,1877,9,101,1,102,1,102,1,102,5,102, + 1882,8,102,10,102,12,102,1885,9,102,1,103,1,103,1,103,1,103,1,103, + 3,103,1892,8,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,103,3,103,1905,8,103,1,104,1,104,1,104,1,104,1,104, + 1,104,1,104,1,104,1,104,1,104,1,104,3,104,1918,8,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,105, + 1,105,3,105,1934,8,105,1,106,1,106,3,106,1938,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, + 3,109,1953,8,109,1,110,1,110,1,110,1,110,3,110,1959,8,110,1,110, + 3,110,1962,8,110,1,110,3,110,1965,8,110,1,110,3,110,1968,8,110,1, + 110,3,110,1971,8,110,1,111,1,111,3,111,1975,8,111,1,112,1,112,1, + 112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,5,114,1988,8, + 114,10,114,12,114,1991,9,114,3,114,1993,8,114,1,115,1,115,1,115, + 1,115,1,116,1,116,1,116,5,116,2002,8,116,10,116,12,116,2005,9,116, + 1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 3,118,2018,8,118,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120, + 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,122,1,122, + 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,3,123,2052,8,123,1,123,1,123,1,123,1,123,1,123,1,123, + 3,123,2060,8,123,1,123,1,123,1,123,3,123,2065,8,123,1,123,1,123, + 1,123,1,123,1,123,1,123,3,123,2073,8,123,1,123,1,123,1,123,3,123, + 2078,8,123,1,123,1,123,1,123,3,123,2083,8,123,1,124,1,124,1,124, + 5,124,2088,8,124,10,124,12,124,2091,9,124,1,125,1,125,1,125,5,125, + 2096,8,125,10,125,12,125,2099,9,125,1,126,1,126,1,126,5,126,2104, + 8,126,10,126,12,126,2107,9,126,1,127,1,127,1,127,5,127,2112,8,127, + 10,127,12,127,2115,9,127,1,128,1,128,3,128,2119,8,128,1,129,1,129, + 1,130,1,130,1,130,1,130,1,130,1,130,3,130,2129,8,130,5,130,2131, + 8,130,10,130,12,130,2134,9,130,1,131,1,131,1,131,5,131,2139,8,131, + 10,131,12,131,2142,9,131,1,132,1,132,1,132,1,132,1,133,1,133,3,133, + 2150,8,133,1,133,3,133,2153,8,133,1,134,1,134,3,134,2157,8,134,1, + 135,1,135,1,136,1,136,1,136,3,136,2164,8,136,1,137,1,137,1,138,1, + 138,3,138,2170,8,138,1,138,1,138,3,138,2174,8,138,1,139,1,139,1, + 139,1,139,3,139,2180,8,139,1,140,1,140,3,140,2184,8,140,1,141,1, + 141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,3,143,2196,8, + 143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143,2205,8,143,1, + 144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,3,144,2216,8, + 144,1,145,1,145,3,145,2220,8,145,1,146,1,146,1,146,5,146,2225,8, + 146,10,146,12,146,2228,9,146,1,147,1,147,1,147,1,147,1,148,1,148, + 1,148,5,148,2237,8,148,10,148,12,148,2240,9,148,1,149,1,149,1,150, + 1,150,1,150,1,151,1,151,3,151,2249,8,151,1,151,3,151,2252,8,151, + 1,152,1,152,1,152,5,152,2257,8,152,10,152,12,152,2260,9,152,1,153, + 1,153,1,153,3,153,2265,8,153,1,154,1,154,3,154,2269,8,154,1,154, + 3,154,2272,8,154,1,154,3,154,2275,8,154,1,155,1,155,1,155,1,155, + 3,155,2281,8,155,1,156,1,156,3,156,2285,8,156,1,157,1,157,3,157, + 2289,8,157,1,158,1,158,1,158,3,158,2294,8,158,1,158,1,158,3,158, + 2298,8,158,1,159,1,159,3,159,2302,8,159,1,160,1,160,3,160,2306,8, + 160,1,160,1,160,1,160,1,160,1,160,1,160,3,160,2314,8,160,1,161,1, + 161,3,161,2318,8,161,1,161,1,161,3,161,2322,8,161,1,162,1,162,3, + 162,2326,8,162,1,163,1,163,3,163,2330,8,163,1,163,1,163,1,163,1, + 163,1,163,1,163,3,163,2338,8,163,1,164,1,164,3,164,2342,8,164,1, + 164,1,164,3,164,2346,8,164,1,165,1,165,1,165,1,165,1,165,1,165,3, + 165,2354,8,165,1,166,1,166,1,166,3,166,2359,8,166,1,167,1,167,1, + 167,3,167,2364,8,167,1,168,1,168,3,168,2368,8,168,1,169,1,169,3, + 169,2372,8,169,1,170,1,170,1,170,1,170,1,170,3,170,2379,8,170,1, + 171,1,171,1,172,1,172,1,172,5,172,2386,8,172,10,172,12,172,2389, + 9,172,1,173,1,173,1,173,1,173,1,173,3,173,2396,8,173,1,174,1,174, + 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,3,174,2408,8,174, + 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174, + 1,174,1,174,1,174,1,174,1,174,3,174,2426,8,174,1,174,3,174,2429, + 8,174,1,174,1,174,1,174,1,174,3,174,2435,8,174,1,175,1,175,1,175, + 1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,177, + 1,177,1,177,1,177,1,178,1,178,1,178,1,178,1,178,1,179,1,179,3,179, + 2461,8,179,1,180,3,180,2464,8,180,1,180,1,180,1,181,1,181,3,181, + 2470,8,181,1,182,1,182,1,182,1,182,5,182,2476,8,182,10,182,12,182, + 2479,9,182,1,183,1,183,1,183,1,183,1,183,3,183,2486,8,183,1,183, + 1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,5,184,2497,8,184, + 10,184,12,184,2500,9,184,1,185,1,185,1,185,1,185,3,185,2506,8,185, + 1,185,3,185,2509,8,185,1,185,3,185,2512,8,185,1,185,3,185,2515,8, + 185,1,185,3,185,2518,8,185,1,185,3,185,2521,8,185,1,185,3,185,2524, + 8,185,1,185,3,185,2527,8,185,1,185,3,185,2530,8,185,1,185,3,185, + 2533,8,185,1,185,3,185,2536,8,185,1,185,1,185,1,185,3,185,2541,8, + 185,1,185,3,185,2544,8,185,1,185,3,185,2547,8,185,1,185,3,185,2550, + 8,185,1,185,3,185,2553,8,185,1,185,3,185,2556,8,185,1,185,3,185, + 2559,8,185,1,185,3,185,2562,8,185,1,185,3,185,2565,8,185,1,185,3, + 185,2568,8,185,1,185,3,185,2571,8,185,3,185,2573,8,185,1,186,1,186, + 1,186,1,186,3,186,2579,8,186,1,187,1,187,3,187,2583,8,187,1,187, + 3,187,2586,8,187,1,187,3,187,2589,8,187,1,187,3,187,2592,8,187,1, + 187,3,187,2595,8,187,1,187,3,187,2598,8,187,1,187,1,187,1,187,1, + 187,1,187,3,187,2605,8,187,1,188,1,188,3,188,2609,8,188,1,188,3, + 188,2612,8,188,1,188,3,188,2615,8,188,1,188,3,188,2618,8,188,1,188, + 3,188,2621,8,188,1,188,3,188,2624,8,188,1,189,1,189,1,189,4,189, + 2629,8,189,11,189,12,189,2630,1,190,3,190,2634,8,190,1,190,1,190, + 1,191,1,191,1,191,1,191,3,191,2642,8,191,1,191,1,191,3,191,2646, + 8,191,1,191,1,191,1,191,1,191,1,191,3,191,2653,8,191,3,191,2655, + 8,191,1,192,3,192,2658,8,192,1,192,1,192,1,192,3,192,2663,8,192, + 1,192,3,192,2666,8,192,1,192,1,192,3,192,2670,8,192,1,193,1,193, + 1,193,3,193,2675,8,193,1,193,1,193,1,193,1,193,3,193,2681,8,193, + 1,194,1,194,1,194,1,194,1,195,1,195,3,195,2689,8,195,1,196,1,196, + 1,196,1,196,5,196,2695,8,196,10,196,12,196,2698,9,196,1,197,1,197, + 1,197,1,197,1,197,5,197,2705,8,197,10,197,12,197,2708,9,197,3,197, + 2710,8,197,1,197,1,197,3,197,2714,8,197,1,197,1,197,3,197,2718,8, + 197,1,197,1,197,1,197,3,197,2723,8,197,1,198,1,198,1,198,1,198,1, + 198,3,198,2730,8,198,1,199,1,199,5,199,2734,8,199,10,199,12,199, + 2737,9,199,1,199,3,199,2740,8,199,1,200,1,200,1,200,1,200,1,200, + 3,200,2747,8,200,1,200,1,200,1,200,3,200,2752,8,200,1,200,1,200, + 1,200,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,3,201,2765, + 8,201,1,202,1,202,1,202,1,202,1,202,1,202,3,202,2773,8,202,1,203, + 1,203,1,203,1,204,1,204,1,204,1,205,1,205,1,205,1,206,1,206,1,206, + 1,206,1,206,1,206,1,206,1,206,3,206,2792,8,206,1,206,1,206,1,206, + 1,206,1,206,1,206,1,206,1,206,3,206,2802,8,206,1,206,1,206,1,206, + 1,206,1,206,1,206,1,206,1,206,1,206,1,206,1,206,3,206,2815,8,206, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,2825,8,207, + 1,207,1,207,3,207,2829,8,207,4,207,2831,8,207,11,207,12,207,2832, + 1,207,1,207,5,207,2837,8,207,10,207,12,207,2840,9,207,1,207,1,207, + 5,207,2844,8,207,10,207,12,207,2847,9,207,1,207,1,207,5,207,2851, + 8,207,10,207,12,207,2854,9,207,1,207,1,207,1,207,1,207,1,207,1,207, + 3,207,2862,8,207,1,207,1,207,1,207,1,207,1,207,3,207,2869,8,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,1,207,1,207,1,207,3,207,2889,8,207,1,207, + 3,207,2892,8,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,3,207,2906,8,207,1,208,1,208,1,208,1,208, + 1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,3,208,2921, + 8,208,1,208,1,208,3,208,2925,8,208,1,208,1,208,1,208,1,208,1,208, + 1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208,1,208, + 5,208,2943,8,208,10,208,12,208,2946,9,208,1,208,1,208,1,208,1,208, + 1,208,1,208,1,208,1,208,1,208,3,208,2957,8,208,1,208,1,208,1,208, + 1,208,3,208,2963,8,208,1,208,3,208,2966,8,208,1,208,3,208,2969,8, + 208,1,208,1,208,1,208,1,208,3,208,2975,8,208,1,208,1,208,1,208,1, + 208,3,208,2981,8,208,1,208,1,208,1,208,1,208,1,208,3,208,2988,8, + 208,1,208,1,208,1,208,1,208,1,208,1,208,3,208,2996,8,208,1,208,1, + 208,1,208,1,208,3,208,3002,8,208,1,208,1,208,3,208,3006,8,208,1, + 208,1,208,1,208,3,208,3011,8,208,1,208,3,208,3014,8,208,1,208,1, + 208,3,208,3018,8,208,1,208,1,208,1,208,1,208,1,208,3,208,3025,8, + 208,1,208,1,208,1,208,3,208,3030,8,208,1,208,1,208,1,208,3,208,3035, + 8,208,1,208,3,208,3038,8,208,3,208,3040,8,208,1,209,1,209,1,209, + 1,209,1,209,1,209,3,209,3048,8,209,1,209,1,209,1,209,1,209,1,209, + 1,209,3,209,3056,8,209,1,209,1,209,3,209,3060,8,209,4,209,3062,8, + 209,11,209,12,209,3063,1,209,1,209,3,209,3068,8,209,1,210,1,210, + 1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, + 1,210,1,210,3,210,3085,8,210,1,211,1,211,1,211,1,211,1,211,1,211, + 1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,1,211,3,211,3102, + 8,211,1,212,1,212,1,212,1,213,1,213,3,213,3109,8,213,1,213,1,213, + 1,213,1,213,1,213,5,213,3116,8,213,10,213,12,213,3119,9,213,1,213, + 1,213,3,213,3123,8,213,1,213,3,213,3126,8,213,1,213,3,213,3129,8, + 213,1,214,1,214,3,214,3133,8,214,1,214,1,214,1,214,1,215,1,215,1, + 215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,3,215,3148,8,215,1, + 215,1,215,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,3,216,3162,8,216,1,216,3,216,3165,8,216,1,217,1,217,1,217, + 1,217,1,217,1,217,1,217,1,217,1,217,3,217,3176,8,217,1,218,1,218, + 3,218,3180,8,218,1,218,3,218,3183,8,218,1,218,3,218,3186,8,218,1, + 218,1,218,3,218,3190,8,218,1,218,1,218,1,218,3,218,3195,8,218,1, + 218,3,218,3198,8,218,1,218,3,218,3201,8,218,1,218,3,218,3204,8,218, + 1,218,3,218,3207,8,218,1,218,3,218,3210,8,218,1,218,1,218,1,218, + 1,218,3,218,3216,8,218,1,218,3,218,3219,8,218,1,218,3,218,3222,8, + 218,1,218,3,218,3225,8,218,1,218,3,218,3228,8,218,1,218,3,218,3231, + 8,218,1,218,3,218,3234,8,218,1,218,3,218,3237,8,218,1,218,3,218, + 3240,8,218,1,218,3,218,3243,8,218,1,218,1,218,3,218,3247,8,218,3, + 218,3249,8,218,1,218,1,218,1,218,1,218,3,218,3255,8,218,1,218,1, + 218,1,218,3,218,3260,8,218,1,218,3,218,3263,8,218,1,218,3,218,3266, + 8,218,1,218,3,218,3269,8,218,1,218,3,218,3272,8,218,1,218,1,218, + 1,218,1,218,3,218,3278,8,218,1,218,3,218,3281,8,218,1,218,3,218, + 3284,8,218,1,218,3,218,3287,8,218,1,218,3,218,3290,8,218,1,218,3, + 218,3293,8,218,1,218,3,218,3296,8,218,1,218,3,218,3299,8,218,1,218, + 3,218,3302,8,218,1,218,3,218,3305,8,218,1,218,1,218,3,218,3309,8, + 218,3,218,3311,8,218,3,218,3313,8,218,1,219,1,219,1,219,3,219,3318, + 8,219,1,219,1,219,1,219,3,219,3323,8,219,1,219,1,219,3,219,3327, + 8,219,1,219,1,219,3,219,3331,8,219,1,219,1,219,1,219,3,219,3336, + 8,219,1,220,1,220,1,220,3,220,3341,8,220,1,220,1,220,1,221,1,221, + 1,221,5,221,3348,8,221,10,221,12,221,3351,9,221,1,221,1,221,1,222, + 1,222,1,222,5,222,3358,8,222,10,222,12,222,3361,9,222,1,223,1,223, + 1,223,5,223,3366,8,223,10,223,12,223,3369,9,223,1,224,1,224,1,224, + 1,225,1,225,1,225,1,225,4,225,3378,8,225,11,225,12,225,3379,1,225, + 3,225,3383,8,225,1,226,1,226,5,226,3387,8,226,10,226,12,226,3390, + 9,226,1,226,1,226,5,226,3394,8,226,10,226,12,226,3397,9,226,1,226, + 1,226,5,226,3401,8,226,10,226,12,226,3404,9,226,1,226,1,226,5,226, + 3408,8,226,10,226,12,226,3411,9,226,1,226,1,226,1,226,1,226,3,226, + 3417,8,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,3,227,3426, + 8,227,5,227,3428,8,227,10,227,12,227,3431,9,227,1,228,1,228,1,228, + 1,228,3,228,3437,8,228,1,228,5,228,3440,8,228,10,228,12,228,3443, + 9,228,1,229,3,229,3446,8,229,1,229,1,229,3,229,3450,8,229,1,229, + 3,229,3453,8,229,1,229,3,229,3456,8,229,1,229,1,229,1,229,1,229, + 1,230,1,230,1,230,1,230,1,230,3,230,3467,8,230,1,230,1,230,3,230, + 3471,8,230,3,230,3473,8,230,1,230,3,230,3476,8,230,1,231,1,231,1, + 231,1,231,1,231,1,231,1,231,1,231,1,231,5,231,3487,8,231,10,231, + 12,231,3490,9,231,3,231,3492,8,231,1,231,3,231,3495,8,231,1,231, + 1,231,1,231,1,231,1,231,1,231,1,231,1,231,5,231,3505,8,231,10,231, + 12,231,3508,9,231,3,231,3510,8,231,1,231,1,231,1,231,1,231,1,231, + 3,231,3517,8,231,1,231,1,231,1,231,1,231,1,231,5,231,3524,8,231, + 10,231,12,231,3527,9,231,1,231,1,231,3,231,3531,8,231,3,231,3533, + 8,231,3,231,3535,8,231,1,232,1,232,1,233,1,233,1,233,1,233,1,233, + 1,233,1,233,1,233,1,233,1,233,1,233,5,233,3550,8,233,10,233,12,233, + 3553,9,233,3,233,3555,8,233,1,233,1,233,1,233,1,233,1,233,1,233, + 3,233,3563,8,233,1,233,3,233,3566,8,233,1,234,1,234,3,234,3570,8, + 234,1,234,3,234,3573,8,234,1,234,3,234,3576,8,234,1,234,3,234,3579, + 8,234,1,234,3,234,3582,8,234,1,235,1,235,1,235,1,235,1,235,1,235, + 1,235,1,235,1,235,1,235,3,235,3594,8,235,1,236,1,236,1,237,1,237, + 1,238,1,238,3,238,3602,8,238,1,239,1,239,1,239,1,239,1,239,3,239, + 3609,8,239,1,239,3,239,3612,8,239,1,240,1,240,1,240,1,240,1,240, + 3,240,3619,8,240,1,240,3,240,3622,8,240,1,241,1,241,1,241,3,241, + 3627,8,241,1,241,1,241,1,242,1,242,1,242,3,242,3634,8,242,1,242, + 1,242,1,243,1,243,1,243,1,243,3,243,3642,8,243,1,243,1,243,1,244, + 1,244,1,244,1,244,3,244,3650,8,244,1,244,1,244,1,244,3,244,3655, + 8,244,1,244,1,244,3,244,3659,8,244,1,245,1,245,1,245,3,245,3664, + 8,245,1,246,1,246,1,246,1,246,1,246,3,246,3671,8,246,1,246,1,246, + 1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,5,246,3683,8,246, + 10,246,12,246,3686,9,246,3,246,3688,8,246,1,246,1,246,3,246,3692, + 8,246,1,247,1,247,1,247,1,248,1,248,1,248,1,248,5,248,3701,8,248, + 10,248,12,248,3704,9,248,1,248,1,248,1,248,1,248,1,248,5,248,3711, + 8,248,10,248,12,248,3714,9,248,3,248,3716,8,248,1,249,1,249,1,249, + 1,249,1,249,3,249,3723,8,249,1,249,1,249,1,249,1,249,1,249,5,249, + 3730,8,249,10,249,12,249,3733,9,249,3,249,3735,8,249,1,249,1,249, + 1,250,1,250,3,250,3741,8,250,1,250,3,250,3744,8,250,1,250,1,250, + 1,250,5,250,3749,8,250,10,250,12,250,3752,9,250,1,250,1,250,3,250, + 3756,8,250,1,250,3,250,3759,8,250,1,251,1,251,1,251,1,251,1,251, + 1,251,1,251,1,251,1,251,1,251,1,251,3,251,3772,8,251,1,251,1,251, + 1,251,1,251,3,251,3778,8,251,3,251,3780,8,251,1,251,1,251,1,251, + 1,252,1,252,1,252,3,252,3788,8,252,1,252,3,252,3791,8,252,1,252, + 1,252,1,252,1,252,1,252,1,252,5,252,3799,8,252,10,252,12,252,3802, + 9,252,1,252,1,252,3,252,3806,8,252,3,252,3808,8,252,1,253,1,253, + 1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,3820,8,253, + 1,253,1,253,1,253,1,253,3,253,3826,8,253,3,253,3828,8,253,1,253, + 1,253,1,253,1,254,1,254,3,254,3835,8,254,1,255,1,255,1,255,5,255, + 3840,8,255,10,255,12,255,3843,9,255,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,1,256,1,256,5,256,3854,8,256,10,256,12,256,3857,9,256, + 1,257,1,257,1,257,3,257,3862,8,257,1,257,3,257,3865,8,257,1,257, + 3,257,3868,8,257,1,257,3,257,3871,8,257,1,258,1,258,1,258,1,258, + 1,258,1,258,1,258,3,258,3880,8,258,1,258,1,258,1,258,1,258,1,258, + 3,258,3887,8,258,1,259,1,259,1,259,1,259,3,259,3893,8,259,1,260, + 1,260,1,260,1,260,1,260,1,260,1,260,3,260,3902,8,260,1,261,1,261, + 3,261,3906,8,261,1,261,1,261,1,261,1,261,5,261,3912,8,261,10,261, + 12,261,3915,9,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,3,262, + 3924,8,262,1,262,1,262,1,262,1,262,1,262,1,262,5,262,3932,8,262, + 10,262,12,262,3935,9,262,1,262,1,262,3,262,3939,8,262,1,263,1,263, + 3,263,3943,8,263,1,263,1,263,5,263,3947,8,263,10,263,12,263,3950, + 9,263,1,263,1,263,3,263,3954,8,263,1,264,1,264,1,264,1,265,1,265, + 1,265,1,266,1,266,3,266,3964,8,266,1,267,1,267,3,267,3968,8,267, + 1,267,3,267,3971,8,267,1,267,1,267,1,267,3,267,3976,8,267,1,267, + 3,267,3979,8,267,5,267,3981,8,267,10,267,12,267,3984,9,267,1,268, + 1,268,3,268,3988,8,268,1,269,1,269,1,269,1,269,1,270,1,270,1,270, + 4,270,3997,8,270,11,270,12,270,3998,3,270,4001,8,270,1,271,1,271, + 1,271,1,271,1,271,5,271,4008,8,271,10,271,12,271,4011,9,271,1,272, + 1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274,1,274, + 1,274,1,274,5,274,4027,8,274,10,274,12,274,4030,9,274,1,274,1,274, + 1,274,1,274,1,274,5,274,4037,8,274,10,274,12,274,4040,9,274,3,274, + 4042,8,274,1,275,1,275,1,275,1,275,1,275,3,275,4049,8,275,1,275, + 3,275,4052,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, + 3,275,4062,8,275,1,275,1,275,1,275,5,275,4067,8,275,10,275,12,275, + 4070,9,275,3,275,4072,8,275,3,275,4074,8,275,1,275,1,275,1,275,1, + 275,1,275,1,275,1,275,1,275,1,275,3,275,4085,8,275,1,275,1,275,1, + 275,1,275,1,275,1,275,1,275,1,275,3,275,4095,8,275,3,275,4097,8, + 275,1,276,1,276,1,276,1,277,1,277,1,278,1,278,3,278,4106,8,278,1, + 279,1,279,1,279,3,279,4111,8,279,1,280,1,280,1,280,1,280,1,280,1, + 280,1,280,3,280,4120,8,280,1,280,1,280,1,281,1,281,1,281,1,281,1, + 281,1,281,1,281,4,281,4131,8,281,11,281,12,281,4132,1,281,1,281, + 3,281,4137,8,281,1,281,1,281,1,282,1,282,1,282,1,282,1,282,1,282, + 4,282,4147,8,282,11,282,12,282,4148,1,282,1,282,3,282,4153,8,282, + 1,282,1,282,1,283,1,283,1,283,1,283,1,283,3,283,4162,8,283,1,283, + 1,283,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,285,1,285,3,285,4181,8,285,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286,1,286, + 5,286,4197,8,286,10,286,12,286,4200,9,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,286,1,286,1,286,3,286,4211,8,286,1,287,1,287,1,288, + 1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,3,288, + 4226,8,288,1,288,1,288,3,288,4230,8,288,1,289,1,289,1,289,1,289, + 1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,3,289, + 4246,8,289,1,290,1,290,1,290,5,290,4251,8,290,10,290,12,290,4254, + 9,290,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291,1,291, + 1,291,3,291,4267,8,291,1,292,5,292,4270,8,292,10,292,12,292,4273, + 9,292,1,292,1,292,1,292,1,292,1,292,1,292,1,292,5,292,4282,8,292, + 10,292,12,292,4285,9,292,1,293,1,293,1,293,5,293,4290,8,293,10,293, + 12,293,4293,9,293,1,294,1,294,1,294,5,294,4298,8,294,10,294,12,294, + 4301,9,294,1,295,1,295,1,295,5,295,4306,8,295,10,295,12,295,4309, + 9,295,1,296,1,296,1,296,5,296,4314,8,296,10,296,12,296,4317,9,296, + 1,297,1,297,1,297,5,297,4322,8,297,10,297,12,297,4325,9,297,1,298, + 1,298,1,298,5,298,4330,8,298,10,298,12,298,4333,9,298,1,299,1,299, + 1,300,1,300,1,300,1,300,1,301,1,301,3,301,4343,8,301,1,301,1,301, + 3,301,4347,8,301,1,302,1,302,1,302,1,302,1,302,1,302,3,302,4355, + 8,302,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303,1,303, + 1,303,1,303,1,303,1,303,3,303,4371,8,303,1,304,1,304,3,304,4375, + 8,304,1,305,1,305,1,305,3,305,4380,8,305,1,306,1,306,1,306,1,306, + 1,307,1,307,1,307,1,307,1,307,1,307,1,307,3,307,4393,8,307,1,308, + 1,308,1,308,1,308,1,308,1,308,1,308,5,308,4402,8,308,10,308,12,308, + 4405,9,308,1,309,1,309,1,309,1,309,1,309,1,309,3,309,4413,8,309, + 1,310,5,310,4416,8,310,10,310,12,310,4419,9,310,1,310,1,310,1,310, + 3,310,4424,8,310,1,311,1,311,1,311,5,311,4429,8,311,10,311,12,311, + 4432,9,311,1,312,1,312,3,312,4436,8,312,1,313,1,313,1,313,1,313, + 1,313,5,313,4443,8,313,10,313,12,313,4446,9,313,1,313,1,313,1,314, + 1,314,1,314,3,314,4453,8,314,1,315,1,315,1,315,1,315,5,315,4459, + 8,315,10,315,12,315,4462,9,315,1,315,1,315,1,316,1,316,1,316,3,316, + 4469,8,316,1,316,1,316,1,317,1,317,1,318,1,318,1,319,1,319,3,319, + 4479,8,319,1,320,1,320,1,320,3,320,4484,8,320,1,321,1,321,1,322, + 1,322,1,323,1,323,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324, + 1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324, + 1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324, + 1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324, + 1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,1,324,3,324,4542, + 8,324,1,325,1,325,1,325,1,325,3,325,4548,8,325,1,325,1,325,1,325, + 1,325,1,325,1,325,1,325,3,325,4557,8,325,3,325,4559,8,325,1,325, + 1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 5,325,4573,8,325,10,325,12,325,4576,9,325,1,325,1,325,1,325,1,325, + 1,325,3,325,4583,8,325,1,325,1,325,3,325,4587,8,325,3,325,4589,8, + 325,1,325,1,325,1,325,1,325,3,325,4595,8,325,1,325,1,325,1,325,3, + 325,4600,8,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1, + 325,1,325,1,325,1,325,1,325,1,325,1,325,3,325,4617,8,325,1,325,1, + 325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,3,325,4643,8,325,1,325,1,325,1,325,3,325,4648,8,325,3,325, + 4650,8,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,1,325,1,325,1,325,1,325,1,325,3,325,4678,8,325,1,325,1,325, + 1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325,1,325, + 1,325,1,325,3,325,4695,8,325,1,325,1,325,1,325,3,325,4700,8,325, + 1,325,1,325,1,325,1,325,1,325,1,325,1,325,3,325,4709,8,325,1,326, + 1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,327,3,327,4720,8,327, + 1,328,1,328,1,328,5,328,4725,8,328,10,328,12,328,4728,9,328,1,329, + 1,329,1,329,3,329,4733,8,329,1,330,1,330,1,330,3,330,4738,8,330, + 1,331,1,331,1,332,1,332,1,333,1,333,1,334,1,334,1,335,1,335,1,336, + 1,336,1,337,1,337,1,338,1,338,1,339,1,339,1,340,1,340,1,341,1,341, + 1,341,5,341,4763,8,341,10,341,12,341,4766,9,341,1,342,1,342,1,342, + 1,342,1,343,1,343,1,343,1,343,3,343,4776,8,343,1,344,1,344,1,344, + 1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,1,344,3,344,4790, + 8,344,1,345,1,345,1,345,5,345,4795,8,345,10,345,12,345,4798,9,345, + 1,345,1,813,0,346,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, + 0,60,2,0,57,57,172,172,4,0,91,91,121,121,226,226,325,325,2,0,50, + 50,346,346,2,0,34,34,282,282,1,0,89,90,2,0,139,139,154,154,2,0,67, + 67,295,295,2,0,68,68,296,296,1,0,155,156,2,0,114,114,307,307,11, + 0,7,7,9,9,58,58,86,86,101,101,155,155,161,161,190,190,299,299,309, + 309,365,365,3,0,4,4,101,101,326,326,3,0,15,15,128,128,170,170,1, + 0,141,142,2,0,30,30,351,351,2,0,217,217,373,373,2,0,214,214,272, + 272,2,0,18,18,89,89,2,0,130,130,177,177,2,0,39,39,376,376,4,0,112, + 112,164,164,205,205,356,356,2,0,7,7,96,96,2,0,125,125,350,350,2, + 0,225,225,391,391,2,0,42,42,315,315,2,0,189,189,196,196,2,0,426, + 426,431,431,2,0,140,140,285,285,3,0,12,12,231,231,300,300,2,0,241, + 241,292,292,2,0,198,198,268,268,2,0,260,260,292,292,2,0,354,354, + 431,431,2,0,133,133,247,247,2,0,152,152,281,281,3,0,413,414,418, + 418,420,420,2,0,412,412,415,417,1,0,413,414,4,0,184,184,270,270, + 286,286,408,411,2,0,7,7,13,13,3,0,7,7,13,13,313,313,3,0,184,184, + 270,270,286,286,4,0,125,125,219,219,350,350,360,360,2,0,405,405, + 407,411,24,0,11,11,16,16,25,28,35,35,100,100,131,132,151,151,154, + 154,162,163,184,184,198,198,216,216,228,228,264,264,270,270,286, + 286,311,311,323,324,340,340,357,357,383,383,405,417,419,421,423, + 423,85,0,1,6,8,8,10,10,15,15,18,20,22,24,30,31,33,34,37,38,40,44, + 46,47,49,50,52,53,56,57,59,59,66,66,68,68,72,77,79,79,83,85,87,89, + 91,95,97,99,103,104,106,107,109,111,114,116,118,121,127,130,137, + 138,142,142,147,150,152,152,155,156,158,160,168,170,172,177,182, + 183,185,187,189,193,195,197,199,202,204,204,206,209,211,212,214, + 215,217,218,220,220,222,223,226,227,232,233,235,236,238,240,243, + 246,252,252,254,255,257,259,261,262,265,267,271,282,284,284,287, + 288,293,298,300,303,305,310,312,312,314,317,319,325,327,328,330, + 330,332,334,339,340,342,342,344,346,349,349,352,353,355,355,357, + 357,360,364,366,368,371,373,375,375,377,382,385,385,388,394,13,0, + 16,16,26,28,63,64,71,71,100,100,131,131,145,145,151,151,162,163, + 198,198,264,264,311,311,337,337,2,0,4,4,101,101,2,0,9,9,58,58,3, + 0,14,14,144,144,369,369,1,0,106,107,1,0,94,95,1,0,392,393,1,0,208, + 209,1,0,381,382,1,0,73,74,1,0,148,149,1,0,206,207,1,0,297,298,1, + 0,80,82,5390,0,695,1,0,0,0,2,702,1,0,0,0,4,707,1,0,0,0,6,741,1,0, + 0,0,8,743,1,0,0,0,10,816,1,0,0,0,12,818,1,0,0,0,14,834,1,0,0,0,16, + 843,1,0,0,0,18,851,1,0,0,0,20,864,1,0,0,0,22,875,1,0,0,0,24,880, + 1,0,0,0,26,891,1,0,0,0,28,954,1,0,0,0,30,956,1,0,0,0,32,959,1,0, + 0,0,34,963,1,0,0,0,36,965,1,0,0,0,38,968,1,0,0,0,40,971,1,0,0,0, + 42,1015,1,0,0,0,44,1017,1,0,0,0,46,1020,1,0,0,0,48,1023,1,0,0,0, + 50,1032,1,0,0,0,52,1035,1,0,0,0,54,1050,1,0,0,0,56,1062,1,0,0,0, + 58,1067,1,0,0,0,60,1087,1,0,0,0,62,1091,1,0,0,0,64,1098,1,0,0,0, + 66,1123,1,0,0,0,68,1140,1,0,0,0,70,1142,1,0,0,0,72,1327,1,0,0,0, + 74,1337,1,0,0,0,76,1339,1,0,0,0,78,1344,1,0,0,0,80,1349,1,0,0,0, + 82,1351,1,0,0,0,84,1355,1,0,0,0,86,1359,1,0,0,0,88,1363,1,0,0,0, + 90,1367,1,0,0,0,92,1377,1,0,0,0,94,1388,1,0,0,0,96,1405,1,0,0,0, + 98,1423,1,0,0,0,100,1428,1,0,0,0,102,1431,1,0,0,0,104,1435,1,0,0, + 0,106,1442,1,0,0,0,108,1451,1,0,0,0,110,1457,1,0,0,0,112,1459,1, + 0,0,0,114,1473,1,0,0,0,116,1495,1,0,0,0,118,1497,1,0,0,0,120,1505, + 1,0,0,0,122,1512,1,0,0,0,124,1514,1,0,0,0,126,1528,1,0,0,0,128,1535, + 1,0,0,0,130,1537,1,0,0,0,132,1541,1,0,0,0,134,1545,1,0,0,0,136,1549, + 1,0,0,0,138,1553,1,0,0,0,140,1566,1,0,0,0,142,1574,1,0,0,0,144,1577, + 1,0,0,0,146,1579,1,0,0,0,148,1591,1,0,0,0,150,1601,1,0,0,0,152,1604, + 1,0,0,0,154,1615,1,0,0,0,156,1623,1,0,0,0,158,1666,1,0,0,0,160,1675, + 1,0,0,0,162,1703,1,0,0,0,164,1716,1,0,0,0,166,1718,1,0,0,0,168,1724, + 1,0,0,0,170,1727,1,0,0,0,172,1733,1,0,0,0,174,1739,1,0,0,0,176,1746, + 1,0,0,0,178,1780,1,0,0,0,180,1788,1,0,0,0,182,1801,1,0,0,0,184,1806, + 1,0,0,0,186,1817,1,0,0,0,188,1834,1,0,0,0,190,1836,1,0,0,0,192,1841, + 1,0,0,0,194,1848,1,0,0,0,196,1850,1,0,0,0,198,1853,1,0,0,0,200,1856, + 1,0,0,0,202,1870,1,0,0,0,204,1878,1,0,0,0,206,1904,1,0,0,0,208,1906, + 1,0,0,0,210,1923,1,0,0,0,212,1937,1,0,0,0,214,1939,1,0,0,0,216,1942, + 1,0,0,0,218,1945,1,0,0,0,220,1954,1,0,0,0,222,1974,1,0,0,0,224,1976, + 1,0,0,0,226,1979,1,0,0,0,228,1992,1,0,0,0,230,1994,1,0,0,0,232,1998, + 1,0,0,0,234,2006,1,0,0,0,236,2010,1,0,0,0,238,2019,1,0,0,0,240,2025, + 1,0,0,0,242,2031,1,0,0,0,244,2036,1,0,0,0,246,2082,1,0,0,0,248,2084, + 1,0,0,0,250,2092,1,0,0,0,252,2100,1,0,0,0,254,2108,1,0,0,0,256,2118, + 1,0,0,0,258,2120,1,0,0,0,260,2122,1,0,0,0,262,2135,1,0,0,0,264,2143, + 1,0,0,0,266,2152,1,0,0,0,268,2156,1,0,0,0,270,2158,1,0,0,0,272,2163, + 1,0,0,0,274,2165,1,0,0,0,276,2169,1,0,0,0,278,2175,1,0,0,0,280,2183, + 1,0,0,0,282,2185,1,0,0,0,284,2188,1,0,0,0,286,2195,1,0,0,0,288,2206, + 1,0,0,0,290,2219,1,0,0,0,292,2221,1,0,0,0,294,2229,1,0,0,0,296,2233, + 1,0,0,0,298,2241,1,0,0,0,300,2243,1,0,0,0,302,2246,1,0,0,0,304,2253, + 1,0,0,0,306,2261,1,0,0,0,308,2268,1,0,0,0,310,2276,1,0,0,0,312,2284, + 1,0,0,0,314,2288,1,0,0,0,316,2290,1,0,0,0,318,2301,1,0,0,0,320,2305, + 1,0,0,0,322,2317,1,0,0,0,324,2325,1,0,0,0,326,2329,1,0,0,0,328,2341, + 1,0,0,0,330,2353,1,0,0,0,332,2358,1,0,0,0,334,2363,1,0,0,0,336,2365, + 1,0,0,0,338,2369,1,0,0,0,340,2373,1,0,0,0,342,2380,1,0,0,0,344,2382, + 1,0,0,0,346,2395,1,0,0,0,348,2434,1,0,0,0,350,2436,1,0,0,0,352,2441, + 1,0,0,0,354,2446,1,0,0,0,356,2453,1,0,0,0,358,2458,1,0,0,0,360,2463, + 1,0,0,0,362,2469,1,0,0,0,364,2471,1,0,0,0,366,2480,1,0,0,0,368,2492, + 1,0,0,0,370,2572,1,0,0,0,372,2578,1,0,0,0,374,2604,1,0,0,0,376,2606, + 1,0,0,0,378,2628,1,0,0,0,380,2633,1,0,0,0,382,2637,1,0,0,0,384,2669, + 1,0,0,0,386,2671,1,0,0,0,388,2682,1,0,0,0,390,2688,1,0,0,0,392,2690, + 1,0,0,0,394,2722,1,0,0,0,396,2729,1,0,0,0,398,2735,1,0,0,0,400,2741, + 1,0,0,0,402,2756,1,0,0,0,404,2766,1,0,0,0,406,2774,1,0,0,0,408,2777, + 1,0,0,0,410,2780,1,0,0,0,412,2783,1,0,0,0,414,2905,1,0,0,0,416,3039, + 1,0,0,0,418,3067,1,0,0,0,420,3084,1,0,0,0,422,3101,1,0,0,0,424,3103, + 1,0,0,0,426,3106,1,0,0,0,428,3132,1,0,0,0,430,3137,1,0,0,0,432,3164, + 1,0,0,0,434,3175,1,0,0,0,436,3312,1,0,0,0,438,3314,1,0,0,0,440,3337, + 1,0,0,0,442,3349,1,0,0,0,444,3354,1,0,0,0,446,3362,1,0,0,0,448,3370, + 1,0,0,0,450,3382,1,0,0,0,452,3416,1,0,0,0,454,3418,1,0,0,0,456,3436, + 1,0,0,0,458,3445,1,0,0,0,460,3475,1,0,0,0,462,3534,1,0,0,0,464,3536, + 1,0,0,0,466,3565,1,0,0,0,468,3567,1,0,0,0,470,3583,1,0,0,0,472,3595, + 1,0,0,0,474,3597,1,0,0,0,476,3601,1,0,0,0,478,3611,1,0,0,0,480,3621, + 1,0,0,0,482,3626,1,0,0,0,484,3633,1,0,0,0,486,3637,1,0,0,0,488,3658, + 1,0,0,0,490,3663,1,0,0,0,492,3665,1,0,0,0,494,3693,1,0,0,0,496,3696, + 1,0,0,0,498,3717,1,0,0,0,500,3758,1,0,0,0,502,3760,1,0,0,0,504,3807, + 1,0,0,0,506,3809,1,0,0,0,508,3834,1,0,0,0,510,3836,1,0,0,0,512,3844, + 1,0,0,0,514,3870,1,0,0,0,516,3872,1,0,0,0,518,3892,1,0,0,0,520,3894, + 1,0,0,0,522,3905,1,0,0,0,524,3918,1,0,0,0,526,3953,1,0,0,0,528,3955, + 1,0,0,0,530,3958,1,0,0,0,532,3963,1,0,0,0,534,3965,1,0,0,0,536,3987, + 1,0,0,0,538,3989,1,0,0,0,540,3993,1,0,0,0,542,4002,1,0,0,0,544,4012, + 1,0,0,0,546,4016,1,0,0,0,548,4020,1,0,0,0,550,4096,1,0,0,0,552,4098, + 1,0,0,0,554,4101,1,0,0,0,556,4105,1,0,0,0,558,4110,1,0,0,0,560,4112, + 1,0,0,0,562,4123,1,0,0,0,564,4140,1,0,0,0,566,4156,1,0,0,0,568,4165, + 1,0,0,0,570,4180,1,0,0,0,572,4210,1,0,0,0,574,4212,1,0,0,0,576,4229, + 1,0,0,0,578,4245,1,0,0,0,580,4247,1,0,0,0,582,4266,1,0,0,0,584,4271, + 1,0,0,0,586,4286,1,0,0,0,588,4294,1,0,0,0,590,4302,1,0,0,0,592,4310, + 1,0,0,0,594,4318,1,0,0,0,596,4326,1,0,0,0,598,4334,1,0,0,0,600,4336, + 1,0,0,0,602,4346,1,0,0,0,604,4354,1,0,0,0,606,4370,1,0,0,0,608,4374, + 1,0,0,0,610,4379,1,0,0,0,612,4381,1,0,0,0,614,4392,1,0,0,0,616,4394, + 1,0,0,0,618,4412,1,0,0,0,620,4417,1,0,0,0,622,4425,1,0,0,0,624,4433, + 1,0,0,0,626,4437,1,0,0,0,628,4449,1,0,0,0,630,4454,1,0,0,0,632,4465, + 1,0,0,0,634,4472,1,0,0,0,636,4474,1,0,0,0,638,4478,1,0,0,0,640,4480, + 1,0,0,0,642,4485,1,0,0,0,644,4487,1,0,0,0,646,4489,1,0,0,0,648,4541, + 1,0,0,0,650,4708,1,0,0,0,652,4710,1,0,0,0,654,4719,1,0,0,0,656,4721, + 1,0,0,0,658,4732,1,0,0,0,660,4734,1,0,0,0,662,4739,1,0,0,0,664,4741, + 1,0,0,0,666,4743,1,0,0,0,668,4745,1,0,0,0,670,4747,1,0,0,0,672,4749, + 1,0,0,0,674,4751,1,0,0,0,676,4753,1,0,0,0,678,4755,1,0,0,0,680,4757, + 1,0,0,0,682,4759,1,0,0,0,684,4767,1,0,0,0,686,4775,1,0,0,0,688,4789, + 1,0,0,0,690,4791,1,0,0,0,692,694,3,2,1,0,693,692,1,0,0,0,694,697, + 1,0,0,0,695,693,1,0,0,0,695,696,1,0,0,0,696,698,1,0,0,0,697,695, + 1,0,0,0,698,699,5,0,0,1,699,1,1,0,0,0,700,703,3,4,2,0,701,703,3, + 10,5,0,702,700,1,0,0,0,702,701,1,0,0,0,703,705,1,0,0,0,704,706,5, + 398,0,0,705,704,1,0,0,0,705,706,1,0,0,0,706,3,1,0,0,0,707,717,5, + 119,0,0,708,710,3,6,3,0,709,708,1,0,0,0,710,713,1,0,0,0,711,709, + 1,0,0,0,711,712,1,0,0,0,712,714,1,0,0,0,713,711,1,0,0,0,714,718, + 3,10,5,0,715,716,5,284,0,0,716,718,3,360,180,0,717,711,1,0,0,0,717, + 715,1,0,0,0,718,5,1,0,0,0,719,742,5,122,0,0,720,742,5,138,0,0,721, + 742,5,88,0,0,722,724,5,37,0,0,723,725,7,0,0,0,724,723,1,0,0,0,724, + 725,1,0,0,0,725,742,1,0,0,0,726,742,5,192,0,0,727,742,5,21,0,0,728, + 742,5,10,0,0,729,742,5,275,0,0,730,742,5,191,0,0,731,742,5,19,0, + 0,732,734,5,377,0,0,733,735,5,225,0,0,734,733,1,0,0,0,734,735,1, + 0,0,0,735,737,1,0,0,0,736,738,3,8,4,0,737,736,1,0,0,0,737,738,1, + 0,0,0,738,742,1,0,0,0,739,742,5,79,0,0,740,742,5,78,0,0,741,719, + 1,0,0,0,741,720,1,0,0,0,741,721,1,0,0,0,741,722,1,0,0,0,741,726, + 1,0,0,0,741,727,1,0,0,0,741,728,1,0,0,0,741,729,1,0,0,0,741,730, + 1,0,0,0,741,731,1,0,0,0,741,732,1,0,0,0,741,739,1,0,0,0,741,740, + 1,0,0,0,742,7,1,0,0,0,743,744,7,1,0,0,744,9,1,0,0,0,745,817,3,360, + 180,0,746,817,3,12,6,0,747,817,3,16,8,0,748,817,3,18,9,0,749,817, + 3,20,10,0,750,817,3,24,12,0,751,752,5,277,0,0,752,753,5,320,0,0, + 753,756,3,472,236,0,754,755,5,387,0,0,755,757,3,230,115,0,756,754, + 1,0,0,0,756,757,1,0,0,0,757,817,1,0,0,0,758,817,3,28,14,0,759,760, + 5,86,0,0,760,761,5,139,0,0,761,763,3,478,239,0,762,764,3,494,247, + 0,763,762,1,0,0,0,763,764,1,0,0,0,764,817,1,0,0,0,765,766,5,365, + 0,0,766,767,3,478,239,0,767,769,3,392,196,0,768,770,3,494,247,0, + 769,768,1,0,0,0,769,770,1,0,0,0,770,817,1,0,0,0,771,817,3,394,197, + 0,772,774,5,203,0,0,773,775,5,436,0,0,774,773,1,0,0,0,774,775,1, + 0,0,0,775,776,1,0,0,0,776,777,5,166,0,0,777,782,3,478,239,0,778, + 780,5,17,0,0,779,778,1,0,0,0,779,780,1,0,0,0,780,781,1,0,0,0,781, + 783,3,638,319,0,782,779,1,0,0,0,782,783,1,0,0,0,783,784,1,0,0,0, + 784,785,5,370,0,0,785,786,3,456,228,0,786,787,5,224,0,0,787,788, + 3,580,290,0,788,789,3,398,199,0,789,817,1,0,0,0,790,791,5,249,0, + 0,791,792,3,638,319,0,792,793,5,139,0,0,793,794,3,360,180,0,794, + 817,1,0,0,0,795,796,5,115,0,0,796,797,3,638,319,0,797,798,5,370, + 0,0,798,799,3,296,148,0,799,817,1,0,0,0,800,801,5,304,0,0,801,806, + 3,648,324,0,802,803,5,395,0,0,803,805,3,648,324,0,804,802,1,0,0, + 0,805,808,1,0,0,0,806,804,1,0,0,0,806,807,1,0,0,0,807,809,1,0,0, + 0,808,806,1,0,0,0,809,813,5,405,0,0,810,812,9,0,0,0,811,810,1,0, + 0,0,812,815,1,0,0,0,813,814,1,0,0,0,813,811,1,0,0,0,814,817,1,0, + 0,0,815,813,1,0,0,0,816,745,1,0,0,0,816,746,1,0,0,0,816,747,1,0, + 0,0,816,748,1,0,0,0,816,749,1,0,0,0,816,750,1,0,0,0,816,751,1,0, + 0,0,816,758,1,0,0,0,816,759,1,0,0,0,816,765,1,0,0,0,816,771,1,0, + 0,0,816,772,1,0,0,0,816,790,1,0,0,0,816,795,1,0,0,0,816,800,1,0, + 0,0,817,11,1,0,0,0,818,819,5,187,0,0,819,821,5,66,0,0,820,822,5, + 188,0,0,821,820,1,0,0,0,821,822,1,0,0,0,822,823,1,0,0,0,823,824, + 5,158,0,0,824,826,5,426,0,0,825,827,5,235,0,0,826,825,1,0,0,0,826, + 827,1,0,0,0,827,828,1,0,0,0,828,829,5,166,0,0,829,830,5,329,0,0, + 830,832,3,624,312,0,831,833,3,56,28,0,832,831,1,0,0,0,832,833,1, + 0,0,0,833,13,1,0,0,0,834,836,5,134,0,0,835,837,5,204,0,0,836,835, + 1,0,0,0,836,837,1,0,0,0,837,838,1,0,0,0,838,839,5,279,0,0,839,840, + 5,399,0,0,840,841,5,426,0,0,841,842,5,400,0,0,842,15,1,0,0,0,843, + 844,5,120,0,0,844,845,5,329,0,0,845,846,3,624,312,0,846,847,5,341, + 0,0,847,849,5,426,0,0,848,850,3,14,7,0,849,848,1,0,0,0,849,850,1, + 0,0,0,850,17,1,0,0,0,851,857,5,153,0,0,852,854,5,123,0,0,853,852, + 1,0,0,0,853,854,1,0,0,0,854,855,1,0,0,0,855,856,5,329,0,0,856,858, + 3,624,312,0,857,853,1,0,0,0,857,858,1,0,0,0,858,859,1,0,0,0,859, + 860,5,139,0,0,860,862,5,426,0,0,861,863,3,424,212,0,862,861,1,0, + 0,0,862,863,1,0,0,0,863,19,1,0,0,0,864,865,5,277,0,0,865,866,5,103, + 0,0,866,869,3,22,11,0,867,868,5,278,0,0,868,870,3,22,11,0,869,867, + 1,0,0,0,869,870,1,0,0,0,870,873,1,0,0,0,871,872,5,387,0,0,872,874, + 3,230,115,0,873,871,1,0,0,0,873,874,1,0,0,0,874,21,1,0,0,0,875,878, + 3,472,236,0,876,877,5,395,0,0,877,879,3,26,13,0,878,876,1,0,0,0, + 878,879,1,0,0,0,879,23,1,0,0,0,880,881,5,277,0,0,881,882,5,187,0, + 0,882,885,3,22,11,0,883,884,5,166,0,0,884,886,3,472,236,0,885,883, + 1,0,0,0,885,886,1,0,0,0,886,889,1,0,0,0,887,888,5,387,0,0,888,890, + 3,230,115,0,889,887,1,0,0,0,889,890,1,0,0,0,890,25,1,0,0,0,891,894, + 5,426,0,0,892,893,5,395,0,0,893,895,5,426,0,0,894,892,1,0,0,0,894, + 895,1,0,0,0,895,27,1,0,0,0,896,955,3,42,21,0,897,955,3,46,23,0,898, + 955,3,48,24,0,899,955,3,436,218,0,900,955,3,54,27,0,901,955,3,52, + 26,0,902,955,3,412,206,0,903,955,3,64,32,0,904,955,3,72,36,0,905, + 955,3,138,69,0,906,955,3,160,80,0,907,955,3,176,88,0,908,955,3,180, + 90,0,909,955,3,184,92,0,910,955,3,182,91,0,911,955,3,174,87,0,912, + 955,3,178,89,0,913,955,3,146,73,0,914,955,3,152,76,0,915,955,3,148, + 74,0,916,955,3,150,75,0,917,955,3,154,77,0,918,955,3,156,78,0,919, + 955,3,158,79,0,920,955,3,66,33,0,921,955,3,76,38,0,922,955,3,82, + 41,0,923,955,3,78,39,0,924,955,3,84,42,0,925,955,3,86,43,0,926,955, + 3,88,44,0,927,955,3,90,45,0,928,955,3,92,46,0,929,955,3,106,53,0, + 930,955,3,98,49,0,931,955,3,108,54,0,932,955,3,100,50,0,933,955, + 3,94,47,0,934,955,3,96,48,0,935,955,3,104,52,0,936,955,3,102,51, + 0,937,938,5,1,0,0,938,940,7,2,0,0,939,941,5,431,0,0,940,939,1,0, + 0,0,941,942,1,0,0,0,942,940,1,0,0,0,942,943,1,0,0,0,943,955,1,0, + 0,0,944,945,5,176,0,0,945,947,5,258,0,0,946,948,5,426,0,0,947,946, + 1,0,0,0,948,949,1,0,0,0,949,947,1,0,0,0,949,950,1,0,0,0,950,955, + 1,0,0,0,951,955,3,650,325,0,952,955,3,438,219,0,953,955,3,440,220, + 0,954,896,1,0,0,0,954,897,1,0,0,0,954,898,1,0,0,0,954,899,1,0,0, + 0,954,900,1,0,0,0,954,901,1,0,0,0,954,902,1,0,0,0,954,903,1,0,0, + 0,954,904,1,0,0,0,954,905,1,0,0,0,954,906,1,0,0,0,954,907,1,0,0, + 0,954,908,1,0,0,0,954,909,1,0,0,0,954,910,1,0,0,0,954,911,1,0,0, + 0,954,912,1,0,0,0,954,913,1,0,0,0,954,914,1,0,0,0,954,915,1,0,0, + 0,954,916,1,0,0,0,954,917,1,0,0,0,954,918,1,0,0,0,954,919,1,0,0, + 0,954,920,1,0,0,0,954,921,1,0,0,0,954,922,1,0,0,0,954,923,1,0,0, + 0,954,924,1,0,0,0,954,925,1,0,0,0,954,926,1,0,0,0,954,927,1,0,0, + 0,954,928,1,0,0,0,954,929,1,0,0,0,954,930,1,0,0,0,954,931,1,0,0, + 0,954,932,1,0,0,0,954,933,1,0,0,0,954,934,1,0,0,0,954,935,1,0,0, + 0,954,936,1,0,0,0,954,937,1,0,0,0,954,944,1,0,0,0,954,951,1,0,0, + 0,954,952,1,0,0,0,954,953,1,0,0,0,955,29,1,0,0,0,956,957,5,151,0, + 0,957,958,5,117,0,0,958,31,1,0,0,0,959,960,5,151,0,0,960,961,5,216, + 0,0,961,962,5,117,0,0,962,33,1,0,0,0,963,964,7,3,0,0,964,35,1,0, + 0,0,965,966,3,662,331,0,966,967,5,284,0,0,967,37,1,0,0,0,968,969, + 3,664,332,0,969,970,5,284,0,0,970,39,1,0,0,0,971,972,5,321,0,0,972, + 973,5,17,0,0,973,974,5,92,0,0,974,41,1,0,0,0,975,977,5,58,0,0,976, + 978,5,273,0,0,977,976,1,0,0,0,977,978,1,0,0,0,978,979,1,0,0,0,979, + 981,3,70,35,0,980,982,3,32,16,0,981,980,1,0,0,0,981,982,1,0,0,0, + 982,983,1,0,0,0,983,985,3,474,237,0,984,986,3,50,25,0,985,984,1, + 0,0,0,985,986,1,0,0,0,986,988,1,0,0,0,987,989,3,424,212,0,988,987, + 1,0,0,0,988,989,1,0,0,0,989,992,1,0,0,0,990,991,5,196,0,0,991,993, + 5,426,0,0,992,990,1,0,0,0,992,993,1,0,0,0,993,997,1,0,0,0,994,995, + 5,387,0,0,995,996,5,76,0,0,996,998,3,230,115,0,997,994,1,0,0,0,997, + 998,1,0,0,0,998,1016,1,0,0,0,999,1000,5,58,0,0,1000,1001,5,273,0, + 0,1001,1003,3,70,35,0,1002,1004,3,32,16,0,1003,1002,1,0,0,0,1003, + 1004,1,0,0,0,1004,1005,1,0,0,0,1005,1007,3,474,237,0,1006,1008,3, + 50,25,0,1007,1006,1,0,0,0,1007,1008,1,0,0,0,1008,1009,1,0,0,0,1009, + 1013,3,44,22,0,1010,1011,5,387,0,0,1011,1012,5,76,0,0,1012,1014, + 3,230,115,0,1013,1010,1,0,0,0,1013,1014,1,0,0,0,1014,1016,1,0,0, + 0,1015,975,1,0,0,0,1015,999,1,0,0,0,1016,43,1,0,0,0,1017,1018,5, + 370,0,0,1018,1019,3,472,236,0,1019,45,1,0,0,0,1020,1021,5,368,0, + 0,1021,1022,3,472,236,0,1022,47,1,0,0,0,1023,1024,5,101,0,0,1024, + 1026,3,70,35,0,1025,1027,3,30,15,0,1026,1025,1,0,0,0,1026,1027,1, + 0,0,0,1027,1028,1,0,0,0,1028,1030,3,472,236,0,1029,1031,3,34,17, + 0,1030,1029,1,0,0,0,1030,1031,1,0,0,0,1031,49,1,0,0,0,1032,1033, + 5,47,0,0,1033,1034,5,426,0,0,1034,51,1,0,0,0,1035,1037,5,351,0,0, + 1036,1038,5,329,0,0,1037,1036,1,0,0,0,1037,1038,1,0,0,0,1038,1039, + 1,0,0,0,1039,1045,3,624,312,0,1040,1041,5,46,0,0,1041,1042,5,399, + 0,0,1042,1043,3,254,127,0,1043,1044,5,400,0,0,1044,1046,1,0,0,0, + 1045,1040,1,0,0,0,1045,1046,1,0,0,0,1046,1048,1,0,0,0,1047,1049, + 5,135,0,0,1048,1047,1,0,0,0,1048,1049,1,0,0,0,1049,53,1,0,0,0,1050, + 1051,5,101,0,0,1051,1053,5,329,0,0,1052,1054,3,30,15,0,1053,1052, + 1,0,0,0,1053,1054,1,0,0,0,1054,1055,1,0,0,0,1055,1057,3,478,239, + 0,1056,1058,5,255,0,0,1057,1056,1,0,0,0,1057,1058,1,0,0,0,1058,1060, + 1,0,0,0,1059,1061,3,14,7,0,1060,1059,1,0,0,0,1060,1061,1,0,0,0,1061, + 55,1,0,0,0,1062,1063,5,160,0,0,1063,1064,5,426,0,0,1064,1065,5,301, + 0,0,1065,1066,5,426,0,0,1066,57,1,0,0,0,1067,1070,3,638,319,0,1068, + 1069,5,395,0,0,1069,1071,3,638,319,0,1070,1068,1,0,0,0,1070,1071, + 1,0,0,0,1071,1085,1,0,0,0,1072,1082,3,638,319,0,1073,1078,5,395, + 0,0,1074,1079,5,104,0,0,1075,1079,5,175,0,0,1076,1079,5,375,0,0, + 1077,1079,3,638,319,0,1078,1074,1,0,0,0,1078,1075,1,0,0,0,1078,1076, + 1,0,0,0,1078,1077,1,0,0,0,1079,1081,1,0,0,0,1080,1073,1,0,0,0,1081, + 1084,1,0,0,0,1082,1080,1,0,0,0,1082,1083,1,0,0,0,1083,1086,1,0,0, + 0,1084,1082,1,0,0,0,1085,1072,1,0,0,0,1085,1086,1,0,0,0,1086,59, + 1,0,0,0,1087,1089,3,58,29,0,1088,1090,3,626,313,0,1089,1088,1,0, + 0,0,1089,1090,1,0,0,0,1090,61,1,0,0,0,1091,1093,3,476,238,0,1092, + 1094,3,626,313,0,1093,1092,1,0,0,0,1093,1094,1,0,0,0,1094,1096,1, + 0,0,0,1095,1097,3,260,130,0,1096,1095,1,0,0,0,1096,1097,1,0,0,0, + 1097,63,1,0,0,0,1098,1121,7,4,0,0,1099,1101,3,70,35,0,1100,1102, + 5,122,0,0,1101,1100,1,0,0,0,1101,1102,1,0,0,0,1102,1103,1,0,0,0, + 1103,1104,3,472,236,0,1104,1122,1,0,0,0,1105,1107,5,69,0,0,1106, + 1108,5,122,0,0,1107,1106,1,0,0,0,1107,1108,1,0,0,0,1108,1109,1,0, + 0,0,1109,1122,3,472,236,0,1110,1112,5,141,0,0,1111,1113,5,122,0, + 0,1112,1111,1,0,0,0,1112,1113,1,0,0,0,1113,1114,1,0,0,0,1114,1122, + 3,556,278,0,1115,1118,5,138,0,0,1116,1118,5,122,0,0,1117,1115,1, + 0,0,0,1117,1116,1,0,0,0,1118,1119,1,0,0,0,1119,1122,3,62,31,0,1120, + 1122,3,62,31,0,1121,1099,1,0,0,0,1121,1105,1,0,0,0,1121,1110,1,0, + 0,0,1121,1117,1,0,0,0,1121,1120,1,0,0,0,1122,65,1,0,0,0,1123,1124, + 5,10,0,0,1124,1125,5,329,0,0,1125,1138,3,624,312,0,1126,1127,5,52, + 0,0,1127,1134,5,319,0,0,1128,1135,5,215,0,0,1129,1130,5,134,0,0, + 1130,1132,5,46,0,0,1131,1133,3,254,127,0,1132,1131,1,0,0,0,1132, + 1133,1,0,0,0,1133,1135,1,0,0,0,1134,1128,1,0,0,0,1134,1129,1,0,0, + 0,1134,1135,1,0,0,0,1135,1139,1,0,0,0,1136,1137,5,33,0,0,1137,1139, + 5,204,0,0,1138,1126,1,0,0,0,1138,1136,1,0,0,0,1139,67,1,0,0,0,1140, + 1141,7,5,0,0,1141,69,1,0,0,0,1142,1143,7,6,0,0,1143,71,1,0,0,0,1144, + 1145,5,308,0,0,1145,1148,7,7,0,0,1146,1147,5,184,0,0,1147,1149,3, + 194,97,0,1148,1146,1,0,0,0,1148,1149,1,0,0,0,1149,1328,1,0,0,0,1150, + 1152,5,308,0,0,1151,1153,5,122,0,0,1152,1151,1,0,0,0,1152,1153,1, + 0,0,0,1153,1154,1,0,0,0,1154,1158,5,330,0,0,1155,1156,3,68,34,0, + 1156,1157,3,472,236,0,1157,1159,1,0,0,0,1158,1155,1,0,0,0,1158,1159, + 1,0,0,0,1159,1161,1,0,0,0,1160,1162,3,74,37,0,1161,1160,1,0,0,0, + 1161,1162,1,0,0,0,1162,1328,1,0,0,0,1163,1164,5,308,0,0,1164,1168, + 5,379,0,0,1165,1166,3,68,34,0,1166,1167,3,472,236,0,1167,1169,1, + 0,0,0,1168,1165,1,0,0,0,1168,1169,1,0,0,0,1169,1173,1,0,0,0,1170, + 1171,5,184,0,0,1171,1174,3,194,97,0,1172,1174,3,194,97,0,1173,1170, + 1,0,0,0,1173,1172,1,0,0,0,1173,1174,1,0,0,0,1174,1328,1,0,0,0,1175, + 1176,5,308,0,0,1176,1177,5,202,0,0,1177,1181,5,379,0,0,1178,1179, + 3,68,34,0,1179,1180,3,472,236,0,1180,1182,1,0,0,0,1181,1178,1,0, + 0,0,1181,1182,1,0,0,0,1182,1186,1,0,0,0,1183,1184,5,184,0,0,1184, + 1187,3,194,97,0,1185,1187,3,194,97,0,1186,1183,1,0,0,0,1186,1185, + 1,0,0,0,1186,1187,1,0,0,0,1187,1328,1,0,0,0,1188,1190,5,308,0,0, + 1189,1191,5,315,0,0,1190,1189,1,0,0,0,1190,1191,1,0,0,0,1191,1192, + 1,0,0,0,1192,1193,5,46,0,0,1193,1194,3,68,34,0,1194,1198,3,476,238, + 0,1195,1196,3,68,34,0,1196,1197,3,472,236,0,1197,1199,1,0,0,0,1198, + 1195,1,0,0,0,1198,1199,1,0,0,0,1199,1203,1,0,0,0,1200,1201,5,184, + 0,0,1201,1204,3,194,97,0,1202,1204,3,194,97,0,1203,1200,1,0,0,0, + 1203,1202,1,0,0,0,1203,1204,1,0,0,0,1204,1328,1,0,0,0,1205,1206, + 5,308,0,0,1206,1209,5,142,0,0,1207,1208,5,184,0,0,1208,1210,3,556, + 278,0,1209,1207,1,0,0,0,1209,1210,1,0,0,0,1210,1328,1,0,0,0,1211, + 1212,5,308,0,0,1212,1213,5,239,0,0,1213,1215,3,476,238,0,1214,1216, + 3,626,313,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0, + 0,1217,1219,3,494,247,0,1218,1217,1,0,0,0,1218,1219,1,0,0,0,1219, + 1221,1,0,0,0,1220,1222,3,542,271,0,1221,1220,1,0,0,0,1221,1222,1, + 0,0,0,1222,1224,1,0,0,0,1223,1225,3,386,193,0,1224,1223,1,0,0,0, + 1224,1225,1,0,0,0,1225,1328,1,0,0,0,1226,1227,5,308,0,0,1227,1233, + 5,58,0,0,1228,1229,3,70,35,0,1229,1230,3,472,236,0,1230,1234,1,0, + 0,0,1231,1232,5,329,0,0,1232,1234,3,478,239,0,1233,1228,1,0,0,0, + 1233,1231,1,0,0,0,1234,1328,1,0,0,0,1235,1236,5,308,0,0,1236,1237, + 5,329,0,0,1237,1241,5,122,0,0,1238,1239,3,68,34,0,1239,1240,3,472, + 236,0,1240,1242,1,0,0,0,1241,1238,1,0,0,0,1241,1242,1,0,0,0,1242, + 1243,1,0,0,0,1243,1244,5,184,0,0,1244,1246,3,194,97,0,1245,1247, + 3,626,313,0,1246,1245,1,0,0,0,1246,1247,1,0,0,0,1247,1328,1,0,0, + 0,1248,1249,5,308,0,0,1249,1250,5,332,0,0,1250,1254,3,478,239,0, + 1251,1252,5,399,0,0,1252,1253,5,426,0,0,1253,1255,5,400,0,0,1254, + 1251,1,0,0,0,1254,1255,1,0,0,0,1255,1328,1,0,0,0,1256,1257,5,308, + 0,0,1257,1269,5,191,0,0,1258,1259,3,70,35,0,1259,1261,3,472,236, + 0,1260,1262,5,122,0,0,1261,1260,1,0,0,0,1261,1262,1,0,0,0,1262,1270, + 1,0,0,0,1263,1265,3,60,30,0,1264,1263,1,0,0,0,1264,1265,1,0,0,0, + 1265,1267,1,0,0,0,1266,1268,5,122,0,0,1267,1266,1,0,0,0,1267,1268, + 1,0,0,0,1268,1270,1,0,0,0,1269,1258,1,0,0,0,1269,1264,1,0,0,0,1270, + 1328,1,0,0,0,1271,1272,5,308,0,0,1272,1299,5,50,0,0,1273,1274,5, + 51,0,0,1274,1275,5,405,0,0,1275,1300,5,431,0,0,1276,1277,3,70,35, + 0,1277,1278,3,472,236,0,1278,1283,1,0,0,0,1279,1281,3,60,30,0,1280, + 1279,1,0,0,0,1280,1281,1,0,0,0,1281,1283,1,0,0,0,1282,1276,1,0,0, + 0,1282,1280,1,0,0,0,1283,1285,1,0,0,0,1284,1286,3,406,203,0,1285, + 1284,1,0,0,0,1285,1286,1,0,0,0,1286,1288,1,0,0,0,1287,1289,3,408, + 204,0,1288,1287,1,0,0,0,1288,1289,1,0,0,0,1289,1291,1,0,0,0,1290, + 1292,3,410,205,0,1291,1290,1,0,0,0,1291,1292,1,0,0,0,1292,1294,1, + 0,0,0,1293,1295,3,542,271,0,1294,1293,1,0,0,0,1294,1295,1,0,0,0, + 1295,1297,1,0,0,0,1296,1298,3,386,193,0,1297,1296,1,0,0,0,1297,1298, + 1,0,0,0,1298,1300,1,0,0,0,1299,1273,1,0,0,0,1299,1282,1,0,0,0,1300, + 1328,1,0,0,0,1301,1302,5,308,0,0,1302,1328,5,346,0,0,1303,1304,5, + 308,0,0,1304,1305,5,54,0,0,1305,1328,5,426,0,0,1306,1307,5,308,0, + 0,1307,1311,5,280,0,0,1308,1309,5,243,0,0,1309,1312,3,638,319,0, + 1310,1312,5,244,0,0,1311,1308,1,0,0,0,1311,1310,1,0,0,0,1312,1328, + 1,0,0,0,1313,1314,5,308,0,0,1314,1328,5,70,0,0,1315,1317,5,308,0, + 0,1316,1318,5,138,0,0,1317,1316,1,0,0,0,1317,1318,1,0,0,0,1318,1319, + 1,0,0,0,1319,1320,7,8,0,0,1320,1321,5,224,0,0,1321,1325,3,478,239, + 0,1322,1323,3,68,34,0,1323,1324,3,472,236,0,1324,1326,1,0,0,0,1325, + 1322,1,0,0,0,1325,1326,1,0,0,0,1326,1328,1,0,0,0,1327,1144,1,0,0, + 0,1327,1150,1,0,0,0,1327,1163,1,0,0,0,1327,1175,1,0,0,0,1327,1188, + 1,0,0,0,1327,1205,1,0,0,0,1327,1211,1,0,0,0,1327,1226,1,0,0,0,1327, + 1235,1,0,0,0,1327,1248,1,0,0,0,1327,1256,1,0,0,0,1327,1271,1,0,0, + 0,1327,1301,1,0,0,0,1327,1303,1,0,0,0,1327,1306,1,0,0,0,1327,1313, + 1,0,0,0,1327,1315,1,0,0,0,1328,73,1,0,0,0,1329,1330,5,384,0,0,1330, + 1331,3,638,319,0,1331,1332,5,405,0,0,1332,1333,5,426,0,0,1333,1338, + 1,0,0,0,1334,1335,5,184,0,0,1335,1338,3,194,97,0,1336,1338,3,194, + 97,0,1337,1329,1,0,0,0,1337,1334,1,0,0,0,1337,1336,1,0,0,0,1338, + 75,1,0,0,0,1339,1340,5,190,0,0,1340,1341,5,329,0,0,1341,1342,3,624, + 312,0,1342,1343,3,80,40,0,1343,77,1,0,0,0,1344,1345,5,190,0,0,1345, + 1346,3,70,35,0,1346,1347,3,472,236,0,1347,1348,3,80,40,0,1348,79, + 1,0,0,0,1349,1350,7,9,0,0,1350,81,1,0,0,0,1351,1352,5,361,0,0,1352, + 1353,5,329,0,0,1353,1354,3,624,312,0,1354,83,1,0,0,0,1355,1356,5, + 361,0,0,1356,1357,3,70,35,0,1357,1358,3,472,236,0,1358,85,1,0,0, + 0,1359,1360,5,58,0,0,1360,1361,5,287,0,0,1361,1362,3,638,319,0,1362, + 87,1,0,0,0,1363,1364,5,101,0,0,1364,1365,5,287,0,0,1365,1366,3,638, + 319,0,1366,89,1,0,0,0,1367,1368,5,143,0,0,1368,1370,3,118,59,0,1369, + 1371,3,112,56,0,1370,1369,1,0,0,0,1370,1371,1,0,0,0,1371,1372,1, + 0,0,0,1372,1373,5,341,0,0,1373,1375,3,124,62,0,1374,1376,3,130,65, + 0,1375,1374,1,0,0,0,1375,1376,1,0,0,0,1376,91,1,0,0,0,1377,1379, + 5,283,0,0,1378,1380,3,132,66,0,1379,1378,1,0,0,0,1379,1380,1,0,0, + 0,1380,1381,1,0,0,0,1381,1383,3,118,59,0,1382,1384,3,112,56,0,1383, + 1382,1,0,0,0,1383,1384,1,0,0,0,1384,1385,1,0,0,0,1385,1386,5,139, + 0,0,1386,1387,3,124,62,0,1387,93,1,0,0,0,1388,1390,5,143,0,0,1389, + 1391,5,287,0,0,1390,1389,1,0,0,0,1390,1391,1,0,0,0,1391,1392,1,0, + 0,0,1392,1397,3,638,319,0,1393,1394,5,397,0,0,1394,1396,3,638,319, + 0,1395,1393,1,0,0,0,1396,1399,1,0,0,0,1397,1395,1,0,0,0,1397,1398, + 1,0,0,0,1398,1400,1,0,0,0,1399,1397,1,0,0,0,1400,1401,5,341,0,0, + 1401,1403,3,124,62,0,1402,1404,3,136,68,0,1403,1402,1,0,0,0,1403, + 1404,1,0,0,0,1404,95,1,0,0,0,1405,1407,5,283,0,0,1406,1408,3,134, + 67,0,1407,1406,1,0,0,0,1407,1408,1,0,0,0,1408,1410,1,0,0,0,1409, + 1411,5,287,0,0,1410,1409,1,0,0,0,1410,1411,1,0,0,0,1411,1412,1,0, + 0,0,1412,1417,3,638,319,0,1413,1414,5,397,0,0,1414,1416,3,638,319, + 0,1415,1413,1,0,0,0,1416,1419,1,0,0,0,1417,1415,1,0,0,0,1417,1418, + 1,0,0,0,1418,1420,1,0,0,0,1419,1417,1,0,0,0,1420,1421,5,139,0,0, + 1421,1422,3,124,62,0,1422,97,1,0,0,0,1423,1424,5,308,0,0,1424,1425, + 5,287,0,0,1425,1426,5,143,0,0,1426,1427,3,126,63,0,1427,99,1,0,0, + 0,1428,1429,5,308,0,0,1429,1430,5,288,0,0,1430,101,1,0,0,0,1431, + 1432,5,308,0,0,1432,1433,5,62,0,0,1433,1434,5,288,0,0,1434,103,1, + 0,0,0,1435,1436,5,304,0,0,1436,1440,5,287,0,0,1437,1441,5,7,0,0, + 1438,1441,5,213,0,0,1439,1441,3,638,319,0,1440,1437,1,0,0,0,1440, + 1438,1,0,0,0,1440,1439,1,0,0,0,1441,105,1,0,0,0,1442,1443,5,308, + 0,0,1443,1445,5,143,0,0,1444,1446,3,126,63,0,1445,1444,1,0,0,0,1445, + 1446,1,0,0,0,1446,1449,1,0,0,0,1447,1448,5,224,0,0,1448,1450,3,110, + 55,0,1449,1447,1,0,0,0,1449,1450,1,0,0,0,1450,107,1,0,0,0,1451,1452, + 5,308,0,0,1452,1453,5,252,0,0,1453,1454,3,638,319,0,1454,109,1,0, + 0,0,1455,1458,5,7,0,0,1456,1458,3,116,58,0,1457,1455,1,0,0,0,1457, + 1456,1,0,0,0,1458,111,1,0,0,0,1459,1460,5,224,0,0,1460,1461,3,114, + 57,0,1461,113,1,0,0,0,1462,1463,3,70,35,0,1463,1464,3,472,236,0, + 1464,1474,1,0,0,0,1465,1467,5,329,0,0,1466,1465,1,0,0,0,1466,1467, + 1,0,0,0,1467,1468,1,0,0,0,1468,1474,3,624,312,0,1469,1470,5,366, + 0,0,1470,1474,5,426,0,0,1471,1472,5,303,0,0,1472,1474,3,638,319, + 0,1473,1462,1,0,0,0,1473,1466,1,0,0,0,1473,1469,1,0,0,0,1473,1471, + 1,0,0,0,1474,115,1,0,0,0,1475,1476,3,70,35,0,1476,1477,3,472,236, + 0,1477,1496,1,0,0,0,1478,1480,5,329,0,0,1479,1478,1,0,0,0,1479,1480, + 1,0,0,0,1480,1481,1,0,0,0,1481,1486,3,478,239,0,1482,1483,5,399, + 0,0,1483,1484,3,254,127,0,1484,1485,5,400,0,0,1485,1487,1,0,0,0, + 1486,1482,1,0,0,0,1486,1487,1,0,0,0,1487,1489,1,0,0,0,1488,1490, + 3,626,313,0,1489,1488,1,0,0,0,1489,1490,1,0,0,0,1490,1496,1,0,0, + 0,1491,1492,5,366,0,0,1492,1496,5,426,0,0,1493,1494,5,303,0,0,1494, + 1496,3,638,319,0,1495,1475,1,0,0,0,1495,1479,1,0,0,0,1495,1491,1, + 0,0,0,1495,1493,1,0,0,0,1496,117,1,0,0,0,1497,1502,3,120,60,0,1498, + 1499,5,397,0,0,1499,1501,3,120,60,0,1500,1498,1,0,0,0,1501,1504, + 1,0,0,0,1502,1500,1,0,0,0,1502,1503,1,0,0,0,1503,119,1,0,0,0,1504, + 1502,1,0,0,0,1505,1510,3,122,61,0,1506,1507,5,399,0,0,1507,1508, + 3,254,127,0,1508,1509,5,400,0,0,1509,1511,1,0,0,0,1510,1506,1,0, + 0,0,1510,1511,1,0,0,0,1511,121,1,0,0,0,1512,1513,7,10,0,0,1513,123, + 1,0,0,0,1514,1519,3,126,63,0,1515,1516,5,397,0,0,1516,1518,3,126, + 63,0,1517,1515,1,0,0,0,1518,1521,1,0,0,0,1519,1517,1,0,0,0,1519, + 1520,1,0,0,0,1520,125,1,0,0,0,1521,1519,1,0,0,0,1522,1523,5,369, + 0,0,1523,1529,3,642,321,0,1524,1525,5,144,0,0,1525,1529,3,642,321, + 0,1526,1527,5,287,0,0,1527,1529,3,638,319,0,1528,1522,1,0,0,0,1528, + 1524,1,0,0,0,1528,1526,1,0,0,0,1529,127,1,0,0,0,1530,1531,5,369, + 0,0,1531,1536,3,642,321,0,1532,1533,5,287,0,0,1533,1536,3,638,319, + 0,1534,1536,3,638,319,0,1535,1530,1,0,0,0,1535,1532,1,0,0,0,1535, + 1534,1,0,0,0,1536,129,1,0,0,0,1537,1538,5,387,0,0,1538,1539,5,143, + 0,0,1539,1540,5,227,0,0,1540,131,1,0,0,0,1541,1542,5,143,0,0,1542, + 1543,5,227,0,0,1543,1544,5,134,0,0,1544,133,1,0,0,0,1545,1546,5, + 5,0,0,1546,1547,5,227,0,0,1547,1548,5,134,0,0,1548,135,1,0,0,0,1549, + 1550,5,387,0,0,1550,1551,5,5,0,0,1551,1552,5,227,0,0,1552,137,1, + 0,0,0,1553,1555,5,212,0,0,1554,1556,5,276,0,0,1555,1554,1,0,0,0, + 1555,1556,1,0,0,0,1556,1557,1,0,0,0,1557,1558,5,329,0,0,1558,1564, + 3,478,239,0,1559,1560,7,11,0,0,1560,1562,5,239,0,0,1561,1563,3,630, + 315,0,1562,1561,1,0,0,0,1562,1563,1,0,0,0,1563,1565,1,0,0,0,1564, + 1559,1,0,0,0,1564,1565,1,0,0,0,1565,139,1,0,0,0,1566,1571,3,142, + 71,0,1567,1568,5,397,0,0,1568,1570,3,142,71,0,1569,1567,1,0,0,0, + 1570,1573,1,0,0,0,1571,1569,1,0,0,0,1571,1572,1,0,0,0,1572,141,1, + 0,0,0,1573,1571,1,0,0,0,1574,1575,3,144,72,0,1575,1576,5,426,0,0, + 1576,143,1,0,0,0,1577,1578,7,12,0,0,1578,145,1,0,0,0,1579,1581,5, + 58,0,0,1580,1582,5,333,0,0,1581,1580,1,0,0,0,1581,1582,1,0,0,0,1582, + 1583,1,0,0,0,1583,1584,5,141,0,0,1584,1585,3,554,277,0,1585,1586, + 5,17,0,0,1586,1589,5,426,0,0,1587,1588,5,370,0,0,1588,1590,3,140, + 70,0,1589,1587,1,0,0,0,1589,1590,1,0,0,0,1590,147,1,0,0,0,1591,1593, + 5,101,0,0,1592,1594,5,333,0,0,1593,1592,1,0,0,0,1593,1594,1,0,0, + 0,1594,1595,1,0,0,0,1595,1597,5,141,0,0,1596,1598,3,30,15,0,1597, + 1596,1,0,0,0,1597,1598,1,0,0,0,1598,1599,1,0,0,0,1599,1600,3,556, + 278,0,1600,149,1,0,0,0,1601,1602,5,271,0,0,1602,1603,7,13,0,0,1603, + 151,1,0,0,0,1604,1605,5,58,0,0,1605,1606,5,333,0,0,1606,1607,5,194, + 0,0,1607,1608,5,432,0,0,1608,1610,5,399,0,0,1609,1611,3,248,124, + 0,1610,1609,1,0,0,0,1610,1611,1,0,0,0,1611,1612,1,0,0,0,1612,1613, + 5,400,0,0,1613,1614,3,580,290,0,1614,153,1,0,0,0,1615,1616,5,101, + 0,0,1616,1617,5,333,0,0,1617,1619,5,194,0,0,1618,1620,3,30,15,0, + 1619,1618,1,0,0,0,1619,1620,1,0,0,0,1620,1621,1,0,0,0,1621,1622, + 5,432,0,0,1622,155,1,0,0,0,1623,1624,5,58,0,0,1624,1625,5,155,0, + 0,1625,1626,3,638,319,0,1626,1627,5,224,0,0,1627,1628,5,329,0,0, + 1628,1629,3,478,239,0,1629,1630,3,264,132,0,1630,1631,5,17,0,0,1631, + 1635,5,426,0,0,1632,1633,5,387,0,0,1633,1634,5,84,0,0,1634,1636, + 5,265,0,0,1635,1632,1,0,0,0,1635,1636,1,0,0,0,1636,1639,1,0,0,0, + 1637,1638,5,150,0,0,1638,1640,3,226,113,0,1639,1637,1,0,0,0,1639, + 1640,1,0,0,0,1640,1644,1,0,0,0,1641,1642,5,154,0,0,1642,1643,5,329, + 0,0,1643,1645,3,478,239,0,1644,1641,1,0,0,0,1644,1645,1,0,0,0,1645, + 1649,1,0,0,0,1646,1647,5,238,0,0,1647,1648,5,32,0,0,1648,1650,3, + 264,132,0,1649,1646,1,0,0,0,1649,1650,1,0,0,0,1650,1655,1,0,0,0, + 1651,1653,3,222,111,0,1652,1651,1,0,0,0,1652,1653,1,0,0,0,1653,1654, + 1,0,0,0,1654,1656,3,246,123,0,1655,1652,1,0,0,0,1655,1656,1,0,0, + 0,1656,1658,1,0,0,0,1657,1659,3,424,212,0,1658,1657,1,0,0,0,1658, + 1659,1,0,0,0,1659,1661,1,0,0,0,1660,1662,3,224,112,0,1661,1660,1, + 0,0,0,1661,1662,1,0,0,0,1662,1664,1,0,0,0,1663,1665,3,196,98,0,1664, + 1663,1,0,0,0,1664,1665,1,0,0,0,1665,157,1,0,0,0,1666,1667,5,101, + 0,0,1667,1669,5,155,0,0,1668,1670,3,30,15,0,1669,1668,1,0,0,0,1669, + 1670,1,0,0,0,1670,1671,1,0,0,0,1671,1672,3,638,319,0,1672,1673,5, + 224,0,0,1673,1674,3,478,239,0,1674,159,1,0,0,0,1675,1678,5,58,0, + 0,1676,1677,5,228,0,0,1677,1679,5,278,0,0,1678,1676,1,0,0,0,1678, + 1679,1,0,0,0,1679,1680,1,0,0,0,1680,1682,5,378,0,0,1681,1683,3,32, + 16,0,1682,1681,1,0,0,0,1682,1683,1,0,0,0,1683,1684,1,0,0,0,1684, + 1689,3,484,242,0,1685,1686,5,399,0,0,1686,1687,3,304,152,0,1687, + 1688,5,400,0,0,1688,1690,1,0,0,0,1689,1685,1,0,0,0,1689,1690,1,0, + 0,0,1690,1692,1,0,0,0,1691,1693,3,196,98,0,1692,1691,1,0,0,0,1692, + 1693,1,0,0,0,1693,1695,1,0,0,0,1694,1696,3,162,81,0,1695,1694,1, + 0,0,0,1695,1696,1,0,0,0,1696,1698,1,0,0,0,1697,1699,3,224,112,0, + 1698,1697,1,0,0,0,1698,1699,1,0,0,0,1699,1700,1,0,0,0,1700,1701, + 5,17,0,0,1701,1702,3,380,190,0,1702,161,1,0,0,0,1703,1704,5,238, + 0,0,1704,1710,5,224,0,0,1705,1706,5,399,0,0,1706,1711,3,254,127, + 0,1707,1708,5,316,0,0,1708,1709,5,399,0,0,1709,1711,3,204,102,0, + 1710,1705,1,0,0,0,1710,1707,1,0,0,0,1711,1712,1,0,0,0,1712,1713, + 5,400,0,0,1713,163,1,0,0,0,1714,1717,3,166,83,0,1715,1717,3,168, + 84,0,1716,1714,1,0,0,0,1716,1715,1,0,0,0,1717,165,1,0,0,0,1718,1719, + 5,42,0,0,1719,1720,5,224,0,0,1720,1721,5,399,0,0,1721,1722,3,254, + 127,0,1722,1723,5,400,0,0,1723,167,1,0,0,0,1724,1725,3,170,85,0, + 1725,1726,3,172,86,0,1726,169,1,0,0,0,1727,1728,5,98,0,0,1728,1729, + 5,224,0,0,1729,1730,5,399,0,0,1730,1731,3,254,127,0,1731,1732,5, + 400,0,0,1732,171,1,0,0,0,1733,1734,5,315,0,0,1734,1735,5,224,0,0, + 1735,1736,5,399,0,0,1736,1737,3,254,127,0,1737,1738,5,400,0,0,1738, + 173,1,0,0,0,1739,1740,5,101,0,0,1740,1742,5,378,0,0,1741,1743,3, + 30,15,0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1744,1,0,0,0,1744, + 1745,3,482,241,0,1745,175,1,0,0,0,1746,1747,5,58,0,0,1747,1748,5, + 202,0,0,1748,1750,5,378,0,0,1749,1751,3,32,16,0,1750,1749,1,0,0, + 0,1750,1751,1,0,0,0,1751,1752,1,0,0,0,1752,1754,3,484,242,0,1753, + 1755,3,38,19,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755,1757,1,0, + 0,0,1756,1758,3,196,98,0,1757,1756,1,0,0,0,1757,1758,1,0,0,0,1758, + 1760,1,0,0,0,1759,1761,3,162,81,0,1760,1759,1,0,0,0,1760,1761,1, + 0,0,0,1761,1763,1,0,0,0,1762,1764,3,164,82,0,1763,1762,1,0,0,0,1763, + 1764,1,0,0,0,1764,1766,1,0,0,0,1765,1767,3,222,111,0,1766,1765,1, + 0,0,0,1766,1767,1,0,0,0,1767,1769,1,0,0,0,1768,1770,3,246,123,0, + 1769,1768,1,0,0,0,1769,1770,1,0,0,0,1770,1772,1,0,0,0,1771,1773, + 3,424,212,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1775,1,0,0, + 0,1774,1776,3,224,112,0,1775,1774,1,0,0,0,1775,1776,1,0,0,0,1776, + 1777,1,0,0,0,1777,1778,5,17,0,0,1778,1779,3,380,190,0,1779,177,1, + 0,0,0,1780,1781,5,101,0,0,1781,1782,5,202,0,0,1782,1784,5,378,0, + 0,1783,1785,3,30,15,0,1784,1783,1,0,0,0,1784,1785,1,0,0,0,1785,1786, + 1,0,0,0,1786,1787,3,482,241,0,1787,179,1,0,0,0,1788,1789,5,58,0, + 0,1789,1790,5,293,0,0,1790,1791,5,258,0,0,1791,1792,3,638,319,0, + 1792,1794,3,188,94,0,1793,1795,3,190,95,0,1794,1793,1,0,0,0,1794, + 1795,1,0,0,0,1795,1797,1,0,0,0,1796,1798,3,268,134,0,1797,1796,1, + 0,0,0,1797,1798,1,0,0,0,1798,1799,1,0,0,0,1799,1800,3,192,96,0,1800, + 181,1,0,0,0,1801,1802,5,101,0,0,1802,1803,5,293,0,0,1803,1804,5, + 258,0,0,1804,1805,3,638,319,0,1805,183,1,0,0,0,1806,1807,5,9,0,0, + 1807,1808,5,293,0,0,1808,1809,5,258,0,0,1809,1810,3,638,319,0,1810, + 1811,3,186,93,0,1811,185,1,0,0,0,1812,1818,3,188,94,0,1813,1818, + 3,190,95,0,1814,1818,3,268,134,0,1815,1818,3,192,96,0,1816,1818, + 5,115,0,0,1817,1812,1,0,0,0,1817,1813,1,0,0,0,1817,1814,1,0,0,0, + 1817,1815,1,0,0,0,1817,1816,1,0,0,0,1818,187,1,0,0,0,1819,1820,5, + 59,0,0,1820,1835,5,426,0,0,1821,1823,5,111,0,0,1822,1824,5,431,0, + 0,1823,1822,1,0,0,0,1823,1824,1,0,0,0,1824,1825,1,0,0,0,1825,1832, + 3,578,289,0,1826,1830,5,20,0,0,1827,1828,5,223,0,0,1828,1830,5,32, + 0,0,1829,1826,1,0,0,0,1829,1827,1,0,0,0,1830,1831,1,0,0,0,1831,1833, + 5,426,0,0,1832,1829,1,0,0,0,1832,1833,1,0,0,0,1833,1835,1,0,0,0, + 1834,1819,1,0,0,0,1834,1821,1,0,0,0,1835,189,1,0,0,0,1836,1837,5, + 116,0,0,1837,1838,5,17,0,0,1838,1839,5,426,0,0,1839,191,1,0,0,0, + 1840,1842,5,85,0,0,1841,1840,1,0,0,0,1841,1842,1,0,0,0,1842,1843, + 1,0,0,0,1843,1844,5,17,0,0,1844,1845,3,2,1,0,1845,193,1,0,0,0,1846, + 1849,3,638,319,0,1847,1849,5,426,0,0,1848,1846,1,0,0,0,1848,1847, + 1,0,0,0,1849,195,1,0,0,0,1850,1851,5,47,0,0,1851,1852,5,426,0,0, + 1852,197,1,0,0,0,1853,1854,5,183,0,0,1854,1855,5,431,0,0,1855,199, + 1,0,0,0,1856,1857,5,238,0,0,1857,1866,5,32,0,0,1858,1861,5,399,0, + 0,1859,1862,3,202,101,0,1860,1862,3,254,127,0,1861,1859,1,0,0,0, + 1861,1860,1,0,0,0,1862,1867,1,0,0,0,1863,1864,5,316,0,0,1864,1865, + 5,399,0,0,1865,1867,3,204,102,0,1866,1858,1,0,0,0,1866,1863,1,0, + 0,0,1867,1868,1,0,0,0,1868,1869,5,400,0,0,1869,201,1,0,0,0,1870, + 1875,3,316,158,0,1871,1872,5,397,0,0,1872,1874,3,316,158,0,1873, + 1871,1,0,0,0,1874,1877,1,0,0,0,1875,1873,1,0,0,0,1875,1876,1,0,0, + 0,1876,203,1,0,0,0,1877,1875,1,0,0,0,1878,1883,3,206,103,0,1879, + 1880,5,397,0,0,1880,1882,3,206,103,0,1881,1879,1,0,0,0,1882,1885, + 1,0,0,0,1883,1881,1,0,0,0,1883,1884,1,0,0,0,1884,205,1,0,0,0,1885, + 1883,1,0,0,0,1886,1905,3,256,128,0,1887,1892,3,666,333,0,1888,1892, + 3,668,334,0,1889,1892,3,672,336,0,1890,1892,3,674,337,0,1891,1887, + 1,0,0,0,1891,1888,1,0,0,0,1891,1889,1,0,0,0,1891,1890,1,0,0,0,1892, + 1893,1,0,0,0,1893,1894,5,399,0,0,1894,1895,3,256,128,0,1895,1896, + 5,400,0,0,1896,1905,1,0,0,0,1897,1898,7,14,0,0,1898,1899,5,399,0, + 0,1899,1900,5,431,0,0,1900,1901,5,397,0,0,1901,1902,3,256,128,0, + 1902,1903,5,400,0,0,1903,1905,1,0,0,0,1904,1886,1,0,0,0,1904,1891, + 1,0,0,0,1904,1897,1,0,0,0,1905,207,1,0,0,0,1906,1907,5,42,0,0,1907, + 1908,5,32,0,0,1908,1909,5,399,0,0,1909,1910,3,254,127,0,1910,1917, + 5,400,0,0,1911,1912,5,315,0,0,1912,1913,5,32,0,0,1913,1914,5,399, + 0,0,1914,1915,3,262,131,0,1915,1916,5,400,0,0,1916,1918,1,0,0,0, + 1917,1911,1,0,0,0,1917,1918,1,0,0,0,1918,1919,1,0,0,0,1919,1920, + 5,166,0,0,1920,1921,5,431,0,0,1921,1922,5,31,0,0,1922,209,1,0,0, + 0,1923,1924,5,310,0,0,1924,1925,5,32,0,0,1925,1926,5,399,0,0,1926, + 1927,3,254,127,0,1927,1928,5,400,0,0,1928,1929,5,224,0,0,1929,1930, + 5,399,0,0,1930,1931,3,290,145,0,1931,1933,5,400,0,0,1932,1934,3, + 40,20,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934,211,1,0,0,0,1935, + 1938,3,218,109,0,1936,1938,3,220,110,0,1937,1935,1,0,0,0,1937,1936, + 1,0,0,0,1938,213,1,0,0,0,1939,1940,5,266,0,0,1940,1941,5,426,0,0, + 1941,215,1,0,0,0,1942,1943,5,267,0,0,1943,1944,5,426,0,0,1944,217, + 1,0,0,0,1945,1946,5,291,0,0,1946,1947,5,137,0,0,1947,1948,5,301, + 0,0,1948,1952,5,426,0,0,1949,1950,5,387,0,0,1950,1951,5,302,0,0, + 1951,1953,3,226,113,0,1952,1949,1,0,0,0,1952,1953,1,0,0,0,1953,219, + 1,0,0,0,1954,1955,5,291,0,0,1955,1956,5,137,0,0,1956,1958,5,87,0, + 0,1957,1959,3,236,118,0,1958,1957,1,0,0,0,1958,1959,1,0,0,0,1959, + 1961,1,0,0,0,1960,1962,3,238,119,0,1961,1960,1,0,0,0,1961,1962,1, + 0,0,0,1962,1964,1,0,0,0,1963,1965,3,240,120,0,1964,1963,1,0,0,0, + 1964,1965,1,0,0,0,1965,1967,1,0,0,0,1966,1968,3,242,121,0,1967,1966, + 1,0,0,0,1967,1968,1,0,0,0,1968,1970,1,0,0,0,1969,1971,3,244,122, + 0,1970,1969,1,0,0,0,1970,1971,1,0,0,0,1971,221,1,0,0,0,1972,1975, + 3,220,110,0,1973,1975,3,218,109,0,1974,1972,1,0,0,0,1974,1973,1, + 0,0,0,1975,223,1,0,0,0,1976,1977,5,332,0,0,1977,1978,3,226,113,0, + 1978,225,1,0,0,0,1979,1980,5,399,0,0,1980,1981,3,228,114,0,1981, + 1982,5,400,0,0,1982,227,1,0,0,0,1983,1993,3,232,116,0,1984,1989, + 5,426,0,0,1985,1986,5,397,0,0,1986,1988,5,426,0,0,1987,1985,1,0, + 0,0,1988,1991,1,0,0,0,1989,1987,1,0,0,0,1989,1990,1,0,0,0,1990,1993, + 1,0,0,0,1991,1989,1,0,0,0,1992,1983,1,0,0,0,1992,1984,1,0,0,0,1993, + 229,1,0,0,0,1994,1995,5,399,0,0,1995,1996,3,232,116,0,1996,1997, + 5,400,0,0,1997,231,1,0,0,0,1998,2003,3,234,117,0,1999,2000,5,397, + 0,0,2000,2002,3,234,117,0,2001,1999,1,0,0,0,2002,2005,1,0,0,0,2003, + 2001,1,0,0,0,2003,2004,1,0,0,0,2004,233,1,0,0,0,2005,2003,1,0,0, + 0,2006,2007,5,426,0,0,2007,2008,5,405,0,0,2008,2009,5,426,0,0,2009, + 235,1,0,0,0,2010,2011,5,127,0,0,2011,2012,5,334,0,0,2012,2013,5, + 32,0,0,2013,2017,5,426,0,0,2014,2015,5,110,0,0,2015,2016,5,32,0, + 0,2016,2018,5,426,0,0,2017,2014,1,0,0,0,2017,2018,1,0,0,0,2018,237, + 1,0,0,0,2019,2020,5,44,0,0,2020,2021,5,169,0,0,2021,2022,5,334,0, + 0,2022,2023,5,32,0,0,2023,2024,5,426,0,0,2024,239,1,0,0,0,2025,2026, + 5,198,0,0,2026,2027,5,174,0,0,2027,2028,5,334,0,0,2028,2029,5,32, + 0,0,2029,2030,5,426,0,0,2030,241,1,0,0,0,2031,2032,5,186,0,0,2032, + 2033,5,334,0,0,2033,2034,5,32,0,0,2034,2035,5,426,0,0,2035,243,1, + 0,0,0,2036,2037,5,219,0,0,2037,2038,5,85,0,0,2038,2039,5,17,0,0, + 2039,2040,5,426,0,0,2040,245,1,0,0,0,2041,2042,5,321,0,0,2042,2043, + 5,17,0,0,2043,2044,5,160,0,0,2044,2045,5,426,0,0,2045,2046,5,233, + 0,0,2046,2051,5,426,0,0,2047,2048,5,159,0,0,2048,2049,5,426,0,0, + 2049,2050,5,232,0,0,2050,2052,5,426,0,0,2051,2047,1,0,0,0,2051,2052, + 1,0,0,0,2052,2083,1,0,0,0,2053,2054,5,321,0,0,2054,2055,5,32,0,0, + 2055,2059,5,426,0,0,2056,2057,5,387,0,0,2057,2058,5,302,0,0,2058, + 2060,3,226,113,0,2059,2056,1,0,0,0,2059,2060,1,0,0,0,2060,2064,1, + 0,0,0,2061,2062,5,321,0,0,2062,2063,5,17,0,0,2063,2065,3,638,319, + 0,2064,2061,1,0,0,0,2064,2065,1,0,0,0,2065,2083,1,0,0,0,2066,2067, + 5,321,0,0,2067,2068,5,32,0,0,2068,2072,3,638,319,0,2069,2070,5,387, + 0,0,2070,2071,5,302,0,0,2071,2073,3,226,113,0,2072,2069,1,0,0,0, + 2072,2073,1,0,0,0,2073,2077,1,0,0,0,2074,2075,5,321,0,0,2075,2076, + 5,17,0,0,2076,2078,3,638,319,0,2077,2074,1,0,0,0,2077,2078,1,0,0, + 0,2078,2083,1,0,0,0,2079,2080,5,321,0,0,2080,2081,5,17,0,0,2081, + 2083,3,638,319,0,2082,2041,1,0,0,0,2082,2053,1,0,0,0,2082,2066,1, + 0,0,0,2082,2079,1,0,0,0,2083,247,1,0,0,0,2084,2089,3,310,155,0,2085, + 2086,5,397,0,0,2086,2088,3,310,155,0,2087,2085,1,0,0,0,2088,2091, + 1,0,0,0,2089,2087,1,0,0,0,2089,2090,1,0,0,0,2090,249,1,0,0,0,2091, + 2089,1,0,0,0,2092,2097,3,312,156,0,2093,2094,5,397,0,0,2094,2096, + 3,312,156,0,2095,2093,1,0,0,0,2096,2099,1,0,0,0,2097,2095,1,0,0, + 0,2097,2098,1,0,0,0,2098,251,1,0,0,0,2099,2097,1,0,0,0,2100,2105, + 3,340,170,0,2101,2102,5,397,0,0,2102,2104,3,340,170,0,2103,2101, + 1,0,0,0,2104,2107,1,0,0,0,2105,2103,1,0,0,0,2105,2106,1,0,0,0,2106, + 253,1,0,0,0,2107,2105,1,0,0,0,2108,2113,3,256,128,0,2109,2110,5, + 397,0,0,2110,2112,3,256,128,0,2111,2109,1,0,0,0,2112,2115,1,0,0, + 0,2113,2111,1,0,0,0,2113,2114,1,0,0,0,2114,255,1,0,0,0,2115,2113, + 1,0,0,0,2116,2119,3,682,341,0,2117,2119,4,128,0,0,2118,2116,1,0, + 0,0,2118,2117,1,0,0,0,2119,257,1,0,0,0,2120,2121,3,638,319,0,2121, + 259,1,0,0,0,2122,2132,3,256,128,0,2123,2128,5,395,0,0,2124,2129, + 5,104,0,0,2125,2129,5,175,0,0,2126,2129,5,375,0,0,2127,2129,3,638, + 319,0,2128,2124,1,0,0,0,2128,2125,1,0,0,0,2128,2126,1,0,0,0,2128, + 2127,1,0,0,0,2129,2131,1,0,0,0,2130,2123,1,0,0,0,2131,2134,1,0,0, + 0,2132,2130,1,0,0,0,2132,2133,1,0,0,0,2133,261,1,0,0,0,2134,2132, + 1,0,0,0,2135,2140,3,302,151,0,2136,2137,5,397,0,0,2137,2139,3,302, + 151,0,2138,2136,1,0,0,0,2139,2142,1,0,0,0,2140,2138,1,0,0,0,2140, + 2141,1,0,0,0,2141,263,1,0,0,0,2142,2140,1,0,0,0,2143,2144,5,399, + 0,0,2144,2145,3,254,127,0,2145,2146,5,400,0,0,2146,265,1,0,0,0,2147, + 2149,3,268,134,0,2148,2150,3,270,135,0,2149,2148,1,0,0,0,2149,2150, + 1,0,0,0,2150,2153,1,0,0,0,2151,2153,3,272,136,0,2152,2147,1,0,0, + 0,2152,2151,1,0,0,0,2153,267,1,0,0,0,2154,2157,3,662,331,0,2155, + 2157,3,664,332,0,2156,2154,1,0,0,0,2156,2155,1,0,0,0,2157,269,1, + 0,0,0,2158,2159,7,15,0,0,2159,271,1,0,0,0,2160,2164,5,109,0,0,2161, + 2162,5,216,0,0,2162,2164,5,109,0,0,2163,2160,1,0,0,0,2163,2161,1, + 0,0,0,2164,273,1,0,0,0,2165,2166,7,16,0,0,2166,275,1,0,0,0,2167, + 2168,5,55,0,0,2168,2170,3,638,319,0,2169,2167,1,0,0,0,2169,2170, + 1,0,0,0,2170,2171,1,0,0,0,2171,2173,3,280,140,0,2172,2174,3,336, + 168,0,2173,2172,1,0,0,0,2173,2174,1,0,0,0,2174,277,1,0,0,0,2175, + 2176,5,55,0,0,2176,2177,3,638,319,0,2177,2179,3,280,140,0,2178,2180, + 3,338,169,0,2179,2178,1,0,0,0,2179,2180,1,0,0,0,2180,279,1,0,0,0, + 2181,2184,3,282,141,0,2182,2184,3,284,142,0,2183,2181,1,0,0,0,2183, + 2182,1,0,0,0,2184,281,1,0,0,0,2185,2186,3,334,167,0,2186,2187,3, + 264,132,0,2187,283,1,0,0,0,2188,2189,5,40,0,0,2189,2190,5,399,0, + 0,2190,2191,3,580,290,0,2191,2192,5,400,0,0,2192,285,1,0,0,0,2193, + 2194,5,55,0,0,2194,2196,3,638,319,0,2195,2193,1,0,0,0,2195,2196, + 1,0,0,0,2196,2197,1,0,0,0,2197,2198,5,136,0,0,2198,2199,5,173,0, + 0,2199,2200,3,264,132,0,2200,2201,5,269,0,0,2201,2202,3,478,239, + 0,2202,2204,3,264,132,0,2203,2205,3,336,168,0,2204,2203,1,0,0,0, + 2204,2205,1,0,0,0,2205,287,1,0,0,0,2206,2207,5,55,0,0,2207,2208, + 3,638,319,0,2208,2209,5,136,0,0,2209,2210,5,173,0,0,2210,2211,3, + 264,132,0,2211,2212,5,269,0,0,2212,2213,3,478,239,0,2213,2215,3, + 264,132,0,2214,2216,3,338,169,0,2215,2214,1,0,0,0,2215,2216,1,0, + 0,0,2216,289,1,0,0,0,2217,2220,3,296,148,0,2218,2220,3,292,146,0, + 2219,2217,1,0,0,0,2219,2218,1,0,0,0,2220,291,1,0,0,0,2221,2226,3, + 294,147,0,2222,2223,5,397,0,0,2223,2225,3,294,147,0,2224,2222,1, + 0,0,0,2225,2228,1,0,0,0,2226,2224,1,0,0,0,2226,2227,1,0,0,0,2227, + 293,1,0,0,0,2228,2226,1,0,0,0,2229,2230,5,399,0,0,2230,2231,3,296, + 148,0,2231,2232,5,400,0,0,2232,295,1,0,0,0,2233,2238,3,572,286,0, + 2234,2235,5,397,0,0,2235,2237,3,572,286,0,2236,2234,1,0,0,0,2237, + 2240,1,0,0,0,2238,2236,1,0,0,0,2238,2239,1,0,0,0,2239,297,1,0,0, + 0,2240,2238,1,0,0,0,2241,2242,7,17,0,0,2242,299,1,0,0,0,2243,2244, + 5,220,0,0,2244,2245,7,18,0,0,2245,301,1,0,0,0,2246,2248,3,256,128, + 0,2247,2249,3,298,149,0,2248,2247,1,0,0,0,2248,2249,1,0,0,0,2249, + 2251,1,0,0,0,2250,2252,3,300,150,0,2251,2250,1,0,0,0,2251,2252,1, + 0,0,0,2252,303,1,0,0,0,2253,2258,3,306,153,0,2254,2255,5,397,0,0, + 2255,2257,3,306,153,0,2256,2254,1,0,0,0,2257,2260,1,0,0,0,2258,2256, + 1,0,0,0,2258,2259,1,0,0,0,2259,305,1,0,0,0,2260,2258,1,0,0,0,2261, + 2264,3,258,129,0,2262,2263,5,47,0,0,2263,2265,5,426,0,0,2264,2262, + 1,0,0,0,2264,2265,1,0,0,0,2265,307,1,0,0,0,2266,2269,3,256,128,0, + 2267,2269,3,580,290,0,2268,2266,1,0,0,0,2268,2267,1,0,0,0,2269,2271, + 1,0,0,0,2270,2272,3,298,149,0,2271,2270,1,0,0,0,2271,2272,1,0,0, + 0,2272,2274,1,0,0,0,2273,2275,3,300,150,0,2274,2273,1,0,0,0,2274, + 2275,1,0,0,0,2275,309,1,0,0,0,2276,2277,3,258,129,0,2277,2280,3, + 342,171,0,2278,2279,5,47,0,0,2279,2281,5,426,0,0,2280,2278,1,0,0, + 0,2280,2281,1,0,0,0,2281,311,1,0,0,0,2282,2285,3,314,157,0,2283, + 2285,3,316,158,0,2284,2282,1,0,0,0,2284,2283,1,0,0,0,2285,313,1, + 0,0,0,2286,2289,3,286,143,0,2287,2289,3,276,138,0,2288,2286,1,0, + 0,0,2288,2287,1,0,0,0,2289,315,1,0,0,0,2290,2291,3,258,129,0,2291, + 2293,3,342,171,0,2292,2294,3,318,159,0,2293,2292,1,0,0,0,2293,2294, + 1,0,0,0,2294,2297,1,0,0,0,2295,2296,5,47,0,0,2296,2298,5,426,0,0, + 2297,2295,1,0,0,0,2297,2298,1,0,0,0,2298,317,1,0,0,0,2299,2302,3, + 320,160,0,2300,2302,3,322,161,0,2301,2299,1,0,0,0,2301,2300,1,0, + 0,0,2302,319,1,0,0,0,2303,2304,5,55,0,0,2304,2306,3,638,319,0,2305, + 2303,1,0,0,0,2305,2306,1,0,0,0,2306,2307,1,0,0,0,2307,2308,5,269, + 0,0,2308,2309,3,478,239,0,2309,2310,5,399,0,0,2310,2311,3,256,128, + 0,2311,2313,5,400,0,0,2312,2314,3,336,168,0,2313,2312,1,0,0,0,2313, + 2314,1,0,0,0,2314,321,1,0,0,0,2315,2316,5,55,0,0,2316,2318,3,638, + 319,0,2317,2315,1,0,0,0,2317,2318,1,0,0,0,2318,2319,1,0,0,0,2319, + 2321,3,330,165,0,2320,2322,3,336,168,0,2321,2320,1,0,0,0,2321,2322, + 1,0,0,0,2322,323,1,0,0,0,2323,2326,3,326,163,0,2324,2326,3,328,164, + 0,2325,2323,1,0,0,0,2325,2324,1,0,0,0,2326,325,1,0,0,0,2327,2328, + 5,55,0,0,2328,2330,3,638,319,0,2329,2327,1,0,0,0,2329,2330,1,0,0, + 0,2330,2331,1,0,0,0,2331,2332,5,269,0,0,2332,2333,3,478,239,0,2333, + 2334,5,399,0,0,2334,2335,3,256,128,0,2335,2337,5,400,0,0,2336,2338, + 3,338,169,0,2337,2336,1,0,0,0,2337,2338,1,0,0,0,2338,327,1,0,0,0, + 2339,2340,5,55,0,0,2340,2342,3,638,319,0,2341,2339,1,0,0,0,2341, + 2342,1,0,0,0,2342,2343,1,0,0,0,2343,2345,3,330,165,0,2344,2346,3, + 338,169,0,2345,2344,1,0,0,0,2345,2346,1,0,0,0,2346,329,1,0,0,0,2347, + 2348,5,216,0,0,2348,2354,5,219,0,0,2349,2350,5,83,0,0,2350,2354, + 3,332,166,0,2351,2354,3,284,142,0,2352,2354,3,334,167,0,2353,2347, + 1,0,0,0,2353,2349,1,0,0,0,2353,2351,1,0,0,0,2353,2352,1,0,0,0,2354, + 331,1,0,0,0,2355,2359,3,572,286,0,2356,2359,3,550,275,0,2357,2359, + 3,560,280,0,2358,2355,1,0,0,0,2358,2356,1,0,0,0,2358,2357,1,0,0, + 0,2359,333,1,0,0,0,2360,2361,5,251,0,0,2361,2364,5,173,0,0,2362, + 2364,5,358,0,0,2363,2360,1,0,0,0,2363,2362,1,0,0,0,2364,335,1,0, + 0,0,2365,2367,3,266,133,0,2366,2368,3,274,137,0,2367,2366,1,0,0, + 0,2367,2368,1,0,0,0,2368,337,1,0,0,0,2369,2371,3,266,133,0,2370, + 2372,3,274,137,0,2371,2370,1,0,0,0,2371,2372,1,0,0,0,2372,339,1, + 0,0,0,2373,2374,3,258,129,0,2374,2375,5,396,0,0,2375,2378,3,342, + 171,0,2376,2377,5,47,0,0,2377,2379,5,426,0,0,2378,2376,1,0,0,0,2378, + 2379,1,0,0,0,2379,341,1,0,0,0,2380,2381,3,346,173,0,2381,343,1,0, + 0,0,2382,2387,3,342,171,0,2383,2384,5,397,0,0,2384,2386,3,342,171, + 0,2385,2383,1,0,0,0,2386,2389,1,0,0,0,2387,2385,1,0,0,0,2387,2388, + 1,0,0,0,2388,345,1,0,0,0,2389,2387,1,0,0,0,2390,2396,3,348,174,0, + 2391,2396,3,350,175,0,2392,2396,3,352,176,0,2393,2396,3,354,177, + 0,2394,2396,3,356,178,0,2395,2390,1,0,0,0,2395,2391,1,0,0,0,2395, + 2392,1,0,0,0,2395,2393,1,0,0,0,2395,2394,1,0,0,0,2396,347,1,0,0, + 0,2397,2435,5,340,0,0,2398,2435,5,311,0,0,2399,2435,5,162,0,0,2400, + 2435,5,163,0,0,2401,2435,5,26,0,0,2402,2435,5,28,0,0,2403,2435,5, + 131,0,0,2404,2435,5,264,0,0,2405,2407,5,100,0,0,2406,2408,5,248, + 0,0,2407,2406,1,0,0,0,2407,2408,1,0,0,0,2408,2435,1,0,0,0,2409,2435, + 5,71,0,0,2410,2435,5,72,0,0,2411,2435,5,337,0,0,2412,2435,5,338, + 0,0,2413,2414,5,337,0,0,2414,2415,5,387,0,0,2415,2416,5,188,0,0, + 2416,2417,5,336,0,0,2417,2435,5,394,0,0,2418,2435,5,323,0,0,2419, + 2435,5,27,0,0,2420,2428,3,680,340,0,2421,2422,5,399,0,0,2422,2425, + 5,431,0,0,2423,2424,5,397,0,0,2424,2426,5,431,0,0,2425,2423,1,0, + 0,0,2425,2426,1,0,0,0,2426,2427,1,0,0,0,2427,2429,5,400,0,0,2428, + 2421,1,0,0,0,2428,2429,1,0,0,0,2429,2435,1,0,0,0,2430,2431,7,19, + 0,0,2431,2432,5,399,0,0,2432,2433,5,431,0,0,2433,2435,5,400,0,0, + 2434,2397,1,0,0,0,2434,2398,1,0,0,0,2434,2399,1,0,0,0,2434,2400, + 1,0,0,0,2434,2401,1,0,0,0,2434,2402,1,0,0,0,2434,2403,1,0,0,0,2434, + 2404,1,0,0,0,2434,2405,1,0,0,0,2434,2409,1,0,0,0,2434,2410,1,0,0, + 0,2434,2411,1,0,0,0,2434,2412,1,0,0,0,2434,2413,1,0,0,0,2434,2418, + 1,0,0,0,2434,2419,1,0,0,0,2434,2420,1,0,0,0,2434,2430,1,0,0,0,2435, + 349,1,0,0,0,2436,2437,5,16,0,0,2437,2438,5,409,0,0,2438,2439,3,346, + 173,0,2439,2440,5,411,0,0,2440,351,1,0,0,0,2441,2442,5,324,0,0,2442, + 2443,5,409,0,0,2443,2444,3,252,126,0,2444,2445,5,411,0,0,2445,353, + 1,0,0,0,2446,2447,5,198,0,0,2447,2448,5,409,0,0,2448,2449,3,348, + 174,0,2449,2450,5,397,0,0,2450,2451,3,346,173,0,2451,2452,5,411, + 0,0,2452,355,1,0,0,0,2453,2454,5,357,0,0,2454,2455,5,409,0,0,2455, + 2456,3,344,172,0,2456,2457,5,411,0,0,2457,357,1,0,0,0,2458,2460, + 7,20,0,0,2459,2461,7,21,0,0,2460,2459,1,0,0,0,2460,2461,1,0,0,0, + 2461,359,1,0,0,0,2462,2464,3,364,182,0,2463,2462,1,0,0,0,2463,2464, + 1,0,0,0,2464,2465,1,0,0,0,2465,2466,3,362,181,0,2466,361,1,0,0,0, + 2467,2470,3,368,184,0,2468,2470,3,372,186,0,2469,2467,1,0,0,0,2469, + 2468,1,0,0,0,2470,363,1,0,0,0,2471,2472,5,387,0,0,2472,2477,3,366, + 183,0,2473,2474,5,397,0,0,2474,2476,3,366,183,0,2475,2473,1,0,0, + 0,2476,2479,1,0,0,0,2477,2475,1,0,0,0,2477,2478,1,0,0,0,2478,365, + 1,0,0,0,2479,2477,1,0,0,0,2480,2485,3,638,319,0,2481,2482,5,399, + 0,0,2482,2483,3,254,127,0,2483,2484,5,400,0,0,2484,2486,1,0,0,0, + 2485,2481,1,0,0,0,2485,2486,1,0,0,0,2486,2487,1,0,0,0,2487,2488, + 5,17,0,0,2488,2489,5,399,0,0,2489,2490,3,360,180,0,2490,2491,5,400, + 0,0,2491,367,1,0,0,0,2492,2498,3,370,185,0,2493,2494,3,358,179,0, + 2494,2495,3,370,185,0,2495,2497,1,0,0,0,2496,2493,1,0,0,0,2497,2500, + 1,0,0,0,2498,2496,1,0,0,0,2498,2499,1,0,0,0,2499,369,1,0,0,0,2500, + 2498,1,0,0,0,2501,2502,3,448,224,0,2502,2503,3,382,191,0,2503,2505, + 3,500,250,0,2504,2506,3,462,231,0,2505,2504,1,0,0,0,2505,2506,1, + 0,0,0,2506,2508,1,0,0,0,2507,2509,3,494,247,0,2508,2507,1,0,0,0, + 2508,2509,1,0,0,0,2509,2511,1,0,0,0,2510,2512,3,520,260,0,2511,2510, + 1,0,0,0,2511,2512,1,0,0,0,2512,2514,1,0,0,0,2513,2515,3,528,264, + 0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2517,1,0,0,0,2516,2518, + 3,512,256,0,2517,2516,1,0,0,0,2517,2518,1,0,0,0,2518,2520,1,0,0, + 0,2519,2521,3,530,265,0,2520,2519,1,0,0,0,2520,2521,1,0,0,0,2521, + 2523,1,0,0,0,2522,2524,3,542,271,0,2523,2522,1,0,0,0,2523,2524,1, + 0,0,0,2524,2526,1,0,0,0,2525,2527,3,544,272,0,2526,2525,1,0,0,0, + 2526,2527,1,0,0,0,2527,2529,1,0,0,0,2528,2530,3,546,273,0,2529,2528, + 1,0,0,0,2529,2530,1,0,0,0,2530,2532,1,0,0,0,2531,2533,3,548,274, + 0,2532,2531,1,0,0,0,2532,2533,1,0,0,0,2533,2535,1,0,0,0,2534,2536, + 3,386,193,0,2535,2534,1,0,0,0,2535,2536,1,0,0,0,2536,2573,1,0,0, + 0,2537,2538,3,448,224,0,2538,2540,3,500,250,0,2539,2541,3,462,231, + 0,2540,2539,1,0,0,0,2540,2541,1,0,0,0,2541,2543,1,0,0,0,2542,2544, + 3,494,247,0,2543,2542,1,0,0,0,2543,2544,1,0,0,0,2544,2546,1,0,0, + 0,2545,2547,3,520,260,0,2546,2545,1,0,0,0,2546,2547,1,0,0,0,2547, + 2549,1,0,0,0,2548,2550,3,528,264,0,2549,2548,1,0,0,0,2549,2550,1, + 0,0,0,2550,2552,1,0,0,0,2551,2553,3,512,256,0,2552,2551,1,0,0,0, + 2552,2553,1,0,0,0,2553,2555,1,0,0,0,2554,2556,3,530,265,0,2555,2554, + 1,0,0,0,2555,2556,1,0,0,0,2556,2558,1,0,0,0,2557,2559,3,542,271, + 0,2558,2557,1,0,0,0,2558,2559,1,0,0,0,2559,2561,1,0,0,0,2560,2562, + 3,544,272,0,2561,2560,1,0,0,0,2561,2562,1,0,0,0,2562,2564,1,0,0, + 0,2563,2565,3,546,273,0,2564,2563,1,0,0,0,2564,2565,1,0,0,0,2565, + 2567,1,0,0,0,2566,2568,3,548,274,0,2567,2566,1,0,0,0,2567,2568,1, + 0,0,0,2568,2570,1,0,0,0,2569,2571,3,386,193,0,2570,2569,1,0,0,0, + 2570,2571,1,0,0,0,2571,2573,1,0,0,0,2572,2501,1,0,0,0,2572,2537, + 1,0,0,0,2573,371,1,0,0,0,2574,2575,3,382,191,0,2575,2576,3,376,188, + 0,2576,2579,1,0,0,0,2577,2579,3,376,188,0,2578,2574,1,0,0,0,2578, + 2577,1,0,0,0,2579,373,1,0,0,0,2580,2582,3,500,250,0,2581,2583,3, + 448,224,0,2582,2581,1,0,0,0,2582,2583,1,0,0,0,2583,2585,1,0,0,0, + 2584,2586,3,494,247,0,2585,2584,1,0,0,0,2585,2586,1,0,0,0,2586,2588, + 1,0,0,0,2587,2589,3,520,260,0,2588,2587,1,0,0,0,2588,2589,1,0,0, + 0,2589,2591,1,0,0,0,2590,2592,3,528,264,0,2591,2590,1,0,0,0,2591, + 2592,1,0,0,0,2592,2594,1,0,0,0,2593,2595,3,512,256,0,2594,2593,1, + 0,0,0,2594,2595,1,0,0,0,2595,2597,1,0,0,0,2596,2598,3,530,265,0, + 2597,2596,1,0,0,0,2597,2598,1,0,0,0,2598,2605,1,0,0,0,2599,2600, + 5,399,0,0,2600,2601,3,376,188,0,2601,2602,5,400,0,0,2602,2605,1, + 0,0,0,2603,2605,3,496,248,0,2604,2580,1,0,0,0,2604,2599,1,0,0,0, + 2604,2603,1,0,0,0,2605,375,1,0,0,0,2606,2608,3,374,187,0,2607,2609, + 3,378,189,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2611,1,0,0, + 0,2610,2612,3,542,271,0,2611,2610,1,0,0,0,2611,2612,1,0,0,0,2612, + 2614,1,0,0,0,2613,2615,3,544,272,0,2614,2613,1,0,0,0,2614,2615,1, + 0,0,0,2615,2617,1,0,0,0,2616,2618,3,546,273,0,2617,2616,1,0,0,0, + 2617,2618,1,0,0,0,2618,2620,1,0,0,0,2619,2621,3,548,274,0,2620,2619, + 1,0,0,0,2620,2621,1,0,0,0,2621,2623,1,0,0,0,2622,2624,3,386,193, + 0,2623,2622,1,0,0,0,2623,2624,1,0,0,0,2624,377,1,0,0,0,2625,2626, + 3,358,179,0,2626,2627,3,374,187,0,2627,2629,1,0,0,0,2628,2625,1, + 0,0,0,2629,2630,1,0,0,0,2630,2628,1,0,0,0,2630,2631,1,0,0,0,2631, + 379,1,0,0,0,2632,2634,3,364,182,0,2633,2632,1,0,0,0,2633,2634,1, + 0,0,0,2634,2635,1,0,0,0,2635,2636,3,376,188,0,2636,381,1,0,0,0,2637, + 2654,5,161,0,0,2638,2639,5,235,0,0,2639,2641,3,384,192,0,2640,2642, + 3,32,16,0,2641,2640,1,0,0,0,2641,2642,1,0,0,0,2642,2655,1,0,0,0, + 2643,2645,5,166,0,0,2644,2646,5,329,0,0,2645,2644,1,0,0,0,2645,2646, + 1,0,0,0,2646,2647,1,0,0,0,2647,2652,3,624,312,0,2648,2649,5,399, + 0,0,2649,2650,3,254,127,0,2650,2651,5,400,0,0,2651,2653,1,0,0,0, + 2652,2648,1,0,0,0,2652,2653,1,0,0,0,2653,2655,1,0,0,0,2654,2638, + 1,0,0,0,2654,2643,1,0,0,0,2655,383,1,0,0,0,2656,2658,5,188,0,0,2657, + 2656,1,0,0,0,2657,2658,1,0,0,0,2658,2659,1,0,0,0,2659,2660,5,93, + 0,0,2660,2662,5,426,0,0,2661,2663,3,222,111,0,2662,2661,1,0,0,0, + 2662,2663,1,0,0,0,2663,2665,1,0,0,0,2664,2666,3,246,123,0,2665,2664, + 1,0,0,0,2665,2666,1,0,0,0,2666,2670,1,0,0,0,2667,2668,5,329,0,0, + 2668,2670,3,624,312,0,2669,2657,1,0,0,0,2669,2667,1,0,0,0,2670,385, + 1,0,0,0,2671,2680,5,185,0,0,2672,2673,5,431,0,0,2673,2675,5,397, + 0,0,2674,2672,1,0,0,0,2674,2675,1,0,0,0,2675,2676,1,0,0,0,2676,2681, + 5,431,0,0,2677,2678,5,431,0,0,2678,2679,5,223,0,0,2679,2681,5,431, + 0,0,2680,2674,1,0,0,0,2680,2677,1,0,0,0,2681,387,1,0,0,0,2682,2683, + 3,256,128,0,2683,2684,5,405,0,0,2684,2685,3,390,195,0,2685,389,1, + 0,0,0,2686,2689,5,83,0,0,2687,2689,3,590,295,0,2688,2686,1,0,0,0, + 2688,2687,1,0,0,0,2689,391,1,0,0,0,2690,2691,5,304,0,0,2691,2696, + 3,388,194,0,2692,2693,5,397,0,0,2693,2695,3,388,194,0,2694,2692, + 1,0,0,0,2695,2698,1,0,0,0,2696,2694,1,0,0,0,2696,2697,1,0,0,0,2697, + 393,1,0,0,0,2698,2696,1,0,0,0,2699,2700,5,318,0,0,2700,2709,5,344, + 0,0,2701,2706,3,396,198,0,2702,2703,5,397,0,0,2703,2705,3,396,198, + 0,2704,2702,1,0,0,0,2705,2708,1,0,0,0,2706,2704,1,0,0,0,2706,2707, + 1,0,0,0,2707,2710,1,0,0,0,2708,2706,1,0,0,0,2709,2701,1,0,0,0,2709, + 2710,1,0,0,0,2710,2723,1,0,0,0,2711,2713,5,48,0,0,2712,2714,5,389, + 0,0,2713,2712,1,0,0,0,2713,2714,1,0,0,0,2714,2723,1,0,0,0,2715,2717, + 5,289,0,0,2716,2718,5,389,0,0,2717,2716,1,0,0,0,2717,2718,1,0,0, + 0,2718,2723,1,0,0,0,2719,2720,5,304,0,0,2720,2721,5,22,0,0,2721, + 2723,7,22,0,0,2722,2699,1,0,0,0,2722,2711,1,0,0,0,2722,2715,1,0, + 0,0,2722,2719,1,0,0,0,2723,395,1,0,0,0,2724,2725,5,168,0,0,2725, + 2726,5,182,0,0,2726,2730,5,312,0,0,2727,2728,5,261,0,0,2728,2730, + 7,23,0,0,2729,2724,1,0,0,0,2729,2727,1,0,0,0,2730,397,1,0,0,0,2731, + 2734,3,402,201,0,2732,2734,3,404,202,0,2733,2731,1,0,0,0,2733,2732, + 1,0,0,0,2734,2737,1,0,0,0,2735,2733,1,0,0,0,2735,2736,1,0,0,0,2736, + 2739,1,0,0,0,2737,2735,1,0,0,0,2738,2740,3,400,200,0,2739,2738,1, + 0,0,0,2739,2740,1,0,0,0,2740,399,1,0,0,0,2741,2742,5,383,0,0,2742, + 2743,5,216,0,0,2743,2746,5,201,0,0,2744,2745,5,11,0,0,2745,2747, + 3,580,290,0,2746,2744,1,0,0,0,2746,2747,1,0,0,0,2747,2748,1,0,0, + 0,2748,2749,5,335,0,0,2749,2751,5,161,0,0,2750,2752,3,264,132,0, + 2751,2750,1,0,0,0,2751,2752,1,0,0,0,2752,2753,1,0,0,0,2753,2754, + 5,374,0,0,2754,2755,3,538,269,0,2755,401,1,0,0,0,2756,2757,5,383, + 0,0,2757,2758,5,201,0,0,2758,2759,5,11,0,0,2759,2760,3,580,290,0, + 2760,2764,5,335,0,0,2761,2762,5,365,0,0,2762,2765,3,392,196,0,2763, + 2765,5,86,0,0,2764,2761,1,0,0,0,2764,2763,1,0,0,0,2765,403,1,0,0, + 0,2766,2767,5,383,0,0,2767,2768,5,201,0,0,2768,2772,5,335,0,0,2769, + 2770,5,365,0,0,2770,2773,3,392,196,0,2771,2773,5,86,0,0,2772,2769, + 1,0,0,0,2772,2771,1,0,0,0,2773,405,1,0,0,0,2774,2775,5,246,0,0,2775, + 2776,5,426,0,0,2776,407,1,0,0,0,2777,2778,5,352,0,0,2778,2779,5, + 426,0,0,2779,409,1,0,0,0,2780,2781,5,320,0,0,2781,2782,5,426,0,0, + 2782,411,1,0,0,0,2783,2814,5,9,0,0,2784,2785,5,329,0,0,2785,2786, + 3,478,239,0,2786,2787,3,414,207,0,2787,2815,1,0,0,0,2788,2789,5, + 378,0,0,2789,2791,3,482,241,0,2790,2792,5,17,0,0,2791,2790,1,0,0, + 0,2791,2792,1,0,0,0,2792,2793,1,0,0,0,2793,2794,3,418,209,0,2794, + 2815,1,0,0,0,2795,2796,5,202,0,0,2796,2797,5,378,0,0,2797,2801,3, + 482,241,0,2798,2802,3,36,18,0,2799,2802,3,38,19,0,2800,2802,5,265, + 0,0,2801,2798,1,0,0,0,2801,2799,1,0,0,0,2801,2800,1,0,0,0,2802,2815, + 1,0,0,0,2803,2804,3,70,35,0,2804,2805,3,420,210,0,2805,2815,1,0, + 0,0,2806,2807,5,69,0,0,2807,2815,3,422,211,0,2808,2809,5,155,0,0, + 2809,2810,3,638,319,0,2810,2811,5,224,0,0,2811,2812,3,624,312,0, + 2812,2813,5,265,0,0,2813,2815,1,0,0,0,2814,2784,1,0,0,0,2814,2788, + 1,0,0,0,2814,2795,1,0,0,0,2814,2803,1,0,0,0,2814,2806,1,0,0,0,2814, + 2808,1,0,0,0,2815,413,1,0,0,0,2816,2817,5,274,0,0,2817,2818,5,341, + 0,0,2818,2906,3,480,240,0,2819,2820,5,102,0,0,2820,2906,5,239,0, + 0,2821,2906,3,426,213,0,2822,2824,5,4,0,0,2823,2825,3,32,16,0,2824, + 2823,1,0,0,0,2824,2825,1,0,0,0,2825,2830,1,0,0,0,2826,2828,3,626, + 313,0,2827,2829,3,424,212,0,2828,2827,1,0,0,0,2828,2829,1,0,0,0, + 2829,2831,1,0,0,0,2830,2826,1,0,0,0,2831,2832,1,0,0,0,2832,2830, + 1,0,0,0,2832,2833,1,0,0,0,2833,2906,1,0,0,0,2834,2838,5,342,0,0, + 2835,2837,3,626,313,0,2836,2835,1,0,0,0,2837,2840,1,0,0,0,2838,2836, + 1,0,0,0,2838,2839,1,0,0,0,2839,2906,1,0,0,0,2840,2838,1,0,0,0,2841, + 2845,5,15,0,0,2842,2844,3,626,313,0,2843,2842,1,0,0,0,2844,2847, + 1,0,0,0,2845,2843,1,0,0,0,2845,2846,1,0,0,0,2846,2906,1,0,0,0,2847, + 2845,1,0,0,0,2848,2852,5,353,0,0,2849,2851,3,626,313,0,2850,2849, + 1,0,0,0,2851,2854,1,0,0,0,2852,2850,1,0,0,0,2852,2853,1,0,0,0,2853, + 2906,1,0,0,0,2854,2852,1,0,0,0,2855,2856,5,304,0,0,2856,2857,5,332, + 0,0,2857,2906,3,226,113,0,2858,2859,5,363,0,0,2859,2861,5,332,0, + 0,2860,2862,3,30,15,0,2861,2860,1,0,0,0,2861,2862,1,0,0,0,2862,2863, + 1,0,0,0,2863,2906,3,226,113,0,2864,2906,3,210,105,0,2865,2868,5, + 216,0,0,2866,2869,5,310,0,0,2867,2869,3,40,20,0,2868,2866,1,0,0, + 0,2868,2867,1,0,0,0,2869,2906,1,0,0,0,2870,2871,5,113,0,0,2871,2872, + 3,626,313,0,2872,2873,5,387,0,0,2873,2874,5,329,0,0,2874,2875,3, + 478,239,0,2875,2906,1,0,0,0,2876,2877,5,237,0,0,2877,2878,5,45,0, + 0,2878,2879,5,399,0,0,2879,2880,3,310,155,0,2880,2881,5,400,0,0, + 2881,2906,1,0,0,0,2882,2883,5,101,0,0,2883,2884,5,55,0,0,2884,2906, + 3,638,319,0,2885,2888,5,4,0,0,2886,2889,3,288,144,0,2887,2889,3, + 278,139,0,2888,2886,1,0,0,0,2888,2887,1,0,0,0,2889,2906,1,0,0,0, + 2890,2892,3,626,313,0,2891,2890,1,0,0,0,2891,2892,1,0,0,0,2892,2893, + 1,0,0,0,2893,2906,3,416,208,0,2894,2895,5,304,0,0,2895,2896,5,236, + 0,0,2896,2906,3,126,63,0,2897,2898,5,304,0,0,2898,2899,5,237,0,0, + 2899,2900,5,316,0,0,2900,2901,5,399,0,0,2901,2902,3,204,102,0,2902, + 2903,5,400,0,0,2903,2906,1,0,0,0,2904,2906,3,430,215,0,2905,2816, + 1,0,0,0,2905,2819,1,0,0,0,2905,2821,1,0,0,0,2905,2822,1,0,0,0,2905, + 2834,1,0,0,0,2905,2841,1,0,0,0,2905,2848,1,0,0,0,2905,2855,1,0,0, + 0,2905,2858,1,0,0,0,2905,2864,1,0,0,0,2905,2865,1,0,0,0,2905,2870, + 1,0,0,0,2905,2876,1,0,0,0,2905,2882,1,0,0,0,2905,2885,1,0,0,0,2905, + 2891,1,0,0,0,2905,2894,1,0,0,0,2905,2897,1,0,0,0,2905,2904,1,0,0, + 0,2906,415,1,0,0,0,2907,2908,5,304,0,0,2908,2909,5,129,0,0,2909, + 3040,3,432,216,0,2910,2911,5,304,0,0,2911,2912,5,189,0,0,2912,3040, + 5,426,0,0,2913,3040,5,53,0,0,2914,2924,5,304,0,0,2915,2916,5,301, + 0,0,2916,2920,5,426,0,0,2917,2918,5,387,0,0,2918,2919,5,302,0,0, + 2919,2921,3,226,113,0,2920,2917,1,0,0,0,2920,2921,1,0,0,0,2921,2925, + 1,0,0,0,2922,2923,5,302,0,0,2923,2925,3,226,113,0,2924,2915,1,0, + 0,0,2924,2922,1,0,0,0,2925,3040,1,0,0,0,2926,2927,5,363,0,0,2927, + 2928,5,302,0,0,2928,3040,3,226,113,0,2929,2930,5,274,0,0,2930,2931, + 5,341,0,0,2931,3040,3,626,313,0,2932,2933,5,166,0,0,2933,2934,5, + 431,0,0,2934,3040,5,31,0,0,2935,2936,5,304,0,0,2936,2937,5,310,0, + 0,2937,2938,5,189,0,0,2938,2939,5,399,0,0,2939,2944,3,428,214,0, + 2940,2941,5,397,0,0,2941,2943,3,428,214,0,2942,2940,1,0,0,0,2943, + 2946,1,0,0,0,2944,2942,1,0,0,0,2944,2945,1,0,0,0,2945,2947,1,0,0, + 0,2946,2944,1,0,0,0,2947,2948,5,400,0,0,2948,3040,1,0,0,0,2949,2950, + 5,216,0,0,2950,3040,7,24,0,0,2951,3040,3,208,104,0,2952,2953,5,49, + 0,0,2953,2956,5,426,0,0,2954,2955,5,11,0,0,2955,2957,5,380,0,0,2956, + 2954,1,0,0,0,2956,2957,1,0,0,0,2957,2962,1,0,0,0,2958,2959,5,42, + 0,0,2959,2960,5,166,0,0,2960,2961,5,431,0,0,2961,2963,5,31,0,0,2962, + 2958,1,0,0,0,2962,2963,1,0,0,0,2963,2965,1,0,0,0,2964,2966,3,542, + 271,0,2965,2964,1,0,0,0,2965,2966,1,0,0,0,2966,2968,1,0,0,0,2967, + 2969,3,406,203,0,2968,2967,1,0,0,0,2968,2969,1,0,0,0,2969,2974,1, + 0,0,0,2970,2971,5,387,0,0,2971,2972,5,235,0,0,2972,2973,5,332,0, + 0,2973,2975,3,226,113,0,2974,2970,1,0,0,0,2974,2975,1,0,0,0,2975, + 3040,1,0,0,0,2976,2977,5,365,0,0,2977,2978,5,319,0,0,2978,2980,5, + 134,0,0,2979,2981,5,45,0,0,2980,2979,1,0,0,0,2980,2981,1,0,0,0,2981, + 2982,1,0,0,0,2982,2983,3,256,128,0,2983,2984,5,304,0,0,2984,2987, + 3,226,113,0,2985,2986,5,47,0,0,2986,2988,5,426,0,0,2987,2985,1,0, + 0,0,2987,2988,1,0,0,0,2988,3040,1,0,0,0,2989,2990,5,365,0,0,2990, + 2991,5,319,0,0,2991,2992,5,304,0,0,2992,3040,3,226,113,0,2993,2995, + 5,38,0,0,2994,2996,5,45,0,0,2995,2994,1,0,0,0,2995,2996,1,0,0,0, + 2996,2997,1,0,0,0,2997,2998,3,256,128,0,2998,2999,3,258,129,0,2999, + 3001,3,342,171,0,3000,3002,3,324,162,0,3001,3000,1,0,0,0,3001,3002, + 1,0,0,0,3002,3005,1,0,0,0,3003,3004,5,47,0,0,3004,3006,5,426,0,0, + 3005,3003,1,0,0,0,3005,3006,1,0,0,0,3006,3010,1,0,0,0,3007,3011, + 5,130,0,0,3008,3009,5,6,0,0,3009,3011,3,638,319,0,3010,3007,1,0, + 0,0,3010,3008,1,0,0,0,3010,3011,1,0,0,0,3011,3013,1,0,0,0,3012,3014, + 3,34,17,0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014,3040,1,0,0,0, + 3015,3018,5,4,0,0,3016,3018,5,278,0,0,3017,3015,1,0,0,0,3017,3016, + 1,0,0,0,3018,3019,1,0,0,0,3019,3020,5,46,0,0,3020,3021,5,399,0,0, + 3021,3022,3,248,124,0,3022,3024,5,400,0,0,3023,3025,3,34,17,0,3024, + 3023,1,0,0,0,3024,3025,1,0,0,0,3025,3040,1,0,0,0,3026,3027,5,365, + 0,0,3027,3029,5,46,0,0,3028,3030,3,34,17,0,3029,3028,1,0,0,0,3029, + 3030,1,0,0,0,3030,3040,1,0,0,0,3031,3037,3,268,134,0,3032,3034,5, + 218,0,0,3033,3035,5,34,0,0,3034,3033,1,0,0,0,3034,3035,1,0,0,0,3035, + 3038,1,0,0,0,3036,3038,5,222,0,0,3037,3032,1,0,0,0,3037,3036,1,0, + 0,0,3038,3040,1,0,0,0,3039,2907,1,0,0,0,3039,2910,1,0,0,0,3039,2913, + 1,0,0,0,3039,2914,1,0,0,0,3039,2926,1,0,0,0,3039,2929,1,0,0,0,3039, + 2932,1,0,0,0,3039,2935,1,0,0,0,3039,2949,1,0,0,0,3039,2951,1,0,0, + 0,3039,2952,1,0,0,0,3039,2976,1,0,0,0,3039,2989,1,0,0,0,3039,2993, + 1,0,0,0,3039,3017,1,0,0,0,3039,3026,1,0,0,0,3039,3031,1,0,0,0,3040, + 417,1,0,0,0,3041,3042,5,304,0,0,3042,3043,5,332,0,0,3043,3068,3, + 226,113,0,3044,3045,5,363,0,0,3045,3047,5,332,0,0,3046,3048,3,30, + 15,0,3047,3046,1,0,0,0,3047,3048,1,0,0,0,3048,3049,1,0,0,0,3049, + 3068,3,226,113,0,3050,3051,5,274,0,0,3051,3052,5,341,0,0,3052,3068, + 3,480,240,0,3053,3055,5,4,0,0,3054,3056,3,32,16,0,3055,3054,1,0, + 0,0,3055,3056,1,0,0,0,3056,3061,1,0,0,0,3057,3059,3,626,313,0,3058, + 3060,3,424,212,0,3059,3058,1,0,0,0,3059,3060,1,0,0,0,3060,3062,1, + 0,0,0,3061,3057,1,0,0,0,3062,3063,1,0,0,0,3063,3061,1,0,0,0,3063, + 3064,1,0,0,0,3064,3068,1,0,0,0,3065,3068,3,426,213,0,3066,3068,3, + 380,190,0,3067,3041,1,0,0,0,3067,3044,1,0,0,0,3067,3050,1,0,0,0, + 3067,3053,1,0,0,0,3067,3065,1,0,0,0,3067,3066,1,0,0,0,3068,419,1, + 0,0,0,3069,3070,3,472,236,0,3070,3071,5,304,0,0,3071,3072,5,76,0, + 0,3072,3073,3,230,115,0,3073,3085,1,0,0,0,3074,3075,3,472,236,0, + 3075,3076,5,304,0,0,3076,3077,5,236,0,0,3077,3078,3,128,64,0,3078, + 3085,1,0,0,0,3079,3080,3,472,236,0,3080,3081,5,304,0,0,3081,3082, + 7,25,0,0,3082,3083,5,426,0,0,3083,3085,1,0,0,0,3084,3069,1,0,0,0, + 3084,3074,1,0,0,0,3084,3079,1,0,0,0,3085,421,1,0,0,0,3086,3087,3, + 472,236,0,3087,3088,5,304,0,0,3088,3089,5,77,0,0,3089,3090,3,230, + 115,0,3090,3102,1,0,0,0,3091,3092,3,472,236,0,3092,3093,5,304,0, + 0,3093,3094,5,236,0,0,3094,3095,3,128,64,0,3095,3102,1,0,0,0,3096, + 3097,3,472,236,0,3097,3098,5,304,0,0,3098,3099,5,367,0,0,3099,3100, + 5,426,0,0,3100,3102,1,0,0,0,3101,3086,1,0,0,0,3101,3091,1,0,0,0, + 3101,3096,1,0,0,0,3102,423,1,0,0,0,3103,3104,5,189,0,0,3104,3105, + 5,426,0,0,3105,425,1,0,0,0,3106,3108,5,101,0,0,3107,3109,3,30,15, + 0,3108,3107,1,0,0,0,3108,3109,1,0,0,0,3109,3110,1,0,0,0,3110,3111, + 5,237,0,0,3111,3117,3,630,315,0,3112,3113,5,397,0,0,3113,3114,5, + 237,0,0,3114,3116,3,630,315,0,3115,3112,1,0,0,0,3116,3119,1,0,0, + 0,3117,3115,1,0,0,0,3117,3118,1,0,0,0,3118,3122,1,0,0,0,3119,3117, + 1,0,0,0,3120,3121,5,152,0,0,3121,3123,5,254,0,0,3122,3120,1,0,0, + 0,3122,3123,1,0,0,0,3123,3125,1,0,0,0,3124,3126,5,255,0,0,3125,3124, + 1,0,0,0,3125,3126,1,0,0,0,3126,3128,1,0,0,0,3127,3129,3,14,7,0,3128, + 3127,1,0,0,0,3128,3129,1,0,0,0,3129,427,1,0,0,0,3130,3133,3,572, + 286,0,3131,3133,3,294,147,0,3132,3130,1,0,0,0,3132,3131,1,0,0,0, + 3133,3134,1,0,0,0,3134,3135,5,405,0,0,3135,3136,5,426,0,0,3136,429, + 1,0,0,0,3137,3147,5,115,0,0,3138,3139,5,289,0,0,3139,3140,5,399, + 0,0,3140,3148,7,26,0,0,3141,3142,5,118,0,0,3142,3143,5,399,0,0,3143, + 3148,5,426,0,0,3144,3145,5,306,0,0,3145,3146,5,399,0,0,3146,3148, + 5,431,0,0,3147,3138,1,0,0,0,3147,3141,1,0,0,0,3147,3144,1,0,0,0, + 3148,3149,1,0,0,0,3149,3150,5,400,0,0,3150,431,1,0,0,0,3151,3152, + 5,160,0,0,3152,3153,5,426,0,0,3153,3154,5,233,0,0,3154,3155,5,426, + 0,0,3155,3156,5,301,0,0,3156,3161,5,426,0,0,3157,3158,5,159,0,0, + 3158,3159,5,426,0,0,3159,3160,5,232,0,0,3160,3162,5,426,0,0,3161, + 3157,1,0,0,0,3161,3162,1,0,0,0,3162,3165,1,0,0,0,3163,3165,3,638, + 319,0,3164,3151,1,0,0,0,3164,3163,1,0,0,0,3165,433,1,0,0,0,3166, + 3167,5,184,0,0,3167,3176,5,128,0,0,3168,3169,5,184,0,0,3169,3170, + 5,128,0,0,3170,3171,3,638,319,0,3171,3172,5,426,0,0,3172,3176,1, + 0,0,0,3173,3174,5,184,0,0,3174,3176,3,478,239,0,3175,3166,1,0,0, + 0,3175,3168,1,0,0,0,3175,3173,1,0,0,0,3176,435,1,0,0,0,3177,3179, + 5,58,0,0,3178,3180,5,333,0,0,3179,3178,1,0,0,0,3179,3180,1,0,0,0, + 3180,3182,1,0,0,0,3181,3183,5,345,0,0,3182,3181,1,0,0,0,3182,3183, + 1,0,0,0,3183,3185,1,0,0,0,3184,3186,5,123,0,0,3185,3184,1,0,0,0, + 3185,3186,1,0,0,0,3186,3187,1,0,0,0,3187,3189,5,329,0,0,3188,3190, + 3,32,16,0,3189,3188,1,0,0,0,3189,3190,1,0,0,0,3190,3191,1,0,0,0, + 3191,3248,3,480,240,0,3192,3194,3,434,217,0,3193,3195,3,200,100, + 0,3194,3193,1,0,0,0,3194,3195,1,0,0,0,3195,3197,1,0,0,0,3196,3198, + 3,222,111,0,3197,3196,1,0,0,0,3197,3198,1,0,0,0,3198,3200,1,0,0, + 0,3199,3201,3,246,123,0,3200,3199,1,0,0,0,3200,3201,1,0,0,0,3201, + 3203,1,0,0,0,3202,3204,3,424,212,0,3203,3202,1,0,0,0,3203,3204,1, + 0,0,0,3204,3206,1,0,0,0,3205,3207,3,224,112,0,3206,3205,1,0,0,0, + 3206,3207,1,0,0,0,3207,3209,1,0,0,0,3208,3210,3,198,99,0,3209,3208, + 1,0,0,0,3209,3210,1,0,0,0,3210,3249,1,0,0,0,3211,3212,5,399,0,0, + 3212,3213,3,250,125,0,3213,3214,5,400,0,0,3214,3216,1,0,0,0,3215, + 3211,1,0,0,0,3215,3216,1,0,0,0,3216,3218,1,0,0,0,3217,3219,3,196, + 98,0,3218,3217,1,0,0,0,3218,3219,1,0,0,0,3219,3221,1,0,0,0,3220, + 3222,3,200,100,0,3221,3220,1,0,0,0,3221,3222,1,0,0,0,3222,3224,1, + 0,0,0,3223,3225,3,208,104,0,3224,3223,1,0,0,0,3224,3225,1,0,0,0, + 3225,3227,1,0,0,0,3226,3228,3,210,105,0,3227,3226,1,0,0,0,3227,3228, + 1,0,0,0,3228,3230,1,0,0,0,3229,3231,3,222,111,0,3230,3229,1,0,0, + 0,3230,3231,1,0,0,0,3231,3233,1,0,0,0,3232,3234,3,246,123,0,3233, + 3232,1,0,0,0,3233,3234,1,0,0,0,3234,3236,1,0,0,0,3235,3237,3,424, + 212,0,3236,3235,1,0,0,0,3236,3237,1,0,0,0,3237,3239,1,0,0,0,3238, + 3240,3,224,112,0,3239,3238,1,0,0,0,3239,3240,1,0,0,0,3240,3242,1, + 0,0,0,3241,3243,3,198,99,0,3242,3241,1,0,0,0,3242,3243,1,0,0,0,3243, + 3246,1,0,0,0,3244,3245,5,17,0,0,3245,3247,3,380,190,0,3246,3244, + 1,0,0,0,3246,3247,1,0,0,0,3247,3249,1,0,0,0,3248,3192,1,0,0,0,3248, + 3215,1,0,0,0,3249,3313,1,0,0,0,3250,3251,5,58,0,0,3251,3252,5,195, + 0,0,3252,3254,5,329,0,0,3253,3255,3,32,16,0,3254,3253,1,0,0,0,3254, + 3255,1,0,0,0,3255,3256,1,0,0,0,3256,3310,3,480,240,0,3257,3259,3, + 434,217,0,3258,3260,3,222,111,0,3259,3258,1,0,0,0,3259,3260,1,0, + 0,0,3260,3262,1,0,0,0,3261,3263,3,246,123,0,3262,3261,1,0,0,0,3262, + 3263,1,0,0,0,3263,3265,1,0,0,0,3264,3266,3,424,212,0,3265,3264,1, + 0,0,0,3265,3266,1,0,0,0,3266,3268,1,0,0,0,3267,3269,3,224,112,0, + 3268,3267,1,0,0,0,3268,3269,1,0,0,0,3269,3271,1,0,0,0,3270,3272, + 3,198,99,0,3271,3270,1,0,0,0,3271,3272,1,0,0,0,3272,3311,1,0,0,0, + 3273,3274,5,399,0,0,3274,3275,3,250,125,0,3275,3276,5,400,0,0,3276, + 3278,1,0,0,0,3277,3273,1,0,0,0,3277,3278,1,0,0,0,3278,3280,1,0,0, + 0,3279,3281,3,196,98,0,3280,3279,1,0,0,0,3280,3281,1,0,0,0,3281, + 3283,1,0,0,0,3282,3284,3,200,100,0,3283,3282,1,0,0,0,3283,3284,1, + 0,0,0,3284,3286,1,0,0,0,3285,3287,3,208,104,0,3286,3285,1,0,0,0, + 3286,3287,1,0,0,0,3287,3289,1,0,0,0,3288,3290,3,210,105,0,3289,3288, + 1,0,0,0,3289,3290,1,0,0,0,3290,3292,1,0,0,0,3291,3293,3,222,111, + 0,3292,3291,1,0,0,0,3292,3293,1,0,0,0,3293,3295,1,0,0,0,3294,3296, + 3,246,123,0,3295,3294,1,0,0,0,3295,3296,1,0,0,0,3296,3298,1,0,0, + 0,3297,3299,3,424,212,0,3298,3297,1,0,0,0,3298,3299,1,0,0,0,3299, + 3301,1,0,0,0,3300,3302,3,224,112,0,3301,3300,1,0,0,0,3301,3302,1, + 0,0,0,3302,3304,1,0,0,0,3303,3305,3,198,99,0,3304,3303,1,0,0,0,3304, + 3305,1,0,0,0,3305,3308,1,0,0,0,3306,3307,5,17,0,0,3307,3309,3,380, + 190,0,3308,3306,1,0,0,0,3308,3309,1,0,0,0,3309,3311,1,0,0,0,3310, + 3257,1,0,0,0,3310,3277,1,0,0,0,3311,3313,1,0,0,0,3312,3177,1,0,0, + 0,3312,3250,1,0,0,0,3313,437,1,0,0,0,3314,3315,5,58,0,0,3315,3317, + 5,69,0,0,3316,3318,3,32,16,0,3317,3316,1,0,0,0,3317,3318,1,0,0,0, + 3318,3319,1,0,0,0,3319,3322,3,638,319,0,3320,3321,5,352,0,0,3321, + 3323,5,426,0,0,3322,3320,1,0,0,0,3322,3323,1,0,0,0,3323,3326,1,0, + 0,0,3324,3325,5,367,0,0,3325,3327,5,426,0,0,3326,3324,1,0,0,0,3326, + 3327,1,0,0,0,3327,3330,1,0,0,0,3328,3329,5,47,0,0,3329,3331,5,426, + 0,0,3330,3328,1,0,0,0,3330,3331,1,0,0,0,3331,3335,1,0,0,0,3332,3333, + 5,387,0,0,3333,3334,5,77,0,0,3334,3336,3,230,115,0,3335,3332,1,0, + 0,0,3335,3336,1,0,0,0,3336,439,1,0,0,0,3337,3338,5,101,0,0,3338, + 3340,5,69,0,0,3339,3341,3,30,15,0,3340,3339,1,0,0,0,3340,3341,1, + 0,0,0,3341,3342,1,0,0,0,3342,3343,3,638,319,0,3343,441,1,0,0,0,3344, + 3345,3,638,319,0,3345,3346,5,395,0,0,3346,3348,1,0,0,0,3347,3344, + 1,0,0,0,3348,3351,1,0,0,0,3349,3347,1,0,0,0,3349,3350,1,0,0,0,3350, + 3352,1,0,0,0,3351,3349,1,0,0,0,3352,3353,5,415,0,0,3353,443,1,0, + 0,0,3354,3359,3,580,290,0,3355,3356,5,397,0,0,3356,3358,3,580,290, + 0,3357,3355,1,0,0,0,3358,3361,1,0,0,0,3359,3357,1,0,0,0,3359,3360, + 1,0,0,0,3360,445,1,0,0,0,3361,3359,1,0,0,0,3362,3367,3,638,319,0, + 3363,3364,5,397,0,0,3364,3366,3,638,319,0,3365,3363,1,0,0,0,3366, + 3369,1,0,0,0,3367,3365,1,0,0,0,3367,3368,1,0,0,0,3368,447,1,0,0, + 0,3369,3367,1,0,0,0,3370,3371,5,139,0,0,3371,3372,3,450,225,0,3372, + 449,1,0,0,0,3373,3374,5,359,0,0,3374,3377,3,458,229,0,3375,3376, + 5,397,0,0,3376,3378,3,458,229,0,3377,3375,1,0,0,0,3378,3379,1,0, + 0,0,3379,3377,1,0,0,0,3379,3380,1,0,0,0,3380,3383,1,0,0,0,3381,3383, + 3,454,227,0,3382,3373,1,0,0,0,3382,3381,1,0,0,0,3383,451,1,0,0,0, + 3384,3388,3,468,234,0,3385,3387,3,462,231,0,3386,3385,1,0,0,0,3387, + 3390,1,0,0,0,3388,3386,1,0,0,0,3388,3389,1,0,0,0,3389,3417,1,0,0, + 0,3390,3388,1,0,0,0,3391,3395,3,498,249,0,3392,3394,3,462,231,0, + 3393,3392,1,0,0,0,3394,3397,1,0,0,0,3395,3393,1,0,0,0,3395,3396, + 1,0,0,0,3396,3417,1,0,0,0,3397,3395,1,0,0,0,3398,3402,3,486,243, + 0,3399,3401,3,462,231,0,3400,3399,1,0,0,0,3401,3404,1,0,0,0,3402, + 3400,1,0,0,0,3402,3403,1,0,0,0,3403,3417,1,0,0,0,3404,3402,1,0,0, + 0,3405,3409,3,492,246,0,3406,3408,3,462,231,0,3407,3406,1,0,0,0, + 3408,3411,1,0,0,0,3409,3407,1,0,0,0,3409,3410,1,0,0,0,3410,3417, + 1,0,0,0,3411,3409,1,0,0,0,3412,3413,5,399,0,0,3413,3414,3,454,227, + 0,3414,3415,5,400,0,0,3415,3417,1,0,0,0,3416,3384,1,0,0,0,3416,3391, + 1,0,0,0,3416,3398,1,0,0,0,3416,3405,1,0,0,0,3416,3412,1,0,0,0,3417, + 453,1,0,0,0,3418,3429,3,452,226,0,3419,3420,3,460,230,0,3420,3425, + 3,456,228,0,3421,3422,5,224,0,0,3422,3426,3,580,290,0,3423,3424, + 5,370,0,0,3424,3426,3,264,132,0,3425,3421,1,0,0,0,3425,3423,1,0, + 0,0,3425,3426,1,0,0,0,3426,3428,1,0,0,0,3427,3419,1,0,0,0,3428,3431, + 1,0,0,0,3429,3427,1,0,0,0,3429,3430,1,0,0,0,3430,455,1,0,0,0,3431, + 3429,1,0,0,0,3432,3437,3,468,234,0,3433,3437,3,498,249,0,3434,3437, + 3,486,243,0,3435,3437,3,492,246,0,3436,3432,1,0,0,0,3436,3433,1, + 0,0,0,3436,3434,1,0,0,0,3436,3435,1,0,0,0,3437,3441,1,0,0,0,3438, + 3440,3,462,231,0,3439,3438,1,0,0,0,3440,3443,1,0,0,0,3441,3439,1, + 0,0,0,3441,3442,1,0,0,0,3442,457,1,0,0,0,3443,3441,1,0,0,0,3444, + 3446,5,250,0,0,3445,3444,1,0,0,0,3445,3446,1,0,0,0,3446,3447,1,0, + 0,0,3447,3449,3,476,238,0,3448,3450,3,466,233,0,3449,3448,1,0,0, + 0,3449,3450,1,0,0,0,3450,3455,1,0,0,0,3451,3453,5,17,0,0,3452,3451, + 1,0,0,0,3452,3453,1,0,0,0,3453,3454,1,0,0,0,3454,3456,3,638,319, + 0,3455,3452,1,0,0,0,3455,3456,1,0,0,0,3456,3457,1,0,0,0,3457,3458, + 5,399,0,0,3458,3459,3,444,222,0,3459,3460,5,400,0,0,3460,459,1,0, + 0,0,3461,3476,5,397,0,0,3462,3473,5,157,0,0,3463,3473,5,60,0,0,3464, + 3466,7,27,0,0,3465,3467,5,231,0,0,3466,3465,1,0,0,0,3466,3467,1, + 0,0,0,3467,3473,1,0,0,0,3468,3470,5,180,0,0,3469,3471,7,28,0,0,3470, + 3469,1,0,0,0,3470,3471,1,0,0,0,3471,3473,1,0,0,0,3472,3462,1,0,0, + 0,3472,3463,1,0,0,0,3472,3464,1,0,0,0,3472,3468,1,0,0,0,3472,3473, + 1,0,0,0,3473,3474,1,0,0,0,3474,3476,5,171,0,0,3475,3461,1,0,0,0, + 3475,3472,1,0,0,0,3476,461,1,0,0,0,3477,3478,5,178,0,0,3478,3479, + 5,378,0,0,3479,3480,5,231,0,0,3480,3481,3,550,275,0,3481,3491,3, + 464,232,0,3482,3483,5,17,0,0,3483,3488,3,638,319,0,3484,3485,5,397, + 0,0,3485,3487,3,638,319,0,3486,3484,1,0,0,0,3487,3490,1,0,0,0,3488, + 3486,1,0,0,0,3488,3489,1,0,0,0,3489,3492,1,0,0,0,3490,3488,1,0,0, + 0,3491,3482,1,0,0,0,3491,3492,1,0,0,0,3492,3535,1,0,0,0,3493,3495, + 5,397,0,0,3494,3493,1,0,0,0,3494,3495,1,0,0,0,3495,3496,1,0,0,0, + 3496,3532,5,178,0,0,3497,3498,5,378,0,0,3498,3499,3,550,275,0,3499, + 3509,3,464,232,0,3500,3501,5,17,0,0,3501,3506,3,638,319,0,3502,3503, + 5,397,0,0,3503,3505,3,638,319,0,3504,3502,1,0,0,0,3505,3508,1,0, + 0,0,3506,3504,1,0,0,0,3506,3507,1,0,0,0,3507,3510,1,0,0,0,3508,3506, + 1,0,0,0,3509,3500,1,0,0,0,3509,3510,1,0,0,0,3510,3533,1,0,0,0,3511, + 3512,5,329,0,0,3512,3513,5,399,0,0,3513,3514,3,496,248,0,3514,3516, + 5,400,0,0,3515,3517,5,17,0,0,3516,3515,1,0,0,0,3516,3517,1,0,0,0, + 3517,3518,1,0,0,0,3518,3530,3,464,232,0,3519,3520,5,399,0,0,3520, + 3525,3,638,319,0,3521,3522,5,397,0,0,3522,3524,3,638,319,0,3523, + 3521,1,0,0,0,3524,3527,1,0,0,0,3525,3523,1,0,0,0,3525,3526,1,0,0, + 0,3526,3528,1,0,0,0,3527,3525,1,0,0,0,3528,3529,5,400,0,0,3529,3531, + 1,0,0,0,3530,3519,1,0,0,0,3530,3531,1,0,0,0,3531,3533,1,0,0,0,3532, + 3497,1,0,0,0,3532,3511,1,0,0,0,3533,3535,1,0,0,0,3534,3477,1,0,0, + 0,3534,3494,1,0,0,0,3535,463,1,0,0,0,3536,3537,3,638,319,0,3537, + 465,1,0,0,0,3538,3539,5,331,0,0,3539,3540,5,399,0,0,3540,3541,5, + 30,0,0,3541,3542,5,431,0,0,3542,3543,5,230,0,0,3543,3544,5,221,0, + 0,3544,3554,5,431,0,0,3545,3546,5,224,0,0,3546,3551,3,580,290,0, + 3547,3548,5,397,0,0,3548,3550,3,580,290,0,3549,3547,1,0,0,0,3550, + 3553,1,0,0,0,3551,3549,1,0,0,0,3551,3552,1,0,0,0,3552,3555,1,0,0, + 0,3553,3551,1,0,0,0,3554,3545,1,0,0,0,3554,3555,1,0,0,0,3555,3556, + 1,0,0,0,3556,3566,5,400,0,0,3557,3558,5,331,0,0,3558,3562,5,399, + 0,0,3559,3560,5,431,0,0,3560,3563,7,29,0,0,3561,3563,5,430,0,0,3562, + 3559,1,0,0,0,3562,3561,1,0,0,0,3563,3564,1,0,0,0,3564,3566,5,400, + 0,0,3565,3538,1,0,0,0,3565,3557,1,0,0,0,3566,467,1,0,0,0,3567,3569, + 3,476,238,0,3568,3570,3,226,113,0,3569,3568,1,0,0,0,3569,3570,1, + 0,0,0,3570,3572,1,0,0,0,3571,3573,3,466,233,0,3572,3571,1,0,0,0, + 3572,3573,1,0,0,0,3573,3575,1,0,0,0,3574,3576,3,470,235,0,3575,3574, + 1,0,0,0,3575,3576,1,0,0,0,3576,3581,1,0,0,0,3577,3579,5,17,0,0,3578, + 3577,1,0,0,0,3578,3579,1,0,0,0,3579,3580,1,0,0,0,3580,3582,3,638, + 319,0,3581,3578,1,0,0,0,3581,3582,1,0,0,0,3582,469,1,0,0,0,3583, + 3593,5,134,0,0,3584,3585,5,327,0,0,3585,3586,5,17,0,0,3586,3587, + 5,221,0,0,3587,3594,3,580,290,0,3588,3589,5,134,0,0,3589,3590,5, + 328,0,0,3590,3591,5,17,0,0,3591,3592,5,221,0,0,3592,3594,5,431,0, + 0,3593,3584,1,0,0,0,3593,3588,1,0,0,0,3594,471,1,0,0,0,3595,3596, + 3,638,319,0,3596,473,1,0,0,0,3597,3598,3,638,319,0,3598,475,1,0, + 0,0,3599,3602,3,478,239,0,3600,3602,3,482,241,0,3601,3599,1,0,0, + 0,3601,3600,1,0,0,0,3602,477,1,0,0,0,3603,3604,3,638,319,0,3604, + 3605,5,395,0,0,3605,3608,3,638,319,0,3606,3607,5,395,0,0,3607,3609, + 3,638,319,0,3608,3606,1,0,0,0,3608,3609,1,0,0,0,3609,3612,1,0,0, + 0,3610,3612,3,638,319,0,3611,3603,1,0,0,0,3611,3610,1,0,0,0,3612, + 479,1,0,0,0,3613,3614,3,638,319,0,3614,3615,5,395,0,0,3615,3618, + 3,638,319,0,3616,3617,5,395,0,0,3617,3619,3,638,319,0,3618,3616, + 1,0,0,0,3618,3619,1,0,0,0,3619,3622,1,0,0,0,3620,3622,3,638,319, + 0,3621,3613,1,0,0,0,3621,3620,1,0,0,0,3622,481,1,0,0,0,3623,3624, + 3,638,319,0,3624,3625,5,395,0,0,3625,3627,1,0,0,0,3626,3623,1,0, + 0,0,3626,3627,1,0,0,0,3627,3628,1,0,0,0,3628,3629,3,638,319,0,3629, + 483,1,0,0,0,3630,3631,3,638,319,0,3631,3632,5,395,0,0,3632,3634, + 1,0,0,0,3633,3630,1,0,0,0,3633,3634,1,0,0,0,3634,3635,1,0,0,0,3635, + 3636,3,638,319,0,3636,485,1,0,0,0,3637,3638,5,399,0,0,3638,3639, + 3,360,180,0,3639,3641,5,400,0,0,3640,3642,5,17,0,0,3641,3640,1,0, + 0,0,3641,3642,1,0,0,0,3642,3643,1,0,0,0,3643,3644,3,638,319,0,3644, + 487,1,0,0,0,3645,3646,5,237,0,0,3646,3647,5,32,0,0,3647,3649,3,536, + 268,0,3648,3650,3,542,271,0,3649,3648,1,0,0,0,3649,3650,1,0,0,0, + 3650,3659,1,0,0,0,3651,3659,3,542,271,0,3652,3654,3,546,273,0,3653, + 3655,3,548,274,0,3654,3653,1,0,0,0,3654,3655,1,0,0,0,3655,3659,1, + 0,0,0,3656,3659,3,548,274,0,3657,3659,3,544,272,0,3658,3645,1,0, + 0,0,3658,3651,1,0,0,0,3658,3652,1,0,0,0,3658,3656,1,0,0,0,3658,3657, + 1,0,0,0,3659,489,1,0,0,0,3660,3664,3,486,243,0,3661,3664,3,468,234, + 0,3662,3664,3,492,246,0,3663,3660,1,0,0,0,3663,3661,1,0,0,0,3663, + 3662,1,0,0,0,3664,491,1,0,0,0,3665,3666,3,638,319,0,3666,3667,5, + 399,0,0,3667,3668,5,224,0,0,3668,3670,3,490,245,0,3669,3671,3,488, + 244,0,3670,3669,1,0,0,0,3670,3671,1,0,0,0,3671,3687,1,0,0,0,3672, + 3673,5,432,0,0,3673,3674,5,399,0,0,3674,3675,3,580,290,0,3675,3684, + 5,400,0,0,3676,3677,5,397,0,0,3677,3678,5,432,0,0,3678,3679,5,399, + 0,0,3679,3680,3,580,290,0,3680,3681,5,400,0,0,3681,3683,1,0,0,0, + 3682,3676,1,0,0,0,3683,3686,1,0,0,0,3684,3682,1,0,0,0,3684,3685, + 1,0,0,0,3685,3688,1,0,0,0,3686,3684,1,0,0,0,3687,3672,1,0,0,0,3687, + 3688,1,0,0,0,3688,3689,1,0,0,0,3689,3691,5,400,0,0,3690,3692,3,638, + 319,0,3691,3690,1,0,0,0,3691,3692,1,0,0,0,3692,493,1,0,0,0,3693, + 3694,5,384,0,0,3694,3695,3,580,290,0,3695,495,1,0,0,0,3696,3715, + 5,374,0,0,3697,3702,3,538,269,0,3698,3699,5,397,0,0,3699,3701,3, + 538,269,0,3700,3698,1,0,0,0,3701,3704,1,0,0,0,3702,3700,1,0,0,0, + 3702,3703,1,0,0,0,3703,3716,1,0,0,0,3704,3702,1,0,0,0,3705,3706, + 5,399,0,0,3706,3707,3,534,267,0,3707,3712,5,400,0,0,3708,3709,5, + 397,0,0,3709,3711,3,538,269,0,3710,3708,1,0,0,0,3711,3714,1,0,0, + 0,3712,3710,1,0,0,0,3712,3713,1,0,0,0,3713,3716,1,0,0,0,3714,3712, + 1,0,0,0,3715,3697,1,0,0,0,3715,3705,1,0,0,0,3716,497,1,0,0,0,3717, + 3718,5,329,0,0,3718,3719,5,399,0,0,3719,3720,3,496,248,0,3720,3722, + 5,400,0,0,3721,3723,5,17,0,0,3722,3721,1,0,0,0,3722,3723,1,0,0,0, + 3723,3724,1,0,0,0,3724,3734,3,464,232,0,3725,3726,5,399,0,0,3726, + 3731,3,638,319,0,3727,3728,5,397,0,0,3728,3730,3,638,319,0,3729, + 3727,1,0,0,0,3730,3733,1,0,0,0,3731,3729,1,0,0,0,3731,3732,1,0,0, + 0,3732,3735,1,0,0,0,3733,3731,1,0,0,0,3734,3725,1,0,0,0,3734,3735, + 1,0,0,0,3735,3736,1,0,0,0,3736,3737,5,400,0,0,3737,499,1,0,0,0,3738, + 3740,5,299,0,0,3739,3741,5,436,0,0,3740,3739,1,0,0,0,3740,3741,1, + 0,0,0,3741,3755,1,0,0,0,3742,3744,7,21,0,0,3743,3742,1,0,0,0,3743, + 3744,1,0,0,0,3744,3745,1,0,0,0,3745,3750,3,504,252,0,3746,3747,5, + 397,0,0,3747,3749,3,504,252,0,3748,3746,1,0,0,0,3749,3752,1,0,0, + 0,3750,3748,1,0,0,0,3750,3751,1,0,0,0,3751,3756,1,0,0,0,3752,3750, + 1,0,0,0,3753,3754,5,347,0,0,3754,3756,3,502,251,0,3755,3743,1,0, + 0,0,3755,3753,1,0,0,0,3756,3759,1,0,0,0,3757,3759,3,506,253,0,3758, + 3738,1,0,0,0,3758,3757,1,0,0,0,3759,501,1,0,0,0,3760,3761,5,399, + 0,0,3761,3762,3,510,255,0,3762,3763,5,400,0,0,3763,3764,3,212,106, + 0,3764,3765,3,216,108,0,3765,3766,5,370,0,0,3766,3779,5,426,0,0, + 3767,3777,5,17,0,0,3768,3771,5,399,0,0,3769,3772,3,446,223,0,3770, + 3772,3,248,124,0,3771,3769,1,0,0,0,3771,3770,1,0,0,0,3772,3773,1, + 0,0,0,3773,3774,5,400,0,0,3774,3778,1,0,0,0,3775,3778,3,446,223, + 0,3776,3778,3,248,124,0,3777,3768,1,0,0,0,3777,3775,1,0,0,0,3777, + 3776,1,0,0,0,3778,3780,1,0,0,0,3779,3767,1,0,0,0,3779,3780,1,0,0, + 0,3780,3781,1,0,0,0,3781,3782,3,212,106,0,3782,3783,3,214,107,0, + 3783,503,1,0,0,0,3784,3808,3,442,221,0,3785,3788,3,256,128,0,3786, + 3788,3,580,290,0,3787,3785,1,0,0,0,3787,3786,1,0,0,0,3788,3805,1, + 0,0,0,3789,3791,5,17,0,0,3790,3789,1,0,0,0,3790,3791,1,0,0,0,3791, + 3792,1,0,0,0,3792,3806,3,638,319,0,3793,3794,5,17,0,0,3794,3795, + 5,399,0,0,3795,3800,3,638,319,0,3796,3797,5,397,0,0,3797,3799,3, + 638,319,0,3798,3796,1,0,0,0,3799,3802,1,0,0,0,3800,3798,1,0,0,0, + 3800,3801,1,0,0,0,3801,3803,1,0,0,0,3802,3800,1,0,0,0,3803,3804, + 5,400,0,0,3804,3806,1,0,0,0,3805,3790,1,0,0,0,3805,3793,1,0,0,0, + 3805,3806,1,0,0,0,3806,3808,1,0,0,0,3807,3784,1,0,0,0,3807,3787, + 1,0,0,0,3808,505,1,0,0,0,3809,3810,7,30,0,0,3810,3811,3,510,255, + 0,3811,3812,3,212,106,0,3812,3813,3,216,108,0,3813,3814,5,370,0, + 0,3814,3827,5,426,0,0,3815,3825,5,17,0,0,3816,3819,5,399,0,0,3817, + 3820,3,446,223,0,3818,3820,3,248,124,0,3819,3817,1,0,0,0,3819,3818, + 1,0,0,0,3820,3821,1,0,0,0,3821,3822,5,400,0,0,3822,3826,1,0,0,0, + 3823,3826,3,446,223,0,3824,3826,3,248,124,0,3825,3816,1,0,0,0,3825, + 3823,1,0,0,0,3825,3824,1,0,0,0,3826,3828,1,0,0,0,3827,3815,1,0,0, + 0,3827,3828,1,0,0,0,3828,3829,1,0,0,0,3829,3830,3,212,106,0,3830, + 3831,3,214,107,0,3831,507,1,0,0,0,3832,3835,3,442,221,0,3833,3835, + 3,580,290,0,3834,3832,1,0,0,0,3834,3833,1,0,0,0,3835,509,1,0,0,0, + 3836,3841,3,508,254,0,3837,3838,5,397,0,0,3838,3840,3,508,254,0, + 3839,3837,1,0,0,0,3840,3843,1,0,0,0,3841,3839,1,0,0,0,3841,3842, + 1,0,0,0,3842,511,1,0,0,0,3843,3841,1,0,0,0,3844,3845,5,386,0,0,3845, + 3846,3,638,319,0,3846,3847,5,17,0,0,3847,3855,3,514,257,0,3848,3849, + 5,397,0,0,3849,3850,3,638,319,0,3850,3851,5,17,0,0,3851,3852,3,514, + 257,0,3852,3854,1,0,0,0,3853,3848,1,0,0,0,3854,3857,1,0,0,0,3855, + 3853,1,0,0,0,3855,3856,1,0,0,0,3856,513,1,0,0,0,3857,3855,1,0,0, + 0,3858,3871,3,638,319,0,3859,3861,5,399,0,0,3860,3862,3,638,319, + 0,3861,3860,1,0,0,0,3861,3862,1,0,0,0,3862,3864,1,0,0,0,3863,3865, + 3,488,244,0,3864,3863,1,0,0,0,3864,3865,1,0,0,0,3865,3867,1,0,0, + 0,3866,3868,3,516,258,0,3867,3866,1,0,0,0,3867,3868,1,0,0,0,3868, + 3869,1,0,0,0,3869,3871,5,400,0,0,3870,3858,1,0,0,0,3870,3859,1,0, + 0,0,3871,515,1,0,0,0,3872,3886,7,31,0,0,3873,3874,5,354,0,0,3874, + 3880,5,247,0,0,3875,3876,5,62,0,0,3876,3880,5,291,0,0,3877,3878, + 5,431,0,0,3878,3880,5,247,0,0,3879,3873,1,0,0,0,3879,3875,1,0,0, + 0,3879,3877,1,0,0,0,3880,3887,1,0,0,0,3881,3882,5,25,0,0,3882,3883, + 3,518,259,0,3883,3884,5,11,0,0,3884,3885,3,518,259,0,3885,3887,1, + 0,0,0,3886,3879,1,0,0,0,3886,3881,1,0,0,0,3887,517,1,0,0,0,3888, + 3889,7,32,0,0,3889,3893,7,33,0,0,3890,3891,5,62,0,0,3891,3893,5, + 291,0,0,3892,3888,1,0,0,0,3892,3890,1,0,0,0,3893,519,1,0,0,0,3894, + 3895,5,144,0,0,3895,3901,5,32,0,0,3896,3902,3,256,128,0,3897,3902, + 3,522,261,0,3898,3902,3,524,262,0,3899,3900,5,399,0,0,3900,3902, + 5,400,0,0,3901,3896,1,0,0,0,3901,3897,1,0,0,0,3901,3898,1,0,0,0, + 3901,3899,1,0,0,0,3902,521,1,0,0,0,3903,3906,5,290,0,0,3904,3906, + 5,61,0,0,3905,3903,1,0,0,0,3905,3904,1,0,0,0,3906,3907,1,0,0,0,3907, + 3908,5,399,0,0,3908,3913,3,580,290,0,3909,3910,5,397,0,0,3910,3912, + 3,580,290,0,3911,3909,1,0,0,0,3912,3915,1,0,0,0,3913,3911,1,0,0, + 0,3913,3914,1,0,0,0,3914,3916,1,0,0,0,3915,3913,1,0,0,0,3916,3917, + 5,400,0,0,3917,523,1,0,0,0,3918,3923,3,540,270,0,3919,3920,5,387, + 0,0,3920,3924,5,290,0,0,3921,3922,5,387,0,0,3922,3924,5,61,0,0,3923, + 3919,1,0,0,0,3923,3921,1,0,0,0,3923,3924,1,0,0,0,3924,3938,1,0,0, + 0,3925,3926,5,145,0,0,3926,3927,5,305,0,0,3927,3928,5,399,0,0,3928, + 3933,3,526,263,0,3929,3930,5,397,0,0,3930,3932,3,526,263,0,3931, + 3929,1,0,0,0,3932,3935,1,0,0,0,3933,3931,1,0,0,0,3933,3934,1,0,0, + 0,3934,3936,1,0,0,0,3935,3933,1,0,0,0,3936,3937,5,400,0,0,3937,3939, + 1,0,0,0,3938,3925,1,0,0,0,3938,3939,1,0,0,0,3939,525,1,0,0,0,3940, + 3942,5,399,0,0,3941,3943,3,580,290,0,3942,3941,1,0,0,0,3942,3943, + 1,0,0,0,3943,3948,1,0,0,0,3944,3945,5,397,0,0,3945,3947,3,580,290, + 0,3946,3944,1,0,0,0,3947,3950,1,0,0,0,3948,3946,1,0,0,0,3948,3949, + 1,0,0,0,3949,3951,1,0,0,0,3950,3948,1,0,0,0,3951,3954,5,400,0,0, + 3952,3954,3,580,290,0,3953,3940,1,0,0,0,3953,3952,1,0,0,0,3954,527, + 1,0,0,0,3955,3956,5,146,0,0,3956,3957,3,580,290,0,3957,529,1,0,0, + 0,3958,3959,5,256,0,0,3959,3960,3,580,290,0,3960,531,1,0,0,0,3961, + 3964,5,83,0,0,3962,3964,3,580,290,0,3963,3961,1,0,0,0,3963,3962, + 1,0,0,0,3964,533,1,0,0,0,3965,3967,3,580,290,0,3966,3968,5,17,0, + 0,3967,3966,1,0,0,0,3967,3968,1,0,0,0,3968,3970,1,0,0,0,3969,3971, + 3,638,319,0,3970,3969,1,0,0,0,3970,3971,1,0,0,0,3971,3982,1,0,0, + 0,3972,3973,5,397,0,0,3973,3975,3,580,290,0,3974,3976,5,17,0,0,3975, + 3974,1,0,0,0,3975,3976,1,0,0,0,3976,3978,1,0,0,0,3977,3979,3,638, + 319,0,3978,3977,1,0,0,0,3978,3979,1,0,0,0,3979,3981,1,0,0,0,3980, + 3972,1,0,0,0,3981,3984,1,0,0,0,3982,3980,1,0,0,0,3982,3983,1,0,0, + 0,3983,535,1,0,0,0,3984,3982,1,0,0,0,3985,3988,3,538,269,0,3986, + 3988,3,540,270,0,3987,3985,1,0,0,0,3987,3986,1,0,0,0,3988,537,1, + 0,0,0,3989,3990,5,399,0,0,3990,3991,3,540,270,0,3991,3992,5,400, + 0,0,3992,539,1,0,0,0,3993,4000,3,532,266,0,3994,3995,5,397,0,0,3995, + 3997,3,532,266,0,3996,3994,1,0,0,0,3997,3998,1,0,0,0,3998,3996,1, + 0,0,0,3998,3999,1,0,0,0,3999,4001,1,0,0,0,4000,3996,1,0,0,0,4000, + 4001,1,0,0,0,4001,541,1,0,0,0,4002,4003,5,229,0,0,4003,4004,5,32, + 0,0,4004,4009,3,308,154,0,4005,4006,5,397,0,0,4006,4008,3,308,154, + 0,4007,4005,1,0,0,0,4008,4011,1,0,0,0,4009,4007,1,0,0,0,4009,4010, + 1,0,0,0,4010,543,1,0,0,0,4011,4009,1,0,0,0,4012,4013,5,41,0,0,4013, + 4014,5,32,0,0,4014,4015,3,536,268,0,4015,545,1,0,0,0,4016,4017,5, + 97,0,0,4017,4018,5,32,0,0,4018,4019,3,536,268,0,4019,547,1,0,0,0, + 4020,4021,5,314,0,0,4021,4041,5,32,0,0,4022,4023,5,399,0,0,4023, + 4028,3,308,154,0,4024,4025,5,397,0,0,4025,4027,3,308,154,0,4026, + 4024,1,0,0,0,4027,4030,1,0,0,0,4028,4026,1,0,0,0,4028,4029,1,0,0, + 0,4029,4031,1,0,0,0,4030,4028,1,0,0,0,4031,4032,5,400,0,0,4032,4042, + 1,0,0,0,4033,4038,3,308,154,0,4034,4035,5,397,0,0,4035,4037,3,308, + 154,0,4036,4034,1,0,0,0,4037,4040,1,0,0,0,4038,4036,1,0,0,0,4038, + 4039,1,0,0,0,4039,4042,1,0,0,0,4040,4038,1,0,0,0,4041,4022,1,0,0, + 0,4041,4033,1,0,0,0,4042,549,1,0,0,0,4043,4044,5,349,0,0,4044,4048, + 5,399,0,0,4045,4049,5,179,0,0,4046,4049,5,343,0,0,4047,4049,5,29, + 0,0,4048,4045,1,0,0,0,4048,4046,1,0,0,0,4048,4047,1,0,0,0,4048,4049, + 1,0,0,0,4049,4051,1,0,0,0,4050,4052,3,508,254,0,4051,4050,1,0,0, + 0,4051,4052,1,0,0,0,4052,4053,1,0,0,0,4053,4054,5,139,0,0,4054,4055, + 3,508,254,0,4055,4056,5,400,0,0,4056,4097,1,0,0,0,4057,4058,3,558, + 279,0,4058,4073,5,399,0,0,4059,4074,5,415,0,0,4060,4062,7,21,0,0, + 4061,4060,1,0,0,0,4061,4062,1,0,0,0,4062,4071,1,0,0,0,4063,4068, + 3,508,254,0,4064,4065,5,397,0,0,4065,4067,3,508,254,0,4066,4064, + 1,0,0,0,4067,4070,1,0,0,0,4068,4066,1,0,0,0,4068,4069,1,0,0,0,4069, + 4072,1,0,0,0,4070,4068,1,0,0,0,4071,4063,1,0,0,0,4071,4072,1,0,0, + 0,4072,4074,1,0,0,0,4073,4059,1,0,0,0,4073,4061,1,0,0,0,4074,4094, + 1,0,0,0,4075,4076,5,400,0,0,4076,4077,5,388,0,0,4077,4078,5,144, + 0,0,4078,4079,5,399,0,0,4079,4080,3,542,271,0,4080,4081,5,400,0, + 0,4081,4095,1,0,0,0,4082,4084,5,400,0,0,4083,4085,3,552,276,0,4084, + 4083,1,0,0,0,4084,4085,1,0,0,0,4085,4086,1,0,0,0,4086,4087,5,234, + 0,0,4087,4095,3,514,257,0,4088,4089,3,552,276,0,4089,4090,5,400, + 0,0,4090,4091,5,234,0,0,4091,4092,3,514,257,0,4092,4095,1,0,0,0, + 4093,4095,5,400,0,0,4094,4075,1,0,0,0,4094,4082,1,0,0,0,4094,4088, + 1,0,0,0,4094,4093,1,0,0,0,4095,4097,1,0,0,0,4096,4043,1,0,0,0,4096, + 4057,1,0,0,0,4097,551,1,0,0,0,4098,4099,7,34,0,0,4099,4100,5,220, + 0,0,4100,553,1,0,0,0,4101,4102,3,640,320,0,4102,555,1,0,0,0,4103, + 4106,3,640,320,0,4104,4106,5,426,0,0,4105,4103,1,0,0,0,4105,4104, + 1,0,0,0,4106,557,1,0,0,0,4107,4111,3,640,320,0,4108,4111,3,646,323, + 0,4109,4111,3,636,318,0,4110,4107,1,0,0,0,4110,4108,1,0,0,0,4110, + 4109,1,0,0,0,4111,559,1,0,0,0,4112,4113,5,36,0,0,4113,4114,5,399, + 0,0,4114,4115,3,580,290,0,4115,4116,5,17,0,0,4116,4119,3,348,174, + 0,4117,4118,5,137,0,0,4118,4120,5,426,0,0,4119,4117,1,0,0,0,4119, + 4120,1,0,0,0,4120,4121,1,0,0,0,4121,4122,5,400,0,0,4122,561,1,0, + 0,0,4123,4124,5,35,0,0,4124,4130,3,580,290,0,4125,4126,5,383,0,0, + 4126,4127,3,580,290,0,4127,4128,5,335,0,0,4128,4129,3,580,290,0, + 4129,4131,1,0,0,0,4130,4125,1,0,0,0,4131,4132,1,0,0,0,4132,4130, + 1,0,0,0,4132,4133,1,0,0,0,4133,4136,1,0,0,0,4134,4135,5,105,0,0, + 4135,4137,3,580,290,0,4136,4134,1,0,0,0,4136,4137,1,0,0,0,4137,4138, + 1,0,0,0,4138,4139,5,108,0,0,4139,563,1,0,0,0,4140,4146,5,35,0,0, + 4141,4142,5,383,0,0,4142,4143,3,580,290,0,4143,4144,5,335,0,0,4144, + 4145,3,580,290,0,4145,4147,1,0,0,0,4146,4141,1,0,0,0,4147,4148,1, + 0,0,0,4148,4146,1,0,0,0,4148,4149,1,0,0,0,4149,4152,1,0,0,0,4150, + 4151,5,105,0,0,4151,4153,3,580,290,0,4152,4150,1,0,0,0,4152,4153, + 1,0,0,0,4153,4154,1,0,0,0,4154,4155,5,108,0,0,4155,565,1,0,0,0,4156, + 4157,5,132,0,0,4157,4158,5,399,0,0,4158,4161,3,580,290,0,4159,4160, + 5,341,0,0,4160,4162,3,570,285,0,4161,4159,1,0,0,0,4161,4162,1,0, + 0,0,4162,4163,1,0,0,0,4163,4164,5,400,0,0,4164,567,1,0,0,0,4165, + 4166,5,124,0,0,4166,4167,5,399,0,0,4167,4168,3,570,285,0,4168,4169, + 5,139,0,0,4169,4170,3,580,290,0,4170,4171,5,400,0,0,4171,569,1,0, + 0,0,4172,4181,3,666,333,0,4173,4181,5,257,0,0,4174,4181,3,668,334, + 0,4175,4181,3,670,335,0,4176,4181,3,672,336,0,4177,4181,3,674,337, + 0,4178,4181,3,676,338,0,4179,4181,3,678,339,0,4180,4172,1,0,0,0, + 4180,4173,1,0,0,0,4180,4174,1,0,0,0,4180,4175,1,0,0,0,4180,4176, + 1,0,0,0,4180,4177,1,0,0,0,4180,4178,1,0,0,0,4180,4179,1,0,0,0,4181, + 571,1,0,0,0,4182,4183,3,574,287,0,4183,4184,3,578,289,0,4184,4211, + 1,0,0,0,4185,4211,5,431,0,0,4186,4187,5,71,0,0,4187,4211,5,426,0, + 0,4188,4211,5,63,0,0,4189,4190,5,337,0,0,4190,4211,5,426,0,0,4191, + 4211,5,64,0,0,4192,4193,5,338,0,0,4193,4211,5,426,0,0,4194,4198, + 5,426,0,0,4195,4197,5,426,0,0,4196,4195,1,0,0,0,4197,4200,1,0,0, + 0,4198,4196,1,0,0,0,4198,4199,1,0,0,0,4199,4211,1,0,0,0,4200,4198, + 1,0,0,0,4201,4211,5,428,0,0,4202,4211,5,429,0,0,4203,4204,5,433, + 0,0,4204,4211,5,427,0,0,4205,4211,5,350,0,0,4206,4211,5,125,0,0, + 4207,4211,5,219,0,0,4208,4211,5,424,0,0,4209,4211,5,432,0,0,4210, + 4182,1,0,0,0,4210,4185,1,0,0,0,4210,4186,1,0,0,0,4210,4188,1,0,0, + 0,4210,4189,1,0,0,0,4210,4191,1,0,0,0,4210,4192,1,0,0,0,4210,4194, + 1,0,0,0,4210,4201,1,0,0,0,4210,4202,1,0,0,0,4210,4203,1,0,0,0,4210, + 4205,1,0,0,0,4210,4206,1,0,0,0,4210,4207,1,0,0,0,4210,4208,1,0,0, + 0,4210,4209,1,0,0,0,4211,573,1,0,0,0,4212,4213,7,26,0,0,4213,575, + 1,0,0,0,4214,4215,5,399,0,0,4215,4216,3,574,287,0,4216,4217,5,400, + 0,0,4217,4218,3,578,289,0,4218,4230,1,0,0,0,4219,4225,5,165,0,0, + 4220,4226,3,574,287,0,4221,4222,5,399,0,0,4222,4223,3,580,290,0, + 4223,4224,5,400,0,0,4224,4226,1,0,0,0,4225,4220,1,0,0,0,4225,4221, + 1,0,0,0,4226,4227,1,0,0,0,4227,4228,3,578,289,0,4228,4230,1,0,0, + 0,4229,4214,1,0,0,0,4229,4219,1,0,0,0,4230,577,1,0,0,0,4231,4232, + 3,666,333,0,4232,4233,5,341,0,0,4233,4234,3,668,334,0,4234,4246, + 1,0,0,0,4235,4236,3,672,336,0,4236,4237,5,341,0,0,4237,4238,3,678, + 339,0,4238,4246,1,0,0,0,4239,4246,3,666,333,0,4240,4246,3,668,334, + 0,4241,4246,3,672,336,0,4242,4246,3,674,337,0,4243,4246,3,676,338, + 0,4244,4246,3,678,339,0,4245,4231,1,0,0,0,4245,4235,1,0,0,0,4245, + 4239,1,0,0,0,4245,4240,1,0,0,0,4245,4241,1,0,0,0,4245,4242,1,0,0, + 0,4245,4243,1,0,0,0,4245,4244,1,0,0,0,4246,579,1,0,0,0,4247,4252, + 3,622,311,0,4248,4249,5,228,0,0,4249,4251,3,622,311,0,4250,4248, + 1,0,0,0,4251,4254,1,0,0,0,4252,4250,1,0,0,0,4252,4253,1,0,0,0,4253, + 581,1,0,0,0,4254,4252,1,0,0,0,4255,4267,3,572,286,0,4256,4267,3, + 576,288,0,4257,4267,3,560,280,0,4258,4267,3,568,284,0,4259,4267, + 3,566,283,0,4260,4267,3,562,281,0,4261,4267,3,564,282,0,4262,4267, + 3,600,300,0,4263,4267,3,550,275,0,4264,4267,3,538,269,0,4265,4267, + 3,638,319,0,4266,4255,1,0,0,0,4266,4256,1,0,0,0,4266,4257,1,0,0, + 0,4266,4258,1,0,0,0,4266,4259,1,0,0,0,4266,4260,1,0,0,0,4266,4261, + 1,0,0,0,4266,4262,1,0,0,0,4266,4263,1,0,0,0,4266,4264,1,0,0,0,4266, + 4265,1,0,0,0,4267,583,1,0,0,0,4268,4270,7,35,0,0,4269,4268,1,0,0, + 0,4270,4273,1,0,0,0,4271,4269,1,0,0,0,4271,4272,1,0,0,0,4272,4274, + 1,0,0,0,4273,4271,1,0,0,0,4274,4283,3,582,291,0,4275,4276,5,401, + 0,0,4276,4277,3,580,290,0,4277,4278,5,402,0,0,4278,4282,1,0,0,0, + 4279,4280,5,395,0,0,4280,4282,3,638,319,0,4281,4275,1,0,0,0,4281, + 4279,1,0,0,0,4282,4285,1,0,0,0,4283,4281,1,0,0,0,4283,4284,1,0,0, + 0,4284,585,1,0,0,0,4285,4283,1,0,0,0,4286,4291,3,584,292,0,4287, + 4288,5,423,0,0,4288,4290,3,584,292,0,4289,4287,1,0,0,0,4290,4293, + 1,0,0,0,4291,4289,1,0,0,0,4291,4292,1,0,0,0,4292,587,1,0,0,0,4293, + 4291,1,0,0,0,4294,4299,3,586,293,0,4295,4296,7,36,0,0,4296,4298, + 3,586,293,0,4297,4295,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1,0,0, + 0,4299,4300,1,0,0,0,4300,589,1,0,0,0,4301,4299,1,0,0,0,4302,4307, + 3,588,294,0,4303,4304,7,37,0,0,4304,4306,3,588,294,0,4305,4303,1, + 0,0,0,4306,4309,1,0,0,0,4307,4305,1,0,0,0,4307,4308,1,0,0,0,4308, + 591,1,0,0,0,4309,4307,1,0,0,0,4310,4315,3,590,295,0,4311,4312,5, + 422,0,0,4312,4314,3,590,295,0,4313,4311,1,0,0,0,4314,4317,1,0,0, + 0,4315,4313,1,0,0,0,4315,4316,1,0,0,0,4316,593,1,0,0,0,4317,4315, + 1,0,0,0,4318,4323,3,592,296,0,4319,4320,5,419,0,0,4320,4322,3,592, + 296,0,4321,4319,1,0,0,0,4322,4325,1,0,0,0,4323,4321,1,0,0,0,4323, + 4324,1,0,0,0,4324,595,1,0,0,0,4325,4323,1,0,0,0,4326,4331,3,594, + 297,0,4327,4328,5,421,0,0,4328,4330,3,594,297,0,4329,4327,1,0,0, + 0,4330,4333,1,0,0,0,4331,4329,1,0,0,0,4331,4332,1,0,0,0,4332,597, + 1,0,0,0,4333,4331,1,0,0,0,4334,4335,7,38,0,0,4335,599,1,0,0,0,4336, + 4337,5,399,0,0,4337,4338,3,376,188,0,4338,4339,5,400,0,0,4339,601, + 1,0,0,0,4340,4342,3,596,298,0,4341,4343,3,604,302,0,4342,4341,1, + 0,0,0,4342,4343,1,0,0,0,4343,4347,1,0,0,0,4344,4345,5,117,0,0,4345, + 4347,3,600,300,0,4346,4340,1,0,0,0,4346,4344,1,0,0,0,4347,603,1, + 0,0,0,4348,4349,3,598,299,0,4349,4350,3,596,298,0,4350,4355,1,0, + 0,0,4351,4355,3,606,303,0,4352,4353,5,216,0,0,4353,4355,3,610,305, + 0,4354,4348,1,0,0,0,4354,4351,1,0,0,0,4354,4352,1,0,0,0,4355,605, + 1,0,0,0,4356,4357,5,154,0,0,4357,4371,3,608,304,0,4358,4359,5,25, + 0,0,4359,4360,3,596,298,0,4360,4361,5,11,0,0,4361,4362,3,596,298, + 0,4362,4371,1,0,0,0,4363,4364,5,184,0,0,4364,4365,7,39,0,0,4365, + 4371,3,538,269,0,4366,4367,3,634,317,0,4367,4368,7,40,0,0,4368,4369, + 3,600,300,0,4369,4371,1,0,0,0,4370,4356,1,0,0,0,4370,4358,1,0,0, + 0,4370,4363,1,0,0,0,4370,4366,1,0,0,0,4371,607,1,0,0,0,4372,4375, + 3,600,300,0,4373,4375,3,538,269,0,4374,4372,1,0,0,0,4374,4373,1, + 0,0,0,4375,609,1,0,0,0,4376,4377,7,41,0,0,4377,4380,3,596,298,0, + 4378,4380,3,606,303,0,4379,4376,1,0,0,0,4379,4378,1,0,0,0,4380,611, + 1,0,0,0,4381,4382,5,167,0,0,4382,4383,5,96,0,0,4383,4384,5,139,0, + 0,4384,613,1,0,0,0,4385,4393,5,405,0,0,4386,4393,5,406,0,0,4387, + 4393,5,407,0,0,4388,4389,5,167,0,0,4389,4390,5,216,0,0,4390,4391, + 5,96,0,0,4391,4393,5,139,0,0,4392,4385,1,0,0,0,4392,4386,1,0,0,0, + 4392,4387,1,0,0,0,4392,4388,1,0,0,0,4393,615,1,0,0,0,4394,4403,3, + 602,301,0,4395,4396,3,614,307,0,4396,4397,3,602,301,0,4397,4402, + 1,0,0,0,4398,4399,3,612,306,0,4399,4400,3,602,301,0,4400,4402,1, + 0,0,0,4401,4395,1,0,0,0,4401,4398,1,0,0,0,4402,4405,1,0,0,0,4403, + 4401,1,0,0,0,4403,4404,1,0,0,0,4404,617,1,0,0,0,4405,4403,1,0,0, + 0,4406,4413,5,219,0,0,4407,4413,5,350,0,0,4408,4413,5,125,0,0,4409, + 4413,5,360,0,0,4410,4411,5,216,0,0,4411,4413,7,42,0,0,4412,4406, + 1,0,0,0,4412,4407,1,0,0,0,4412,4408,1,0,0,0,4412,4409,1,0,0,0,4412, + 4410,1,0,0,0,4413,619,1,0,0,0,4414,4416,5,216,0,0,4415,4414,1,0, + 0,0,4416,4419,1,0,0,0,4417,4415,1,0,0,0,4417,4418,1,0,0,0,4418,4420, + 1,0,0,0,4419,4417,1,0,0,0,4420,4423,3,616,308,0,4421,4422,5,167, + 0,0,4422,4424,3,618,309,0,4423,4421,1,0,0,0,4423,4424,1,0,0,0,4424, + 621,1,0,0,0,4425,4430,3,620,310,0,4426,4427,5,11,0,0,4427,4429,3, + 620,310,0,4428,4426,1,0,0,0,4429,4432,1,0,0,0,4430,4428,1,0,0,0, + 4430,4431,1,0,0,0,4431,623,1,0,0,0,4432,4430,1,0,0,0,4433,4435,3, + 478,239,0,4434,4436,3,626,313,0,4435,4434,1,0,0,0,4435,4436,1,0, + 0,0,4436,625,1,0,0,0,4437,4438,5,237,0,0,4438,4439,5,399,0,0,4439, + 4444,3,628,314,0,4440,4441,5,397,0,0,4441,4443,3,628,314,0,4442, + 4440,1,0,0,0,4443,4446,1,0,0,0,4444,4442,1,0,0,0,4444,4445,1,0,0, + 0,4445,4447,1,0,0,0,4446,4444,1,0,0,0,4447,4448,5,400,0,0,4448,627, + 1,0,0,0,4449,4452,3,638,319,0,4450,4451,5,405,0,0,4451,4453,3,572, + 286,0,4452,4450,1,0,0,0,4452,4453,1,0,0,0,4453,629,1,0,0,0,4454, + 4455,5,399,0,0,4455,4460,3,632,316,0,4456,4457,5,397,0,0,4457,4459, + 3,632,316,0,4458,4456,1,0,0,0,4459,4462,1,0,0,0,4460,4458,1,0,0, + 0,4460,4461,1,0,0,0,4461,4463,1,0,0,0,4462,4460,1,0,0,0,4463,4464, + 5,400,0,0,4464,631,1,0,0,0,4465,4468,3,638,319,0,4466,4469,5,184, + 0,0,4467,4469,3,634,317,0,4468,4466,1,0,0,0,4468,4467,1,0,0,0,4469, + 4470,1,0,0,0,4470,4471,3,572,286,0,4471,633,1,0,0,0,4472,4473,7, + 43,0,0,4473,635,1,0,0,0,4474,4475,7,44,0,0,4475,637,1,0,0,0,4476, + 4479,5,432,0,0,4477,4479,3,644,322,0,4478,4476,1,0,0,0,4478,4477, + 1,0,0,0,4479,639,1,0,0,0,4480,4483,3,638,319,0,4481,4482,5,395,0, + 0,4482,4484,3,638,319,0,4483,4481,1,0,0,0,4483,4484,1,0,0,0,4484, + 641,1,0,0,0,4485,4486,3,638,319,0,4486,643,1,0,0,0,4487,4488,7,45, + 0,0,4488,645,1,0,0,0,4489,4490,7,46,0,0,4490,647,1,0,0,0,4491,4542, + 3,638,319,0,4492,4542,5,171,0,0,4493,4542,5,237,0,0,4494,4542,5, + 198,0,0,4495,4542,5,268,0,0,4496,4542,5,369,0,0,4497,4542,5,241, + 0,0,4498,4542,5,165,0,0,4499,4542,5,292,0,0,4500,4542,5,356,0,0, + 4501,4542,5,144,0,0,4502,4542,5,203,0,0,4503,4542,5,219,0,0,4504, + 4542,5,126,0,0,4505,4542,5,188,0,0,4506,4542,5,101,0,0,4507,4542, + 5,329,0,0,4508,4542,5,224,0,0,4509,4542,5,291,0,0,4510,4542,5,145, + 0,0,4511,4542,5,304,0,0,4512,4542,5,135,0,0,4513,4542,5,318,0,0, + 4514,4542,5,161,0,0,4515,4542,5,54,0,0,4516,4542,5,166,0,0,4517, + 4542,5,358,0,0,4518,4542,5,45,0,0,4519,4542,5,347,0,0,4520,4542, + 5,96,0,0,4521,4542,5,154,0,0,4522,4542,5,269,0,0,4523,4542,5,337, + 0,0,4524,4542,5,225,0,0,4525,4542,5,108,0,0,4526,4542,5,141,0,0, + 4527,4542,5,365,0,0,4528,4542,5,21,0,0,4529,4542,5,78,0,0,4530,4542, + 5,374,0,0,4531,4542,5,336,0,0,4532,4542,5,167,0,0,4533,4542,5,134, + 0,0,4534,4542,5,216,0,0,4535,4542,5,27,0,0,4536,4542,5,370,0,0,4537, + 4542,5,263,0,0,4538,4542,5,25,0,0,4539,4542,5,62,0,0,4540,4542,5, + 17,0,0,4541,4491,1,0,0,0,4541,4492,1,0,0,0,4541,4493,1,0,0,0,4541, + 4494,1,0,0,0,4541,4495,1,0,0,0,4541,4496,1,0,0,0,4541,4497,1,0,0, + 0,4541,4498,1,0,0,0,4541,4499,1,0,0,0,4541,4500,1,0,0,0,4541,4501, + 1,0,0,0,4541,4502,1,0,0,0,4541,4503,1,0,0,0,4541,4504,1,0,0,0,4541, + 4505,1,0,0,0,4541,4506,1,0,0,0,4541,4507,1,0,0,0,4541,4508,1,0,0, + 0,4541,4509,1,0,0,0,4541,4510,1,0,0,0,4541,4511,1,0,0,0,4541,4512, + 1,0,0,0,4541,4513,1,0,0,0,4541,4514,1,0,0,0,4541,4515,1,0,0,0,4541, + 4516,1,0,0,0,4541,4517,1,0,0,0,4541,4518,1,0,0,0,4541,4519,1,0,0, + 0,4541,4520,1,0,0,0,4541,4521,1,0,0,0,4541,4522,1,0,0,0,4541,4523, + 1,0,0,0,4541,4524,1,0,0,0,4541,4525,1,0,0,0,4541,4526,1,0,0,0,4541, + 4527,1,0,0,0,4541,4528,1,0,0,0,4541,4529,1,0,0,0,4541,4530,1,0,0, + 0,4541,4531,1,0,0,0,4541,4532,1,0,0,0,4541,4533,1,0,0,0,4541,4534, + 1,0,0,0,4541,4535,1,0,0,0,4541,4536,1,0,0,0,4541,4537,1,0,0,0,4541, + 4538,1,0,0,0,4541,4539,1,0,0,0,4541,4540,1,0,0,0,4542,649,1,0,0, + 0,4543,4544,5,58,0,0,4544,4545,5,280,0,0,4545,4547,5,243,0,0,4546, + 4548,3,32,16,0,4547,4546,1,0,0,0,4547,4548,1,0,0,0,4548,4558,1,0, + 0,0,4549,4550,3,638,319,0,4550,4551,5,184,0,0,4551,4552,3,638,319, + 0,4552,4559,1,0,0,0,4553,4556,3,638,319,0,4554,4555,5,387,0,0,4555, + 4557,3,656,328,0,4556,4554,1,0,0,0,4556,4557,1,0,0,0,4557,4559,1, + 0,0,0,4558,4549,1,0,0,0,4558,4553,1,0,0,0,4559,4709,1,0,0,0,4560, + 4561,5,9,0,0,4561,4562,5,280,0,0,4562,4563,5,243,0,0,4563,4588,3, + 638,319,0,4564,4589,5,373,0,0,4565,4589,3,664,332,0,4566,4567,5, + 304,0,0,4567,4589,3,656,328,0,4568,4569,5,363,0,0,4569,4574,3,658, + 329,0,4570,4571,5,397,0,0,4571,4573,3,658,329,0,4572,4570,1,0,0, + 0,4573,4576,1,0,0,0,4574,4572,1,0,0,0,4574,4575,1,0,0,0,4575,4589, + 1,0,0,0,4576,4574,1,0,0,0,4577,4578,5,274,0,0,4578,4579,5,341,0, + 0,4579,4589,3,638,319,0,4580,4582,3,660,330,0,4581,4583,3,662,331, + 0,4582,4581,1,0,0,0,4582,4583,1,0,0,0,4583,4589,1,0,0,0,4584,4586, + 3,662,331,0,4585,4587,3,660,330,0,4586,4585,1,0,0,0,4586,4587,1, + 0,0,0,4587,4589,1,0,0,0,4588,4564,1,0,0,0,4588,4565,1,0,0,0,4588, + 4566,1,0,0,0,4588,4568,1,0,0,0,4588,4577,1,0,0,0,4588,4580,1,0,0, + 0,4588,4584,1,0,0,0,4589,4709,1,0,0,0,4590,4591,5,101,0,0,4591,4592, + 5,280,0,0,4592,4594,5,243,0,0,4593,4595,3,30,15,0,4594,4593,1,0, + 0,0,4594,4595,1,0,0,0,4595,4596,1,0,0,0,4596,4709,3,638,319,0,4597, + 4600,3,662,331,0,4598,4600,3,664,332,0,4599,4597,1,0,0,0,4599,4598, + 1,0,0,0,4600,4601,1,0,0,0,4601,4602,5,390,0,0,4602,4603,5,197,0, + 0,4603,4709,1,0,0,0,4604,4616,5,278,0,0,4605,4606,5,3,0,0,4606,4607, + 5,280,0,0,4607,4608,5,243,0,0,4608,4609,5,387,0,0,4609,4617,3,638, + 319,0,4610,4611,5,280,0,0,4611,4612,5,243,0,0,4612,4613,3,638,319, + 0,4613,4614,5,387,0,0,4614,4615,3,638,319,0,4615,4617,1,0,0,0,4616, + 4605,1,0,0,0,4616,4610,1,0,0,0,4617,4709,1,0,0,0,4618,4619,5,58, + 0,0,4619,4620,5,348,0,0,4620,4621,3,638,319,0,4621,4622,5,395,0, + 0,4622,4623,3,638,319,0,4623,4624,5,383,0,0,4624,4625,3,684,342, + 0,4625,4626,5,99,0,0,4626,4627,3,686,343,0,4627,4709,1,0,0,0,4628, + 4629,5,9,0,0,4629,4630,5,348,0,0,4630,4631,3,638,319,0,4631,4632, + 5,395,0,0,4632,4649,3,638,319,0,4633,4634,5,383,0,0,4634,4635,3, + 684,342,0,4635,4636,5,99,0,0,4636,4637,3,686,343,0,4637,4650,1,0, + 0,0,4638,4639,5,4,0,0,4639,4643,5,341,0,0,4640,4641,5,101,0,0,4641, + 4643,5,139,0,0,4642,4638,1,0,0,0,4642,4640,1,0,0,0,4643,4647,1,0, + 0,0,4644,4645,5,246,0,0,4645,4648,3,682,341,0,4646,4648,5,362,0, + 0,4647,4644,1,0,0,0,4647,4646,1,0,0,0,4648,4650,1,0,0,0,4649,4633, + 1,0,0,0,4649,4642,1,0,0,0,4650,4709,1,0,0,0,4651,4652,5,101,0,0, + 4652,4653,5,348,0,0,4653,4654,3,638,319,0,4654,4655,5,395,0,0,4655, + 4656,3,638,319,0,4656,4709,1,0,0,0,4657,4658,5,58,0,0,4658,4659, + 5,246,0,0,4659,4660,3,638,319,0,4660,4661,5,395,0,0,4661,4662,3, + 682,341,0,4662,4663,5,387,0,0,4663,4664,3,690,345,0,4664,4709,1, + 0,0,0,4665,4666,5,9,0,0,4666,4667,5,246,0,0,4667,4668,3,638,319, + 0,4668,4669,5,395,0,0,4669,4677,3,682,341,0,4670,4671,5,304,0,0, + 4671,4678,3,690,345,0,4672,4673,5,363,0,0,4673,4678,5,294,0,0,4674, + 4675,7,47,0,0,4675,4676,5,348,0,0,4676,4678,3,638,319,0,4677,4670, + 1,0,0,0,4677,4672,1,0,0,0,4677,4674,1,0,0,0,4678,4709,1,0,0,0,4679, + 4680,5,101,0,0,4680,4681,5,246,0,0,4681,4682,3,638,319,0,4682,4683, + 5,395,0,0,4683,4684,3,682,341,0,4684,4709,1,0,0,0,4685,4686,7,48, + 0,0,4686,4687,3,652,326,0,4687,4688,5,200,0,0,4688,4689,5,426,0, + 0,4689,4690,5,154,0,0,4690,4694,3,638,319,0,4691,4692,5,341,0,0, + 4692,4695,3,682,341,0,4693,4695,5,362,0,0,4694,4691,1,0,0,0,4694, + 4693,1,0,0,0,4695,4699,1,0,0,0,4696,4697,5,387,0,0,4697,4698,5,229, + 0,0,4698,4700,5,431,0,0,4699,4696,1,0,0,0,4699,4700,1,0,0,0,4700, + 4709,1,0,0,0,4701,4702,5,101,0,0,4702,4703,3,652,326,0,4703,4704, + 5,200,0,0,4704,4705,5,426,0,0,4705,4706,5,154,0,0,4706,4707,3,638, + 319,0,4707,4709,1,0,0,0,4708,4543,1,0,0,0,4708,4560,1,0,0,0,4708, + 4590,1,0,0,0,4708,4599,1,0,0,0,4708,4604,1,0,0,0,4708,4618,1,0,0, + 0,4708,4628,1,0,0,0,4708,4651,1,0,0,0,4708,4657,1,0,0,0,4708,4665, + 1,0,0,0,4708,4679,1,0,0,0,4708,4685,1,0,0,0,4708,4701,1,0,0,0,4709, + 651,1,0,0,0,4710,4711,7,49,0,0,4711,653,1,0,0,0,4712,4713,5,259, + 0,0,4713,4714,5,405,0,0,4714,4720,5,431,0,0,4715,4716,5,83,0,0,4716, + 4717,5,246,0,0,4717,4718,5,405,0,0,4718,4720,3,682,341,0,4719,4712, + 1,0,0,0,4719,4715,1,0,0,0,4720,655,1,0,0,0,4721,4726,3,654,327,0, + 4722,4723,5,397,0,0,4723,4725,3,654,327,0,4724,4722,1,0,0,0,4725, + 4728,1,0,0,0,4726,4724,1,0,0,0,4726,4727,1,0,0,0,4727,657,1,0,0, + 0,4728,4726,1,0,0,0,4729,4733,5,259,0,0,4730,4731,5,83,0,0,4731, + 4733,5,246,0,0,4732,4729,1,0,0,0,4732,4730,1,0,0,0,4733,659,1,0, + 0,0,4734,4737,5,2,0,0,4735,4736,5,387,0,0,4736,4738,5,278,0,0,4737, + 4735,1,0,0,0,4737,4738,1,0,0,0,4738,661,1,0,0,0,4739,4740,7,50,0, + 0,4740,663,1,0,0,0,4741,4742,7,51,0,0,4742,665,1,0,0,0,4743,4744, + 7,52,0,0,4744,667,1,0,0,0,4745,4746,7,53,0,0,4746,669,1,0,0,0,4747, + 4748,7,54,0,0,4748,671,1,0,0,0,4749,4750,7,55,0,0,4750,673,1,0,0, + 0,4751,4752,7,56,0,0,4752,675,1,0,0,0,4753,4754,7,57,0,0,4754,677, + 1,0,0,0,4755,4756,7,58,0,0,4756,679,1,0,0,0,4757,4758,7,59,0,0,4758, + 681,1,0,0,0,4759,4764,3,638,319,0,4760,4761,5,395,0,0,4761,4763, + 3,638,319,0,4762,4760,1,0,0,0,4763,4766,1,0,0,0,4764,4762,1,0,0, + 0,4764,4765,1,0,0,0,4765,683,1,0,0,0,4766,4764,1,0,0,0,4767,4768, + 3,638,319,0,4768,4769,5,411,0,0,4769,4770,7,26,0,0,4770,685,1,0, + 0,0,4771,4776,5,176,0,0,4772,4773,5,211,0,0,4773,4774,5,341,0,0, + 4774,4776,3,682,341,0,4775,4771,1,0,0,0,4775,4772,1,0,0,0,4776,687, + 1,0,0,0,4777,4778,5,8,0,0,4778,4779,5,405,0,0,4779,4790,5,431,0, + 0,4780,4781,5,259,0,0,4781,4782,5,405,0,0,4782,4790,5,431,0,0,4783, + 4784,5,294,0,0,4784,4785,5,405,0,0,4785,4790,5,426,0,0,4786,4787, + 5,240,0,0,4787,4788,5,405,0,0,4788,4790,3,682,341,0,4789,4777,1, + 0,0,0,4789,4780,1,0,0,0,4789,4783,1,0,0,0,4789,4786,1,0,0,0,4790, + 689,1,0,0,0,4791,4796,3,688,344,0,4792,4793,5,397,0,0,4793,4795, + 3,688,344,0,4794,4792,1,0,0,0,4795,4798,1,0,0,0,4796,4794,1,0,0, + 0,4796,4797,1,0,0,0,4797,691,1,0,0,0,4798,4796,1,0,0,0,621,695,702, + 705,711,717,724,734,737,741,756,763,769,774,779,782,806,813,816, + 821,826,832,836,849,853,857,862,869,873,878,885,889,894,942,949, + 954,977,981,985,988,992,997,1003,1007,1013,1015,1026,1030,1037,1045, + 1048,1053,1057,1060,1070,1078,1082,1085,1089,1093,1096,1101,1107, + 1112,1117,1121,1132,1134,1138,1148,1152,1158,1161,1168,1173,1181, + 1186,1190,1198,1203,1209,1215,1218,1221,1224,1233,1241,1246,1254, + 1261,1264,1267,1269,1280,1282,1285,1288,1291,1294,1297,1299,1311, + 1317,1325,1327,1337,1370,1375,1379,1383,1390,1397,1403,1407,1410, + 1417,1440,1445,1449,1457,1466,1473,1479,1486,1489,1495,1502,1510, + 1519,1528,1535,1555,1562,1564,1571,1581,1589,1593,1597,1610,1619, + 1635,1639,1644,1649,1652,1655,1658,1661,1664,1669,1678,1682,1689, + 1692,1695,1698,1710,1716,1742,1750,1754,1757,1760,1763,1766,1769, + 1772,1775,1784,1794,1797,1817,1823,1829,1832,1834,1841,1848,1861, + 1866,1875,1883,1891,1904,1917,1933,1937,1952,1958,1961,1964,1967, + 1970,1974,1989,1992,2003,2017,2051,2059,2064,2072,2077,2082,2089, + 2097,2105,2113,2118,2128,2132,2140,2149,2152,2156,2163,2169,2173, + 2179,2183,2195,2204,2215,2219,2226,2238,2248,2251,2258,2264,2268, + 2271,2274,2280,2284,2288,2293,2297,2301,2305,2313,2317,2321,2325, + 2329,2337,2341,2345,2353,2358,2363,2367,2371,2378,2387,2395,2407, + 2425,2428,2434,2460,2463,2469,2477,2485,2498,2505,2508,2511,2514, + 2517,2520,2523,2526,2529,2532,2535,2540,2543,2546,2549,2552,2555, + 2558,2561,2564,2567,2570,2572,2578,2582,2585,2588,2591,2594,2597, + 2604,2608,2611,2614,2617,2620,2623,2630,2633,2641,2645,2652,2654, + 2657,2662,2665,2669,2674,2680,2688,2696,2706,2709,2713,2717,2722, + 2729,2733,2735,2739,2746,2751,2764,2772,2791,2801,2814,2824,2828, + 2832,2838,2845,2852,2861,2868,2888,2891,2905,2920,2924,2944,2956, + 2962,2965,2968,2974,2980,2987,2995,3001,3005,3010,3013,3017,3024, + 3029,3034,3037,3039,3047,3055,3059,3063,3067,3084,3101,3108,3117, + 3122,3125,3128,3132,3147,3161,3164,3175,3179,3182,3185,3189,3194, + 3197,3200,3203,3206,3209,3215,3218,3221,3224,3227,3230,3233,3236, + 3239,3242,3246,3248,3254,3259,3262,3265,3268,3271,3277,3280,3283, + 3286,3289,3292,3295,3298,3301,3304,3308,3310,3312,3317,3322,3326, + 3330,3335,3340,3349,3359,3367,3379,3382,3388,3395,3402,3409,3416, + 3425,3429,3436,3441,3445,3449,3452,3455,3466,3470,3472,3475,3488, + 3491,3494,3506,3509,3516,3525,3530,3532,3534,3551,3554,3562,3565, + 3569,3572,3575,3578,3581,3593,3601,3608,3611,3618,3621,3626,3633, + 3641,3649,3654,3658,3663,3670,3684,3687,3691,3702,3712,3715,3722, + 3731,3734,3740,3743,3750,3755,3758,3771,3777,3779,3787,3790,3800, + 3805,3807,3819,3825,3827,3834,3841,3855,3861,3864,3867,3870,3879, + 3886,3892,3901,3905,3913,3923,3933,3938,3942,3948,3953,3963,3967, + 3970,3975,3978,3982,3987,3998,4000,4009,4028,4038,4041,4048,4051, + 4061,4068,4071,4073,4084,4094,4096,4105,4110,4119,4132,4136,4148, + 4152,4161,4180,4198,4210,4225,4229,4245,4252,4266,4271,4281,4283, + 4291,4299,4307,4315,4323,4331,4342,4346,4354,4370,4374,4379,4392, + 4401,4403,4412,4417,4423,4430,4435,4444,4452,4460,4468,4478,4483, + 4541,4547,4556,4558,4574,4582,4586,4588,4594,4599,4616,4642,4647, + 4649,4677,4694,4699,4708,4719,4726,4732,4737,4764,4775,4789,4796 ]; private static __ATN: antlr.ATN; @@ -31943,8 +27595,8 @@ export class ExplainOptionContext extends antlr.ParserRuleContext { public KW_VECTORIZATION(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_VECTORIZATION, 0); } - public vectorizationOnly(): VectorizationOnlyContext | null { - return this.getRuleContext(0, VectorizationOnlyContext); + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ONLY, 0); } public vectorizatonDetail(): VectorizatonDetailContext | null { return this.getRuleContext(0, VectorizatonDetailContext); @@ -31978,36 +27630,6 @@ export class ExplainOptionContext extends antlr.ParserRuleContext { } -export class VectorizationOnlyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ONLY(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ONLY, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_vectorizationOnly; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterVectorizationOnly) { - listener.enterVectorizationOnly(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitVectorizationOnly) { - listener.exitVectorizationOnly(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitVectorizationOnly) { - return visitor.visitVectorizationOnly(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class VectorizatonDetailContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -32048,6 +27670,8 @@ export class VectorizatonDetailContext extends antlr.ParserRuleContext { export class ExecStatementContext extends antlr.ParserRuleContext { + public _dbName?: DbSchemaNameContext; + public _replConf?: KeyValuePropertiesContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -32069,29 +27693,107 @@ export class ExecStatementContext extends antlr.ParserRuleContext { public replLoadStatement(): ReplLoadStatementContext | null { return this.getRuleContext(0, ReplLoadStatementContext); } - public replStatusStatement(): ReplStatusStatementContext | null { - return this.getRuleContext(0, ReplStatusStatementContext); + public KW_REPL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REPL, 0); + } + public KW_STATUS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_STATUS, 0); + } + public dbSchemaName(): DbSchemaNameContext | null { + return this.getRuleContext(0, DbSchemaNameContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WITH, 0); + } + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public ddlStatement(): DdlStatementContext | null { return this.getRuleContext(0, DdlStatementContext); } - public deleteStatement(): DeleteStatementContext | null { - return this.getRuleContext(0, DeleteStatementContext); + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DELETE, 0); } - public updateStatement(): UpdateStatementContext | null { - return this.getRuleContext(0, UpdateStatementContext); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FROM, 0); + } + public tableName(): TableNameContext | null { + return this.getRuleContext(0, TableNameContext); + } + public whereClause(): WhereClauseContext | null { + return this.getRuleContext(0, WhereClauseContext); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UPDATE, 0); + } + public setColumnsClause(): SetColumnsClauseContext | null { + return this.getRuleContext(0, SetColumnsClauseContext); } public sqlTransactionStatement(): SqlTransactionStatementContext | null { return this.getRuleContext(0, SqlTransactionStatementContext); } - public mergeStatement(): MergeStatementContext | null { - return this.getRuleContext(0, MergeStatementContext); + public KW_MERGE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MERGE, 0); } - public prepareStatement(): PrepareStatementContext | null { - return this.getRuleContext(0, PrepareStatementContext); + public KW_INTO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_INTO, 0); } - public executeStatement(): ExecuteStatementContext | null { - return this.getRuleContext(0, ExecuteStatementContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_USING, 0); + } + public joinSourcePart(): JoinSourcePartContext | null { + return this.getRuleContext(0, JoinSourcePartContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ON, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public whenClauses(): WhenClausesContext | null { + return this.getRuleContext(0, WhenClausesContext); + } + public QUERY_HINT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.QUERY_HINT, 0); + } + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AS, 0); + } + public KW_PREPARE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PREPARE, 0); + } + public KW_EXECUTE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_EXECUTE, 0); + } + public constantList(): ConstantListContext | null { + return this.getRuleContext(0, ConstantListContext); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); + } + public configPropertiesItem(): ConfigPropertiesItemContext[]; + public configPropertiesItem(i: number): ConfigPropertiesItemContext | null; + public configPropertiesItem(i?: number): ConfigPropertiesItemContext[] | ConfigPropertiesItemContext | null { + if (i === undefined) { + return this.getRuleContexts(ConfigPropertiesItemContext); + } + + return this.getRuleContext(i, ConfigPropertiesItemContext); + } + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.EQUAL, 0); + } + public DOT(): antlr.TerminalNode[]; + public DOT(i: number): antlr.TerminalNode | null; + public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.DOT); + } else { + return this.getToken(HiveSqlParser.DOT, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_execStatement; @@ -32173,39 +27875,6 @@ export class LoadStatementContext extends antlr.ParserRuleContext { } -export class DropPartitionsIgnoreClauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_IGNORE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_IGNORE, 0)!; - } - public KW_PROTECTION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PROTECTION, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dropPartitionsIgnoreClause; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDropPartitionsIgnoreClause) { - listener.enterDropPartitionsIgnoreClause(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDropPartitionsIgnoreClause) { - listener.exitDropPartitionsIgnoreClause(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDropPartitionsIgnoreClause) { - return visitor.visitDropPartitionsIgnoreClause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ReplicationClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -32316,8 +27985,8 @@ export class ImportStatementContext extends antlr.ParserRuleContext { public tableOrPartition(): TableOrPartitionContext | null { return this.getRuleContext(0, TableOrPartitionContext); } - public tableLocation(): TableLocationContext | null { - return this.getRuleContext(0, TableLocationContext); + public locationPath(): LocationPathContext | null { + return this.getRuleContext(0, LocationPathContext); } public KW_EXTERNAL(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_EXTERNAL, 0); @@ -32348,7 +28017,7 @@ export class ImportStatementContext extends antlr.ParserRuleContext { export class ReplDumpStatementContext extends antlr.ParserRuleContext { public _dbPolicy?: ReplDbPolicyContext; public _oldDbPolicy?: ReplDbPolicyContext; - public _replConf?: ReplConfigsContext; + public _replConf?: KeyValuePropertiesContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -32373,8 +28042,8 @@ export class ReplDumpStatementContext extends antlr.ParserRuleContext { public KW_WITH(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_WITH, 0); } - public replConfigs(): ReplConfigsContext | null { - return this.getRuleContext(0, ReplConfigsContext); + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_replDumpStatement; @@ -32440,7 +28109,7 @@ export class ReplDbPolicyContext extends antlr.ParserRuleContext { export class ReplLoadStatementContext extends antlr.ParserRuleContext { public _sourceDbPolicy?: ReplDbPolicyContext; public _dbName?: DbSchemaNameContext; - public _replConf?: ReplConfigsContext; + public _replConf?: KeyValuePropertiesContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -32462,8 +28131,8 @@ export class ReplLoadStatementContext extends antlr.ParserRuleContext { public dbSchemaName(): DbSchemaNameContext | null { return this.getRuleContext(0, DbSchemaNameContext); } - public replConfigs(): ReplConfigsContext | null { - return this.getRuleContext(0, ReplConfigsContext); + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_replLoadStatement; @@ -32488,87 +28157,6 @@ export class ReplLoadStatementContext extends antlr.ParserRuleContext { } -export class ReplConfigsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public replConfigsList(): ReplConfigsListContext { - return this.getRuleContext(0, ReplConfigsListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_replConfigs; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterReplConfigs) { - listener.enterReplConfigs(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitReplConfigs) { - listener.exitReplConfigs(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitReplConfigs) { - return visitor.visitReplConfigs(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReplConfigsListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public keyValueProperty(): KeyValuePropertyContext[]; - public keyValueProperty(i: number): KeyValuePropertyContext | null; - public keyValueProperty(i?: number): KeyValuePropertyContext[] | KeyValuePropertyContext | null { - if (i === undefined) { - return this.getRuleContexts(KeyValuePropertyContext); - } - - return this.getRuleContext(i, KeyValuePropertyContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_replConfigsList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterReplConfigsList) { - listener.enterReplConfigsList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitReplConfigsList) { - listener.exitReplConfigsList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitReplConfigsList) { - return visitor.visitReplConfigsList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ReplTableLevelPolicyContext extends antlr.ParserRuleContext { public _replTablesIncludeList?: Token | null; public _replTablesExcludeList?: Token | null; @@ -32610,50 +28198,6 @@ export class ReplTableLevelPolicyContext extends antlr.ParserRuleContext { } -export class ReplStatusStatementContext extends antlr.ParserRuleContext { - public _dbName?: DbSchemaNameContext; - public _replConf?: ReplConfigsContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_REPL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REPL, 0)!; - } - public KW_STATUS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_STATUS, 0)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public replConfigs(): ReplConfigsContext | null { - return this.getRuleContext(0, ReplConfigsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_replStatusStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterReplStatusStatement) { - listener.enterReplStatusStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitReplStatusStatement) { - listener.exitReplStatusStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitReplStatusStatement) { - return visitor.visitReplStatusStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class DdlStatementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -32781,14 +28325,38 @@ export class DdlStatementContext extends antlr.ParserRuleContext { public showCurrentRole(): ShowCurrentRoleContext | null { return this.getRuleContext(0, ShowCurrentRoleContext); } - public abortTransactionStatement(): AbortTransactionStatementContext | null { - return this.getRuleContext(0, AbortTransactionStatementContext); + public KW_ABORT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ABORT, 0); } - public abortCompactionStatement(): AbortCompactionStatementContext | null { - return this.getRuleContext(0, AbortCompactionStatementContext); + public KW_TRANSACTIONS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0); } - public killQueryStatement(): KillQueryStatementContext | null { - return this.getRuleContext(0, KillQueryStatementContext); + public KW_COMPACTIONS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0); + } + public Number(): antlr.TerminalNode[]; + public Number(i: number): antlr.TerminalNode | null; + public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.Number); + } else { + return this.getToken(HiveSqlParser.Number, i); + } + } + public KW_KILL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_KILL, 0); + } + public KW_QUERY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_QUERY, 0); + } + public StringLiteral(): antlr.TerminalNode[]; + public StringLiteral(i: number): antlr.TerminalNode | null; + public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.StringLiteral); + } else { + return this.getToken(HiveSqlParser.StringLiteral, i); + } } public resourcePlanDdlStatements(): ResourcePlanDdlStatementsContext | null { return this.getRuleContext(0, ResourcePlanDdlStatementsContext); @@ -32855,39 +28423,6 @@ export class IfExistsContext extends antlr.ParserRuleContext { } -export class RestrictOrCascadeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_RESTRICT, 0); - } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_CASCADE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_restrictOrCascade; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterRestrictOrCascade) { - listener.enterRestrictOrCascade(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitRestrictOrCascade) { - listener.exitRestrictOrCascade(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitRestrictOrCascade) { - return visitor.visitRestrictOrCascade(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class IfNotExistsContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -32924,29 +28459,32 @@ export class IfNotExistsContext extends antlr.ParserRuleContext { } -export class ForceContext extends antlr.ParserRuleContext { +export class RestrictOrCascadeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FORCE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FORCE, 0)!; + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RESTRICT, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CASCADE, 0); } public override get ruleIndex(): number { - return HiveSqlParser.RULE_force; + return HiveSqlParser.RULE_restrictOrCascade; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterForce) { - listener.enterForce(this); + if(listener.enterRestrictOrCascade) { + listener.enterRestrictOrCascade(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitForce) { - listener.exitForce(this); + if(listener.exitRestrictOrCascade) { + listener.exitRestrictOrCascade(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitForce) { - return visitor.visitForce(this); + if (visitor.visitRestrictOrCascade) { + return visitor.visitRestrictOrCascade(this); } else { return visitor.visitChildren(this); } @@ -33056,42 +28594,10 @@ export class StoredAsDirsContext extends antlr.ParserRuleContext { } -export class OrReplaceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_OR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OR, 0)!; - } - public KW_REPLACE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REPLACE, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_orReplace; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterOrReplace) { - listener.enterOrReplace(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitOrReplace) { - listener.exitOrReplace(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitOrReplace) { - return visitor.visitOrReplace(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class CreateDatabaseStatementContext extends antlr.ParserRuleContext { public _name?: DbSchemaNameCreateContext; - public _dbprops?: DbPropertiesContext; + public _locn?: Token | null; + public _dbprops?: KeyValuePropertiesContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -33113,11 +28619,11 @@ export class CreateDatabaseStatementContext extends antlr.ParserRuleContext { public databaseComment(): DatabaseCommentContext | null { return this.getRuleContext(0, DatabaseCommentContext); } - public dbLocation(): DbLocationContext | null { - return this.getRuleContext(0, DbLocationContext); + public locationPath(): LocationPathContext | null { + return this.getRuleContext(0, LocationPathContext); } - public dbManagedLocation(): DbManagedLocationContext | null { - return this.getRuleContext(0, DbManagedLocationContext); + public KW_MANAGEDLOCATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); } public KW_WITH(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_WITH, 0); @@ -33125,8 +28631,11 @@ export class CreateDatabaseStatementContext extends antlr.ParserRuleContext { public KW_DBPROPERTIES(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0); } - public dbProperties(): DbPropertiesContext | null { - return this.getRuleContext(0, DbPropertiesContext); + public StringLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.StringLiteral, 0); + } + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public dbConnectorName(): DbConnectorNameContext | null { return this.getRuleContext(0, DbConnectorNameContext); @@ -33154,155 +28663,6 @@ export class CreateDatabaseStatementContext extends antlr.ParserRuleContext { } -export class DbLocationContext extends antlr.ParserRuleContext { - public _locn?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_LOCATION, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dbLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDbLocation) { - listener.enterDbLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDbLocation) { - listener.exitDbLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDbLocation) { - return visitor.visitDbLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DbManagedLocationContext extends antlr.ParserRuleContext { - public _locn?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_MANAGEDLOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dbManagedLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDbManagedLocation) { - listener.enterDbManagedLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDbManagedLocation) { - listener.exitDbManagedLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDbManagedLocation) { - return visitor.visitDbManagedLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DbPropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public dbPropertiesList(): DbPropertiesListContext { - return this.getRuleContext(0, DbPropertiesListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dbProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDbProperties) { - listener.enterDbProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDbProperties) { - listener.exitDbProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDbProperties) { - return visitor.visitDbProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DbPropertiesListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public keyValueProperty(): KeyValuePropertyContext[]; - public keyValueProperty(i: number): KeyValuePropertyContext | null; - public keyValueProperty(i?: number): KeyValuePropertyContext[] | KeyValuePropertyContext | null { - if (i === undefined) { - return this.getRuleContexts(KeyValuePropertyContext); - } - - return this.getRuleContext(i, KeyValuePropertyContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dbPropertiesList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDbPropertiesList) { - listener.enterDbPropertiesList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDbPropertiesList) { - listener.exitDbPropertiesList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDbPropertiesList) { - return visitor.visitDbPropertiesList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class DbConnectorNameContext extends antlr.ParserRuleContext { public _dcName?: DbSchemaNameContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -33453,8 +28813,8 @@ export class TruncateTableStatementContext extends antlr.ParserRuleContext { public KW_TRUNCATE(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_TRUNCATE, 0)!; } - public tablePartitionPrefix(): TablePartitionPrefixContext { - return this.getRuleContext(0, TablePartitionPrefixContext)!; + public tableOrPartition(): TableOrPartitionContext { + return this.getRuleContext(0, TableOrPartitionContext)!; } public KW_TABLE(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_TABLE, 0); @@ -33471,8 +28831,8 @@ export class TruncateTableStatementContext extends antlr.ParserRuleContext { public RPAREN(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.RPAREN, 0); } - public force(): ForceContext | null { - return this.getRuleContext(0, ForceContext); + public KW_FORCE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FORCE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_truncateTableStatement; @@ -33927,6 +29287,7 @@ export class ShowStatementContext extends antlr.ParserRuleContext { public _prptyName?: Token | null; public _dbName?: DbSchemaNameContext; public _parttype?: PartTypeExprContext; + public _compactId?: Token | null; public _rp_name?: Id_Context; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -34036,8 +29397,14 @@ export class ShowStatementContext extends antlr.ParserRuleContext { public KW_COMPACTIONS(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0); } - public compactionId(): CompactionIdContext | null { - return this.getRuleContext(0, CompactionIdContext); + public KW_COMPACT_ID(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMPACT_ID, 0); + } + public EQUAL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.EQUAL, 0); + } + public Number(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.Number, 0); } public compactionPool(): CompactionPoolContext | null { return this.getRuleContext(0, CompactionPoolContext); @@ -34159,15 +29526,12 @@ export class LockStatementContext extends antlr.ParserRuleContext { public KW_TABLE(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public tableOrPartition(): TableOrPartitionContext { + return this.getRuleContext(0, TableOrPartitionContext)!; } public lockMode(): LockModeContext { return this.getRuleContext(0, LockModeContext)!; } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); - } public override get ruleIndex(): number { return HiveSqlParser.RULE_lockStatement; } @@ -34274,11 +29638,8 @@ export class UnlockStatementContext extends antlr.ParserRuleContext { public KW_TABLE(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_TABLE, 0)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); + public tableOrPartition(): TableOrPartitionContext { + return this.getRuleContext(0, TableOrPartitionContext)!; } public override get ruleIndex(): number { return HiveSqlParser.RULE_unlockStatement; @@ -34933,15 +30294,12 @@ export class PrivObjectContext extends antlr.ParserRuleContext { public dbSchemaName(): DbSchemaNameContext | null { return this.getRuleContext(0, DbSchemaNameContext); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public tableOrPartition(): TableOrPartitionContext | null { + return this.getRuleContext(0, TableOrPartitionContext); } public KW_TABLE(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_TABLE, 0); } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); - } public KW_URI(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_URI, 0); } @@ -35857,7 +31215,6 @@ export class DropMacroStatementContext extends antlr.ParserRuleContext { export class CreateIndexStatementContext extends antlr.ParserRuleContext { public _indextype?: Token | null; - public _locn?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -35903,14 +31260,8 @@ export class CreateIndexStatementContext extends antlr.ParserRuleContext { public KW_AS(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_AS, 0)!; } - public StringLiteral(): antlr.TerminalNode[]; - public StringLiteral(i: number): antlr.TerminalNode | null; - public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.StringLiteral); - } else { - return this.getToken(HiveSqlParser.StringLiteral, i); - } + public StringLiteral(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.StringLiteral, 0)!; } public KW_WITH(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_WITH, 0); @@ -35939,8 +31290,8 @@ export class CreateIndexStatementContext extends antlr.ParserRuleContext { public tableFileFormat(): TableFileFormatContext | null { return this.getRuleContext(0, TableFileFormatContext); } - public KW_LOCATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_LOCATION, 0); + public locationPath(): LocationPathContext | null { + return this.getRuleContext(0, LocationPathContext); } public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null { return this.getRuleContext(0, TablePropertiesPrefixedContext); @@ -36039,8 +31390,11 @@ export class CreateViewStatementContext extends antlr.ParserRuleContext { public viewNameCreate(): ViewNameCreateContext { return this.getRuleContext(0, ViewNameCreateContext)!; } - public orReplace(): OrReplaceContext | null { - return this.getRuleContext(0, OrReplaceContext); + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REPLACE, 0); } public ifNotExists(): IfNotExistsContext | null { return this.getRuleContext(0, IfNotExistsContext); @@ -36412,8 +31766,8 @@ export class CreateMaterializedViewStatementContext extends antlr.ParserRuleCont public tableFileFormat(): TableFileFormatContext | null { return this.getRuleContext(0, TableFileFormatContext); } - public tableLocation(): TableLocationContext | null { - return this.getRuleContext(0, TableLocationContext); + public locationPath(): LocationPathContext | null { + return this.getRuleContext(0, LocationPathContext); } public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null { return this.getRuleContext(0, TablePropertiesPrefixedContext); @@ -36891,7 +32245,7 @@ export class TableLifecycleContext extends antlr.ParserRuleContext { export class CreateTablePartitionSpecContext extends antlr.ParserRuleContext { public _opt1?: CreateTablePartitionColumnTypeSpecContext; - public _opt2?: CreateTablePartitionColumnSpecContext; + public _opt2?: ColumnNameListContext; public _spec?: PartitionTransformSpecContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -36917,8 +32271,8 @@ export class CreateTablePartitionSpecContext extends antlr.ParserRuleContext { public createTablePartitionColumnTypeSpec(): CreateTablePartitionColumnTypeSpecContext | null { return this.getRuleContext(0, CreateTablePartitionColumnTypeSpecContext); } - public createTablePartitionColumnSpec(): CreateTablePartitionColumnSpecContext | null { - return this.getRuleContext(0, CreateTablePartitionColumnSpecContext); + public columnNameList(): ColumnNameListContext | null { + return this.getRuleContext(0, ColumnNameListContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_createTablePartitionSpec; @@ -36988,63 +32342,18 @@ export class CreateTablePartitionColumnTypeSpecContext extends antlr.ParserRuleC } -export class CreateTablePartitionColumnSpecContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public columnName(): ColumnNameContext[]; - public columnName(i: number): ColumnNameContext | null; - public columnName(i?: number): ColumnNameContext[] | ColumnNameContext | null { - if (i === undefined) { - return this.getRuleContexts(ColumnNameContext); - } - - return this.getRuleContext(i, ColumnNameContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_createTablePartitionColumnSpec; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCreateTablePartitionColumnSpec) { - listener.enterCreateTablePartitionColumnSpec(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCreateTablePartitionColumnSpec) { - listener.exitCreateTablePartitionColumnSpec(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCreateTablePartitionColumnSpec) { - return visitor.visitCreateTablePartitionColumnSpec(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PartitionTransformSpecContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnNameTransformConstraint(): ColumnNameTransformConstraintContext[]; - public columnNameTransformConstraint(i: number): ColumnNameTransformConstraintContext | null; - public columnNameTransformConstraint(i?: number): ColumnNameTransformConstraintContext[] | ColumnNameTransformConstraintContext | null { + public partitionTransformType(): PartitionTransformTypeContext[]; + public partitionTransformType(i: number): PartitionTransformTypeContext | null; + public partitionTransformType(i?: number): PartitionTransformTypeContext[] | PartitionTransformTypeContext | null { if (i === undefined) { - return this.getRuleContexts(ColumnNameTransformConstraintContext); + return this.getRuleContexts(PartitionTransformTypeContext); } - return this.getRuleContext(i, ColumnNameTransformConstraintContext); + return this.getRuleContext(i, PartitionTransformTypeContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -37078,36 +32387,6 @@ export class PartitionTransformSpecContext extends antlr.ParserRuleContext { } -export class ColumnNameTransformConstraintContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public partitionTransformType(): PartitionTransformTypeContext { - return this.getRuleContext(0, PartitionTransformTypeContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_columnNameTransformConstraint; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterColumnNameTransformConstraint) { - listener.enterColumnNameTransformConstraint(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitColumnNameTransformConstraint) { - listener.exitColumnNameTransformConstraint(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitColumnNameTransformConstraint) { - return visitor.visitColumnNameTransformConstraint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PartitionTransformTypeContext extends antlr.ParserRuleContext { public _value?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -37247,46 +32526,6 @@ export class TableBucketsContext extends antlr.ParserRuleContext { } -export class TableImplBucketsContext extends antlr.ParserRuleContext { - public _num?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CLUSTERED(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CLUSTERED, 0)!; - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_INTO, 0)!; - } - public KW_BUCKETS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_BUCKETS, 0)!; - } - public Number(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.Number, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_tableImplBuckets; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTableImplBuckets) { - listener.enterTableImplBuckets(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTableImplBuckets) { - listener.exitTableImplBuckets(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTableImplBuckets) { - return visitor.visitTableImplBuckets(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TableSkewedContext extends antlr.ParserRuleContext { public _skewedCols?: ColumnNameListContext; public _skewedValues?: SkewedValueElementContext; @@ -37655,6 +32894,91 @@ export class TablePropertiesContext extends antlr.ParserRuleContext { export class TablePropertiesListContext extends antlr.ParserRuleContext { + public _key?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public keyValuePropertyList(): KeyValuePropertyListContext | null { + return this.getRuleContext(0, KeyValuePropertyListContext); + } + public StringLiteral(): antlr.TerminalNode[]; + public StringLiteral(i: number): antlr.TerminalNode | null; + public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.StringLiteral); + } else { + return this.getToken(HiveSqlParser.StringLiteral, i); + } + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public override get ruleIndex(): number { + return HiveSqlParser.RULE_tablePropertiesList; + } + public override enterRule(listener: HiveSqlParserListener): void { + if(listener.enterTablePropertiesList) { + listener.enterTablePropertiesList(this); + } + } + public override exitRule(listener: HiveSqlParserListener): void { + if(listener.exitTablePropertiesList) { + listener.exitTablePropertiesList(this); + } + } + public override accept(visitor: HiveSqlParserVisitor): Result | null { + if (visitor.visitTablePropertiesList) { + return visitor.visitTablePropertiesList(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class KeyValuePropertiesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public LPAREN(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.LPAREN, 0)!; + } + public keyValuePropertyList(): KeyValuePropertyListContext { + return this.getRuleContext(0, KeyValuePropertyListContext)!; + } + public RPAREN(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.RPAREN, 0)!; + } + public override get ruleIndex(): number { + return HiveSqlParser.RULE_keyValueProperties; + } + public override enterRule(listener: HiveSqlParserListener): void { + if(listener.enterKeyValueProperties) { + listener.enterKeyValueProperties(this); + } + } + public override exitRule(listener: HiveSqlParserListener): void { + if(listener.exitKeyValueProperties) { + listener.exitKeyValueProperties(this); + } + } + public override accept(visitor: HiveSqlParserVisitor): Result | null { + if (visitor.visitKeyValueProperties) { + return visitor.visitKeyValueProperties(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class KeyValuePropertyListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -37676,31 +33000,22 @@ export class TablePropertiesListContext extends antlr.ParserRuleContext { return this.getToken(HiveSqlParser.COMMA, i); } } - public keyProperty(): KeyPropertyContext[]; - public keyProperty(i: number): KeyPropertyContext | null; - public keyProperty(i?: number): KeyPropertyContext[] | KeyPropertyContext | null { - if (i === undefined) { - return this.getRuleContexts(KeyPropertyContext); - } - - return this.getRuleContext(i, KeyPropertyContext); - } public override get ruleIndex(): number { - return HiveSqlParser.RULE_tablePropertiesList; + return HiveSqlParser.RULE_keyValuePropertyList; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTablePropertiesList) { - listener.enterTablePropertiesList(this); + if(listener.enterKeyValuePropertyList) { + listener.enterKeyValuePropertyList(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTablePropertiesList) { - listener.exitTablePropertiesList(this); + if(listener.exitKeyValuePropertyList) { + listener.exitKeyValuePropertyList(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTablePropertiesList) { - return visitor.visitTablePropertiesList(this); + if (visitor.visitKeyValuePropertyList) { + return visitor.visitKeyValuePropertyList(this); } else { return visitor.visitChildren(this); } @@ -37749,37 +33064,6 @@ export class KeyValuePropertyContext extends antlr.ParserRuleContext { } -export class KeyPropertyContext extends antlr.ParserRuleContext { - public _key?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_keyProperty; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterKeyProperty) { - listener.enterKeyProperty(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitKeyProperty) { - listener.exitKeyProperty(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitKeyProperty) { - return visitor.visitKeyProperty(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TableRowFormatFieldIdentifierContext extends antlr.ParserRuleContext { public _fldIdnt?: Token | null; public _fldEscape?: Token | null; @@ -38091,40 +33375,6 @@ export class TableFileFormatContext extends antlr.ParserRuleContext { } -export class TableLocationContext extends antlr.ParserRuleContext { - public _locn?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_LOCATION, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_tableLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTableLocation) { - listener.enterTableLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTableLocation) { - listener.exitTableLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTableLocation) { - return visitor.visitTableLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ColumnNameTypeListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -38309,23 +33559,8 @@ export class ColumnNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public DOT(): antlr.TerminalNode[]; - public DOT(i: number): antlr.TerminalNode | null; - public DOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.DOT); - } else { - return this.getToken(HiveSqlParser.DOT, i); - } + public poolPath(): PoolPathContext | null { + return this.getRuleContext(0, PoolPathContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_columnName; @@ -39016,8 +34251,8 @@ export class SkewedValueElementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public skewedColumnValues(): SkewedColumnValuesContext | null { - return this.getRuleContext(0, SkewedColumnValuesContext); + public constantList(): ConstantListContext | null { + return this.getRuleContext(0, ConstantListContext); } public skewedColumnValuePairList(): SkewedColumnValuePairListContext | null { return this.getRuleContext(0, SkewedColumnValuePairListContext); @@ -39091,7 +34326,7 @@ export class SkewedColumnValuePairListContext extends antlr.ParserRuleContext { export class SkewedColumnValuePairContext extends antlr.ParserRuleContext { - public _colValues?: SkewedColumnValuesContext; + public _colValues?: ConstantListContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -39101,8 +34336,8 @@ export class SkewedColumnValuePairContext extends antlr.ParserRuleContext { public RPAREN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0)!; } - public skewedColumnValues(): SkewedColumnValuesContext { - return this.getRuleContext(0, SkewedColumnValuesContext)!; + public constantList(): ConstantListContext { + return this.getRuleContext(0, ConstantListContext)!; } public override get ruleIndex(): number { return HiveSqlParser.RULE_skewedColumnValuePair; @@ -39127,18 +34362,18 @@ export class SkewedColumnValuePairContext extends antlr.ParserRuleContext { } -export class SkewedColumnValuesContext extends antlr.ParserRuleContext { +export class ConstantListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public skewedColumnValue(): SkewedColumnValueContext[]; - public skewedColumnValue(i: number): SkewedColumnValueContext | null; - public skewedColumnValue(i?: number): SkewedColumnValueContext[] | SkewedColumnValueContext | null { + public constant(): ConstantContext[]; + public constant(i: number): ConstantContext | null; + public constant(i?: number): ConstantContext[] | ConstantContext | null { if (i === undefined) { - return this.getRuleContexts(SkewedColumnValueContext); + return this.getRuleContexts(ConstantContext); } - return this.getRuleContext(i, SkewedColumnValueContext); + return this.getRuleContext(i, ConstantContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -39150,84 +34385,21 @@ export class SkewedColumnValuesContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return HiveSqlParser.RULE_skewedColumnValues; + return HiveSqlParser.RULE_constantList; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSkewedColumnValues) { - listener.enterSkewedColumnValues(this); + if(listener.enterConstantList) { + listener.enterConstantList(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSkewedColumnValues) { - listener.exitSkewedColumnValues(this); + if(listener.exitConstantList) { + listener.exitConstantList(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSkewedColumnValues) { - return visitor.visitSkewedColumnValues(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SkewedColumnValueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public constant(): ConstantContext { - return this.getRuleContext(0, ConstantContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_skewedColumnValue; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSkewedColumnValue) { - listener.enterSkewedColumnValue(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSkewedColumnValue) { - listener.exitSkewedColumnValue(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSkewedColumnValue) { - return visitor.visitSkewedColumnValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SkewedValueLocationElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public skewedColumnValue(): SkewedColumnValueContext | null { - return this.getRuleContext(0, SkewedColumnValueContext); - } - public skewedColumnValuePair(): SkewedColumnValuePairContext | null { - return this.getRuleContext(0, SkewedColumnValuePairContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_skewedValueLocationElement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSkewedValueLocationElement) { - listener.enterSkewedValueLocationElement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSkewedValueLocationElement) { - listener.exitSkewedValueLocationElement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSkewedValueLocationElement) { - return visitor.visitSkewedValueLocationElement(this); + if (visitor.visitConstantList) { + return visitor.visitConstantList(this); } else { return visitor.visitChildren(this); } @@ -39425,41 +34597,8 @@ export class ColumnNameCommentContext extends antlr.ParserRuleContext { } -export class OrderSpecificationRewriteContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ASC(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ASC, 0); - } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DESC, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_orderSpecificationRewrite; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterOrderSpecificationRewrite) { - listener.enterOrderSpecificationRewrite(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitOrderSpecificationRewrite) { - listener.exitOrderSpecificationRewrite(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitOrderSpecificationRewrite) { - return visitor.visitOrderSpecificationRewrite(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ColumnRefOrderContext extends antlr.ParserRuleContext { - public _orderSpec?: OrderSpecificationRewriteContext; + public _orderSpec?: OrderSpecificationContext; public _nullSpec?: NullOrderingContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -39470,8 +34609,8 @@ export class ColumnRefOrderContext extends antlr.ParserRuleContext { public expression(): ExpressionContext | null { return this.getRuleContext(0, ExpressionContext); } - public orderSpecificationRewrite(): OrderSpecificationRewriteContext | null { - return this.getRuleContext(0, OrderSpecificationRewriteContext); + public orderSpecification(): OrderSpecificationContext | null { + return this.getRuleContext(0, OrderSpecificationContext); } public nullOrdering(): NullOrderingContext | null { return this.getRuleContext(0, NullOrderingContext); @@ -39505,8 +34644,8 @@ export class ColumnNameTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colType(): ColTypeContext { - return this.getRuleContext(0, ColTypeContext)!; + public columnType(): ColumnTypeContext { + return this.getRuleContext(0, ColumnTypeContext)!; } public columnNameCreate(): ColumnNameCreateContext { return this.getRuleContext(0, ColumnNameCreateContext)!; @@ -39612,8 +34751,8 @@ export class ColumnNameTypeConstraintContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colType(): ColTypeContext { - return this.getRuleContext(0, ColTypeContext)!; + public columnType(): ColumnTypeContext { + return this.getRuleContext(0, ColumnTypeContext)!; } public columnNameCreate(): ColumnNameCreateContext { return this.getRuleContext(0, ColumnNameCreateContext)!; @@ -40096,8 +35235,8 @@ export class ColumnNameColonTypeContext extends antlr.ParserRuleContext { public COLON(): antlr.TerminalNode { return this.getToken(HiveSqlParser.COLON, 0)!; } - public colType(): ColTypeContext { - return this.getRuleContext(0, ColTypeContext)!; + public columnType(): ColumnTypeContext { + return this.getRuleContext(0, ColumnTypeContext)!; } public columnNameCreate(): ColumnNameCreateContext { return this.getRuleContext(0, ColumnNameCreateContext)!; @@ -40131,7 +35270,7 @@ export class ColumnNameColonTypeContext extends antlr.ParserRuleContext { } -export class ColTypeContext extends antlr.ParserRuleContext { +export class ColumnTypeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -40139,21 +35278,21 @@ export class ColTypeContext extends antlr.ParserRuleContext { return this.getRuleContext(0, TypeContext)!; } public override get ruleIndex(): number { - return HiveSqlParser.RULE_colType; + return HiveSqlParser.RULE_columnType; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterColType) { - listener.enterColType(this); + if(listener.enterColumnType) { + listener.enterColumnType(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitColType) { - listener.exitColType(this); + if(listener.exitColumnType) { + listener.exitColumnType(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitColType) { - return visitor.visitColType(this); + if (visitor.visitColumnType) { + return visitor.visitColumnType(this); } else { return visitor.visitChildren(this); } @@ -40161,18 +35300,18 @@ export class ColTypeContext extends antlr.ParserRuleContext { } -export class ColTypeListContext extends antlr.ParserRuleContext { +export class ColumnTypeListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public colType(): ColTypeContext[]; - public colType(i: number): ColTypeContext | null; - public colType(i?: number): ColTypeContext[] | ColTypeContext | null { + public columnType(): ColumnTypeContext[]; + public columnType(i: number): ColumnTypeContext | null; + public columnType(i?: number): ColumnTypeContext[] | ColumnTypeContext | null { if (i === undefined) { - return this.getRuleContexts(ColTypeContext); + return this.getRuleContexts(ColumnTypeContext); } - return this.getRuleContext(i, ColTypeContext); + return this.getRuleContext(i, ColumnTypeContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -40184,21 +35323,21 @@ export class ColTypeListContext extends antlr.ParserRuleContext { } } public override get ruleIndex(): number { - return HiveSqlParser.RULE_colTypeList; + return HiveSqlParser.RULE_columnTypeList; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterColTypeList) { - listener.enterColTypeList(this); + if(listener.enterColumnTypeList) { + listener.enterColumnTypeList(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitColTypeList) { - listener.exitColTypeList(this); + if(listener.exitColumnTypeList) { + listener.exitColumnTypeList(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitColTypeList) { - return visitor.visitColTypeList(this); + if (visitor.visitColumnTypeList) { + return visitor.visitColumnTypeList(this); } else { return visitor.visitChildren(this); } @@ -40500,8 +35639,8 @@ export class UnionTypeContext extends antlr.ParserRuleContext { public LESSTHAN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.LESSTHAN, 0)!; } - public colTypeList(): ColTypeListContext { - return this.getRuleContext(0, ColTypeListContext)!; + public columnTypeList(): ColumnTypeListContext { + return this.getRuleContext(0, ColumnTypeListContext)!; } public GREATERTHAN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.GREATERTHAN, 0)!; @@ -41045,8 +36184,8 @@ export class AtomSelectStatementContext extends antlr.ParserRuleContext { public RPAREN(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.RPAREN, 0); } - public valuesSource(): ValuesSourceContext | null { - return this.getRuleContext(0, ValuesSourceContext); + public valuesClause(): ValuesClauseContext | null { + return this.getRuleContext(0, ValuesClauseContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_atomSelectStatement; @@ -41361,45 +36500,6 @@ export class LimitClauseContext extends antlr.ParserRuleContext { } -export class DeleteStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DELETE, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FROM, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public whereClause(): WhereClauseContext | null { - return this.getRuleContext(0, WhereClauseContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_deleteStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDeleteStatement) { - listener.enterDeleteStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDeleteStatement) { - listener.exitDeleteStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDeleteStatement) { - return visitor.visitDeleteStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ColumnAssignmentClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -41440,8 +36540,8 @@ export class PrecedencePlusExpressionOrDefaultContext extends antlr.ParserRuleCo public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public defaultValue(): DefaultValueContext | null { - return this.getRuleContext(0, DefaultValueContext); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DEFAULT, 0); } public precedencePlusExpression(): PrecedencePlusExpressionContext | null { return this.getRuleContext(0, PrecedencePlusExpressionContext); @@ -41517,60 +36617,54 @@ export class SetColumnsClauseContext extends antlr.ParserRuleContext { } -export class UpdateStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UPDATE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public setColumnsClause(): SetColumnsClauseContext { - return this.getRuleContext(0, SetColumnsClauseContext)!; - } - public whereClause(): WhereClauseContext | null { - return this.getRuleContext(0, WhereClauseContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_updateStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUpdateStatement) { - listener.enterUpdateStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUpdateStatement) { - listener.exitUpdateStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUpdateStatement) { - return visitor.visitUpdateStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class SqlTransactionStatementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public startTransactionStatement(): StartTransactionStatementContext | null { - return this.getRuleContext(0, StartTransactionStatementContext); + public KW_START(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_START, 0); } - public commitStatement(): CommitStatementContext | null { - return this.getRuleContext(0, CommitStatementContext); + public KW_TRANSACTION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRANSACTION, 0); } - public rollbackStatement(): RollbackStatementContext | null { - return this.getRuleContext(0, RollbackStatementContext); + public transactionMode(): TransactionModeContext[]; + public transactionMode(i: number): TransactionModeContext | null; + public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { + if (i === undefined) { + return this.getRuleContexts(TransactionModeContext); + } + + return this.getRuleContext(i, TransactionModeContext); } - public setAutoCommitStatement(): SetAutoCommitStatementContext | null { - return this.getRuleContext(0, SetAutoCommitStatementContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public KW_COMMIT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMMIT, 0); + } + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WORK, 0); + } + public KW_ROLLBACK(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ROLLBACK, 0); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); + } + public KW_AUTOCOMMIT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0); + } + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRUE, 0); + } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FALSE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_sqlTransactionStatement; @@ -41595,66 +36689,27 @@ export class SqlTransactionStatementContext extends antlr.ParserRuleContext { } -export class StartTransactionStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_START(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_START, 0)!; - } - public KW_TRANSACTION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRANSACTION, 0)!; - } - public transactionMode(): TransactionModeContext[]; - public transactionMode(i: number): TransactionModeContext | null; - public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { - if (i === undefined) { - return this.getRuleContexts(TransactionModeContext); - } - - return this.getRuleContext(i, TransactionModeContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_startTransactionStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterStartTransactionStatement) { - listener.enterStartTransactionStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitStartTransactionStatement) { - listener.exitStartTransactionStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitStartTransactionStatement) { - return visitor.visitStartTransactionStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TransactionModeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public isolationLevel(): IsolationLevelContext | null { - return this.getRuleContext(0, IsolationLevelContext); + public KW_ISOLATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ISOLATION, 0); } - public transactionAccessMode(): TransactionAccessModeContext | null { - return this.getRuleContext(0, TransactionAccessModeContext); + public KW_LEVEL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LEVEL, 0); + } + public KW_SNAPSHOT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0); + } + public KW_READ(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_READ, 0); + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ONLY, 0); + } + public KW_WRITE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WRITE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_transactionMode; @@ -41679,354 +36734,6 @@ export class TransactionModeContext extends antlr.ParserRuleContext { } -export class TransactionAccessModeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_READ(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_READ, 0)!; - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ONLY, 0); - } - public KW_WRITE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WRITE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_transactionAccessMode; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTransactionAccessMode) { - listener.enterTransactionAccessMode(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTransactionAccessMode) { - listener.exitTransactionAccessMode(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTransactionAccessMode) { - return visitor.visitTransactionAccessMode(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class IsolationLevelContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ISOLATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ISOLATION, 0)!; - } - public KW_LEVEL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_LEVEL, 0)!; - } - public levelOfIsolation(): LevelOfIsolationContext { - return this.getRuleContext(0, LevelOfIsolationContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_isolationLevel; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterIsolationLevel) { - listener.enterIsolationLevel(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitIsolationLevel) { - listener.exitIsolationLevel(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitIsolationLevel) { - return visitor.visitIsolationLevel(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class LevelOfIsolationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SNAPSHOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SNAPSHOT, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_levelOfIsolation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterLevelOfIsolation) { - listener.enterLevelOfIsolation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitLevelOfIsolation) { - listener.exitLevelOfIsolation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitLevelOfIsolation) { - return visitor.visitLevelOfIsolation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CommitStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMMIT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COMMIT, 0)!; - } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WORK, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_commitStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCommitStatement) { - listener.enterCommitStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCommitStatement) { - listener.exitCommitStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCommitStatement) { - return visitor.visitCommitStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RollbackStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ROLLBACK(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ROLLBACK, 0)!; - } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WORK, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_rollbackStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterRollbackStatement) { - listener.enterRollbackStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitRollbackStatement) { - listener.exitRollbackStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitRollbackStatement) { - return visitor.visitRollbackStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SetAutoCommitStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_AUTOCOMMIT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_AUTOCOMMIT, 0)!; - } - public booleanValueTok(): BooleanValueTokContext { - return this.getRuleContext(0, BooleanValueTokContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_setAutoCommitStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSetAutoCommitStatement) { - listener.enterSetAutoCommitStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSetAutoCommitStatement) { - listener.exitSetAutoCommitStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSetAutoCommitStatement) { - return visitor.visitSetAutoCommitStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AbortTransactionStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ABORT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ABORT, 0)!; - } - public KW_TRANSACTIONS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRANSACTIONS, 0)!; - } - public Number(): antlr.TerminalNode[]; - public Number(i: number): antlr.TerminalNode | null; - public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.Number); - } else { - return this.getToken(HiveSqlParser.Number, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_abortTransactionStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAbortTransactionStatement) { - listener.enterAbortTransactionStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAbortTransactionStatement) { - listener.exitAbortTransactionStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAbortTransactionStatement) { - return visitor.visitAbortTransactionStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AbortCompactionStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ABORT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ABORT, 0)!; - } - public KW_COMPACTIONS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COMPACTIONS, 0)!; - } - public Number(): antlr.TerminalNode[]; - public Number(i: number): antlr.TerminalNode | null; - public Number(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.Number); - } else { - return this.getToken(HiveSqlParser.Number, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_abortCompactionStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAbortCompactionStatement) { - listener.enterAbortCompactionStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAbortCompactionStatement) { - listener.exitAbortCompactionStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAbortCompactionStatement) { - return visitor.visitAbortCompactionStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class MergeStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_MERGE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MERGE, 0)!; - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_INTO, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_USING, 0)!; - } - public joinSourcePart(): JoinSourcePartContext { - return this.getRuleContext(0, JoinSourcePartContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ON, 0)!; - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public whenClauses(): WhenClausesContext { - return this.getRuleContext(0, WhenClausesContext)!; - } - public QUERY_HINT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.QUERY_HINT, 0); - } - public id_(): Id_Context | null { - return this.getRuleContext(0, Id_Context); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AS, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_mergeStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterMergeStatement) { - listener.enterMergeStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitMergeStatement) { - listener.exitMergeStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitMergeStatement) { - return visitor.visitMergeStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class WhenClausesContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -42098,8 +36805,8 @@ export class WhenNotMatchedClauseContext extends antlr.ParserRuleContext { public KW_VALUES(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_VALUES, 0)!; } - public valueRowConstructor(): ValueRowConstructorContext { - return this.getRuleContext(0, ValueRowConstructorContext)!; + public expressionsInParenthesis(): ExpressionsInParenthesisContext { + return this.getRuleContext(0, ExpressionsInParenthesisContext)!; } public KW_AND(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_AND, 0); @@ -42152,8 +36859,14 @@ export class WhenMatchedAndClauseContext extends antlr.ParserRuleContext { public KW_THEN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_THEN, 0)!; } - public updateOrDelete(): UpdateOrDeleteContext { - return this.getRuleContext(0, UpdateOrDeleteContext)!; + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UPDATE, 0); + } + public setColumnsClause(): SetColumnsClauseContext | null { + return this.getRuleContext(0, SetColumnsClauseContext); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DELETE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_whenMatchedAndClause; @@ -42191,8 +36904,14 @@ export class WhenMatchedThenClauseContext extends antlr.ParserRuleContext { public KW_THEN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_THEN, 0)!; } - public updateOrDelete(): UpdateOrDeleteContext { - return this.getRuleContext(0, UpdateOrDeleteContext)!; + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UPDATE, 0); + } + public setColumnsClause(): SetColumnsClauseContext | null { + return this.getRuleContext(0, SetColumnsClauseContext); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DELETE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_whenMatchedThenClause; @@ -42217,121 +36936,6 @@ export class WhenMatchedThenClauseContext extends antlr.ParserRuleContext { } -export class UpdateOrDeleteContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UPDATE, 0); - } - public setColumnsClause(): SetColumnsClauseContext | null { - return this.getRuleContext(0, SetColumnsClauseContext); - } - public KW_DELETE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DELETE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_updateOrDelete; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUpdateOrDelete) { - listener.enterUpdateOrDelete(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUpdateOrDelete) { - listener.exitUpdateOrDelete(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUpdateOrDelete) { - return visitor.visitUpdateOrDelete(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class KillQueryStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_KILL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_KILL, 0)!; - } - public KW_QUERY(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_QUERY, 0)!; - } - public StringLiteral(): antlr.TerminalNode[]; - public StringLiteral(i: number): antlr.TerminalNode | null; - public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.StringLiteral); - } else { - return this.getToken(HiveSqlParser.StringLiteral, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_killQueryStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterKillQueryStatement) { - listener.enterKillQueryStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitKillQueryStatement) { - listener.exitKillQueryStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitKillQueryStatement) { - return visitor.visitKillQueryStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CompactionIdContext extends antlr.ParserRuleContext { - public _compactId?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMPACT_ID(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COMPACT_ID, 0)!; - } - public EQUAL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.EQUAL, 0)!; - } - public Number(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.Number, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_compactionId; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCompactionId) { - listener.enterCompactionId(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCompactionId) { - listener.exitCompactionId(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCompactionId) { - return visitor.visitCompactionId(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class CompactionPoolContext extends antlr.ParserRuleContext { public _poolName?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -42436,6 +37040,8 @@ export class CompactionStatusContext extends antlr.ParserRuleContext { export class AlterStatementContext extends antlr.ParserRuleContext { public _tableNameTree?: ViewNameContext; + public _mvRewriteFlag?: RewriteEnabledContext; + public _mvRewriteFlag2?: RewriteDisabledContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -42463,9 +37069,6 @@ export class AlterStatementContext extends antlr.ParserRuleContext { public KW_MATERIALIZED(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_MATERIALIZED, 0); } - public alterMaterializedViewStatementSuffix(): AlterMaterializedViewStatementSuffixContext | null { - return this.getRuleContext(0, AlterMaterializedViewStatementSuffixContext); - } public db_schema(): Db_schemaContext | null { return this.getRuleContext(0, Db_schemaContext); } @@ -42481,12 +37084,27 @@ export class AlterStatementContext extends antlr.ParserRuleContext { public KW_INDEX(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_INDEX, 0); } - public alterIndexStatementSuffix(): AlterIndexStatementSuffixContext | null { - return this.getRuleContext(0, AlterIndexStatementSuffixContext); + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ON, 0); + } + public tableOrPartition(): TableOrPartitionContext | null { + return this.getRuleContext(0, TableOrPartitionContext); + } + public KW_REBUILD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REBUILD, 0); } public KW_AS(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_AS, 0); } + public rewriteEnabled(): RewriteEnabledContext | null { + return this.getRuleContext(0, RewriteEnabledContext); + } + public rewriteDisabled(): RewriteDisabledContext | null { + return this.getRuleContext(0, RewriteDisabledContext); + } public override get ruleIndex(): number { return HiveSqlParser.RULE_alterStatement; } @@ -42511,59 +37129,147 @@ export class AlterStatementContext extends antlr.ParserRuleContext { export class AlterTableStatementSuffixContext extends antlr.ParserRuleContext { + public _exchangename?: TableNameContext; + public _cName?: Id_Context; + public _fk?: AlterForeignKeyWithNameContext; + public _spec?: PartitionTransformSpecContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | null { - return this.getRuleContext(0, AlterStatementSuffixRenameContext); + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RENAME, 0); } - public alterStatementSuffixRecoverPartitions(): AlterStatementSuffixRecoverPartitionsContext | null { - return this.getRuleContext(0, AlterStatementSuffixRecoverPartitionsContext); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TO, 0); + } + public tableNameCreate(): TableNameCreateContext | null { + return this.getRuleContext(0, TableNameCreateContext); + } + public KW_RECOVER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RECOVER, 0); + } + public KW_PARTITIONS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PARTITIONS, 0); } public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | null { return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext); } - public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | null { - return this.getRuleContext(0, AlterStatementSuffixAddPartitionsContext); + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ADD, 0); } - public alterStatementSuffixTouch(): AlterStatementSuffixTouchContext | null { - return this.getRuleContext(0, AlterStatementSuffixTouchContext); + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); } - public alterStatementSuffixArchive(): AlterStatementSuffixArchiveContext | null { - return this.getRuleContext(0, AlterStatementSuffixArchiveContext); + public partitionSpec(): PartitionSpecContext[]; + public partitionSpec(i: number): PartitionSpecContext | null; + public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null { + if (i === undefined) { + return this.getRuleContexts(PartitionSpecContext); + } + + return this.getRuleContext(i, PartitionSpecContext); } - public alterStatementSuffixUnArchive(): AlterStatementSuffixUnArchiveContext | null { - return this.getRuleContext(0, AlterStatementSuffixUnArchiveContext); + public locationPath(): LocationPathContext[]; + public locationPath(i: number): LocationPathContext | null; + public locationPath(i?: number): LocationPathContext[] | LocationPathContext | null { + if (i === undefined) { + return this.getRuleContexts(LocationPathContext); + } + + return this.getRuleContext(i, LocationPathContext); } - public alterStatementSuffixProperties(): AlterStatementSuffixPropertiesContext | null { - return this.getRuleContext(0, AlterStatementSuffixPropertiesContext); + public KW_TOUCH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TOUCH, 0); } - public alterStatementSuffixSkewedby(): AlterStatementSuffixSkewedbyContext | null { - return this.getRuleContext(0, AlterStatementSuffixSkewedbyContext); + public KW_ARCHIVE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ARCHIVE, 0); } - public alterStatementSuffixExchangePartition(): AlterStatementSuffixExchangePartitionContext | null { - return this.getRuleContext(0, AlterStatementSuffixExchangePartitionContext); + public KW_UNARCHIVE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0); } - public alterStatementPartitionKeyType(): AlterStatementPartitionKeyTypeContext | null { - return this.getRuleContext(0, AlterStatementPartitionKeyTypeContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); } - public alterStatementSuffixDropConstraint(): AlterStatementSuffixDropConstraintContext | null { - return this.getRuleContext(0, AlterStatementSuffixDropConstraintContext); + public KW_TBLPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); } - public alterStatementSuffixAddConstraint(): AlterStatementSuffixAddConstraintContext | null { - return this.getRuleContext(0, AlterStatementSuffixAddConstraintContext); + public tableProperties(): TablePropertiesContext | null { + return this.getRuleContext(0, TablePropertiesContext); + } + public KW_UNSET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNSET, 0); + } + public ifExists(): IfExistsContext | null { + return this.getRuleContext(0, IfExistsContext); + } + public tableSkewed(): TableSkewedContext | null { + return this.getRuleContext(0, TableSkewedContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_NOT, 0); + } + public KW_SKEWED(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SKEWED, 0); + } + public storedAsDirs(): StoredAsDirsContext | null { + return this.getRuleContext(0, StoredAsDirsContext); + } + public KW_EXCHANGE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_EXCHANGE, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WITH, 0); + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TABLE, 0); + } + public tableName(): TableNameContext | null { + return this.getRuleContext(0, TableNameContext); + } + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PARTITION, 0); + } + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COLUMN, 0); + } + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); + } + public columnNameType(): ColumnNameTypeContext | null { + return this.getRuleContext(0, ColumnNameTypeContext); + } + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DROP, 0); + } + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0); + } + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); + } + public alterConstraintWithName(): AlterConstraintWithNameContext | null { + return this.getRuleContext(0, AlterConstraintWithNameContext); + } + public alterForeignKeyWithName(): AlterForeignKeyWithNameContext | null { + return this.getRuleContext(0, AlterForeignKeyWithNameContext); } public alterTblPartitionStatementSuffix(): AlterTblPartitionStatementSuffixContext | null { return this.getRuleContext(0, AlterTblPartitionStatementSuffixContext); } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OWNER, 0); } - public alterStatementSuffixSetOwner(): AlterStatementSuffixSetOwnerContext | null { - return this.getRuleContext(0, AlterStatementSuffixSetOwnerContext); + public principalName(): PrincipalNameContext | null { + return this.getRuleContext(0, PrincipalNameContext); } - public alterStatementSuffixSetPartSpec(): AlterStatementSuffixSetPartSpecContext | null { - return this.getRuleContext(0, AlterStatementSuffixSetPartSpecContext); + public KW_SPEC(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SPEC, 0); + } + public partitionTransformSpec(): PartitionTransformSpecContext | null { + return this.getRuleContext(0, PartitionTransformSpecContext); } public alterStatementSuffixExecute(): AlterStatementSuffixExecuteContext | null { return this.getRuleContext(0, AlterStatementSuffixExecuteContext); @@ -42592,53 +37298,197 @@ export class AlterTableStatementSuffixContext extends antlr.ParserRuleContext { export class AlterTblPartitionStatementSuffixContext extends antlr.ParserRuleContext { + public _newLoc?: Token | null; + public _serdeName?: Token | null; + public _num?: Token | null; + public _compactType?: Token | null; + public _colName?: ColumnNameContext; + public _comment?: Token | null; + public _oldName?: ColumnNameContext; + public _newName?: ColumnNameCreateContext; + public _first?: Token | null; + public _afterCol?: Id_Context; + public _add?: Token | null; + public _replace?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alterStatementSuffixFileFormat(): AlterStatementSuffixFileFormatContext | null { - return this.getRuleContext(0, AlterStatementSuffixFileFormatContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); } - public alterStatementSuffixLocation(): AlterStatementSuffixLocationContext | null { - return this.getRuleContext(0, AlterStatementSuffixLocationContext); + public KW_FILEFORMAT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0); } - public alterStatementSuffixMergeFiles(): AlterStatementSuffixMergeFilesContext | null { - return this.getRuleContext(0, AlterStatementSuffixMergeFilesContext); + public fileFormat(): FileFormatContext | null { + return this.getRuleContext(0, FileFormatContext); } - public alterStatementSuffixSerdeProperties(): AlterStatementSuffixSerdePropertiesContext | null { - return this.getRuleContext(0, AlterStatementSuffixSerdePropertiesContext); + public KW_LOCATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LOCATION, 0); } - public alterStatementSuffixRenamePart(): AlterStatementSuffixRenamePartContext | null { - return this.getRuleContext(0, AlterStatementSuffixRenamePartContext); + public StringLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.StringLiteral, 0); } - public alterStatementSuffixBucketNum(): AlterStatementSuffixBucketNumContext | null { - return this.getRuleContext(0, AlterStatementSuffixBucketNumContext); + public KW_CONCATENATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CONCATENATE, 0); } - public alterTblPartitionStatementSuffixSkewedLocation(): AlterTblPartitionStatementSuffixSkewedLocationContext | null { - return this.getRuleContext(0, AlterTblPartitionStatementSuffixSkewedLocationContext); + public KW_SERDE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SERDE, 0); } - public alterStatementSuffixClusterbySortby(): AlterStatementSuffixClusterbySortbyContext | null { - return this.getRuleContext(0, AlterStatementSuffixClusterbySortbyContext); + public KW_SERDEPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); } - public alterStatementSuffixCompact(): AlterStatementSuffixCompactContext | null { - return this.getRuleContext(0, AlterStatementSuffixCompactContext); + public tableProperties(): TablePropertiesContext | null { + return this.getRuleContext(0, TablePropertiesContext); } - public alterStatementSuffixUpdateStatsCol(): AlterStatementSuffixUpdateStatsColContext | null { - return this.getRuleContext(0, AlterStatementSuffixUpdateStatsColContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WITH, 0); } - public alterStatementSuffixUpdateStats(): AlterStatementSuffixUpdateStatsContext | null { - return this.getRuleContext(0, AlterStatementSuffixUpdateStatsContext); + public KW_UNSET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNSET, 0); } - public alterStatementSuffixRenameCol(): AlterStatementSuffixRenameColContext | null { - return this.getRuleContext(0, AlterStatementSuffixRenameColContext); + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RENAME, 0); } - public alterStatementSuffixAddCol(): AlterStatementSuffixAddColContext | null { - return this.getRuleContext(0, AlterStatementSuffixAddColContext); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TO, 0); } - public alterStatementSuffixUpdateColumns(): AlterStatementSuffixUpdateColumnsContext | null { - return this.getRuleContext(0, AlterStatementSuffixUpdateColumnsContext); + public partitionSpec(): PartitionSpecContext | null { + return this.getRuleContext(0, PartitionSpecContext); } - public alterStatementSuffixProtections(): AlterStatementSuffixProtectionsContext | null { - return this.getRuleContext(0, AlterStatementSuffixProtectionsContext); + public KW_INTO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_INTO, 0); + } + public KW_BUCKETS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_BUCKETS, 0); + } + public Number(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.Number, 0); + } + public KW_SKEWED(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SKEWED, 0); + } + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); + } + public skewedLocationMap(): SkewedLocationMapContext[]; + public skewedLocationMap(i: number): SkewedLocationMapContext | null; + public skewedLocationMap(i?: number): SkewedLocationMapContext[] | SkewedLocationMapContext | null { + if (i === undefined) { + return this.getRuleContexts(SkewedLocationMapContext); + } + + return this.getRuleContext(i, SkewedLocationMapContext); + } + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_NOT, 0); + } + public KW_CLUSTERED(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CLUSTERED, 0); + } + public KW_SORTED(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SORTED, 0); + } + public tableBuckets(): TableBucketsContext | null { + return this.getRuleContext(0, TableBucketsContext); + } + public KW_COMPACT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMPACT, 0); + } + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AND, 0); + } + public KW_WAIT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WAIT, 0); + } + public orderByClause(): OrderByClauseContext | null { + return this.getRuleContext(0, OrderByClauseContext); + } + public compactionPool(): CompactionPoolContext | null { + return this.getRuleContext(0, CompactionPoolContext); + } + public KW_OVERWRITE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OVERWRITE, 0); + } + public KW_TBLPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UPDATE, 0); + } + public KW_STATISTICS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_STATISTICS, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FOR, 0); + } + public columnName(): ColumnNameContext | null { + return this.getRuleContext(0, ColumnNameContext); + } + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COLUMN, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMMENT, 0); + } + public KW_CHANGE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CHANGE, 0); + } + public columnType(): ColumnTypeContext | null { + return this.getRuleContext(0, ColumnTypeContext); + } + public columnNameCreate(): ColumnNameCreateContext | null { + return this.getRuleContext(0, ColumnNameCreateContext); + } + public alterColumnConstraint(): AlterColumnConstraintContext | null { + return this.getRuleContext(0, AlterColumnConstraintContext); + } + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AFTER, 0); + } + public restrictOrCascade(): RestrictOrCascadeContext | null { + return this.getRuleContext(0, RestrictOrCascadeContext); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FIRST, 0); + } + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); + } + public KW_COLUMNS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COLUMNS, 0); + } + public columnNameTypeList(): ColumnNameTypeListContext | null { + return this.getRuleContext(0, ColumnNameTypeListContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ADD, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REPLACE, 0); + } + public enableSpecification(): EnableSpecificationContext | null { + return this.getRuleContext(0, EnableSpecificationContext); + } + public KW_OFFLINE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OFFLINE, 0); + } + public KW_NO_DROP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_NO_DROP, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CASCADE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_alterTblPartitionStatementSuffix; @@ -42663,60 +37513,57 @@ export class AlterTblPartitionStatementSuffixContext extends antlr.ParserRuleCon } -export class AlterStatementPartitionKeyTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PARTITION, 0)!; - } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COLUMN, 0)!; - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public columnNameType(): ColumnNameTypeContext { - return this.getRuleContext(0, ColumnNameTypeContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementPartitionKeyType; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementPartitionKeyType) { - listener.enterAlterStatementPartitionKeyType(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementPartitionKeyType) { - listener.exitAlterStatementPartitionKeyType(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementPartitionKeyType) { - return visitor.visitAlterStatementPartitionKeyType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class AlterViewStatementSuffixContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alterViewSuffixProperties(): AlterViewSuffixPropertiesContext | null { - return this.getRuleContext(0, AlterViewSuffixPropertiesContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); } - public alterStatementSuffixRename(): AlterStatementSuffixRenameContext | null { - return this.getRuleContext(0, AlterStatementSuffixRenameContext); + public KW_TBLPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); } - public alterStatementSuffixAddPartitions(): AlterStatementSuffixAddPartitionsContext | null { - return this.getRuleContext(0, AlterStatementSuffixAddPartitionsContext); + public tableProperties(): TablePropertiesContext | null { + return this.getRuleContext(0, TablePropertiesContext); + } + public KW_UNSET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNSET, 0); + } + public ifExists(): IfExistsContext | null { + return this.getRuleContext(0, IfExistsContext); + } + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RENAME, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TO, 0); + } + public tableNameCreate(): TableNameCreateContext | null { + return this.getRuleContext(0, TableNameCreateContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ADD, 0); + } + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); + } + public partitionSpec(): PartitionSpecContext[]; + public partitionSpec(i: number): PartitionSpecContext | null; + public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null { + if (i === undefined) { + return this.getRuleContexts(PartitionSpecContext); + } + + return this.getRuleContext(i, PartitionSpecContext); + } + public locationPath(): LocationPathContext[]; + public locationPath(i: number): LocationPathContext | null; + public locationPath(i?: number): LocationPathContext[] | LocationPathContext | null { + if (i === undefined) { + return this.getRuleContexts(LocationPathContext); + } + + return this.getRuleContext(i, LocationPathContext); } public alterStatementSuffixDropPartitions(): AlterStatementSuffixDropPartitionsContext | null { return this.getRuleContext(0, AlterStatementSuffixDropPartitionsContext); @@ -42747,116 +37594,39 @@ export class AlterViewStatementSuffixContext extends antlr.ParserRuleContext { } -export class AlterMaterializedViewStatementSuffixContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alterMaterializedViewSuffixRewrite(): AlterMaterializedViewSuffixRewriteContext | null { - return this.getRuleContext(0, AlterMaterializedViewSuffixRewriteContext); - } - public alterMaterializedViewSuffixRebuild(): AlterMaterializedViewSuffixRebuildContext | null { - return this.getRuleContext(0, AlterMaterializedViewSuffixRebuildContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterMaterializedViewStatementSuffix; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterMaterializedViewStatementSuffix) { - listener.enterAlterMaterializedViewStatementSuffix(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterMaterializedViewStatementSuffix) { - listener.exitAlterMaterializedViewStatementSuffix(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterMaterializedViewStatementSuffix) { - return visitor.visitAlterMaterializedViewStatementSuffix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterMaterializedViewSuffixRewriteContext extends antlr.ParserRuleContext { - public _mvRewriteFlag?: RewriteEnabledContext; - public _mvRewriteFlag2?: RewriteDisabledContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public rewriteEnabled(): RewriteEnabledContext | null { - return this.getRuleContext(0, RewriteEnabledContext); - } - public rewriteDisabled(): RewriteDisabledContext | null { - return this.getRuleContext(0, RewriteDisabledContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterMaterializedViewSuffixRewrite; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterMaterializedViewSuffixRewrite) { - listener.enterAlterMaterializedViewSuffixRewrite(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterMaterializedViewSuffixRewrite) { - listener.exitAlterMaterializedViewSuffixRewrite(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterMaterializedViewSuffixRewrite) { - return visitor.visitAlterMaterializedViewSuffixRewrite(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterMaterializedViewSuffixRebuildContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_REBUILD(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REBUILD, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterMaterializedViewSuffixRebuild; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterMaterializedViewSuffixRebuild) { - listener.enterAlterMaterializedViewSuffixRebuild(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterMaterializedViewSuffixRebuild) { - listener.exitAlterMaterializedViewSuffixRebuild(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterMaterializedViewSuffixRebuild) { - return visitor.visitAlterMaterializedViewSuffixRebuild(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class AlterDatabaseStatementSuffixContext extends antlr.ParserRuleContext { + public _name?: DbSchemaNameContext; + public _dbName?: DbSchemaNameContext; + public _newLocation?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public alterDatabaseSuffixProperties(): AlterDatabaseSuffixPropertiesContext | null { - return this.getRuleContext(0, AlterDatabaseSuffixPropertiesContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.KW_SET, 0)!; } - public alterDatabaseSuffixSetOwner(): AlterDatabaseSuffixSetOwnerContext | null { - return this.getRuleContext(0, AlterDatabaseSuffixSetOwnerContext); + public KW_DBPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0); } - public alterDatabaseSuffixSetLocation(): AlterDatabaseSuffixSetLocationContext | null { - return this.getRuleContext(0, AlterDatabaseSuffixSetLocationContext); + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); + } + public dbSchemaName(): DbSchemaNameContext { + return this.getRuleContext(0, DbSchemaNameContext)!; + } + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OWNER, 0); + } + public principalAlterName(): PrincipalAlterNameContext | null { + return this.getRuleContext(0, PrincipalAlterNameContext); + } + public KW_LOCATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LOCATION, 0); + } + public KW_MANAGEDLOCATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); + } + public StringLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.StringLiteral, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_alterDatabaseStatementSuffix; @@ -42881,459 +37651,53 @@ export class AlterDatabaseStatementSuffixContext extends antlr.ParserRuleContext } -export class AlterDatabaseSuffixPropertiesContext extends antlr.ParserRuleContext { +export class AlterDataConnectorStatementSuffixContext extends antlr.ParserRuleContext { public _name?: DbSchemaNameContext; + public _dcName?: DbSchemaNameContext; + public _newUri?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public KW_SET(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_SET, 0)!; } - public KW_DBPROPERTIES(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DBPROPERTIES, 0)!; + public KW_DCPROPERTIES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0); } - public dbProperties(): DbPropertiesContext { - return this.getRuleContext(0, DbPropertiesContext)!; + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public dbSchemaName(): DbSchemaNameContext { return this.getRuleContext(0, DbSchemaNameContext)!; } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDatabaseSuffixProperties; + public KW_OWNER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OWNER, 0); } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDatabaseSuffixProperties) { - listener.enterAlterDatabaseSuffixProperties(this); - } + public principalAlterName(): PrincipalAlterNameContext | null { + return this.getRuleContext(0, PrincipalAlterNameContext); } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDatabaseSuffixProperties) { - listener.exitAlterDatabaseSuffixProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDatabaseSuffixProperties) { - return visitor.visitAlterDatabaseSuffixProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDatabaseSuffixSetOwnerContext extends antlr.ParserRuleContext { - public _dbName?: DbSchemaNameContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_OWNER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OWNER, 0)!; - } - public principalAlterName(): PrincipalAlterNameContext { - return this.getRuleContext(0, PrincipalAlterNameContext)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDatabaseSuffixSetOwner; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDatabaseSuffixSetOwner) { - listener.enterAlterDatabaseSuffixSetOwner(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDatabaseSuffixSetOwner) { - listener.exitAlterDatabaseSuffixSetOwner(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDatabaseSuffixSetOwner) { - return visitor.visitAlterDatabaseSuffixSetOwner(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDatabaseSuffixSetLocationContext extends antlr.ParserRuleContext { - public _dbName?: DbSchemaNameContext; - public _newLocation?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public KW_LOCATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_LOCATION, 0); - } - public KW_MANAGEDLOCATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0); - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDatabaseSuffixSetLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDatabaseSuffixSetLocation) { - listener.enterAlterDatabaseSuffixSetLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDatabaseSuffixSetLocation) { - listener.exitAlterDatabaseSuffixSetLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDatabaseSuffixSetLocation) { - return visitor.visitAlterDatabaseSuffixSetLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDatabaseSuffixSetManagedLocationContext extends antlr.ParserRuleContext { - public _dbName?: DbSchemaNameContext; - public _newLocation?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_MANAGEDLOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MANAGEDLOCATION, 0)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDatabaseSuffixSetManagedLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDatabaseSuffixSetManagedLocation) { - listener.enterAlterDatabaseSuffixSetManagedLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDatabaseSuffixSetManagedLocation) { - listener.exitAlterDatabaseSuffixSetManagedLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDatabaseSuffixSetManagedLocation) { - return visitor.visitAlterDatabaseSuffixSetManagedLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixRenameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TO, 0)!; - } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixRename; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixRename) { - listener.enterAlterStatementSuffixRename(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixRename) { - listener.exitAlterStatementSuffixRename(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixRename) { - return visitor.visitAlterStatementSuffixRename(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixAddColContext extends antlr.ParserRuleContext { - public _add?: Token | null; - public _replace?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COLUMNS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COLUMNS, 0)!; - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public columnNameTypeList(): ColumnNameTypeListContext { - return this.getRuleContext(0, ColumnNameTypeListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ADD, 0); - } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_REPLACE, 0); - } - public restrictOrCascade(): RestrictOrCascadeContext | null { - return this.getRuleContext(0, RestrictOrCascadeContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixAddCol; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixAddCol) { - listener.enterAlterStatementSuffixAddCol(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixAddCol) { - listener.exitAlterStatementSuffixAddCol(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixAddCol) { - return visitor.visitAlterStatementSuffixAddCol(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixAddConstraintContext extends antlr.ParserRuleContext { - public _fk?: AlterForeignKeyWithNameContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ADD(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ADD, 0)!; - } - public alterConstraintWithName(): AlterConstraintWithNameContext | null { - return this.getRuleContext(0, AlterConstraintWithNameContext); - } - public alterForeignKeyWithName(): AlterForeignKeyWithNameContext | null { - return this.getRuleContext(0, AlterForeignKeyWithNameContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixAddConstraint; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixAddConstraint) { - listener.enterAlterStatementSuffixAddConstraint(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixAddConstraint) { - listener.exitAlterStatementSuffixAddConstraint(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixAddConstraint) { - return visitor.visitAlterStatementSuffixAddConstraint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixUpdateColumnsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UPDATE, 0)!; - } - public KW_COLUMNS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COLUMNS, 0)!; - } - public restrictOrCascade(): RestrictOrCascadeContext | null { - return this.getRuleContext(0, RestrictOrCascadeContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixUpdateColumns; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixUpdateColumns) { - listener.enterAlterStatementSuffixUpdateColumns(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixUpdateColumns) { - listener.exitAlterStatementSuffixUpdateColumns(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixUpdateColumns) { - return visitor.visitAlterStatementSuffixUpdateColumns(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixProtectionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public enableSpecification(): EnableSpecificationContext { - return this.getRuleContext(0, EnableSpecificationContext)!; - } - public KW_NO_DROP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_NO_DROP, 0); - } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_CASCADE, 0); - } - public KW_OFFLINE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_OFFLINE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixProtections; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixProtections) { - listener.enterAlterStatementSuffixProtections(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixProtections) { - listener.exitAlterStatementSuffixProtections(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixProtections) { - return visitor.visitAlterStatementSuffixProtections(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixDropConstraintContext extends antlr.ParserRuleContext { - public _cName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DROP, 0)!; - } - public KW_CONSTRAINT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CONSTRAINT, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixDropConstraint; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixDropConstraint) { - listener.enterAlterStatementSuffixDropConstraint(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixDropConstraint) { - listener.exitAlterStatementSuffixDropConstraint(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixDropConstraint) { - return visitor.visitAlterStatementSuffixDropConstraint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixRenameColContext extends antlr.ParserRuleContext { - public _oldName?: ColumnNameContext; - public _newName?: ColumnNameCreateContext; - public _comment?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CHANGE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CHANGE, 0)!; - } - public colType(): ColTypeContext { - return this.getRuleContext(0, ColTypeContext)!; - } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; - } - public columnNameCreate(): ColumnNameCreateContext { - return this.getRuleContext(0, ColumnNameCreateContext)!; - } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COLUMN, 0); - } - public alterColumnConstraint(): AlterColumnConstraintContext | null { - return this.getRuleContext(0, AlterColumnConstraintContext); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COMMENT, 0); - } - public alterStatementChangeColPosition(): AlterStatementChangeColPositionContext | null { - return this.getRuleContext(0, AlterStatementChangeColPositionContext); - } - public restrictOrCascade(): RestrictOrCascadeContext | null { - return this.getRuleContext(0, RestrictOrCascadeContext); + public KW_URL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_URL, 0); } public StringLiteral(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.StringLiteral, 0); } public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixRenameCol; + return HiveSqlParser.RULE_alterDataConnectorStatementSuffix; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixRenameCol) { - listener.enterAlterStatementSuffixRenameCol(this); + if(listener.enterAlterDataConnectorStatementSuffix) { + listener.enterAlterDataConnectorStatementSuffix(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixRenameCol) { - listener.exitAlterStatementSuffixRenameCol(this); + if(listener.exitAlterDataConnectorStatementSuffix) { + listener.exitAlterDataConnectorStatementSuffix(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixRenameCol) { - return visitor.visitAlterStatementSuffixRenameCol(this); + if (visitor.visitAlterDataConnectorStatementSuffix) { + return visitor.visitAlterDataConnectorStatementSuffix(this); } else { return visitor.visitChildren(this); } @@ -43341,332 +37705,7 @@ export class AlterStatementSuffixRenameColContext extends antlr.ParserRuleContex } -export class AlterStatementSuffixUpdateStatsColContext extends antlr.ParserRuleContext { - public _colName?: ColumnNameContext; - public _comment?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UPDATE, 0)!; - } - public KW_STATISTICS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FOR, 0)!; - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public tableProperties(): TablePropertiesContext { - return this.getRuleContext(0, TablePropertiesContext)!; - } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; - } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COLUMN, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COMMENT, 0); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixUpdateStatsCol; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixUpdateStatsCol) { - listener.enterAlterStatementSuffixUpdateStatsCol(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixUpdateStatsCol) { - listener.exitAlterStatementSuffixUpdateStatsCol(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixUpdateStatsCol) { - return visitor.visitAlterStatementSuffixUpdateStatsCol(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixUpdateStatsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UPDATE, 0)!; - } - public KW_STATISTICS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!; - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public tableProperties(): TablePropertiesContext { - return this.getRuleContext(0, TablePropertiesContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixUpdateStats; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixUpdateStats) { - listener.enterAlterStatementSuffixUpdateStats(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixUpdateStats) { - listener.exitAlterStatementSuffixUpdateStats(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixUpdateStats) { - return visitor.visitAlterStatementSuffixUpdateStats(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementChangeColPositionContext extends antlr.ParserRuleContext { - public _first?: Token | null; - public _afterCol?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_FIRST, 0); - } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AFTER, 0); - } - public id_(): Id_Context | null { - return this.getRuleContext(0, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementChangeColPosition; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementChangeColPosition) { - listener.enterAlterStatementChangeColPosition(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementChangeColPosition) { - listener.exitAlterStatementChangeColPosition(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementChangeColPosition) { - return visitor.visitAlterStatementChangeColPosition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixAddPartitionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ADD(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ADD, 0)!; - } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); - } - public alterStatementSuffixAddPartitionsElement(): AlterStatementSuffixAddPartitionsElementContext[]; - public alterStatementSuffixAddPartitionsElement(i: number): AlterStatementSuffixAddPartitionsElementContext | null; - public alterStatementSuffixAddPartitionsElement(i?: number): AlterStatementSuffixAddPartitionsElementContext[] | AlterStatementSuffixAddPartitionsElementContext | null { - if (i === undefined) { - return this.getRuleContexts(AlterStatementSuffixAddPartitionsElementContext); - } - - return this.getRuleContext(i, AlterStatementSuffixAddPartitionsElementContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixAddPartitions; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixAddPartitions) { - listener.enterAlterStatementSuffixAddPartitions(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixAddPartitions) { - listener.exitAlterStatementSuffixAddPartitions(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixAddPartitions) { - return visitor.visitAlterStatementSuffixAddPartitions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixAddPartitionsElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public partitionSpec(): PartitionSpecContext { - return this.getRuleContext(0, PartitionSpecContext)!; - } - public partitionLocation(): PartitionLocationContext | null { - return this.getRuleContext(0, PartitionLocationContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixAddPartitionsElement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixAddPartitionsElement) { - listener.enterAlterStatementSuffixAddPartitionsElement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixAddPartitionsElement) { - listener.exitAlterStatementSuffixAddPartitionsElement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixAddPartitionsElement) { - return visitor.visitAlterStatementSuffixAddPartitionsElement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixTouchContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TOUCH(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TOUCH, 0)!; - } - public partitionSpec(): PartitionSpecContext[]; - public partitionSpec(i: number): PartitionSpecContext | null; - public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null { - if (i === undefined) { - return this.getRuleContexts(PartitionSpecContext); - } - - return this.getRuleContext(i, PartitionSpecContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixTouch; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixTouch) { - listener.enterAlterStatementSuffixTouch(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixTouch) { - listener.exitAlterStatementSuffixTouch(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixTouch) { - return visitor.visitAlterStatementSuffixTouch(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixArchiveContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ARCHIVE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ARCHIVE, 0)!; - } - public partitionSpec(): PartitionSpecContext[]; - public partitionSpec(i: number): PartitionSpecContext | null; - public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null { - if (i === undefined) { - return this.getRuleContexts(PartitionSpecContext); - } - - return this.getRuleContext(i, PartitionSpecContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixArchive; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixArchive) { - listener.enterAlterStatementSuffixArchive(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixArchive) { - listener.exitAlterStatementSuffixArchive(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixArchive) { - return visitor.visitAlterStatementSuffixArchive(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixUnArchiveContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UNARCHIVE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UNARCHIVE, 0)!; - } - public partitionSpec(): PartitionSpecContext[]; - public partitionSpec(i: number): PartitionSpecContext | null; - public partitionSpec(i?: number): PartitionSpecContext[] | PartitionSpecContext | null { - if (i === undefined) { - return this.getRuleContexts(PartitionSpecContext); - } - - return this.getRuleContext(i, PartitionSpecContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixUnArchive; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixUnArchive) { - listener.enterAlterStatementSuffixUnArchive(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixUnArchive) { - listener.exitAlterStatementSuffixUnArchive(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixUnArchive) { - return visitor.visitAlterStatementSuffixUnArchive(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PartitionLocationContext extends antlr.ParserRuleContext { +export class LocationPathContext extends antlr.ParserRuleContext { public _locn?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -43678,54 +37717,21 @@ export class PartitionLocationContext extends antlr.ParserRuleContext { return this.getToken(HiveSqlParser.StringLiteral, 0)!; } public override get ruleIndex(): number { - return HiveSqlParser.RULE_partitionLocation; + return HiveSqlParser.RULE_locationPath; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPartitionLocation) { - listener.enterPartitionLocation(this); + if(listener.enterLocationPath) { + listener.enterLocationPath(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPartitionLocation) { - listener.exitPartitionLocation(this); + if(listener.exitLocationPath) { + listener.exitLocationPath(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPartitionLocation) { - return visitor.visitPartitionLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixRecoverPartitionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RECOVER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RECOVER, 0)!; - } - public KW_PARTITIONS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PARTITIONS, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixRecoverPartitions; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixRecoverPartitions) { - listener.enterAlterStatementSuffixRecoverPartitions(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixRecoverPartitions) { - listener.exitAlterStatementSuffixRecoverPartitions(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixRecoverPartitions) { - return visitor.visitAlterStatementSuffixRecoverPartitions(this); + if (visitor.visitLocationPath) { + return visitor.visitLocationPath(this); } else { return visitor.visitChildren(this); } @@ -43770,8 +37776,11 @@ export class AlterStatementSuffixDropPartitionsContext extends antlr.ParserRuleC return this.getToken(HiveSqlParser.COMMA, i); } } - public dropPartitionsIgnoreClause(): DropPartitionsIgnoreClauseContext | null { - return this.getRuleContext(0, DropPartitionsIgnoreClauseContext); + public KW_IGNORE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_IGNORE, 0); + } + public KW_PROTECTION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PROTECTION, 0); } public KW_PURGE(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_PURGE, 0); @@ -43802,369 +37811,7 @@ export class AlterStatementSuffixDropPartitionsContext extends antlr.ParserRuleC } -export class AlterStatementSuffixPropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SET, 0); - } - public KW_TBLPROPERTIES(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0)!; - } - public tableProperties(): TablePropertiesContext { - return this.getRuleContext(0, TablePropertiesContext)!; - } - public KW_UNSET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNSET, 0); - } - public ifExists(): IfExistsContext | null { - return this.getRuleContext(0, IfExistsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixProperties) { - listener.enterAlterStatementSuffixProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixProperties) { - listener.exitAlterStatementSuffixProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixProperties) { - return visitor.visitAlterStatementSuffixProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterViewSuffixPropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SET, 0); - } - public KW_TBLPROPERTIES(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0)!; - } - public tableProperties(): TablePropertiesContext { - return this.getRuleContext(0, TablePropertiesContext)!; - } - public KW_UNSET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNSET, 0); - } - public ifExists(): IfExistsContext | null { - return this.getRuleContext(0, IfExistsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterViewSuffixProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterViewSuffixProperties) { - listener.enterAlterViewSuffixProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterViewSuffixProperties) { - listener.exitAlterViewSuffixProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterViewSuffixProperties) { - return visitor.visitAlterViewSuffixProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixSerdePropertiesContext extends antlr.ParserRuleContext { - public _serdeName?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SET, 0); - } - public KW_SERDE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SERDE, 0); - } - public KW_SERDEPROPERTIES(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SERDEPROPERTIES, 0); - } - public tableProperties(): TablePropertiesContext | null { - return this.getRuleContext(0, TablePropertiesContext); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public KW_UNSET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNSET, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixSerdeProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixSerdeProperties) { - listener.enterAlterStatementSuffixSerdeProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixSerdeProperties) { - listener.exitAlterStatementSuffixSerdeProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixSerdeProperties) { - return visitor.visitAlterStatementSuffixSerdeProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TablePartitionPrefixContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_tablePartitionPrefix; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTablePartitionPrefix) { - listener.enterTablePartitionPrefix(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTablePartitionPrefix) { - listener.exitTablePartitionPrefix(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTablePartitionPrefix) { - return visitor.visitTablePartitionPrefix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixFileFormatContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_FILEFORMAT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FILEFORMAT, 0)!; - } - public fileFormat(): FileFormatContext { - return this.getRuleContext(0, FileFormatContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixFileFormat; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixFileFormat) { - listener.enterAlterStatementSuffixFileFormat(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixFileFormat) { - listener.exitAlterStatementSuffixFileFormat(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixFileFormat) { - return visitor.visitAlterStatementSuffixFileFormat(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixClusterbySortbyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_NOT, 0); - } - public KW_CLUSTERED(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_CLUSTERED, 0); - } - public KW_SORTED(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SORTED, 0); - } - public tableBuckets(): TableBucketsContext | null { - return this.getRuleContext(0, TableBucketsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixClusterbySortby; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixClusterbySortby) { - listener.enterAlterStatementSuffixClusterbySortby(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixClusterbySortby) { - listener.exitAlterStatementSuffixClusterbySortby(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixClusterbySortby) { - return visitor.visitAlterStatementSuffixClusterbySortby(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterTblPartitionStatementSuffixSkewedLocationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_SKEWED(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SKEWED, 0)!; - } - public KW_LOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_LOCATION, 0)!; - } - public skewedLocations(): SkewedLocationsContext { - return this.getRuleContext(0, SkewedLocationsContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterTblPartitionStatementSuffixSkewedLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterTblPartitionStatementSuffixSkewedLocation) { - listener.enterAlterTblPartitionStatementSuffixSkewedLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterTblPartitionStatementSuffixSkewedLocation) { - listener.exitAlterTblPartitionStatementSuffixSkewedLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterTblPartitionStatementSuffixSkewedLocation) { - return visitor.visitAlterTblPartitionStatementSuffixSkewedLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SkewedLocationsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public skewedLocationsList(): SkewedLocationsListContext { - return this.getRuleContext(0, SkewedLocationsListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_skewedLocations; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSkewedLocations) { - listener.enterSkewedLocations(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSkewedLocations) { - listener.exitSkewedLocations(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSkewedLocations) { - return visitor.visitSkewedLocations(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SkewedLocationsListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public skewedLocationMap(): SkewedLocationMapContext[]; - public skewedLocationMap(i: number): SkewedLocationMapContext | null; - public skewedLocationMap(i?: number): SkewedLocationMapContext[] | SkewedLocationMapContext | null { - if (i === undefined) { - return this.getRuleContexts(SkewedLocationMapContext); - } - - return this.getRuleContext(i, SkewedLocationMapContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_skewedLocationsList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSkewedLocationsList) { - listener.enterSkewedLocationsList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSkewedLocationsList) { - listener.exitSkewedLocationsList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSkewedLocationsList) { - return visitor.visitSkewedLocationsList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class SkewedLocationMapContext extends antlr.ParserRuleContext { - public _key?: SkewedValueLocationElementContext; public _value?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -44172,12 +37819,15 @@ export class SkewedLocationMapContext extends antlr.ParserRuleContext { public EQUAL(): antlr.TerminalNode { return this.getToken(HiveSqlParser.EQUAL, 0)!; } - public skewedValueLocationElement(): SkewedValueLocationElementContext { - return this.getRuleContext(0, SkewedValueLocationElementContext)!; - } public StringLiteral(): antlr.TerminalNode { return this.getToken(HiveSqlParser.StringLiteral, 0)!; } + public constant(): ConstantContext | null { + return this.getRuleContext(0, ConstantContext); + } + public skewedColumnValuePair(): SkewedColumnValuePairContext | null { + return this.getRuleContext(0, SkewedColumnValuePairContext); + } public override get ruleIndex(): number { return HiveSqlParser.RULE_skewedLocationMap; } @@ -44201,491 +37851,6 @@ export class SkewedLocationMapContext extends antlr.ParserRuleContext { } -export class AlterStatementSuffixLocationContext extends antlr.ParserRuleContext { - public _newLoc?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_LOCATION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_LOCATION, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixLocation; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixLocation) { - listener.enterAlterStatementSuffixLocation(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixLocation) { - listener.exitAlterStatementSuffixLocation(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixLocation) { - return visitor.visitAlterStatementSuffixLocation(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixSkewedbyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableSkewed(): TableSkewedContext | null { - return this.getRuleContext(0, TableSkewedContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_NOT, 0); - } - public KW_SKEWED(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SKEWED, 0); - } - public storedAsDirs(): StoredAsDirsContext | null { - return this.getRuleContext(0, StoredAsDirsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixSkewedby; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixSkewedby) { - listener.enterAlterStatementSuffixSkewedby(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixSkewedby) { - listener.exitAlterStatementSuffixSkewedby(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixSkewedby) { - return visitor.visitAlterStatementSuffixSkewedby(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixExchangePartitionContext extends antlr.ParserRuleContext { - public _exchangename?: TableNameContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_EXCHANGE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_EXCHANGE, 0)!; - } - public partitionSpec(): PartitionSpecContext { - return this.getRuleContext(0, PartitionSpecContext)!; - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WITH, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixExchangePartition; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixExchangePartition) { - listener.enterAlterStatementSuffixExchangePartition(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixExchangePartition) { - listener.exitAlterStatementSuffixExchangePartition(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixExchangePartition) { - return visitor.visitAlterStatementSuffixExchangePartition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixRenamePartContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TO, 0)!; - } - public partitionSpec(): PartitionSpecContext { - return this.getRuleContext(0, PartitionSpecContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixRenamePart; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixRenamePart) { - listener.enterAlterStatementSuffixRenamePart(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixRenamePart) { - listener.exitAlterStatementSuffixRenamePart(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixRenamePart) { - return visitor.visitAlterStatementSuffixRenamePart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixStatsPartContext extends antlr.ParserRuleContext { - public _colName?: ColumnNameContext; - public _comment?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UPDATE, 0)!; - } - public KW_STATISTICS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_STATISTICS, 0)!; - } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FOR, 0)!; - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public tableProperties(): TablePropertiesContext { - return this.getRuleContext(0, TablePropertiesContext)!; - } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; - } - public KW_COLUMN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COLUMN, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_COMMENT, 0); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixStatsPart; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixStatsPart) { - listener.enterAlterStatementSuffixStatsPart(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixStatsPart) { - listener.exitAlterStatementSuffixStatsPart(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixStatsPart) { - return visitor.visitAlterStatementSuffixStatsPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixMergeFilesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CONCATENATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CONCATENATE, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixMergeFiles; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixMergeFiles) { - listener.enterAlterStatementSuffixMergeFiles(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixMergeFiles) { - listener.exitAlterStatementSuffixMergeFiles(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixMergeFiles) { - return visitor.visitAlterStatementSuffixMergeFiles(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixBucketNumContext extends antlr.ParserRuleContext { - public _num?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_INTO, 0)!; - } - public KW_BUCKETS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_BUCKETS, 0)!; - } - public Number(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.Number, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixBucketNum; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixBucketNum) { - listener.enterAlterStatementSuffixBucketNum(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixBucketNum) { - listener.exitAlterStatementSuffixBucketNum(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixBucketNum) { - return visitor.visitAlterStatementSuffixBucketNum(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BlockingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_AND(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_AND, 0)!; - } - public KW_WAIT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WAIT, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_blocking; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterBlocking) { - listener.enterBlocking(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitBlocking) { - listener.exitBlocking(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitBlocking) { - return visitor.visitBlocking(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CompactPoolContext extends antlr.ParserRuleContext { - public _poolName?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_POOL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_POOL, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_compactPool; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCompactPool) { - listener.enterCompactPool(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCompactPool) { - listener.exitCompactPool(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCompactPool) { - return visitor.visitCompactPool(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixCompactContext extends antlr.ParserRuleContext { - public _compactType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMPACT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COMPACT, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public blocking(): BlockingContext | null { - return this.getRuleContext(0, BlockingContext); - } - public tableImplBuckets(): TableImplBucketsContext | null { - return this.getRuleContext(0, TableImplBucketsContext); - } - public orderByClause(): OrderByClauseContext | null { - return this.getRuleContext(0, OrderByClauseContext); - } - public compactPool(): CompactPoolContext | null { - return this.getRuleContext(0, CompactPoolContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public KW_OVERWRITE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_OVERWRITE, 0); - } - public KW_TBLPROPERTIES(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TBLPROPERTIES, 0); - } - public tableProperties(): TablePropertiesContext | null { - return this.getRuleContext(0, TablePropertiesContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixCompact; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixCompact) { - listener.enterAlterStatementSuffixCompact(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixCompact) { - listener.exitAlterStatementSuffixCompact(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixCompact) { - return visitor.visitAlterStatementSuffixCompact(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixSetOwnerContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_OWNER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OWNER, 0)!; - } - public principalName(): PrincipalNameContext { - return this.getRuleContext(0, PrincipalNameContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixSetOwner; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixSetOwner) { - listener.enterAlterStatementSuffixSetOwner(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixSetOwner) { - listener.exitAlterStatementSuffixSetOwner(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixSetOwner) { - return visitor.visitAlterStatementSuffixSetOwner(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterStatementSuffixSetPartSpecContext extends antlr.ParserRuleContext { - public _spec?: PartitionTransformSpecContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PARTITION, 0)!; - } - public KW_SPEC(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SPEC, 0)!; - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public partitionTransformSpec(): PartitionTransformSpecContext { - return this.getRuleContext(0, PartitionTransformSpecContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterStatementSuffixSetPartSpec; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterStatementSuffixSetPartSpec) { - listener.enterAlterStatementSuffixSetPartSpec(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterStatementSuffixSetPartSpec) { - listener.exitAlterStatementSuffixSetPartSpec(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterStatementSuffixSetPartSpec) { - return visitor.visitAlterStatementSuffixSetPartSpec(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class AlterStatementSuffixExecuteContext extends antlr.ParserRuleContext { public _rollbackParam?: Token | null; public _expireParam?: Token | null; @@ -44740,48 +37905,6 @@ export class AlterStatementSuffixExecuteContext extends antlr.ParserRuleContext } -export class AlterIndexStatementSuffixContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ON, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_REBUILD(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REBUILD, 0)!; - } - public partitionSpec(): PartitionSpecContext | null { - return this.getRuleContext(0, PartitionSpecContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterIndexStatementSuffix; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterIndexStatementSuffix) { - listener.enterAlterIndexStatementSuffix(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterIndexStatementSuffix) { - listener.exitAlterIndexStatementSuffix(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterIndexStatementSuffix) { - return visitor.visitAlterIndexStatementSuffix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class FileFormatContext extends antlr.ParserRuleContext { public _inFmt?: Token | null; public _outFmt?: Token | null; @@ -44842,163 +37965,6 @@ export class FileFormatContext extends antlr.ParserRuleContext { } -export class AlterDataConnectorStatementSuffixContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public alterDataConnectorSuffixProperties(): AlterDataConnectorSuffixPropertiesContext | null { - return this.getRuleContext(0, AlterDataConnectorSuffixPropertiesContext); - } - public alterDataConnectorSuffixSetOwner(): AlterDataConnectorSuffixSetOwnerContext | null { - return this.getRuleContext(0, AlterDataConnectorSuffixSetOwnerContext); - } - public alterDataConnectorSuffixSetUrl(): AlterDataConnectorSuffixSetUrlContext | null { - return this.getRuleContext(0, AlterDataConnectorSuffixSetUrlContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDataConnectorStatementSuffix; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDataConnectorStatementSuffix) { - listener.enterAlterDataConnectorStatementSuffix(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDataConnectorStatementSuffix) { - listener.exitAlterDataConnectorStatementSuffix(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDataConnectorStatementSuffix) { - return visitor.visitAlterDataConnectorStatementSuffix(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDataConnectorSuffixPropertiesContext extends antlr.ParserRuleContext { - public _name?: DbSchemaNameContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_DCPROPERTIES(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0)!; - } - public dcProperties(): DcPropertiesContext { - return this.getRuleContext(0, DcPropertiesContext)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDataConnectorSuffixProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDataConnectorSuffixProperties) { - listener.enterAlterDataConnectorSuffixProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDataConnectorSuffixProperties) { - listener.exitAlterDataConnectorSuffixProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDataConnectorSuffixProperties) { - return visitor.visitAlterDataConnectorSuffixProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDataConnectorSuffixSetOwnerContext extends antlr.ParserRuleContext { - public _dcName?: DbSchemaNameContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_OWNER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OWNER, 0)!; - } - public principalAlterName(): PrincipalAlterNameContext { - return this.getRuleContext(0, PrincipalAlterNameContext)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDataConnectorSuffixSetOwner; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDataConnectorSuffixSetOwner) { - listener.enterAlterDataConnectorSuffixSetOwner(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDataConnectorSuffixSetOwner) { - listener.exitAlterDataConnectorSuffixSetOwner(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDataConnectorSuffixSetOwner) { - return visitor.visitAlterDataConnectorSuffixSetOwner(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterDataConnectorSuffixSetUrlContext extends antlr.ParserRuleContext { - public _dcName?: DbSchemaNameContext; - public _newUri?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_SET, 0)!; - } - public KW_URL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_URL, 0)!; - } - public dbSchemaName(): DbSchemaNameContext { - return this.getRuleContext(0, DbSchemaNameContext)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterDataConnectorSuffixSetUrl; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterDataConnectorSuffixSetUrl) { - listener.enterAlterDataConnectorSuffixSetUrl(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterDataConnectorSuffixSetUrl) { - listener.exitAlterDataConnectorSuffixSetUrl(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterDataConnectorSuffixSetUrl) { - return visitor.visitAlterDataConnectorSuffixSetUrl(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class LikeTableOrFileContext extends antlr.ParserRuleContext { public _format?: Id_Context; public _uri?: Token | null; @@ -45086,8 +38052,8 @@ export class CreateTableStatementContext extends antlr.ParserRuleContext { public tableFileFormat(): TableFileFormatContext | null { return this.getRuleContext(0, TableFileFormatContext); } - public tableLocation(): TableLocationContext | null { - return this.getRuleContext(0, TableLocationContext); + public locationPath(): LocationPathContext | null { + return this.getRuleContext(0, LocationPathContext); } public tablePropertiesPrefixed(): TablePropertiesPrefixedContext | null { return this.getRuleContext(0, TablePropertiesPrefixedContext); @@ -45147,7 +38113,10 @@ export class CreateTableStatementContext extends antlr.ParserRuleContext { export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext { public _name?: Id_Context; - public _dcprops?: DcPropertiesContext; + public _dcType?: Token | null; + public _url?: Token | null; + public _comment?: Token | null; + public _dcprops?: KeyValuePropertiesContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -45163,14 +38132,14 @@ export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext public ifNotExists(): IfNotExistsContext | null { return this.getRuleContext(0, IfNotExistsContext); } - public dataConnectorType(): DataConnectorTypeContext | null { - return this.getRuleContext(0, DataConnectorTypeContext); + public KW_TYPE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TYPE, 0); } - public dataConnectorUrl(): DataConnectorUrlContext | null { - return this.getRuleContext(0, DataConnectorUrlContext); + public KW_URL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_URL, 0); } - public dataConnectorComment(): DataConnectorCommentContext | null { - return this.getRuleContext(0, DataConnectorCommentContext); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COMMENT, 0); } public KW_WITH(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_WITH, 0); @@ -45178,8 +38147,17 @@ export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext public KW_DCPROPERTIES(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_DCPROPERTIES, 0); } - public dcProperties(): DcPropertiesContext | null { - return this.getRuleContext(0, DcPropertiesContext); + public StringLiteral(): antlr.TerminalNode[]; + public StringLiteral(i: number): antlr.TerminalNode | null; + public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.StringLiteral); + } else { + return this.getToken(HiveSqlParser.StringLiteral, i); + } + } + public keyValueProperties(): KeyValuePropertiesContext | null { + return this.getRuleContext(0, KeyValuePropertiesContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_createDataConnectorStatement; @@ -45204,144 +38182,6 @@ export class CreateDataConnectorStatementContext extends antlr.ParserRuleContext } -export class DataConnectorCommentContext extends antlr.ParserRuleContext { - public _comment?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_COMMENT, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dataConnectorComment; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDataConnectorComment) { - listener.enterDataConnectorComment(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDataConnectorComment) { - listener.exitDataConnectorComment(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDataConnectorComment) { - return visitor.visitDataConnectorComment(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DataConnectorUrlContext extends antlr.ParserRuleContext { - public _url?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_URL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_URL, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dataConnectorUrl; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDataConnectorUrl) { - listener.enterDataConnectorUrl(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDataConnectorUrl) { - listener.exitDataConnectorUrl(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDataConnectorUrl) { - return visitor.visitDataConnectorUrl(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DataConnectorTypeContext extends antlr.ParserRuleContext { - public _dcType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TYPE, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dataConnectorType; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDataConnectorType) { - listener.enterDataConnectorType(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDataConnectorType) { - listener.exitDataConnectorType(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDataConnectorType) { - return visitor.visitDataConnectorType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DcPropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public dbPropertiesList(): DbPropertiesListContext { - return this.getRuleContext(0, DbPropertiesListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dcProperties; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDcProperties) { - listener.enterDcProperties(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDcProperties) { - listener.exitDcProperties(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDcProperties) { - return visitor.visitDcProperties(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class DropDataConnectorStatementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -45429,36 +38269,6 @@ export class TableAllColumnsContext extends antlr.ParserRuleContext { } -export class DefaultValueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DEFAULT, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_defaultValue; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDefaultValue) { - listener.enterDefaultValue(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDefaultValue) { - listener.exitDefaultValue(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDefaultValue) { - return visitor.visitDefaultValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ExpressionListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -45586,8 +38396,8 @@ export class FromSourceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public uniqueJoinToken(): UniqueJoinTokenContext | null { - return this.getRuleContext(0, UniqueJoinTokenContext); + public KW_UNIQUEJOIN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNIQUEJOIN, 0); } public uniqueJoinSource(): UniqueJoinSourceContext[]; public uniqueJoinSource(i: number): UniqueJoinSourceContext | null; @@ -45823,18 +38633,36 @@ export class JoinSourcePartContext extends antlr.ParserRuleContext { export class UniqueJoinSourceContext extends antlr.ParserRuleContext { + public _tabname?: TableOrViewContext; + public _ts?: TableSampleContext; + public _alias?: Id_Context; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public uniqueJoinTableSource(): UniqueJoinTableSourceContext { - return this.getRuleContext(0, UniqueJoinTableSourceContext)!; + public LPAREN(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.LPAREN, 0)!; } - public uniqueJoinExpr(): UniqueJoinExprContext { - return this.getRuleContext(0, UniqueJoinExprContext)!; + public expressionList(): ExpressionListContext { + return this.getRuleContext(0, ExpressionListContext)!; + } + public RPAREN(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.RPAREN, 0)!; + } + public tableOrView(): TableOrViewContext { + return this.getRuleContext(0, TableOrViewContext)!; } public KW_PRESERVE(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_PRESERVE, 0); } + public tableSample(): TableSampleContext | null { + return this.getRuleContext(0, TableSampleContext); + } + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AS, 0); + } public override get ruleIndex(): number { return HiveSqlParser.RULE_uniqueJoinSource; } @@ -45858,72 +38686,6 @@ export class UniqueJoinSourceContext extends antlr.ParserRuleContext { } -export class UniqueJoinExprContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public expressionList(): ExpressionListContext { - return this.getRuleContext(0, ExpressionListContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_uniqueJoinExpr; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUniqueJoinExpr) { - listener.enterUniqueJoinExpr(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUniqueJoinExpr) { - listener.exitUniqueJoinExpr(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUniqueJoinExpr) { - return visitor.visitUniqueJoinExpr(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class UniqueJoinTokenContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UNIQUEJOIN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UNIQUEJOIN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_uniqueJoinToken; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUniqueJoinToken) { - listener.enterUniqueJoinToken(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUniqueJoinToken) { - listener.exitUniqueJoinToken(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUniqueJoinToken) { - return visitor.visitUniqueJoinToken(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class JoinTokenContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -46098,7 +38860,7 @@ export class TableAliasContext extends antlr.ParserRuleContext { } -export class TableBucketSampleContext extends antlr.ParserRuleContext { +export class TableSampleContext extends antlr.ParserRuleContext { public _numerator?: Token | null; public _denominator?: Token | null; public _expression?: ExpressionContext; @@ -46112,14 +38874,14 @@ export class TableBucketSampleContext extends antlr.ParserRuleContext { public LPAREN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.LPAREN, 0)!; } - public KW_BUCKET(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_BUCKET, 0)!; + public KW_BUCKET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_BUCKET, 0); } - public KW_OUT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OUT, 0)!; + public KW_OUT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OUT, 0); } - public KW_OF(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OF, 0)!; + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_OF, 0); } public RPAREN(): antlr.TerminalNode { return this.getToken(HiveSqlParser.RPAREN, 0)!; @@ -46154,45 +38916,6 @@ export class TableBucketSampleContext extends antlr.ParserRuleContext { return this.getToken(HiveSqlParser.COMMA, i); } } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_tableBucketSample; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTableBucketSample) { - listener.enterTableBucketSample(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTableBucketSample) { - listener.exitTableBucketSample(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTableBucketSample) { - return visitor.visitTableBucketSample(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SplitSampleContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TABLESAMPLE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TABLESAMPLE, 0)!; - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public Number(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Number, 0); - } public ByteLengthLiteral(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.ByteLengthLiteral, 0); } @@ -46202,39 +38925,6 @@ export class SplitSampleContext extends antlr.ParserRuleContext { public KW_ROWS(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_ROWS, 0); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_splitSample; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSplitSample) { - listener.enterSplitSample(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSplitSample) { - listener.exitSplitSample(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSplitSample) { - return visitor.visitSplitSample(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TableSampleContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableBucketSample(): TableBucketSampleContext | null { - return this.getRuleContext(0, TableBucketSampleContext); - } - public splitSample(): SplitSampleContext | null { - return this.getRuleContext(0, SplitSampleContext); - } public override get ruleIndex(): number { return HiveSqlParser.RULE_tableSample; } @@ -46364,48 +39054,6 @@ export class AsOfClauseContext extends antlr.ParserRuleContext { } -export class UniqueJoinTableSourceContext extends antlr.ParserRuleContext { - public _tabname?: TableOrViewContext; - public _ts?: TableSampleContext; - public _alias?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public tableOrView(): TableOrViewContext { - return this.getRuleContext(0, TableOrViewContext)!; - } - public tableSample(): TableSampleContext | null { - return this.getRuleContext(0, TableSampleContext); - } - public id_(): Id_Context | null { - return this.getRuleContext(0, Id_Context); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AS, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_uniqueJoinTableSource; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUniqueJoinTableSource) { - listener.enterUniqueJoinTableSource(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUniqueJoinTableSource) { - listener.exitUniqueJoinTableSource(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUniqueJoinTableSource) { - return visitor.visitUniqueJoinTableSource(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class DbSchemaNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -46723,8 +39371,14 @@ export class PartitioningSpecContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public partitionByClause(): PartitionByClauseContext | null { - return this.getRuleContext(0, PartitionByClauseContext); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_BY, 0); + } + public expressions(): ExpressionsContext | null { + return this.getRuleContext(0, ExpressionsContext); } public orderByClause(): OrderByClauseContext | null { return this.getRuleContext(0, OrderByClauseContext); @@ -46898,8 +39552,8 @@ export class WhereClauseContext extends antlr.ParserRuleContext { public KW_WHERE(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_WHERE, 0)!; } - public searchCondition(): SearchConditionContext { - return this.getRuleContext(0, SearchConditionContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override get ruleIndex(): number { return HiveSqlParser.RULE_whereClause; @@ -46924,66 +39578,6 @@ export class WhereClauseContext extends antlr.ParserRuleContext { } -export class SearchConditionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_searchCondition; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSearchCondition) { - listener.enterSearchCondition(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSearchCondition) { - listener.exitSearchCondition(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSearchCondition) { - return visitor.visitSearchCondition(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ValuesSourceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public valuesClause(): ValuesClauseContext { - return this.getRuleContext(0, ValuesClauseContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_valuesSource; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterValuesSource) { - listener.enterValuesSource(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitValuesSource) { - listener.exitValuesSource(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitValuesSource) { - return visitor.visitValuesSource(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ValuesClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -46991,8 +39585,32 @@ export class ValuesClauseContext extends antlr.ParserRuleContext { public KW_VALUES(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_VALUES, 0)!; } - public valuesTableConstructor(): ValuesTableConstructorContext { - return this.getRuleContext(0, ValuesTableConstructorContext)!; + public expressionsInParenthesis(): ExpressionsInParenthesisContext[]; + public expressionsInParenthesis(i: number): ExpressionsInParenthesisContext | null; + public expressionsInParenthesis(i?: number): ExpressionsInParenthesisContext[] | ExpressionsInParenthesisContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionsInParenthesisContext); + } + + return this.getRuleContext(i, ExpressionsInParenthesisContext); + } + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); + } + public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext | null { + return this.getRuleContext(0, FirstExpressionsWithAliasContext); + } + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_valuesClause; @@ -47017,120 +39635,6 @@ export class ValuesClauseContext extends antlr.ParserRuleContext { } -export class ValuesTableConstructorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public valueRowConstructor(): ValueRowConstructorContext[]; - public valueRowConstructor(i: number): ValueRowConstructorContext | null; - public valueRowConstructor(i?: number): ValueRowConstructorContext[] | ValueRowConstructorContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueRowConstructorContext); - } - - return this.getRuleContext(i, ValueRowConstructorContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public firstValueRowConstructor(): FirstValueRowConstructorContext | null { - return this.getRuleContext(0, FirstValueRowConstructorContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_valuesTableConstructor; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterValuesTableConstructor) { - listener.enterValuesTableConstructor(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitValuesTableConstructor) { - listener.exitValuesTableConstructor(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitValuesTableConstructor) { - return visitor.visitValuesTableConstructor(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ValueRowConstructorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expressionsInParenthesis(): ExpressionsInParenthesisContext { - return this.getRuleContext(0, ExpressionsInParenthesisContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_valueRowConstructor; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterValueRowConstructor) { - listener.enterValueRowConstructor(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitValueRowConstructor) { - listener.exitValueRowConstructor(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitValueRowConstructor) { - return visitor.visitValueRowConstructor(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FirstValueRowConstructorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public firstExpressionsWithAlias(): FirstExpressionsWithAliasContext { - return this.getRuleContext(0, FirstExpressionsWithAliasContext)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_firstValueRowConstructor; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterFirstValueRowConstructor) { - listener.enterFirstValueRowConstructor(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitFirstValueRowConstructor) { - listener.exitFirstValueRowConstructor(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitFirstValueRowConstructor) { - return visitor.visitFirstValueRowConstructor(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class VirtualTableSourceContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -47213,8 +39717,14 @@ export class SelectClauseContext extends antlr.ParserRuleContext { public KW_SELECT(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_SELECT, 0); } - public selectList(): SelectListContext | null { - return this.getRuleContext(0, SelectListContext); + public selectItem(): SelectItemContext[]; + public selectItem(i: number): SelectItemContext | null; + public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SelectItemContext); + } + + return this.getRuleContext(i, SelectItemContext); } public KW_TRANSFORM(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_TRANSFORM, 0); @@ -47225,8 +39735,20 @@ export class SelectClauseContext extends antlr.ParserRuleContext { public QUERY_HINT(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.QUERY_HINT, 0); } - public all_distinct(): All_distinctContext | null { - return this.getRuleContext(0, All_distinctContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ALL, 0); + } + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DISTINCT, 0); } public trfmClause(): TrfmClauseContext | null { return this.getRuleContext(0, TrfmClauseContext); @@ -47254,84 +39776,6 @@ export class SelectClauseContext extends antlr.ParserRuleContext { } -export class All_distinctContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ALL, 0); - } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DISTINCT, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_all_distinct; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAll_distinct) { - listener.enterAll_distinct(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAll_distinct) { - listener.exitAll_distinct(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAll_distinct) { - return visitor.visitAll_distinct(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class SelectListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public selectItem(): SelectItemContext[]; - public selectItem(i: number): SelectItemContext | null; - public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SelectItemContext); - } - - return this.getRuleContext(i, SelectItemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_selectList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterSelectList) { - listener.enterSelectList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitSelectList) { - listener.exitSelectList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitSelectList) { - return visitor.visitSelectList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class SelectTrfmClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -47630,14 +40074,32 @@ export class Window_clauseContext extends antlr.ParserRuleContext { public KW_WINDOW(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_WINDOW, 0)!; } - public window_defn(): Window_defnContext[]; - public window_defn(i: number): Window_defnContext | null; - public window_defn(i?: number): Window_defnContext[] | Window_defnContext | null { + public id_(): Id_Context[]; + public id_(i: number): Id_Context | null; + public id_(i?: number): Id_Context[] | Id_Context | null { if (i === undefined) { - return this.getRuleContexts(Window_defnContext); + return this.getRuleContexts(Id_Context); } - return this.getRuleContext(i, Window_defnContext); + return this.getRuleContext(i, Id_Context); + } + public KW_AS(): antlr.TerminalNode[]; + public KW_AS(i: number): antlr.TerminalNode | null; + public KW_AS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.KW_AS); + } else { + return this.getToken(HiveSqlParser.KW_AS, i); + } + } + public window_specification(): Window_specificationContext[]; + public window_specification(i: number): Window_specificationContext | null; + public window_specification(i?: number): Window_specificationContext[] | Window_specificationContext | null { + if (i === undefined) { + return this.getRuleContexts(Window_specificationContext); + } + + return this.getRuleContext(i, Window_specificationContext); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -47671,42 +40133,6 @@ export class Window_clauseContext extends antlr.ParserRuleContext { } -export class Window_defnContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_AS, 0)!; - } - public window_specification(): Window_specificationContext { - return this.getRuleContext(0, Window_specificationContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_window_defn; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWindow_defn) { - listener.enterWindow_defn(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWindow_defn) { - listener.exitWindow_defn(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWindow_defn) { - return visitor.visitWindow_defn(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Window_specificationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -47753,44 +40179,11 @@ export class Window_frameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public window_range_expression(): Window_range_expressionContext | null { - return this.getRuleContext(0, Window_range_expressionContext); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ROWS, 0); } - public window_value_expression(): Window_value_expressionContext | null { - return this.getRuleContext(0, Window_value_expressionContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_window_frame; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWindow_frame) { - listener.enterWindow_frame(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWindow_frame) { - listener.exitWindow_frame(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWindow_frame) { - return visitor.visitWindow_frame(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Window_range_expressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ROWS(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ROWS, 0)!; - } - public window_frame_start_boundary(): Window_frame_start_boundaryContext | null { - return this.getRuleContext(0, Window_frame_start_boundaryContext); + public KW_RANGE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RANGE, 0); } public KW_BETWEEN(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_BETWEEN, 0); @@ -47807,81 +40200,6 @@ export class Window_range_expressionContext extends antlr.ParserRuleContext { public KW_AND(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_AND, 0); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_window_range_expression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWindow_range_expression) { - listener.enterWindow_range_expression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWindow_range_expression) { - listener.exitWindow_range_expression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWindow_range_expression) { - return visitor.visitWindow_range_expression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Window_value_expressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_RANGE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RANGE, 0)!; - } - public window_frame_start_boundary(): Window_frame_start_boundaryContext | null { - return this.getRuleContext(0, Window_frame_start_boundaryContext); - } - public KW_BETWEEN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_BETWEEN, 0); - } - public window_frame_boundary(): Window_frame_boundaryContext[]; - public window_frame_boundary(i: number): Window_frame_boundaryContext | null; - public window_frame_boundary(i?: number): Window_frame_boundaryContext[] | Window_frame_boundaryContext | null { - if (i === undefined) { - return this.getRuleContexts(Window_frame_boundaryContext); - } - - return this.getRuleContext(i, Window_frame_boundaryContext); - } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AND, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_window_value_expression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWindow_value_expression) { - listener.enterWindow_value_expression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWindow_value_expression) { - listener.exitWindow_value_expression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWindow_value_expression) { - return visitor.visitWindow_value_expression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Window_frame_start_boundaryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } public KW_UNBOUNDED(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_UNBOUNDED, 0); } @@ -47898,21 +40216,21 @@ export class Window_frame_start_boundaryContext extends antlr.ParserRuleContext return this.getToken(HiveSqlParser.Number, 0); } public override get ruleIndex(): number { - return HiveSqlParser.RULE_window_frame_start_boundary; + return HiveSqlParser.RULE_window_frame; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWindow_frame_start_boundary) { - listener.enterWindow_frame_start_boundary(this); + if(listener.enterWindow_frame) { + listener.enterWindow_frame(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWindow_frame_start_boundary) { - listener.exitWindow_frame_start_boundary(this); + if(listener.exitWindow_frame) { + listener.exitWindow_frame(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWindow_frame_start_boundary) { - return visitor.visitWindow_frame_start_boundary(this); + if (visitor.visitWindow_frame) { + return visitor.visitWindow_frame(this); } else { return visitor.visitChildren(this); } @@ -47975,8 +40293,20 @@ export class GroupByClauseContext extends antlr.ParserRuleContext { public KW_BY(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0)!; } - public groupby_expression(): Groupby_expressionContext { - return this.getRuleContext(0, Groupby_expressionContext)!; + public columnName(): ColumnNameContext | null { + return this.getRuleContext(0, ColumnNameContext); + } + public rollupStandard(): RollupStandardContext | null { + return this.getRuleContext(0, RollupStandardContext); + } + public rollupOldSyntax(): RollupOldSyntaxContext | null { + return this.getRuleContext(0, RollupOldSyntaxContext); + } + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); + } + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_groupByClause; @@ -48001,78 +40331,6 @@ export class GroupByClauseContext extends antlr.ParserRuleContext { } -export class Groupby_expressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); - } - public rollupStandard(): RollupStandardContext | null { - return this.getRuleContext(0, RollupStandardContext); - } - public rollupOldSyntax(): RollupOldSyntaxContext | null { - return this.getRuleContext(0, RollupOldSyntaxContext); - } - public groupByEmpty(): GroupByEmptyContext | null { - return this.getRuleContext(0, GroupByEmptyContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_groupby_expression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterGroupby_expression) { - listener.enterGroupby_expression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitGroupby_expression) { - listener.exitGroupby_expression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitGroupby_expression) { - return visitor.visitGroupby_expression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GroupByEmptyContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_groupByEmpty; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterGroupByEmpty) { - listener.enterGroupByEmpty(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitGroupByEmpty) { - listener.exitGroupByEmpty(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitGroupByEmpty) { - return visitor.visitGroupByEmpty(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class RollupStandardContext extends antlr.ParserRuleContext { public _rollup?: Token | null; public _cube?: Token | null; @@ -48209,11 +40467,29 @@ export class GroupingSetExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public groupingSetExpressionMultiple(): GroupingSetExpressionMultipleContext | null { - return this.getRuleContext(0, GroupingSetExpressionMultipleContext); + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); } - public groupingExpressionSingle(): GroupingExpressionSingleContext | null { - return this.getRuleContext(0, GroupingExpressionSingleContext); + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_groupingSetExpression; @@ -48238,87 +40514,6 @@ export class GroupingSetExpressionContext extends antlr.ParserRuleContext { } -export class GroupingSetExpressionMultipleContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_groupingSetExpressionMultiple; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterGroupingSetExpressionMultiple) { - listener.enterGroupingSetExpressionMultiple(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitGroupingSetExpressionMultiple) { - listener.exitGroupingSetExpressionMultiple(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitGroupingSetExpressionMultiple) { - return visitor.visitGroupingSetExpressionMultiple(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GroupingExpressionSingleContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_groupingExpressionSingle; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterGroupingExpressionSingle) { - listener.enterGroupingExpressionSingle(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitGroupingExpressionSingle) { - listener.exitGroupingExpressionSingle(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitGroupingExpressionSingle) { - return visitor.visitGroupingExpressionSingle(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class HavingClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -48326,8 +40521,8 @@ export class HavingClauseContext extends antlr.ParserRuleContext { public KW_HAVING(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_HAVING, 0)!; } - public havingCondition(): HavingConditionContext { - return this.getRuleContext(0, HavingConditionContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override get ruleIndex(): number { return HiveSqlParser.RULE_havingClause; @@ -48385,29 +40580,131 @@ export class QualifyClauseContext extends antlr.ParserRuleContext { } -export class HavingConditionContext extends antlr.ParserRuleContext { +export class ExpressionOrDefaultContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DEFAULT, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public override get ruleIndex(): number { - return HiveSqlParser.RULE_havingCondition; + return HiveSqlParser.RULE_expressionOrDefault; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHavingCondition) { - listener.enterHavingCondition(this); + if(listener.enterExpressionOrDefault) { + listener.enterExpressionOrDefault(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHavingCondition) { - listener.exitHavingCondition(this); + if(listener.exitExpressionOrDefault) { + listener.exitExpressionOrDefault(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHavingCondition) { - return visitor.visitHavingCondition(this); + if (visitor.visitExpressionOrDefault) { + return visitor.visitExpressionOrDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class FirstExpressionsWithAliasContext extends antlr.ParserRuleContext { + public _first?: ExpressionContext; + public _colAlias?: Id_Context; + public _alias?: Id_Context; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_AS(): antlr.TerminalNode[]; + public KW_AS(i: number): antlr.TerminalNode | null; + public KW_AS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.KW_AS); + } else { + return this.getToken(HiveSqlParser.KW_AS, i); + } + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public id_(): Id_Context[]; + public id_(i: number): Id_Context | null; + public id_(i?: number): Id_Context[] | Id_Context | null { + if (i === undefined) { + return this.getRuleContexts(Id_Context); + } + + return this.getRuleContext(i, Id_Context); + } + public override get ruleIndex(): number { + return HiveSqlParser.RULE_firstExpressionsWithAlias; + } + public override enterRule(listener: HiveSqlParserListener): void { + if(listener.enterFirstExpressionsWithAlias) { + listener.enterFirstExpressionsWithAlias(this); + } + } + public override exitRule(listener: HiveSqlParserListener): void { + if(listener.exitFirstExpressionsWithAlias) { + listener.exitFirstExpressionsWithAlias(this); + } + } + public override accept(visitor: HiveSqlParserVisitor): Result | null { + if (visitor.visitFirstExpressionsWithAlias) { + return visitor.visitFirstExpressionsWithAlias(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ExpressionsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public expressionsInParenthesis(): ExpressionsInParenthesisContext | null { + return this.getRuleContext(0, ExpressionsInParenthesisContext); + } + public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext | null { + return this.getRuleContext(0, ExpressionsNotInParenthesisContext); + } + public override get ruleIndex(): number { + return HiveSqlParser.RULE_expressions; + } + public override enterRule(listener: HiveSqlParserListener): void { + if(listener.enterExpressions) { + listener.enterExpressions(this); + } + } + public override exitRule(listener: HiveSqlParserListener): void { + if(listener.exitExpressions) { + listener.exitExpressions(this); + } + } + public override accept(visitor: HiveSqlParserVisitor): Result | null { + if (visitor.visitExpressions) { + return visitor.visitExpressions(this); } else { return visitor.visitChildren(this); } @@ -48453,15 +40750,26 @@ export class ExpressionsInParenthesisContext extends antlr.ParserRuleContext { export class ExpressionsNotInParenthesisContext extends antlr.ParserRuleContext { public _first?: ExpressionOrDefaultContext; - public _more?: ExpressionPartContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public expressionOrDefault(): ExpressionOrDefaultContext { - return this.getRuleContext(0, ExpressionOrDefaultContext)!; + public expressionOrDefault(): ExpressionOrDefaultContext[]; + public expressionOrDefault(i: number): ExpressionOrDefaultContext | null; + public expressionOrDefault(i?: number): ExpressionOrDefaultContext[] | ExpressionOrDefaultContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionOrDefaultContext); + } + + return this.getRuleContext(i, ExpressionOrDefaultContext); } - public expressionPart(): ExpressionPartContext | null { - return this.getRuleContext(0, ExpressionPartContext); + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_expressionsNotInParenthesis; @@ -48486,306 +40794,6 @@ export class ExpressionsNotInParenthesisContext extends antlr.ParserRuleContext } -export class ExpressionPartContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public expressionOrDefault(): ExpressionOrDefaultContext[]; - public expressionOrDefault(i: number): ExpressionOrDefaultContext | null; - public expressionOrDefault(i?: number): ExpressionOrDefaultContext[] | ExpressionOrDefaultContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionOrDefaultContext); - } - - return this.getRuleContext(i, ExpressionOrDefaultContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_expressionPart; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExpressionPart) { - listener.enterExpressionPart(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExpressionPart) { - listener.exitExpressionPart(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExpressionPart) { - return visitor.visitExpressionPart(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionOrDefaultContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public defaultValue(): DefaultValueContext | null { - return this.getRuleContext(0, DefaultValueContext); - } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_expressionOrDefault; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExpressionOrDefault) { - listener.enterExpressionOrDefault(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExpressionOrDefault) { - listener.exitExpressionOrDefault(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExpressionOrDefault) { - return visitor.visitExpressionOrDefault(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class FirstExpressionsWithAliasContext extends antlr.ParserRuleContext { - public _first?: ExpressionContext; - public _colAlias?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AS, 0); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public expressionWithAlias(): ExpressionWithAliasContext[]; - public expressionWithAlias(i: number): ExpressionWithAliasContext | null; - public expressionWithAlias(i?: number): ExpressionWithAliasContext[] | ExpressionWithAliasContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionWithAliasContext); - } - - return this.getRuleContext(i, ExpressionWithAliasContext); - } - public id_(): Id_Context | null { - return this.getRuleContext(0, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_firstExpressionsWithAlias; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterFirstExpressionsWithAlias) { - listener.enterFirstExpressionsWithAlias(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitFirstExpressionsWithAlias) { - listener.exitFirstExpressionsWithAlias(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitFirstExpressionsWithAlias) { - return visitor.visitFirstExpressionsWithAlias(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionWithAliasContext extends antlr.ParserRuleContext { - public _alias?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_AS, 0); - } - public id_(): Id_Context | null { - return this.getRuleContext(0, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_expressionWithAlias; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExpressionWithAlias) { - listener.enterExpressionWithAlias(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExpressionWithAlias) { - listener.exitExpressionWithAlias(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExpressionWithAlias) { - return visitor.visitExpressionWithAlias(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExpressionsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expressionsInParenthesis(): ExpressionsInParenthesisContext | null { - return this.getRuleContext(0, ExpressionsInParenthesisContext); - } - public expressionsNotInParenthesis(): ExpressionsNotInParenthesisContext | null { - return this.getRuleContext(0, ExpressionsNotInParenthesisContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_expressions; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExpressions) { - listener.enterExpressions(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExpressions) { - listener.exitExpressions(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExpressions) { - return visitor.visitExpressions(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColumnRefOrderInParenthesisContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; - } - public columnRefOrder(): ColumnRefOrderContext[]; - public columnRefOrder(i: number): ColumnRefOrderContext | null; - public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null { - if (i === undefined) { - return this.getRuleContexts(ColumnRefOrderContext); - } - - return this.getRuleContext(i, ColumnRefOrderContext); - } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_columnRefOrderInParenthesis; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterColumnRefOrderInParenthesis) { - listener.enterColumnRefOrderInParenthesis(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitColumnRefOrderInParenthesis) { - listener.exitColumnRefOrderInParenthesis(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitColumnRefOrderInParenthesis) { - return visitor.visitColumnRefOrderInParenthesis(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ColumnRefOrderNotInParenthesisContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public columnRefOrder(): ColumnRefOrderContext[]; - public columnRefOrder(i: number): ColumnRefOrderContext | null; - public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null { - if (i === undefined) { - return this.getRuleContexts(ColumnRefOrderContext); - } - - return this.getRuleContext(i, ColumnRefOrderContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_columnRefOrderNotInParenthesis; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterColumnRefOrderNotInParenthesis) { - listener.enterColumnRefOrderNotInParenthesis(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitColumnRefOrderNotInParenthesis) { - listener.exitColumnRefOrderNotInParenthesis(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitColumnRefOrderNotInParenthesis) { - return visitor.visitColumnRefOrderNotInParenthesis(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class OrderByClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -48873,42 +40881,6 @@ export class ClusterByClauseContext extends antlr.ParserRuleContext { } -export class PartitionByClauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PARTITION, 0)!; - } - public KW_BY(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_BY, 0)!; - } - public expressions(): ExpressionsContext { - return this.getRuleContext(0, ExpressionsContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_partitionByClause; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPartitionByClause) { - listener.enterPartitionByClause(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPartitionByClause) { - listener.exitPartitionByClause(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPartitionByClause) { - return visitor.visitPartitionByClause(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class DistributeByClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -48955,11 +40927,29 @@ export class SortByClauseContext extends antlr.ParserRuleContext { public KW_BY(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_BY, 0)!; } - public columnRefOrderInParenthesis(): ColumnRefOrderInParenthesisContext | null { - return this.getRuleContext(0, ColumnRefOrderInParenthesisContext); + public LPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.LPAREN, 0); } - public columnRefOrderNotInParenthesis(): ColumnRefOrderNotInParenthesisContext | null { - return this.getRuleContext(0, ColumnRefOrderNotInParenthesisContext); + public columnRefOrder(): ColumnRefOrderContext[]; + public columnRefOrder(i: number): ColumnRefOrderContext | null; + public columnRefOrder(i?: number): ColumnRefOrderContext[] | ColumnRefOrderContext | null { + if (i === undefined) { + return this.getRuleContexts(ColumnRefOrderContext); + } + + return this.getRuleContext(i, ColumnRefOrderContext); + } + public RPAREN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.RPAREN, 0); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_sortByClause; @@ -48984,25 +40974,43 @@ export class SortByClauseContext extends antlr.ParserRuleContext { } -export class TrimFunctionContext extends antlr.ParserRuleContext { +export class Function_Context extends antlr.ParserRuleContext { public _leading?: Token | null; public _trailing?: Token | null; public _trim_characters?: SelectExpressionContext; public _str?: SelectExpressionContext; + public _star?: Token | null; + public _dist?: Token | null; + public _within?: Token | null; + public _ordBy?: OrderByClauseContext; + public _nt?: Null_treatmentContext; + public _ws?: Window_specificationContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_TRIM(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRIM, 0)!; + public KW_TRIM(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRIM, 0); } - public LPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.LPAREN, 0)!; + public LPAREN(): antlr.TerminalNode[]; + public LPAREN(i: number): antlr.TerminalNode | null; + public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.LPAREN); + } else { + return this.getToken(HiveSqlParser.LPAREN, i); + } } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FROM, 0)!; + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FROM, 0); } - public RPAREN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.RPAREN, 0)!; + public RPAREN(): antlr.TerminalNode[]; + public RPAREN(i: number): antlr.TerminalNode | null; + public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.RPAREN); + } else { + return this.getToken(HiveSqlParser.RPAREN, i); + } } public selectExpression(): SelectExpressionContext[]; public selectExpression(i: number): SelectExpressionContext | null; @@ -49022,63 +41030,9 @@ export class TrimFunctionContext extends antlr.ParserRuleContext { public KW_TRAILING(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_TRAILING, 0); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_trimFunction; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTrimFunction) { - listener.enterTrimFunction(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTrimFunction) { - listener.exitTrimFunction(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTrimFunction) { - return visitor.visitTrimFunction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class Function_Context extends antlr.ParserRuleContext { - public _star?: Token | null; - public _dist?: All_distinctContext; - public _within?: Token | null; - public _ordBy?: OrderByClauseContext; - public _nt?: Null_treatmentContext; - public _ws?: Window_specificationContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public trimFunction(): TrimFunctionContext | null { - return this.getRuleContext(0, TrimFunctionContext); - } public functionNameForInvoke(): FunctionNameForInvokeContext | null { return this.getRuleContext(0, FunctionNameForInvokeContext); } - public LPAREN(): antlr.TerminalNode[]; - public LPAREN(i: number): antlr.TerminalNode | null; - public LPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.LPAREN); - } else { - return this.getToken(HiveSqlParser.LPAREN, i); - } - } - public RPAREN(): antlr.TerminalNode[]; - public RPAREN(i: number): antlr.TerminalNode | null; - public RPAREN(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.RPAREN); - } else { - return this.getToken(HiveSqlParser.RPAREN, i); - } - } public KW_GROUP(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_GROUP, 0); } @@ -49100,17 +41054,11 @@ export class Function_Context extends antlr.ParserRuleContext { public null_treatment(): Null_treatmentContext | null { return this.getRuleContext(0, Null_treatmentContext); } - public selectExpression(): SelectExpressionContext[]; - public selectExpression(i: number): SelectExpressionContext | null; - public selectExpression(i?: number): SelectExpressionContext[] | SelectExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(SelectExpressionContext); - } - - return this.getRuleContext(i, SelectExpressionContext); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ALL, 0); } - public all_distinct(): All_distinctContext | null { - return this.getRuleContext(0, All_distinctContext); + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DISTINCT, 0); } public COMMA(): antlr.TerminalNode[]; public COMMA(i: number): antlr.TerminalNode | null; @@ -49148,12 +41096,12 @@ export class Null_treatmentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_RESPECT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_RESPECT, 0); - } public KW_NULLS(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_NULLS, 0)!; } + public KW_RESPECT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RESPECT, 0); + } public KW_IGNORE(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_IGNORE, 0); } @@ -49214,8 +41162,8 @@ export class FunctionNameForDDLContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public userDefinedFuncName(): UserDefinedFuncNameContext | null { - return this.getRuleContext(0, UserDefinedFuncNameContext); + public functionIdentifier(): FunctionIdentifierContext | null { + return this.getRuleContext(0, FunctionIdentifierContext); } public StringLiteral(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.StringLiteral, 0); @@ -49247,11 +41195,14 @@ export class FunctionNameForInvokeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public userDefinedFuncName(): UserDefinedFuncNameContext | null { - return this.getRuleContext(0, UserDefinedFuncNameContext); + public functionIdentifier(): FunctionIdentifierContext | null { + return this.getRuleContext(0, FunctionIdentifierContext); } - public internalFunctionName(): InternalFunctionNameContext | null { - return this.getRuleContext(0, InternalFunctionNameContext); + public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext | null { + return this.getRuleContext(0, Sql11ReservedKeywordsUsedAsFunctionNameContext); + } + public sysFuncNames(): SysFuncNamesContext | null { + return this.getRuleContext(0, SysFuncNamesContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_functionNameForInvoke; @@ -49276,69 +41227,6 @@ export class FunctionNameForInvokeContext extends antlr.ParserRuleContext { } -export class UserDefinedFuncNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public functionIdentifier(): FunctionIdentifierContext { - return this.getRuleContext(0, FunctionIdentifierContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_userDefinedFuncName; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUserDefinedFuncName) { - listener.enterUserDefinedFuncName(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUserDefinedFuncName) { - listener.exitUserDefinedFuncName(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUserDefinedFuncName) { - return visitor.visitUserDefinedFuncName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class InternalFunctionNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public sql11ReservedKeywordsUsedAsFunctionName(): Sql11ReservedKeywordsUsedAsFunctionNameContext | null { - return this.getRuleContext(0, Sql11ReservedKeywordsUsedAsFunctionNameContext); - } - public sysFuncNames(): SysFuncNamesContext | null { - return this.getRuleContext(0, SysFuncNamesContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_internalFunctionName; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterInternalFunctionName) { - listener.enterInternalFunctionName(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitInternalFunctionName) { - listener.exitInternalFunctionName(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitInternalFunctionName) { - return visitor.visitInternalFunctionName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class CastExpressionContext extends antlr.ParserRuleContext { public _toType?: PrimitiveTypeContext; public _fmt?: Token | null; @@ -49519,7 +41407,7 @@ export class WhenExpressionContext extends antlr.ParserRuleContext { export class FloorExpressionContext extends antlr.ParserRuleContext { - public _floorUnit?: FloorDateQualifiersContext; + public _floorUnit?: TimeQualifiersContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -49538,8 +41426,8 @@ export class FloorExpressionContext extends antlr.ParserRuleContext { public KW_TO(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_TO, 0); } - public floorDateQualifiers(): FloorDateQualifiersContext | null { - return this.getRuleContext(0, FloorDateQualifiersContext); + public timeQualifiers(): TimeQualifiersContext | null { + return this.getRuleContext(0, TimeQualifiersContext); } public override get ruleIndex(): number { return HiveSqlParser.RULE_floorExpression; @@ -49564,57 +41452,6 @@ export class FloorExpressionContext extends antlr.ParserRuleContext { } -export class FloorDateQualifiersContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public year(): YearContext | null { - return this.getRuleContext(0, YearContext); - } - public KW_QUARTER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_QUARTER, 0); - } - public month(): MonthContext | null { - return this.getRuleContext(0, MonthContext); - } - public week(): WeekContext | null { - return this.getRuleContext(0, WeekContext); - } - public day(): DayContext | null { - return this.getRuleContext(0, DayContext); - } - public hour(): HourContext | null { - return this.getRuleContext(0, HourContext); - } - public minute(): MinuteContext | null { - return this.getRuleContext(0, MinuteContext); - } - public second(): SecondContext | null { - return this.getRuleContext(0, SecondContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_floorDateQualifiers; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterFloorDateQualifiers) { - listener.enterFloorDateQualifiers(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitFloorDateQualifiers) { - listener.exitFloorDateQualifiers(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitFloorDateQualifiers) { - return visitor.visitFloorDateQualifiers(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ExtractExpressionContext extends antlr.ParserRuleContext { public _timeUnit?: TimeQualifiersContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -49713,29 +41550,46 @@ export class TimeQualifiersContext extends antlr.ParserRuleContext { export class ConstantContext extends antlr.ParserRuleContext { + public _value?: IntervalValueContext; + public _qualifiers?: IntervalQualifiersContext; + public _csName?: Token | null; + public _csLiteral?: Token | null; + public _p?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public intervalLiteral(): IntervalLiteralContext | null { - return this.getRuleContext(0, IntervalLiteralContext); + public intervalValue(): IntervalValueContext | null { + return this.getRuleContext(0, IntervalValueContext); + } + public intervalQualifiers(): IntervalQualifiersContext | null { + return this.getRuleContext(0, IntervalQualifiersContext); } public Number(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.Number, 0); } - public dateLiteral(): DateLiteralContext | null { - return this.getRuleContext(0, DateLiteralContext); + public KW_DATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DATE, 0); } - public timestampLiteral(): TimestampLiteralContext | null { - return this.getRuleContext(0, TimestampLiteralContext); + public StringLiteral(): antlr.TerminalNode[]; + public StringLiteral(i: number): antlr.TerminalNode | null; + public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.StringLiteral); + } else { + return this.getToken(HiveSqlParser.StringLiteral, i); + } } - public timestampLocalTZLiteral(): TimestampLocalTZLiteralContext | null { - return this.getRuleContext(0, TimestampLocalTZLiteralContext); + public KW_CURRENT_DATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0); } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0); } - public stringLiteralSequence(): StringLiteralSequenceContext | null { - return this.getRuleContext(0, StringLiteralSequenceContext); + public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0); + } + public KW_TIMESTAMPLOCALTZ(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0); } public IntegralLiteral(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.IntegralLiteral, 0); @@ -49743,17 +41597,26 @@ export class ConstantContext extends antlr.ParserRuleContext { public NumberLiteral(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.NumberLiteral, 0); } - public charSetStringLiteral(): CharSetStringLiteralContext | null { - return this.getRuleContext(0, CharSetStringLiteralContext); + public CharSetName(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.CharSetName, 0); } - public booleanValue(): BooleanValueContext | null { - return this.getRuleContext(0, BooleanValueContext); + public CharSetLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.CharSetLiteral, 0); + } + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRUE, 0); + } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FALSE, 0); } public KW_NULL(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_NULL, 0); } - public prepareStmtParam(): PrepareStmtParamContext | null { - return this.getRuleContext(0, PrepareStmtParamContext); + public QUESTION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.QUESTION, 0); + } + public Identifier(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.Identifier, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_constant; @@ -49778,243 +41641,6 @@ export class ConstantContext extends antlr.ParserRuleContext { } -export class PrepareStmtParamContext extends antlr.ParserRuleContext { - public _p?: ParameterIdxContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public parameterIdx(): ParameterIdxContext { - return this.getRuleContext(0, ParameterIdxContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_prepareStmtParam; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrepareStmtParam) { - listener.enterPrepareStmtParam(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrepareStmtParam) { - listener.exitPrepareStmtParam(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrepareStmtParam) { - return visitor.visitPrepareStmtParam(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ParameterIdxContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public QUESTION(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.QUESTION, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_parameterIdx; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterParameterIdx) { - listener.enterParameterIdx(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitParameterIdx) { - listener.exitParameterIdx(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitParameterIdx) { - return visitor.visitParameterIdx(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class StringLiteralSequenceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public StringLiteral(): antlr.TerminalNode[]; - public StringLiteral(i: number): antlr.TerminalNode | null; - public StringLiteral(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.StringLiteral); - } else { - return this.getToken(HiveSqlParser.StringLiteral, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_stringLiteralSequence; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterStringLiteralSequence) { - listener.enterStringLiteralSequence(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitStringLiteralSequence) { - listener.exitStringLiteralSequence(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitStringLiteralSequence) { - return visitor.visitStringLiteralSequence(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CharSetStringLiteralContext extends antlr.ParserRuleContext { - public _csName?: Token | null; - public _csLiteral?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public CharSetName(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.CharSetName, 0)!; - } - public CharSetLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.CharSetLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_charSetStringLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCharSetStringLiteral) { - listener.enterCharSetStringLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCharSetStringLiteral) { - listener.exitCharSetStringLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCharSetStringLiteral) { - return visitor.visitCharSetStringLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DateLiteralContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DATE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DATE, 0); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public KW_CURRENT_DATE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_CURRENT_DATE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dateLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDateLiteral) { - listener.enterDateLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDateLiteral) { - listener.exitDateLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDateLiteral) { - return visitor.visitDateLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TimestampLiteralContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_CURRENT_TIMESTAMP, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_timestampLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTimestampLiteral) { - listener.enterTimestampLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTimestampLiteral) { - listener.exitTimestampLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTimestampLiteral) { - return visitor.visitTimestampLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TimestampLocalTZLiteralContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TIMESTAMPLOCALTZ(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TIMESTAMPLOCALTZ, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_timestampLocalTZLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTimestampLocalTZLiteral) { - listener.enterTimestampLocalTZLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTimestampLocalTZLiteral) { - listener.exitTimestampLocalTZLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTimestampLocalTZLiteral) { - return visitor.visitTimestampLocalTZLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class IntervalValueContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50048,41 +41674,6 @@ export class IntervalValueContext extends antlr.ParserRuleContext { } -export class IntervalLiteralContext extends antlr.ParserRuleContext { - public _value?: IntervalValueContext; - public _qualifiers?: IntervalQualifiersContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public intervalValue(): IntervalValueContext { - return this.getRuleContext(0, IntervalValueContext)!; - } - public intervalQualifiers(): IntervalQualifiersContext { - return this.getRuleContext(0, IntervalQualifiersContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_intervalLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterIntervalLiteral) { - listener.enterIntervalLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitIntervalLiteral) { - listener.exitIntervalLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitIntervalLiteral) { - return visitor.visitIntervalLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class IntervalExpressionContext extends antlr.ParserRuleContext { public _value?: IntervalValueContext; public _qualifiers?: IntervalQualifiersContext; @@ -50183,8 +41774,23 @@ export class ExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public precedenceOrExpression(): PrecedenceOrExpressionContext { - return this.getRuleContext(0, PrecedenceOrExpressionContext)!; + public precedenceAndExpression(): PrecedenceAndExpressionContext[]; + public precedenceAndExpression(i: number): PrecedenceAndExpressionContext | null; + public precedenceAndExpression(i?: number): PrecedenceAndExpressionContext[] | PrecedenceAndExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(PrecedenceAndExpressionContext); + } + + return this.getRuleContext(i, PrecedenceAndExpressionContext); + } + public KW_OR(): antlr.TerminalNode[]; + public KW_OR(i: number): antlr.TerminalNode | null; + public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.KW_OR); + } else { + return this.getToken(HiveSqlParser.KW_OR, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_expression; @@ -50269,7 +41875,7 @@ export class AtomExpressionContext extends antlr.ParserRuleContext { } -export class PrecedenceFieldExpressionContext extends antlr.ParserRuleContext { +export class PrecedenceUnaryPrefixExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -50321,83 +41927,41 @@ export class PrecedenceFieldExpressionContext extends antlr.ParserRuleContext { return this.getRuleContext(i, Id_Context); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceFieldExpression; + public PLUS(): antlr.TerminalNode[]; + public PLUS(i: number): antlr.TerminalNode | null; + public PLUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.PLUS); + } else { + return this.getToken(HiveSqlParser.PLUS, i); + } } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceFieldExpression) { - listener.enterPrecedenceFieldExpression(this); - } + public MINUS(): antlr.TerminalNode[]; + public MINUS(i: number): antlr.TerminalNode | null; + public MINUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.MINUS); + } else { + return this.getToken(HiveSqlParser.MINUS, i); + } } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceFieldExpression) { - listener.exitPrecedenceFieldExpression(this); - } + public TILDE(): antlr.TerminalNode[]; + public TILDE(i: number): antlr.TerminalNode | null; + public TILDE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.TILDE); + } else { + return this.getToken(HiveSqlParser.TILDE, i); + } } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceFieldExpression) { - return visitor.visitPrecedenceFieldExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceUnaryOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.PLUS, 0); - } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.MINUS, 0); - } - public TILDE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.TILDE, 0); - } - public BITWISENOT(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.BITWISENOT, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceUnaryOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceUnaryOperator) { - listener.enterPrecedenceUnaryOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceUnaryOperator) { - listener.exitPrecedenceUnaryOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceUnaryOperator) { - return visitor.visitPrecedenceUnaryOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceUnaryPrefixExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public precedenceFieldExpression(): PrecedenceFieldExpressionContext { - return this.getRuleContext(0, PrecedenceFieldExpressionContext)!; - } - public precedenceUnaryOperator(): PrecedenceUnaryOperatorContext[]; - public precedenceUnaryOperator(i: number): PrecedenceUnaryOperatorContext | null; - public precedenceUnaryOperator(i?: number): PrecedenceUnaryOperatorContext[] | PrecedenceUnaryOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceUnaryOperatorContext); - } - - return this.getRuleContext(i, PrecedenceUnaryOperatorContext); + public BITWISENOT(): antlr.TerminalNode[]; + public BITWISENOT(i: number): antlr.TerminalNode | null; + public BITWISENOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.BITWISENOT); + } else { + return this.getToken(HiveSqlParser.BITWISENOT, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceUnaryPrefixExpression; @@ -50422,36 +41986,6 @@ export class PrecedenceUnaryPrefixExpressionContext extends antlr.ParserRuleCont } -export class PrecedenceBitwiseXorOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public BITWISEXOR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.BITWISEXOR, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceBitwiseXorOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceBitwiseXorOperator) { - listener.enterPrecedenceBitwiseXorOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceBitwiseXorOperator) { - listener.exitPrecedenceBitwiseXorOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceBitwiseXorOperator) { - return visitor.visitPrecedenceBitwiseXorOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceBitwiseXorExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50465,14 +41999,14 @@ export class PrecedenceBitwiseXorExpressionContext extends antlr.ParserRuleConte return this.getRuleContext(i, PrecedenceUnaryPrefixExpressionContext); } - public precedenceBitwiseXorOperator(): PrecedenceBitwiseXorOperatorContext[]; - public precedenceBitwiseXorOperator(i: number): PrecedenceBitwiseXorOperatorContext | null; - public precedenceBitwiseXorOperator(i?: number): PrecedenceBitwiseXorOperatorContext[] | PrecedenceBitwiseXorOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceBitwiseXorOperatorContext); - } - - return this.getRuleContext(i, PrecedenceBitwiseXorOperatorContext); + public BITWISEXOR(): antlr.TerminalNode[]; + public BITWISEXOR(i: number): antlr.TerminalNode | null; + public BITWISEXOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.BITWISEXOR); + } else { + return this.getToken(HiveSqlParser.BITWISEXOR, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseXorExpression; @@ -50497,45 +42031,6 @@ export class PrecedenceBitwiseXorExpressionContext extends antlr.ParserRuleConte } -export class PrecedenceStarOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public STAR(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.STAR, 0); - } - public DIVIDE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.DIVIDE, 0); - } - public MOD(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.MOD, 0); - } - public DIV(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.DIV, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceStarOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceStarOperator) { - listener.enterPrecedenceStarOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceStarOperator) { - listener.exitPrecedenceStarOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceStarOperator) { - return visitor.visitPrecedenceStarOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceStarExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50549,14 +42044,41 @@ export class PrecedenceStarExpressionContext extends antlr.ParserRuleContext { return this.getRuleContext(i, PrecedenceBitwiseXorExpressionContext); } - public precedenceStarOperator(): PrecedenceStarOperatorContext[]; - public precedenceStarOperator(i: number): PrecedenceStarOperatorContext | null; - public precedenceStarOperator(i?: number): PrecedenceStarOperatorContext[] | PrecedenceStarOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceStarOperatorContext); - } - - return this.getRuleContext(i, PrecedenceStarOperatorContext); + public STAR(): antlr.TerminalNode[]; + public STAR(i: number): antlr.TerminalNode | null; + public STAR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.STAR); + } else { + return this.getToken(HiveSqlParser.STAR, i); + } + } + public DIVIDE(): antlr.TerminalNode[]; + public DIVIDE(i: number): antlr.TerminalNode | null; + public DIVIDE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.DIVIDE); + } else { + return this.getToken(HiveSqlParser.DIVIDE, i); + } + } + public MOD(): antlr.TerminalNode[]; + public MOD(i: number): antlr.TerminalNode | null; + public MOD(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.MOD); + } else { + return this.getToken(HiveSqlParser.MOD, i); + } + } + public DIV(): antlr.TerminalNode[]; + public DIV(i: number): antlr.TerminalNode | null; + public DIV(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.DIV); + } else { + return this.getToken(HiveSqlParser.DIV, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceStarExpression; @@ -50581,39 +42103,6 @@ export class PrecedenceStarExpressionContext extends antlr.ParserRuleContext { } -export class PrecedencePlusOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.PLUS, 0); - } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.MINUS, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedencePlusOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedencePlusOperator) { - listener.enterPrecedencePlusOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedencePlusOperator) { - listener.exitPrecedencePlusOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedencePlusOperator) { - return visitor.visitPrecedencePlusOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedencePlusExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50627,14 +42116,23 @@ export class PrecedencePlusExpressionContext extends antlr.ParserRuleContext { return this.getRuleContext(i, PrecedenceStarExpressionContext); } - public precedencePlusOperator(): PrecedencePlusOperatorContext[]; - public precedencePlusOperator(i: number): PrecedencePlusOperatorContext | null; - public precedencePlusOperator(i?: number): PrecedencePlusOperatorContext[] | PrecedencePlusOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedencePlusOperatorContext); - } - - return this.getRuleContext(i, PrecedencePlusOperatorContext); + public PLUS(): antlr.TerminalNode[]; + public PLUS(i: number): antlr.TerminalNode | null; + public PLUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.PLUS); + } else { + return this.getToken(HiveSqlParser.PLUS, i); + } + } + public MINUS(): antlr.TerminalNode[]; + public MINUS(i: number): antlr.TerminalNode | null; + public MINUS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.MINUS); + } else { + return this.getToken(HiveSqlParser.MINUS, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedencePlusExpression; @@ -50659,36 +42157,6 @@ export class PrecedencePlusExpressionContext extends antlr.ParserRuleContext { } -export class PrecedenceConcatenateOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public CONCATENATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.CONCATENATE, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceConcatenateOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceConcatenateOperator) { - listener.enterPrecedenceConcatenateOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceConcatenateOperator) { - listener.exitPrecedenceConcatenateOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceConcatenateOperator) { - return visitor.visitPrecedenceConcatenateOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceConcatenateExpressionContext extends antlr.ParserRuleContext { public _plus?: PrecedencePlusExpressionContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -50703,14 +42171,14 @@ export class PrecedenceConcatenateExpressionContext extends antlr.ParserRuleCont return this.getRuleContext(i, PrecedencePlusExpressionContext); } - public precedenceConcatenateOperator(): PrecedenceConcatenateOperatorContext[]; - public precedenceConcatenateOperator(i: number): PrecedenceConcatenateOperatorContext | null; - public precedenceConcatenateOperator(i?: number): PrecedenceConcatenateOperatorContext[] | PrecedenceConcatenateOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceConcatenateOperatorContext); - } - - return this.getRuleContext(i, PrecedenceConcatenateOperatorContext); + public CONCATENATE(): antlr.TerminalNode[]; + public CONCATENATE(i: number): antlr.TerminalNode | null; + public CONCATENATE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.CONCATENATE); + } else { + return this.getToken(HiveSqlParser.CONCATENATE, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceConcatenateExpression; @@ -50735,36 +42203,6 @@ export class PrecedenceConcatenateExpressionContext extends antlr.ParserRuleCont } -export class PrecedenceAmpersandOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public AMPERSAND(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.AMPERSAND, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceAmpersandOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceAmpersandOperator) { - listener.enterPrecedenceAmpersandOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceAmpersandOperator) { - listener.exitPrecedenceAmpersandOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceAmpersandOperator) { - return visitor.visitPrecedenceAmpersandOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceAmpersandExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50778,14 +42216,14 @@ export class PrecedenceAmpersandExpressionContext extends antlr.ParserRuleContex return this.getRuleContext(i, PrecedenceConcatenateExpressionContext); } - public precedenceAmpersandOperator(): PrecedenceAmpersandOperatorContext[]; - public precedenceAmpersandOperator(i: number): PrecedenceAmpersandOperatorContext | null; - public precedenceAmpersandOperator(i?: number): PrecedenceAmpersandOperatorContext[] | PrecedenceAmpersandOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceAmpersandOperatorContext); - } - - return this.getRuleContext(i, PrecedenceAmpersandOperatorContext); + public AMPERSAND(): antlr.TerminalNode[]; + public AMPERSAND(i: number): antlr.TerminalNode | null; + public AMPERSAND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.AMPERSAND); + } else { + return this.getToken(HiveSqlParser.AMPERSAND, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAmpersandExpression; @@ -50810,36 +42248,6 @@ export class PrecedenceAmpersandExpressionContext extends antlr.ParserRuleContex } -export class PrecedenceBitwiseOrOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public BITWISEOR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.BITWISEOR, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceBitwiseOrOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceBitwiseOrOperator) { - listener.enterPrecedenceBitwiseOrOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceBitwiseOrOperator) { - listener.exitPrecedenceBitwiseOrOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceBitwiseOrOperator) { - return visitor.visitPrecedenceBitwiseOrOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceBitwiseOrExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -50853,14 +42261,14 @@ export class PrecedenceBitwiseOrExpressionContext extends antlr.ParserRuleContex return this.getRuleContext(i, PrecedenceAmpersandExpressionContext); } - public precedenceBitwiseOrOperator(): PrecedenceBitwiseOrOperatorContext[]; - public precedenceBitwiseOrOperator(i: number): PrecedenceBitwiseOrOperatorContext | null; - public precedenceBitwiseOrOperator(i?: number): PrecedenceBitwiseOrOperatorContext[] | PrecedenceBitwiseOrOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceBitwiseOrOperatorContext); - } - - return this.getRuleContext(i, PrecedenceBitwiseOrOperatorContext); + public BITWISEOR(): antlr.TerminalNode[]; + public BITWISEOR(i: number): antlr.TerminalNode | null; + public BITWISEOR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.BITWISEOR); + } else { + return this.getToken(HiveSqlParser.BITWISEOR, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceBitwiseOrExpression; @@ -50885,7 +42293,7 @@ export class PrecedenceBitwiseOrExpressionContext extends antlr.ParserRuleContex } -export class PrecedenceRegexpOperatorContext extends antlr.ParserRuleContext { +export class PrecedenceSimilarOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -50898,36 +42306,6 @@ export class PrecedenceRegexpOperatorContext extends antlr.ParserRuleContext { public KW_REGEXP(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_REGEXP, 0); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceRegexpOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceRegexpOperator) { - listener.enterPrecedenceRegexpOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceRegexpOperator) { - listener.exitPrecedenceRegexpOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceRegexpOperator) { - return visitor.visitPrecedenceRegexpOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceSimilarOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | null { - return this.getRuleContext(0, PrecedenceRegexpOperatorContext); - } public LESSTHANOREQUALTO(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.LESSTHANOREQUALTO, 0); } @@ -51000,11 +42378,16 @@ export class SubQueryExpressionContext extends antlr.ParserRuleContext { export class PrecedenceSimilarExpressionContext extends antlr.ParserRuleContext { + public _a?: PrecedenceBitwiseOrExpressionContext; + public _part?: PrecedenceSimilarExpressionPartContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public precedenceSimilarExpressionMain(): PrecedenceSimilarExpressionMainContext | null { - return this.getRuleContext(0, PrecedenceSimilarExpressionMainContext); + public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | null { + return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext); + } + public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext | null { + return this.getRuleContext(0, PrecedenceSimilarExpressionPartContext); } public KW_EXISTS(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_EXISTS, 0); @@ -51035,41 +42418,6 @@ export class PrecedenceSimilarExpressionContext extends antlr.ParserRuleContext } -export class PrecedenceSimilarExpressionMainContext extends antlr.ParserRuleContext { - public _a?: PrecedenceBitwiseOrExpressionContext; - public _part?: PrecedenceSimilarExpressionPartContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext { - return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext)!; - } - public precedenceSimilarExpressionPart(): PrecedenceSimilarExpressionPartContext | null { - return this.getRuleContext(0, PrecedenceSimilarExpressionPartContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceSimilarExpressionMain; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceSimilarExpressionMain) { - listener.enterPrecedenceSimilarExpressionMain(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceSimilarExpressionMain) { - listener.exitPrecedenceSimilarExpressionMain(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceSimilarExpressionMain) { - return visitor.visitPrecedenceSimilarExpressionMain(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceSimilarExpressionPartContext extends antlr.ParserRuleContext { public _equalExpr?: PrecedenceBitwiseOrExpressionContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -51153,8 +42501,14 @@ export class PrecedenceSimilarExpressionAtomContext extends antlr.ParserRuleCont public expressionsInParenthesis(): ExpressionsInParenthesisContext | null { return this.getRuleContext(0, ExpressionsInParenthesisContext); } - public precedenceSimilarExpressionQuantifierPredicate(): PrecedenceSimilarExpressionQuantifierPredicateContext | null { - return this.getRuleContext(0, PrecedenceSimilarExpressionQuantifierPredicateContext); + public subQuerySelectorOperator(): SubQuerySelectorOperatorContext | null { + return this.getRuleContext(0, SubQuerySelectorOperatorContext); + } + public subQueryExpression(): SubQueryExpressionContext | null { + return this.getRuleContext(0, SubQueryExpressionContext); + } + public KW_SOME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SOME, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceSimilarExpressionAtom; @@ -51179,78 +42533,6 @@ export class PrecedenceSimilarExpressionAtomContext extends antlr.ParserRuleCont } -export class PrecedenceSimilarExpressionQuantifierPredicateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public subQuerySelectorOperator(): SubQuerySelectorOperatorContext { - return this.getRuleContext(0, SubQuerySelectorOperatorContext)!; - } - public quantifierType(): QuantifierTypeContext { - return this.getRuleContext(0, QuantifierTypeContext)!; - } - public subQueryExpression(): SubQueryExpressionContext { - return this.getRuleContext(0, SubQueryExpressionContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceSimilarExpressionQuantifierPredicate; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceSimilarExpressionQuantifierPredicate) { - listener.enterPrecedenceSimilarExpressionQuantifierPredicate(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceSimilarExpressionQuantifierPredicate) { - listener.exitPrecedenceSimilarExpressionQuantifierPredicate(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceSimilarExpressionQuantifierPredicate) { - return visitor.visitPrecedenceSimilarExpressionQuantifierPredicate(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class QuantifierTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ANY(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ANY, 0); - } - public KW_SOME(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SOME, 0); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ALL, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_quantifierType; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterQuantifierType) { - listener.enterQuantifierType(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitQuantifierType) { - listener.exitQuantifierType(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitQuantifierType) { - return visitor.visitQuantifierType(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceSimilarExpressionInContext extends antlr.ParserRuleContext { public _expr?: ExpressionsInParenthesisContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -51290,8 +42572,14 @@ export class PrecedenceSimilarExpressionPartNotContext extends antlr.ParserRuleC public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public precedenceRegexpOperator(): PrecedenceRegexpOperatorContext | null { - return this.getRuleContext(0, PrecedenceRegexpOperatorContext); + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LIKE, 0); + } + public KW_RLIKE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RLIKE, 0); + } + public KW_REGEXP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REGEXP, 0); } public precedenceBitwiseOrExpression(): PrecedenceBitwiseOrExpressionContext | null { return this.getRuleContext(0, PrecedenceBitwiseOrExpressionContext); @@ -51508,7 +42796,7 @@ export class IsConditionContext extends antlr.ParserRuleContext { } -export class PrecedenceUnarySuffixExpressionContext extends antlr.ParserRuleContext { +export class PrecedenceNotExpressionContext extends antlr.ParserRuleContext { public _a?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -51516,81 +42804,21 @@ export class PrecedenceUnarySuffixExpressionContext extends antlr.ParserRuleCont public precedenceEqualExpression(): PrecedenceEqualExpressionContext { return this.getRuleContext(0, PrecedenceEqualExpressionContext)!; } + public KW_NOT(): antlr.TerminalNode[]; + public KW_NOT(i: number): antlr.TerminalNode | null; + public KW_NOT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.KW_NOT); + } else { + return this.getToken(HiveSqlParser.KW_NOT, i); + } + } public isCondition(): IsConditionContext | null { return this.getRuleContext(0, IsConditionContext); } public KW_IS(): antlr.TerminalNode | null { return this.getToken(HiveSqlParser.KW_IS, 0); } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceUnarySuffixExpression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceUnarySuffixExpression) { - listener.enterPrecedenceUnarySuffixExpression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceUnarySuffixExpression) { - listener.exitPrecedenceUnarySuffixExpression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceUnarySuffixExpression) { - return visitor.visitPrecedenceUnarySuffixExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceNotOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_NOT, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceNotOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceNotOperator) { - listener.enterPrecedenceNotOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceNotOperator) { - listener.exitPrecedenceNotOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceNotOperator) { - return visitor.visitPrecedenceNotOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceNotExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public precedenceUnarySuffixExpression(): PrecedenceUnarySuffixExpressionContext { - return this.getRuleContext(0, PrecedenceUnarySuffixExpressionContext)!; - } - public precedenceNotOperator(): PrecedenceNotOperatorContext[]; - public precedenceNotOperator(i: number): PrecedenceNotOperatorContext | null; - public precedenceNotOperator(i?: number): PrecedenceNotOperatorContext[] | PrecedenceNotOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceNotOperatorContext); - } - - return this.getRuleContext(i, PrecedenceNotOperatorContext); - } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceNotExpression; } @@ -51614,36 +42842,6 @@ export class PrecedenceNotExpressionContext extends antlr.ParserRuleContext { } -export class PrecedenceAndOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_AND(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_AND, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceAndOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceAndOperator) { - listener.enterPrecedenceAndOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceAndOperator) { - listener.exitPrecedenceAndOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceAndOperator) { - return visitor.visitPrecedenceAndOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PrecedenceAndExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -51657,14 +42855,14 @@ export class PrecedenceAndExpressionContext extends antlr.ParserRuleContext { return this.getRuleContext(i, PrecedenceNotExpressionContext); } - public precedenceAndOperator(): PrecedenceAndOperatorContext[]; - public precedenceAndOperator(i: number): PrecedenceAndOperatorContext | null; - public precedenceAndOperator(i?: number): PrecedenceAndOperatorContext[] | PrecedenceAndOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceAndOperatorContext); - } - - return this.getRuleContext(i, PrecedenceAndOperatorContext); + public KW_AND(): antlr.TerminalNode[]; + public KW_AND(i: number): antlr.TerminalNode | null; + public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.KW_AND); + } else { + return this.getToken(HiveSqlParser.KW_AND, i); + } } public override get ruleIndex(): number { return HiveSqlParser.RULE_precedenceAndExpression; @@ -51689,147 +42887,6 @@ export class PrecedenceAndExpressionContext extends antlr.ParserRuleContext { } -export class PrecedenceOrOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_OR(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_OR, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceOrOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceOrOperator) { - listener.enterPrecedenceOrOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceOrOperator) { - listener.exitPrecedenceOrOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceOrOperator) { - return visitor.visitPrecedenceOrOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrecedenceOrExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public precedenceAndExpression(): PrecedenceAndExpressionContext[]; - public precedenceAndExpression(i: number): PrecedenceAndExpressionContext | null; - public precedenceAndExpression(i?: number): PrecedenceAndExpressionContext[] | PrecedenceAndExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceAndExpressionContext); - } - - return this.getRuleContext(i, PrecedenceAndExpressionContext); - } - public precedenceOrOperator(): PrecedenceOrOperatorContext[]; - public precedenceOrOperator(i: number): PrecedenceOrOperatorContext | null; - public precedenceOrOperator(i?: number): PrecedenceOrOperatorContext[] | PrecedenceOrOperatorContext | null { - if (i === undefined) { - return this.getRuleContexts(PrecedenceOrOperatorContext); - } - - return this.getRuleContext(i, PrecedenceOrOperatorContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_precedenceOrExpression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrecedenceOrExpression) { - listener.enterPrecedenceOrExpression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrecedenceOrExpression) { - listener.exitPrecedenceOrExpression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrecedenceOrExpression) { - return visitor.visitPrecedenceOrExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BooleanValueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_FALSE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_booleanValue; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterBooleanValue) { - listener.enterBooleanValue(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitBooleanValue) { - listener.exitBooleanValue(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitBooleanValue) { - return visitor.visitBooleanValue(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class BooleanValueTokContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TRUE, 0); - } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_FALSE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_booleanValueTok; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterBooleanValueTok) { - listener.enterBooleanValueTok(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitBooleanValueTok) { - listener.exitBooleanValueTok(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitBooleanValueTok) { - return visitor.visitBooleanValueTok(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TableOrPartitionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -52011,12 +43068,15 @@ export class PartitionSelectorValContext extends antlr.ParserRuleContext { public id_(): Id_Context { return this.getRuleContext(0, Id_Context)!; } - public partitionSelectorOperator(): PartitionSelectorOperatorContext { - return this.getRuleContext(0, PartitionSelectorOperatorContext)!; - } public constant(): ConstantContext { return this.getRuleContext(0, ConstantContext)!; } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LIKE, 0); + } + public subQuerySelectorOperator(): SubQuerySelectorOperatorContext | null { + return this.getRuleContext(0, SubQuerySelectorOperatorContext); + } public override get ruleIndex(): number { return HiveSqlParser.RULE_partitionSelectorVal; } @@ -52040,39 +43100,6 @@ export class PartitionSelectorValContext extends antlr.ParserRuleContext { } -export class PartitionSelectorOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_LIKE, 0); - } - public subQuerySelectorOperator(): SubQuerySelectorOperatorContext | null { - return this.getRuleContext(0, SubQuerySelectorOperatorContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_partitionSelectorOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPartitionSelectorOperator) { - listener.enterPartitionSelectorOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPartitionSelectorOperator) { - listener.exitPartitionSelectorOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPartitionSelectorOperator) { - return visitor.visitPartitionSelectorOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class SubQuerySelectorOperatorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -53202,359 +44229,176 @@ export class Sql11ReservedKeywordsUsedAsFunctionNameContext extends antlr.Parser } -export class HintContext extends antlr.ParserRuleContext { +export class ConfigPropertiesItemContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public hintList(): HintListContext { - return this.getRuleContext(0, HintListContext)!; + public id_(): Id_Context | null { + return this.getRuleContext(0, Id_Context); } - public EOF(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.EOF, 0)!; + public KW_JOIN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_JOIN, 0); + } + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PARTITION, 0); + } + public KW_MAP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MAP, 0); + } + public KW_REDUCE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REDUCE, 0); + } + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_USER, 0); + } + public KW_PERCENT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PERCENT, 0); + } + public KW_INTERVAL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_INTERVAL, 0); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ROWS, 0); + } + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNION, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_GROUP, 0); + } + public KW_MERGE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MERGE, 0); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_NULL, 0); + } + public KW_FETCH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FETCH, 0); + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LOCAL, 0); + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DROP, 0); + } + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TABLE, 0); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ON, 0); + } + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ROW, 0); + } + public KW_GROUPING(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_GROUPING, 0); + } + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); + } + public KW_FORCE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FORCE, 0); + } + public KW_START(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_START, 0); + } + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_INSERT, 0); + } + public KW_CONF(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CONF, 0); + } + public KW_INTO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_INTO, 0); + } + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNIQUE, 0); + } + public KW_COLUMN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_COLUMN, 0); + } + public KW_TRANSFORM(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRANSFORM, 0); + } + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DISTINCT, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_IN, 0); + } + public KW_REFERENCES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REFERENCES, 0); + } + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TIMESTAMP, 0); + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ONLY, 0); + } + public KW_END(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_END, 0); + } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FUNCTION, 0); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UPDATE, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AUTHORIZATION, 0); + } + public KW_DDL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DDL, 0); + } + public KW_VALUES(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_VALUES, 0); + } + public KW_TIME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TIME, 0); + } + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_IS, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FOR, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_NOT, 0); + } + public KW_BINARY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_BINARY, 0); + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_USING, 0); + } + public KW_READS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_READS, 0); + } + public KW_BETWEEN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_BETWEEN, 0); + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CURRENT, 0); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_AS, 0); } public override get ruleIndex(): number { - return HiveSqlParser.RULE_hint; + return HiveSqlParser.RULE_configPropertiesItem; } public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHint) { - listener.enterHint(this); + if(listener.enterConfigPropertiesItem) { + listener.enterConfigPropertiesItem(this); } } public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHint) { - listener.exitHint(this); + if(listener.exitConfigPropertiesItem) { + listener.exitConfigPropertiesItem(this); } } public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHint) { - return visitor.visitHint(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class HintListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public hintItem(): HintItemContext[]; - public hintItem(i: number): HintItemContext | null; - public hintItem(i?: number): HintItemContext[] | HintItemContext | null { - if (i === undefined) { - return this.getRuleContexts(HintItemContext); - } - - return this.getRuleContext(i, HintItemContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_hintList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHintList) { - listener.enterHintList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHintList) { - listener.exitHintList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHintList) { - return visitor.visitHintList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class HintItemContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public hintName(): HintNameContext { - return this.getRuleContext(0, HintNameContext)!; - } - public LPAREN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.LPAREN, 0); - } - public hintArgs(): HintArgsContext | null { - return this.getRuleContext(0, HintArgsContext); - } - public RPAREN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.RPAREN, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_hintItem; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHintItem) { - listener.enterHintItem(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHintItem) { - listener.exitHintItem(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHintItem) { - return visitor.visitHintItem(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class HintNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_MAPJOIN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_MAPJOIN, 0); - } - public KW_SEMI(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SEMI, 0); - } - public KW_STREAMTABLE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_STREAMTABLE, 0); - } - public KW_PKFK_JOIN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_PKFK_JOIN, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_hintName; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHintName) { - listener.enterHintName(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHintName) { - listener.exitHintName(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHintName) { - return visitor.visitHintName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class HintArgsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public hintArgName(): HintArgNameContext[]; - public hintArgName(i: number): HintArgNameContext | null; - public hintArgName(i?: number): HintArgNameContext[] | HintArgNameContext | null { - if (i === undefined) { - return this.getRuleContexts(HintArgNameContext); - } - - return this.getRuleContext(i, HintArgNameContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_hintArgs; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHintArgs) { - listener.enterHintArgs(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHintArgs) { - listener.exitHintArgs(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHintArgs) { - return visitor.visitHintArgs(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class HintArgNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public Identifier(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Identifier, 0); - } - public Number(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Number, 0); - } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_NONE, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_hintArgName; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterHintArgName) { - listener.enterHintArgName(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitHintArgName) { - listener.exitHintArgName(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitHintArgName) { - return visitor.visitHintArgName(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class PrepareStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PREPARE, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_FROM, 0)!; - } - public queryStatementExpression(): QueryStatementExpressionContext { - return this.getRuleContext(0, QueryStatementExpressionContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_prepareStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterPrepareStatement) { - listener.enterPrepareStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitPrepareStatement) { - listener.exitPrepareStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitPrepareStatement) { - return visitor.visitPrepareStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExecuteStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_EXECUTE, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_USING, 0)!; - } - public executeParamList(): ExecuteParamListContext { - return this.getRuleContext(0, ExecuteParamListContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_executeStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExecuteStatement) { - listener.enterExecuteStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExecuteStatement) { - listener.exitExecuteStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExecuteStatement) { - return visitor.visitExecuteStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ExecuteParamListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public constant(): ConstantContext[]; - public constant(i: number): ConstantContext | null; - public constant(i?: number): ConstantContext[] | ConstantContext | null { - if (i === undefined) { - return this.getRuleContexts(ConstantContext); - } - - return this.getRuleContext(i, ConstantContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_executeParamList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterExecuteParamList) { - listener.enterExecuteParamList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitExecuteParamList) { - listener.exitExecuteParamList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitExecuteParamList) { - return visitor.visitExecuteParamList(this); + if (visitor.visitConfigPropertiesItem) { + return visitor.visitConfigPropertiesItem(this); } else { return visitor.visitChildren(this); } @@ -53563,50 +44407,169 @@ export class ExecuteParamListContext extends antlr.ParserRuleContext { export class ResourcePlanDdlStatementsContext extends antlr.ParserRuleContext { + public _name?: Id_Context; + public _likeName?: Id_Context; + public _newName?: Id_Context; + public _src?: Id_Context; + public _dest?: Id_Context; + public _rpName?: Id_Context; + public _triggerName?: Id_Context; + public _poolName?: PoolPathContext; + public _mappingType?: MappingTypesContext; + public _path?: PoolPathContext; + public _order?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public createResourcePlanStatement(): CreateResourcePlanStatementContext | null { - return this.getRuleContext(0, CreateResourcePlanStatementContext); + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_CREATE, 0); } - public alterResourcePlanStatement(): AlterResourcePlanStatementContext | null { - return this.getRuleContext(0, AlterResourcePlanStatementContext); + public KW_RESOURCE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RESOURCE, 0); } - public dropResourcePlanStatement(): DropResourcePlanStatementContext | null { - return this.getRuleContext(0, DropResourcePlanStatementContext); + public KW_PLAN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_PLAN, 0); } - public globalWmStatement(): GlobalWmStatementContext | null { - return this.getRuleContext(0, GlobalWmStatementContext); + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_LIKE, 0); } - public replaceResourcePlanStatement(): ReplaceResourcePlanStatementContext | null { - return this.getRuleContext(0, ReplaceResourcePlanStatementContext); + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); } - public createTriggerStatement(): CreateTriggerStatementContext | null { - return this.getRuleContext(0, CreateTriggerStatementContext); + public id_(): Id_Context[]; + public id_(i: number): Id_Context | null; + public id_(i?: number): Id_Context[] | Id_Context | null { + if (i === undefined) { + return this.getRuleContexts(Id_Context); + } + + return this.getRuleContext(i, Id_Context); } - public alterTriggerStatement(): AlterTriggerStatementContext | null { - return this.getRuleContext(0, AlterTriggerStatementContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WITH, 0); } - public dropTriggerStatement(): DropTriggerStatementContext | null { - return this.getRuleContext(0, DropTriggerStatementContext); + public rpAssignList(): RpAssignListContext | null { + return this.getRuleContext(0, RpAssignListContext); } - public createPoolStatement(): CreatePoolStatementContext | null { - return this.getRuleContext(0, CreatePoolStatementContext); + public KW_ALTER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ALTER, 0); } - public alterPoolStatement(): AlterPoolStatementContext | null { - return this.getRuleContext(0, AlterPoolStatementContext); + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_VALIDATE, 0); } - public dropPoolStatement(): DropPoolStatementContext | null { - return this.getRuleContext(0, DropPoolStatementContext); + public disable(): DisableContext | null { + return this.getRuleContext(0, DisableContext); } - public createMappingStatement(): CreateMappingStatementContext | null { - return this.getRuleContext(0, CreateMappingStatementContext); + public KW_SET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SET, 0); } - public alterMappingStatement(): AlterMappingStatementContext | null { - return this.getRuleContext(0, AlterMappingStatementContext); + public KW_UNSET(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNSET, 0); } - public dropMappingStatement(): DropMappingStatementContext | null { - return this.getRuleContext(0, DropMappingStatementContext); + public rpUnassign(): RpUnassignContext[]; + public rpUnassign(i: number): RpUnassignContext | null; + public rpUnassign(i?: number): RpUnassignContext[] | RpUnassignContext | null { + if (i === undefined) { + return this.getRuleContexts(RpUnassignContext); + } + + return this.getRuleContext(i, RpUnassignContext); + } + public KW_RENAME(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_RENAME, 0); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TO, 0); + } + public activate(): ActivateContext | null { + return this.getRuleContext(0, ActivateContext); + } + public enable(): EnableContext | null { + return this.getRuleContext(0, EnableContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(HiveSqlParser.COMMA); + } else { + return this.getToken(HiveSqlParser.COMMA, i); + } + } + public KW_DROP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DROP, 0); + } + public ifExists(): IfExistsContext | null { + return this.getRuleContext(0, IfExistsContext); + } + public KW_WORKLOAD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WORKLOAD, 0); + } + public KW_MANAGEMENT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REPLACE, 0); + } + public KW_ACTIVE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ACTIVE, 0); + } + public KW_TRIGGER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_TRIGGER, 0); + } + public DOT(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.DOT, 0); + } + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WHEN, 0); + } + public triggerAtomExpression(): TriggerAtomExpressionContext | null { + return this.getRuleContext(0, TriggerAtomExpressionContext); + } + public KW_DO(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_DO, 0); + } + public triggerActionExpression(): TriggerActionExpressionContext | null { + return this.getRuleContext(0, TriggerActionExpressionContext); + } + public KW_ADD(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ADD, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_FROM, 0); + } + public KW_POOL(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_POOL, 0); + } + public KW_UNMANAGED(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_UNMANAGED, 0); + } + public poolPath(): PoolPathContext | null { + return this.getRuleContext(0, PoolPathContext); + } + public poolAssignList(): PoolAssignListContext | null { + return this.getRuleContext(0, PoolAssignListContext); + } + public KW_SCHEDULING_POLICY(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0); + } + public KW_MAPPING(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_MAPPING, 0); + } + public StringLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.StringLiteral, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_IN, 0); + } + public mappingTypes(): MappingTypesContext | null { + return this.getRuleContext(0, MappingTypesContext); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_ORDER, 0); + } + public Number(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.Number, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_resourcePlanDdlStatements; @@ -53631,6 +44594,42 @@ export class ResourcePlanDdlStatementsContext extends antlr.ParserRuleContext { } +export class MappingTypesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_USER(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_USER, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_GROUP, 0); + } + public KW_APPLICATION(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_APPLICATION, 0); + } + public override get ruleIndex(): number { + return HiveSqlParser.RULE_mappingTypes; + } + public override enterRule(listener: HiveSqlParserListener): void { + if(listener.enterMappingTypes) { + listener.enterMappingTypes(this); + } + } + public override exitRule(listener: HiveSqlParserListener): void { + if(listener.exitMappingTypes) { + listener.exitMappingTypes(this); + } + } + public override accept(visitor: HiveSqlParserVisitor): Result | null { + if (visitor.visitMappingTypes) { + return visitor.visitMappingTypes(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class RpAssignContext extends antlr.ParserRuleContext { public _parallelism?: Token | null; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -53758,143 +44757,6 @@ export class RpUnassignContext extends antlr.ParserRuleContext { } -export class RpUnassignListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public rpUnassign(): RpUnassignContext[]; - public rpUnassign(i: number): RpUnassignContext | null; - public rpUnassign(i?: number): RpUnassignContext[] | RpUnassignContext | null { - if (i === undefined) { - return this.getRuleContexts(RpUnassignContext); - } - - return this.getRuleContext(i, RpUnassignContext); - } - public COMMA(): antlr.TerminalNode[]; - public COMMA(i: number): antlr.TerminalNode | null; - public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.COMMA); - } else { - return this.getToken(HiveSqlParser.COMMA, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_rpUnassignList; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterRpUnassignList) { - listener.enterRpUnassignList(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitRpUnassignList) { - listener.exitRpUnassignList(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitRpUnassignList) { - return visitor.visitRpUnassignList(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateResourcePlanStatementContext extends antlr.ParserRuleContext { - public _name?: Id_Context; - public _likeName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CREATE, 0)!; - } - public KW_RESOURCE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!; - } - public KW_PLAN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PLAN, 0)!; - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_LIKE, 0); - } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public rpAssignList(): RpAssignListContext | null { - return this.getRuleContext(0, RpAssignListContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_createResourcePlanStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCreateResourcePlanStatement) { - listener.enterCreateResourcePlanStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCreateResourcePlanStatement) { - listener.exitCreateResourcePlanStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCreateResourcePlanStatement) { - return visitor.visitCreateResourcePlanStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class WithReplaceContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WITH, 0)!; - } - public KW_REPLACE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REPLACE, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_withReplace; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterWithReplace) { - listener.enterWithReplace(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitWithReplace) { - listener.exitWithReplace(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitWithReplace) { - return visitor.visitWithReplace(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class ActivateContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -53902,8 +44764,11 @@ export class ActivateContext extends antlr.ParserRuleContext { public KW_ACTIVATE(): antlr.TerminalNode { return this.getToken(HiveSqlParser.KW_ACTIVATE, 0)!; } - public withReplace(): WithReplaceContext | null { - return this.getRuleContext(0, WithReplaceContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_WITH, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.KW_REPLACE, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_activate; @@ -53994,36 +44859,6 @@ export class DisableContext extends antlr.ParserRuleContext { } -export class UnmanagedContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_UNMANAGED(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_UNMANAGED, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_unmanaged; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterUnmanaged) { - listener.enterUnmanaged(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitUnmanaged) { - listener.exitUnmanaged(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitUnmanaged) { - return visitor.visitUnmanaged(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class YearContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -54291,218 +45126,6 @@ export class DecimalContext extends antlr.ParserRuleContext { } -export class AlterResourcePlanStatementContext extends antlr.ParserRuleContext { - public _name?: Id_Context; - public _newName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ALTER, 0)!; - } - public KW_RESOURCE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!; - } - public KW_PLAN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PLAN, 0)!; - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_VALIDATE, 0); - } - public disable(): DisableContext | null { - return this.getRuleContext(0, DisableContext); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SET, 0); - } - public rpAssignList(): RpAssignListContext | null { - return this.getRuleContext(0, RpAssignListContext); - } - public KW_UNSET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNSET, 0); - } - public rpUnassignList(): RpUnassignListContext | null { - return this.getRuleContext(0, RpUnassignListContext); - } - public KW_RENAME(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_RENAME, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TO, 0); - } - public activate(): ActivateContext | null { - return this.getRuleContext(0, ActivateContext); - } - public enable(): EnableContext | null { - return this.getRuleContext(0, EnableContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterResourcePlanStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterResourcePlanStatement) { - listener.enterAlterResourcePlanStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterResourcePlanStatement) { - listener.exitAlterResourcePlanStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterResourcePlanStatement) { - return visitor.visitAlterResourcePlanStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class GlobalWmStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WORKLOAD(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WORKLOAD, 0)!; - } - public KW_MANAGEMENT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MANAGEMENT, 0)!; - } - public enable(): EnableContext | null { - return this.getRuleContext(0, EnableContext); - } - public disable(): DisableContext | null { - return this.getRuleContext(0, DisableContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_globalWmStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterGlobalWmStatement) { - listener.enterGlobalWmStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitGlobalWmStatement) { - listener.exitGlobalWmStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitGlobalWmStatement) { - return visitor.visitGlobalWmStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ReplaceResourcePlanStatementContext extends antlr.ParserRuleContext { - public _src?: Id_Context; - public _dest?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_REPLACE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_REPLACE, 0)!; - } - public KW_ACTIVE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ACTIVE, 0); - } - public KW_RESOURCE(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_RESOURCE, 0); - } - public KW_PLAN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_PLAN, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_replaceResourcePlanStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterReplaceResourcePlanStatement) { - listener.enterReplaceResourcePlanStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitReplaceResourcePlanStatement) { - listener.exitReplaceResourcePlanStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitReplaceResourcePlanStatement) { - return visitor.visitReplaceResourcePlanStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DropResourcePlanStatementContext extends antlr.ParserRuleContext { - public _name?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DROP, 0)!; - } - public KW_RESOURCE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_RESOURCE, 0)!; - } - public KW_PLAN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_PLAN, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public ifExists(): IfExistsContext | null { - return this.getRuleContext(0, IfExistsContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dropResourcePlanStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDropResourcePlanStatement) { - listener.enterDropResourcePlanStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDropResourcePlanStatement) { - listener.exitDropResourcePlanStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDropResourcePlanStatement) { - return visitor.visitDropResourcePlanStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PoolPathContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -54548,159 +45171,6 @@ export class PoolPathContext extends antlr.ParserRuleContext { } -export class TriggerExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public triggerAtomExpression(): TriggerAtomExpressionContext { - return this.getRuleContext(0, TriggerAtomExpressionContext)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerExpression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerExpression) { - listener.enterTriggerExpression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerExpression) { - listener.exitTriggerExpression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerExpression) { - return visitor.visitTriggerExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerExpressionStandaloneContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public triggerExpression(): TriggerExpressionContext { - return this.getRuleContext(0, TriggerExpressionContext)!; - } - public EOF(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.EOF, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerExpressionStandalone; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerExpressionStandalone) { - listener.enterTriggerExpressionStandalone(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerExpressionStandalone) { - listener.exitTriggerExpressionStandalone(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerExpressionStandalone) { - return visitor.visitTriggerExpressionStandalone(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerOrExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public triggerAndExpression(): TriggerAndExpressionContext[]; - public triggerAndExpression(i: number): TriggerAndExpressionContext | null; - public triggerAndExpression(i?: number): TriggerAndExpressionContext[] | TriggerAndExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(TriggerAndExpressionContext); - } - - return this.getRuleContext(i, TriggerAndExpressionContext); - } - public KW_OR(): antlr.TerminalNode[]; - public KW_OR(i: number): antlr.TerminalNode | null; - public KW_OR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.KW_OR); - } else { - return this.getToken(HiveSqlParser.KW_OR, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerOrExpression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerOrExpression) { - listener.enterTriggerOrExpression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerOrExpression) { - listener.exitTriggerOrExpression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerOrExpression) { - return visitor.visitTriggerOrExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class TriggerAndExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public triggerAtomExpression(): TriggerAtomExpressionContext[]; - public triggerAtomExpression(i: number): TriggerAtomExpressionContext | null; - public triggerAtomExpression(i?: number): TriggerAtomExpressionContext[] | TriggerAtomExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(TriggerAtomExpressionContext); - } - - return this.getRuleContext(i, TriggerAtomExpressionContext); - } - public KW_AND(): antlr.TerminalNode[]; - public KW_AND(i: number): antlr.TerminalNode | null; - public KW_AND(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(HiveSqlParser.KW_AND); - } else { - return this.getToken(HiveSqlParser.KW_AND, i); - } - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerAndExpression; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerAndExpression) { - listener.enterTriggerAndExpression(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerAndExpression) { - listener.exitTriggerAndExpression(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerAndExpression) { - return visitor.visitTriggerAndExpression(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TriggerAtomExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -54708,11 +45178,14 @@ export class TriggerAtomExpressionContext extends antlr.ParserRuleContext { public id_(): Id_Context { return this.getRuleContext(0, Id_Context)!; } - public comparisionOperator(): ComparisionOperatorContext { - return this.getRuleContext(0, ComparisionOperatorContext)!; + public GREATERTHAN(): antlr.TerminalNode { + return this.getToken(HiveSqlParser.GREATERTHAN, 0)!; } - public triggerLiteral(): TriggerLiteralContext { - return this.getRuleContext(0, TriggerLiteralContext)!; + public Number(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.Number, 0); + } + public StringLiteral(): antlr.TerminalNode | null { + return this.getToken(HiveSqlParser.StringLiteral, 0); } public override get ruleIndex(): number { return HiveSqlParser.RULE_triggerAtomExpression; @@ -54737,69 +45210,6 @@ export class TriggerAtomExpressionContext extends antlr.ParserRuleContext { } -export class TriggerLiteralContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public Number(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Number, 0); - } - public StringLiteral(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.StringLiteral, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerLiteral; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerLiteral) { - listener.enterTriggerLiteral(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerLiteral) { - listener.exitTriggerLiteral(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerLiteral) { - return visitor.visitTriggerLiteral(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class ComparisionOperatorContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public GREATERTHAN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.GREATERTHAN, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_comparisionOperator; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterComparisionOperator) { - listener.enterComparisionOperator(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitComparisionOperator) { - listener.exitComparisionOperator(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitComparisionOperator) { - return visitor.visitComparisionOperator(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class TriggerActionExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -54839,226 +45249,6 @@ export class TriggerActionExpressionContext extends antlr.ParserRuleContext { } -export class TriggerActionExpressionStandaloneContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public triggerActionExpression(): TriggerActionExpressionContext { - return this.getRuleContext(0, TriggerActionExpressionContext)!; - } - public EOF(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.EOF, 0)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_triggerActionExpressionStandalone; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterTriggerActionExpressionStandalone) { - listener.enterTriggerActionExpressionStandalone(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitTriggerActionExpressionStandalone) { - listener.exitTriggerActionExpressionStandalone(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitTriggerActionExpressionStandalone) { - return visitor.visitTriggerActionExpressionStandalone(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateTriggerStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public _triggerName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CREATE, 0)!; - } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WHEN, 0)!; - } - public triggerExpression(): TriggerExpressionContext { - return this.getRuleContext(0, TriggerExpressionContext)!; - } - public KW_DO(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DO, 0)!; - } - public triggerActionExpression(): TriggerActionExpressionContext { - return this.getRuleContext(0, TriggerActionExpressionContext)!; - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_createTriggerStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCreateTriggerStatement) { - listener.enterCreateTriggerStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCreateTriggerStatement) { - listener.exitCreateTriggerStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCreateTriggerStatement) { - return visitor.visitCreateTriggerStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterTriggerStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public _triggerName?: Id_Context; - public _poolName?: PoolPathContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ALTER, 0)!; - } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public KW_WHEN(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WHEN, 0); - } - public triggerExpression(): TriggerExpressionContext | null { - return this.getRuleContext(0, TriggerExpressionContext); - } - public KW_DO(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DO, 0); - } - public triggerActionExpression(): TriggerActionExpressionContext | null { - return this.getRuleContext(0, TriggerActionExpressionContext); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ADD, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TO, 0); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DROP, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_FROM, 0); - } - public KW_POOL(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_POOL, 0); - } - public KW_UNMANAGED(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNMANAGED, 0); - } - public poolPath(): PoolPathContext | null { - return this.getRuleContext(0, PoolPathContext); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterTriggerStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterTriggerStatement) { - listener.enterAlterTriggerStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterTriggerStatement) { - listener.exitAlterTriggerStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterTriggerStatement) { - return visitor.visitAlterTriggerStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DropTriggerStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public _triggerName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DROP, 0)!; - } - public KW_TRIGGER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_TRIGGER, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dropTriggerStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDropTriggerStatement) { - listener.enterDropTriggerStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDropTriggerStatement) { - listener.exitDropTriggerStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDropTriggerStatement) { - return visitor.visitDropTriggerStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class PoolAssignContext extends antlr.ParserRuleContext { public _allocFraction?: Token | null; public _parallelism?: Token | null; @@ -55157,368 +45347,3 @@ export class PoolAssignListContext extends antlr.ParserRuleContext { } } } - - -export class CreatePoolStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CREATE, 0)!; - } - public KW_POOL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_POOL, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public poolPath(): PoolPathContext { - return this.getRuleContext(0, PoolPathContext)!; - } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_WITH, 0)!; - } - public poolAssignList(): PoolAssignListContext { - return this.getRuleContext(0, PoolAssignListContext)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_createPoolStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCreatePoolStatement) { - listener.enterCreatePoolStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCreatePoolStatement) { - listener.exitCreatePoolStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCreatePoolStatement) { - return visitor.visitCreatePoolStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterPoolStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public _triggerName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ALTER, 0)!; - } - public KW_POOL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_POOL, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public poolPath(): PoolPathContext { - return this.getRuleContext(0, PoolPathContext)!; - } - public id_(): Id_Context[]; - public id_(i: number): Id_Context | null; - public id_(i?: number): Id_Context[] | Id_Context | null { - if (i === undefined) { - return this.getRuleContexts(Id_Context); - } - - return this.getRuleContext(i, Id_Context); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SET, 0); - } - public poolAssignList(): PoolAssignListContext | null { - return this.getRuleContext(0, PoolAssignListContext); - } - public KW_UNSET(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_UNSET, 0); - } - public KW_SCHEDULING_POLICY(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_SCHEDULING_POLICY, 0); - } - public KW_TRIGGER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TRIGGER, 0); - } - public KW_ADD(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ADD, 0); - } - public KW_DROP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_DROP, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterPoolStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterPoolStatement) { - listener.enterAlterPoolStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterPoolStatement) { - listener.exitAlterPoolStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterPoolStatement) { - return visitor.visitAlterPoolStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DropPoolStatementContext extends antlr.ParserRuleContext { - public _rpName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DROP, 0)!; - } - public KW_POOL(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_POOL, 0)!; - } - public DOT(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.DOT, 0)!; - } - public poolPath(): PoolPathContext { - return this.getRuleContext(0, PoolPathContext)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dropPoolStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDropPoolStatement) { - listener.enterDropPoolStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDropPoolStatement) { - listener.exitDropPoolStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDropPoolStatement) { - return visitor.visitDropPoolStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class CreateMappingStatementContext extends antlr.ParserRuleContext { - public _mappingType?: Token | null; - public _name?: Token | null; - public _rpName?: Id_Context; - public _path?: PoolPathContext; - public _order?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_CREATE, 0)!; - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MAPPING, 0)!; - } - public KW_IN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_IN, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_USER, 0); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_GROUP, 0); - } - public KW_APPLICATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_APPLICATION, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TO, 0); - } - public unmanaged(): UnmanagedContext | null { - return this.getRuleContext(0, UnmanagedContext); - } - public poolPath(): PoolPathContext | null { - return this.getRuleContext(0, PoolPathContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ORDER, 0); - } - public Number(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Number, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_createMappingStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterCreateMappingStatement) { - listener.enterCreateMappingStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitCreateMappingStatement) { - listener.exitCreateMappingStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitCreateMappingStatement) { - return visitor.visitCreateMappingStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class AlterMappingStatementContext extends antlr.ParserRuleContext { - public _mappingType?: Token | null; - public _name?: Token | null; - public _rpName?: Id_Context; - public _path?: PoolPathContext; - public _order?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_ALTER, 0)!; - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MAPPING, 0)!; - } - public KW_IN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_IN, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_USER, 0); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_GROUP, 0); - } - public KW_APPLICATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_APPLICATION, 0); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_TO, 0); - } - public unmanaged(): UnmanagedContext | null { - return this.getRuleContext(0, UnmanagedContext); - } - public poolPath(): PoolPathContext | null { - return this.getRuleContext(0, PoolPathContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_WITH, 0); - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_ORDER, 0); - } - public Number(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.Number, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_alterMappingStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterAlterMappingStatement) { - listener.enterAlterMappingStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitAlterMappingStatement) { - listener.exitAlterMappingStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitAlterMappingStatement) { - return visitor.visitAlterMappingStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class DropMappingStatementContext extends antlr.ParserRuleContext { - public _mappingType?: Token | null; - public _name?: Token | null; - public _rpName?: Id_Context; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_DROP, 0)!; - } - public KW_MAPPING(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_MAPPING, 0)!; - } - public KW_IN(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.KW_IN, 0)!; - } - public StringLiteral(): antlr.TerminalNode { - return this.getToken(HiveSqlParser.StringLiteral, 0)!; - } - public id_(): Id_Context { - return this.getRuleContext(0, Id_Context)!; - } - public KW_USER(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_USER, 0); - } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_GROUP, 0); - } - public KW_APPLICATION(): antlr.TerminalNode | null { - return this.getToken(HiveSqlParser.KW_APPLICATION, 0); - } - public override get ruleIndex(): number { - return HiveSqlParser.RULE_dropMappingStatement; - } - public override enterRule(listener: HiveSqlParserListener): void { - if(listener.enterDropMappingStatement) { - listener.enterDropMappingStatement(this); - } - } - public override exitRule(listener: HiveSqlParserListener): void { - if(listener.exitDropMappingStatement) { - listener.exitDropMappingStatement(this); - } - } - public override accept(visitor: HiveSqlParserVisitor): Result | null { - if (visitor.visitDropMappingStatement) { - return visitor.visitDropMappingStatement(this); - } else { - return visitor.visitChildren(this); - } - } -} diff --git a/src/lib/hive/HiveSqlParserListener.ts b/src/lib/hive/HiveSqlParserListener.ts index e9153ba..1f2bbff 100644 --- a/src/lib/hive/HiveSqlParserListener.ts +++ b/src/lib/hive/HiveSqlParserListener.ts @@ -12,35 +12,24 @@ import { ProgramContext } from "./HiveSqlParser.js"; import { StatementContext } from "./HiveSqlParser.js"; import { ExplainStatementContext } from "./HiveSqlParser.js"; import { ExplainOptionContext } from "./HiveSqlParser.js"; -import { VectorizationOnlyContext } from "./HiveSqlParser.js"; import { VectorizatonDetailContext } from "./HiveSqlParser.js"; import { ExecStatementContext } from "./HiveSqlParser.js"; import { LoadStatementContext } from "./HiveSqlParser.js"; -import { DropPartitionsIgnoreClauseContext } from "./HiveSqlParser.js"; import { ReplicationClauseContext } from "./HiveSqlParser.js"; import { ExportStatementContext } from "./HiveSqlParser.js"; import { ImportStatementContext } from "./HiveSqlParser.js"; import { ReplDumpStatementContext } from "./HiveSqlParser.js"; import { ReplDbPolicyContext } from "./HiveSqlParser.js"; import { ReplLoadStatementContext } from "./HiveSqlParser.js"; -import { ReplConfigsContext } from "./HiveSqlParser.js"; -import { ReplConfigsListContext } from "./HiveSqlParser.js"; import { ReplTableLevelPolicyContext } from "./HiveSqlParser.js"; -import { ReplStatusStatementContext } from "./HiveSqlParser.js"; import { DdlStatementContext } from "./HiveSqlParser.js"; import { IfExistsContext } from "./HiveSqlParser.js"; -import { RestrictOrCascadeContext } from "./HiveSqlParser.js"; import { IfNotExistsContext } from "./HiveSqlParser.js"; -import { ForceContext } from "./HiveSqlParser.js"; +import { RestrictOrCascadeContext } from "./HiveSqlParser.js"; import { RewriteEnabledContext } from "./HiveSqlParser.js"; import { RewriteDisabledContext } from "./HiveSqlParser.js"; import { StoredAsDirsContext } from "./HiveSqlParser.js"; -import { OrReplaceContext } from "./HiveSqlParser.js"; import { CreateDatabaseStatementContext } from "./HiveSqlParser.js"; -import { DbLocationContext } from "./HiveSqlParser.js"; -import { DbManagedLocationContext } from "./HiveSqlParser.js"; -import { DbPropertiesContext } from "./HiveSqlParser.js"; -import { DbPropertiesListContext } from "./HiveSqlParser.js"; import { DbConnectorNameContext } from "./HiveSqlParser.js"; import { SwitchDatabaseStatementContext } from "./HiveSqlParser.js"; import { DropDatabaseStatementContext } from "./HiveSqlParser.js"; @@ -121,12 +110,9 @@ import { TableCommentContext } from "./HiveSqlParser.js"; import { TableLifecycleContext } from "./HiveSqlParser.js"; import { CreateTablePartitionSpecContext } from "./HiveSqlParser.js"; import { CreateTablePartitionColumnTypeSpecContext } from "./HiveSqlParser.js"; -import { CreateTablePartitionColumnSpecContext } from "./HiveSqlParser.js"; import { PartitionTransformSpecContext } from "./HiveSqlParser.js"; -import { ColumnNameTransformConstraintContext } from "./HiveSqlParser.js"; import { PartitionTransformTypeContext } from "./HiveSqlParser.js"; import { TableBucketsContext } from "./HiveSqlParser.js"; -import { TableImplBucketsContext } from "./HiveSqlParser.js"; import { TableSkewedContext } from "./HiveSqlParser.js"; import { RowFormatContext } from "./HiveSqlParser.js"; import { RecordReaderContext } from "./HiveSqlParser.js"; @@ -137,15 +123,15 @@ import { TableRowFormatContext } from "./HiveSqlParser.js"; import { TablePropertiesPrefixedContext } from "./HiveSqlParser.js"; import { TablePropertiesContext } from "./HiveSqlParser.js"; import { TablePropertiesListContext } from "./HiveSqlParser.js"; +import { KeyValuePropertiesContext } from "./HiveSqlParser.js"; +import { KeyValuePropertyListContext } from "./HiveSqlParser.js"; import { KeyValuePropertyContext } from "./HiveSqlParser.js"; -import { KeyPropertyContext } from "./HiveSqlParser.js"; import { TableRowFormatFieldIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatCollItemsIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatMapKeysIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatLinesIdentifierContext } from "./HiveSqlParser.js"; import { TableRowNullFormatContext } from "./HiveSqlParser.js"; import { TableFileFormatContext } from "./HiveSqlParser.js"; -import { TableLocationContext } from "./HiveSqlParser.js"; import { ColumnNameTypeListContext } from "./HiveSqlParser.js"; import { ColumnNameTypeOrConstraintListContext } from "./HiveSqlParser.js"; import { ColumnNameColonTypeListContext } from "./HiveSqlParser.js"; @@ -170,15 +156,12 @@ import { AlterForeignKeyWithNameContext } from "./HiveSqlParser.js"; import { SkewedValueElementContext } from "./HiveSqlParser.js"; import { SkewedColumnValuePairListContext } from "./HiveSqlParser.js"; import { SkewedColumnValuePairContext } from "./HiveSqlParser.js"; -import { SkewedColumnValuesContext } from "./HiveSqlParser.js"; -import { SkewedColumnValueContext } from "./HiveSqlParser.js"; -import { SkewedValueLocationElementContext } from "./HiveSqlParser.js"; +import { ConstantListContext } from "./HiveSqlParser.js"; import { OrderSpecificationContext } from "./HiveSqlParser.js"; import { NullOrderingContext } from "./HiveSqlParser.js"; import { ColumnNameOrderContext } from "./HiveSqlParser.js"; import { ColumnNameCommentListContext } from "./HiveSqlParser.js"; import { ColumnNameCommentContext } from "./HiveSqlParser.js"; -import { OrderSpecificationRewriteContext } from "./HiveSqlParser.js"; import { ColumnRefOrderContext } from "./HiveSqlParser.js"; import { ColumnNameTypeContext } from "./HiveSqlParser.js"; import { ColumnNameTypeOrConstraintContext } from "./HiveSqlParser.js"; @@ -196,8 +179,8 @@ import { TableConstraintTypeContext } from "./HiveSqlParser.js"; import { ConstraintOptsCreateContext } from "./HiveSqlParser.js"; import { ConstraintOptsAlterContext } from "./HiveSqlParser.js"; import { ColumnNameColonTypeContext } from "./HiveSqlParser.js"; -import { ColTypeContext } from "./HiveSqlParser.js"; -import { ColTypeListContext } from "./HiveSqlParser.js"; +import { ColumnTypeContext } from "./HiveSqlParser.js"; +import { ColumnTypeListContext } from "./HiveSqlParser.js"; import { TypeContext } from "./HiveSqlParser.js"; import { PrimitiveTypeContext } from "./HiveSqlParser.js"; import { ListTypeContext } from "./HiveSqlParser.js"; @@ -221,103 +204,34 @@ import { SelectStatementWithCTEContext } from "./HiveSqlParser.js"; import { InsertClauseContext } from "./HiveSqlParser.js"; import { DestinationContext } from "./HiveSqlParser.js"; import { LimitClauseContext } from "./HiveSqlParser.js"; -import { DeleteStatementContext } from "./HiveSqlParser.js"; import { ColumnAssignmentClauseContext } from "./HiveSqlParser.js"; import { PrecedencePlusExpressionOrDefaultContext } from "./HiveSqlParser.js"; import { SetColumnsClauseContext } from "./HiveSqlParser.js"; -import { UpdateStatementContext } from "./HiveSqlParser.js"; import { SqlTransactionStatementContext } from "./HiveSqlParser.js"; -import { StartTransactionStatementContext } from "./HiveSqlParser.js"; import { TransactionModeContext } from "./HiveSqlParser.js"; -import { TransactionAccessModeContext } from "./HiveSqlParser.js"; -import { IsolationLevelContext } from "./HiveSqlParser.js"; -import { LevelOfIsolationContext } from "./HiveSqlParser.js"; -import { CommitStatementContext } from "./HiveSqlParser.js"; -import { RollbackStatementContext } from "./HiveSqlParser.js"; -import { SetAutoCommitStatementContext } from "./HiveSqlParser.js"; -import { AbortTransactionStatementContext } from "./HiveSqlParser.js"; -import { AbortCompactionStatementContext } from "./HiveSqlParser.js"; -import { MergeStatementContext } from "./HiveSqlParser.js"; import { WhenClausesContext } from "./HiveSqlParser.js"; import { WhenNotMatchedClauseContext } from "./HiveSqlParser.js"; import { WhenMatchedAndClauseContext } from "./HiveSqlParser.js"; import { WhenMatchedThenClauseContext } from "./HiveSqlParser.js"; -import { UpdateOrDeleteContext } from "./HiveSqlParser.js"; -import { KillQueryStatementContext } from "./HiveSqlParser.js"; -import { CompactionIdContext } from "./HiveSqlParser.js"; import { CompactionPoolContext } from "./HiveSqlParser.js"; import { CompactionTypeContext } from "./HiveSqlParser.js"; import { CompactionStatusContext } from "./HiveSqlParser.js"; import { AlterStatementContext } from "./HiveSqlParser.js"; import { AlterTableStatementSuffixContext } from "./HiveSqlParser.js"; import { AlterTblPartitionStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterStatementPartitionKeyTypeContext } from "./HiveSqlParser.js"; import { AlterViewStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewSuffixRewriteContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewSuffixRebuildContext } from "./HiveSqlParser.js"; import { AlterDatabaseStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetLocationContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetManagedLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenameContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddConstraintContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateColumnsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixProtectionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixDropConstraintContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenameColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateStatsColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateStatsContext } from "./HiveSqlParser.js"; -import { AlterStatementChangeColPositionContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddPartitionsElementContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixTouchContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixArchiveContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUnArchiveContext } from "./HiveSqlParser.js"; -import { PartitionLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRecoverPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixDropPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterViewSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSerdePropertiesContext } from "./HiveSqlParser.js"; -import { TablePartitionPrefixContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixFileFormatContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixClusterbySortbyContext } from "./HiveSqlParser.js"; -import { AlterTblPartitionStatementSuffixSkewedLocationContext } from "./HiveSqlParser.js"; -import { SkewedLocationsContext } from "./HiveSqlParser.js"; -import { SkewedLocationsListContext } from "./HiveSqlParser.js"; -import { SkewedLocationMapContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSkewedbyContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixExchangePartitionContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenamePartContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixStatsPartContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixMergeFilesContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixBucketNumContext } from "./HiveSqlParser.js"; -import { BlockingContext } from "./HiveSqlParser.js"; -import { CompactPoolContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixCompactContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSetPartSpecContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixExecuteContext } from "./HiveSqlParser.js"; -import { AlterIndexStatementSuffixContext } from "./HiveSqlParser.js"; -import { FileFormatContext } from "./HiveSqlParser.js"; import { AlterDataConnectorStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixSetUrlContext } from "./HiveSqlParser.js"; +import { LocationPathContext } from "./HiveSqlParser.js"; +import { AlterStatementSuffixDropPartitionsContext } from "./HiveSqlParser.js"; +import { SkewedLocationMapContext } from "./HiveSqlParser.js"; +import { AlterStatementSuffixExecuteContext } from "./HiveSqlParser.js"; +import { FileFormatContext } from "./HiveSqlParser.js"; import { LikeTableOrFileContext } from "./HiveSqlParser.js"; import { CreateTableStatementContext } from "./HiveSqlParser.js"; import { CreateDataConnectorStatementContext } from "./HiveSqlParser.js"; -import { DataConnectorCommentContext } from "./HiveSqlParser.js"; -import { DataConnectorUrlContext } from "./HiveSqlParser.js"; -import { DataConnectorTypeContext } from "./HiveSqlParser.js"; -import { DcPropertiesContext } from "./HiveSqlParser.js"; import { DropDataConnectorStatementContext } from "./HiveSqlParser.js"; import { TableAllColumnsContext } from "./HiveSqlParser.js"; -import { DefaultValueContext } from "./HiveSqlParser.js"; import { ExpressionListContext } from "./HiveSqlParser.js"; import { AliasListContext } from "./HiveSqlParser.js"; import { FromClauseContext } from "./HiveSqlParser.js"; @@ -326,17 +240,12 @@ import { AtomjoinSourceContext } from "./HiveSqlParser.js"; import { JoinSourceContext } from "./HiveSqlParser.js"; import { JoinSourcePartContext } from "./HiveSqlParser.js"; import { UniqueJoinSourceContext } from "./HiveSqlParser.js"; -import { UniqueJoinExprContext } from "./HiveSqlParser.js"; -import { UniqueJoinTokenContext } from "./HiveSqlParser.js"; import { JoinTokenContext } from "./HiveSqlParser.js"; import { LateralViewContext } from "./HiveSqlParser.js"; import { TableAliasContext } from "./HiveSqlParser.js"; -import { TableBucketSampleContext } from "./HiveSqlParser.js"; -import { SplitSampleContext } from "./HiveSqlParser.js"; import { TableSampleContext } from "./HiveSqlParser.js"; import { TableSourceContext } from "./HiveSqlParser.js"; import { AsOfClauseContext } from "./HiveSqlParser.js"; -import { UniqueJoinTableSourceContext } from "./HiveSqlParser.js"; import { DbSchemaNameContext } from "./HiveSqlParser.js"; import { DbSchemaNameCreateContext } from "./HiveSqlParser.js"; import { TableOrViewContext } from "./HiveSqlParser.js"; @@ -349,128 +258,75 @@ import { PartitioningSpecContext } from "./HiveSqlParser.js"; import { PartitionTableFunctionSourceContext } from "./HiveSqlParser.js"; import { PartitionedTableFunctionContext } from "./HiveSqlParser.js"; import { WhereClauseContext } from "./HiveSqlParser.js"; -import { SearchConditionContext } from "./HiveSqlParser.js"; -import { ValuesSourceContext } from "./HiveSqlParser.js"; import { ValuesClauseContext } from "./HiveSqlParser.js"; -import { ValuesTableConstructorContext } from "./HiveSqlParser.js"; -import { ValueRowConstructorContext } from "./HiveSqlParser.js"; -import { FirstValueRowConstructorContext } from "./HiveSqlParser.js"; import { VirtualTableSourceContext } from "./HiveSqlParser.js"; import { SelectClauseContext } from "./HiveSqlParser.js"; -import { All_distinctContext } from "./HiveSqlParser.js"; -import { SelectListContext } from "./HiveSqlParser.js"; import { SelectTrfmClauseContext } from "./HiveSqlParser.js"; import { SelectItemContext } from "./HiveSqlParser.js"; import { TrfmClauseContext } from "./HiveSqlParser.js"; import { SelectExpressionContext } from "./HiveSqlParser.js"; import { SelectExpressionListContext } from "./HiveSqlParser.js"; import { Window_clauseContext } from "./HiveSqlParser.js"; -import { Window_defnContext } from "./HiveSqlParser.js"; import { Window_specificationContext } from "./HiveSqlParser.js"; import { Window_frameContext } from "./HiveSqlParser.js"; -import { Window_range_expressionContext } from "./HiveSqlParser.js"; -import { Window_value_expressionContext } from "./HiveSqlParser.js"; -import { Window_frame_start_boundaryContext } from "./HiveSqlParser.js"; import { Window_frame_boundaryContext } from "./HiveSqlParser.js"; import { GroupByClauseContext } from "./HiveSqlParser.js"; -import { Groupby_expressionContext } from "./HiveSqlParser.js"; -import { GroupByEmptyContext } from "./HiveSqlParser.js"; import { RollupStandardContext } from "./HiveSqlParser.js"; import { RollupOldSyntaxContext } from "./HiveSqlParser.js"; import { GroupingSetExpressionContext } from "./HiveSqlParser.js"; -import { GroupingSetExpressionMultipleContext } from "./HiveSqlParser.js"; -import { GroupingExpressionSingleContext } from "./HiveSqlParser.js"; import { HavingClauseContext } from "./HiveSqlParser.js"; import { QualifyClauseContext } from "./HiveSqlParser.js"; -import { HavingConditionContext } from "./HiveSqlParser.js"; -import { ExpressionsInParenthesisContext } from "./HiveSqlParser.js"; -import { ExpressionsNotInParenthesisContext } from "./HiveSqlParser.js"; -import { ExpressionPartContext } from "./HiveSqlParser.js"; import { ExpressionOrDefaultContext } from "./HiveSqlParser.js"; import { FirstExpressionsWithAliasContext } from "./HiveSqlParser.js"; -import { ExpressionWithAliasContext } from "./HiveSqlParser.js"; import { ExpressionsContext } from "./HiveSqlParser.js"; -import { ColumnRefOrderInParenthesisContext } from "./HiveSqlParser.js"; -import { ColumnRefOrderNotInParenthesisContext } from "./HiveSqlParser.js"; +import { ExpressionsInParenthesisContext } from "./HiveSqlParser.js"; +import { ExpressionsNotInParenthesisContext } from "./HiveSqlParser.js"; import { OrderByClauseContext } from "./HiveSqlParser.js"; import { ClusterByClauseContext } from "./HiveSqlParser.js"; -import { PartitionByClauseContext } from "./HiveSqlParser.js"; import { DistributeByClauseContext } from "./HiveSqlParser.js"; import { SortByClauseContext } from "./HiveSqlParser.js"; -import { TrimFunctionContext } from "./HiveSqlParser.js"; import { Function_Context } from "./HiveSqlParser.js"; import { Null_treatmentContext } from "./HiveSqlParser.js"; import { FunctionNameCreateContext } from "./HiveSqlParser.js"; import { FunctionNameForDDLContext } from "./HiveSqlParser.js"; import { FunctionNameForInvokeContext } from "./HiveSqlParser.js"; -import { UserDefinedFuncNameContext } from "./HiveSqlParser.js"; -import { InternalFunctionNameContext } from "./HiveSqlParser.js"; import { CastExpressionContext } from "./HiveSqlParser.js"; import { CaseExpressionContext } from "./HiveSqlParser.js"; import { WhenExpressionContext } from "./HiveSqlParser.js"; import { FloorExpressionContext } from "./HiveSqlParser.js"; -import { FloorDateQualifiersContext } from "./HiveSqlParser.js"; import { ExtractExpressionContext } from "./HiveSqlParser.js"; import { TimeQualifiersContext } from "./HiveSqlParser.js"; import { ConstantContext } from "./HiveSqlParser.js"; -import { PrepareStmtParamContext } from "./HiveSqlParser.js"; -import { ParameterIdxContext } from "./HiveSqlParser.js"; -import { StringLiteralSequenceContext } from "./HiveSqlParser.js"; -import { CharSetStringLiteralContext } from "./HiveSqlParser.js"; -import { DateLiteralContext } from "./HiveSqlParser.js"; -import { TimestampLiteralContext } from "./HiveSqlParser.js"; -import { TimestampLocalTZLiteralContext } from "./HiveSqlParser.js"; import { IntervalValueContext } from "./HiveSqlParser.js"; -import { IntervalLiteralContext } from "./HiveSqlParser.js"; import { IntervalExpressionContext } from "./HiveSqlParser.js"; import { IntervalQualifiersContext } from "./HiveSqlParser.js"; import { ExpressionContext } from "./HiveSqlParser.js"; import { AtomExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceFieldExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceUnaryOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceUnaryPrefixExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceBitwiseXorOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceBitwiseXorExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceStarOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceStarExpressionContext } from "./HiveSqlParser.js"; -import { PrecedencePlusOperatorContext } from "./HiveSqlParser.js"; import { PrecedencePlusExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceConcatenateOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceConcatenateExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceAmpersandOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceAmpersandExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceBitwiseOrOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceBitwiseOrExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceRegexpOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarOperatorContext } from "./HiveSqlParser.js"; import { SubQueryExpressionContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceSimilarExpressionMainContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionPartContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionAtomContext } from "./HiveSqlParser.js"; -import { PrecedenceSimilarExpressionQuantifierPredicateContext } from "./HiveSqlParser.js"; -import { QuantifierTypeContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionInContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionPartNotContext } from "./HiveSqlParser.js"; import { PrecedenceDistinctOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceEqualOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceEqualExpressionContext } from "./HiveSqlParser.js"; import { IsConditionContext } from "./HiveSqlParser.js"; -import { PrecedenceUnarySuffixExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceNotOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceNotExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceAndOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceAndExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceOrOperatorContext } from "./HiveSqlParser.js"; -import { PrecedenceOrExpressionContext } from "./HiveSqlParser.js"; -import { BooleanValueContext } from "./HiveSqlParser.js"; -import { BooleanValueTokContext } from "./HiveSqlParser.js"; import { TableOrPartitionContext } from "./HiveSqlParser.js"; import { PartitionSpecContext } from "./HiveSqlParser.js"; import { PartitionValContext } from "./HiveSqlParser.js"; import { PartitionSelectorSpecContext } from "./HiveSqlParser.js"; import { PartitionSelectorValContext } from "./HiveSqlParser.js"; -import { PartitionSelectorOperatorContext } from "./HiveSqlParser.js"; import { SubQuerySelectorOperatorContext } from "./HiveSqlParser.js"; import { SysFuncNamesContext } from "./HiveSqlParser.js"; import { Id_Context } from "./HiveSqlParser.js"; @@ -478,26 +334,15 @@ import { FunctionIdentifierContext } from "./HiveSqlParser.js"; import { PrincipalIdentifierContext } from "./HiveSqlParser.js"; import { NonReservedContext } from "./HiveSqlParser.js"; import { Sql11ReservedKeywordsUsedAsFunctionNameContext } from "./HiveSqlParser.js"; -import { HintContext } from "./HiveSqlParser.js"; -import { HintListContext } from "./HiveSqlParser.js"; -import { HintItemContext } from "./HiveSqlParser.js"; -import { HintNameContext } from "./HiveSqlParser.js"; -import { HintArgsContext } from "./HiveSqlParser.js"; -import { HintArgNameContext } from "./HiveSqlParser.js"; -import { PrepareStatementContext } from "./HiveSqlParser.js"; -import { ExecuteStatementContext } from "./HiveSqlParser.js"; -import { ExecuteParamListContext } from "./HiveSqlParser.js"; +import { ConfigPropertiesItemContext } from "./HiveSqlParser.js"; import { ResourcePlanDdlStatementsContext } from "./HiveSqlParser.js"; +import { MappingTypesContext } from "./HiveSqlParser.js"; import { RpAssignContext } from "./HiveSqlParser.js"; import { RpAssignListContext } from "./HiveSqlParser.js"; import { RpUnassignContext } from "./HiveSqlParser.js"; -import { RpUnassignListContext } from "./HiveSqlParser.js"; -import { CreateResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { WithReplaceContext } from "./HiveSqlParser.js"; import { ActivateContext } from "./HiveSqlParser.js"; import { EnableContext } from "./HiveSqlParser.js"; import { DisableContext } from "./HiveSqlParser.js"; -import { UnmanagedContext } from "./HiveSqlParser.js"; import { YearContext } from "./HiveSqlParser.js"; import { MonthContext } from "./HiveSqlParser.js"; import { WeekContext } from "./HiveSqlParser.js"; @@ -506,31 +351,11 @@ import { HourContext } from "./HiveSqlParser.js"; import { MinuteContext } from "./HiveSqlParser.js"; import { SecondContext } from "./HiveSqlParser.js"; import { DecimalContext } from "./HiveSqlParser.js"; -import { AlterResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { GlobalWmStatementContext } from "./HiveSqlParser.js"; -import { ReplaceResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { DropResourcePlanStatementContext } from "./HiveSqlParser.js"; import { PoolPathContext } from "./HiveSqlParser.js"; -import { TriggerExpressionContext } from "./HiveSqlParser.js"; -import { TriggerExpressionStandaloneContext } from "./HiveSqlParser.js"; -import { TriggerOrExpressionContext } from "./HiveSqlParser.js"; -import { TriggerAndExpressionContext } from "./HiveSqlParser.js"; import { TriggerAtomExpressionContext } from "./HiveSqlParser.js"; -import { TriggerLiteralContext } from "./HiveSqlParser.js"; -import { ComparisionOperatorContext } from "./HiveSqlParser.js"; import { TriggerActionExpressionContext } from "./HiveSqlParser.js"; -import { TriggerActionExpressionStandaloneContext } from "./HiveSqlParser.js"; -import { CreateTriggerStatementContext } from "./HiveSqlParser.js"; -import { AlterTriggerStatementContext } from "./HiveSqlParser.js"; -import { DropTriggerStatementContext } from "./HiveSqlParser.js"; import { PoolAssignContext } from "./HiveSqlParser.js"; import { PoolAssignListContext } from "./HiveSqlParser.js"; -import { CreatePoolStatementContext } from "./HiveSqlParser.js"; -import { AlterPoolStatementContext } from "./HiveSqlParser.js"; -import { DropPoolStatementContext } from "./HiveSqlParser.js"; -import { CreateMappingStatementContext } from "./HiveSqlParser.js"; -import { AlterMappingStatementContext } from "./HiveSqlParser.js"; -import { DropMappingStatementContext } from "./HiveSqlParser.js"; /** @@ -578,16 +403,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitExplainOption?: (ctx: ExplainOptionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.vectorizationOnly`. - * @param ctx the parse tree - */ - enterVectorizationOnly?: (ctx: VectorizationOnlyContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.vectorizationOnly`. - * @param ctx the parse tree - */ - exitVectorizationOnly?: (ctx: VectorizationOnlyContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.vectorizatonDetail`. * @param ctx the parse tree @@ -618,16 +433,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitLoadStatement?: (ctx: LoadStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dropPartitionsIgnoreClause`. - * @param ctx the parse tree - */ - enterDropPartitionsIgnoreClause?: (ctx: DropPartitionsIgnoreClauseContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dropPartitionsIgnoreClause`. - * @param ctx the parse tree - */ - exitDropPartitionsIgnoreClause?: (ctx: DropPartitionsIgnoreClauseContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.replicationClause`. * @param ctx the parse tree @@ -688,26 +493,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitReplLoadStatement?: (ctx: ReplLoadStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.replConfigs`. - * @param ctx the parse tree - */ - enterReplConfigs?: (ctx: ReplConfigsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.replConfigs`. - * @param ctx the parse tree - */ - exitReplConfigs?: (ctx: ReplConfigsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.replConfigsList`. - * @param ctx the parse tree - */ - enterReplConfigsList?: (ctx: ReplConfigsListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.replConfigsList`. - * @param ctx the parse tree - */ - exitReplConfigsList?: (ctx: ReplConfigsListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.replTableLevelPolicy`. * @param ctx the parse tree @@ -718,16 +503,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitReplTableLevelPolicy?: (ctx: ReplTableLevelPolicyContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.replStatusStatement`. - * @param ctx the parse tree - */ - enterReplStatusStatement?: (ctx: ReplStatusStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.replStatusStatement`. - * @param ctx the parse tree - */ - exitReplStatusStatement?: (ctx: ReplStatusStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.ddlStatement`. * @param ctx the parse tree @@ -748,16 +523,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitIfExists?: (ctx: IfExistsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.restrictOrCascade`. - * @param ctx the parse tree - */ - enterRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.restrictOrCascade`. - * @param ctx the parse tree - */ - exitRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.ifNotExists`. * @param ctx the parse tree @@ -769,15 +534,15 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitIfNotExists?: (ctx: IfNotExistsContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.force`. + * Enter a parse tree produced by `HiveSqlParser.restrictOrCascade`. * @param ctx the parse tree */ - enterForce?: (ctx: ForceContext) => void; + enterRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.force`. + * Exit a parse tree produced by `HiveSqlParser.restrictOrCascade`. * @param ctx the parse tree */ - exitForce?: (ctx: ForceContext) => void; + exitRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.rewriteEnabled`. * @param ctx the parse tree @@ -808,16 +573,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitStoredAsDirs?: (ctx: StoredAsDirsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.orReplace`. - * @param ctx the parse tree - */ - enterOrReplace?: (ctx: OrReplaceContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.orReplace`. - * @param ctx the parse tree - */ - exitOrReplace?: (ctx: OrReplaceContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.createDatabaseStatement`. * @param ctx the parse tree @@ -828,46 +583,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateDatabaseStatement?: (ctx: CreateDatabaseStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dbLocation`. - * @param ctx the parse tree - */ - enterDbLocation?: (ctx: DbLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dbLocation`. - * @param ctx the parse tree - */ - exitDbLocation?: (ctx: DbLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dbManagedLocation`. - * @param ctx the parse tree - */ - enterDbManagedLocation?: (ctx: DbManagedLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dbManagedLocation`. - * @param ctx the parse tree - */ - exitDbManagedLocation?: (ctx: DbManagedLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dbProperties`. - * @param ctx the parse tree - */ - enterDbProperties?: (ctx: DbPropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dbProperties`. - * @param ctx the parse tree - */ - exitDbProperties?: (ctx: DbPropertiesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dbPropertiesList`. - * @param ctx the parse tree - */ - enterDbPropertiesList?: (ctx: DbPropertiesListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dbPropertiesList`. - * @param ctx the parse tree - */ - exitDbPropertiesList?: (ctx: DbPropertiesListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.dbConnectorName`. * @param ctx the parse tree @@ -1668,16 +1383,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateTablePartitionColumnTypeSpec?: (ctx: CreateTablePartitionColumnTypeSpecContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.createTablePartitionColumnSpec`. - * @param ctx the parse tree - */ - enterCreateTablePartitionColumnSpec?: (ctx: CreateTablePartitionColumnSpecContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.createTablePartitionColumnSpec`. - * @param ctx the parse tree - */ - exitCreateTablePartitionColumnSpec?: (ctx: CreateTablePartitionColumnSpecContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.partitionTransformSpec`. * @param ctx the parse tree @@ -1688,16 +1393,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPartitionTransformSpec?: (ctx: PartitionTransformSpecContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.columnNameTransformConstraint`. - * @param ctx the parse tree - */ - enterColumnNameTransformConstraint?: (ctx: ColumnNameTransformConstraintContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.columnNameTransformConstraint`. - * @param ctx the parse tree - */ - exitColumnNameTransformConstraint?: (ctx: ColumnNameTransformConstraintContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.partitionTransformType`. * @param ctx the parse tree @@ -1718,16 +1413,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTableBuckets?: (ctx: TableBucketsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.tableImplBuckets`. - * @param ctx the parse tree - */ - enterTableImplBuckets?: (ctx: TableImplBucketsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.tableImplBuckets`. - * @param ctx the parse tree - */ - exitTableImplBuckets?: (ctx: TableImplBucketsContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.tableSkewed`. * @param ctx the parse tree @@ -1828,6 +1513,26 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTablePropertiesList?: (ctx: TablePropertiesListContext) => void; + /** + * Enter a parse tree produced by `HiveSqlParser.keyValueProperties`. + * @param ctx the parse tree + */ + enterKeyValueProperties?: (ctx: KeyValuePropertiesContext) => void; + /** + * Exit a parse tree produced by `HiveSqlParser.keyValueProperties`. + * @param ctx the parse tree + */ + exitKeyValueProperties?: (ctx: KeyValuePropertiesContext) => void; + /** + * Enter a parse tree produced by `HiveSqlParser.keyValuePropertyList`. + * @param ctx the parse tree + */ + enterKeyValuePropertyList?: (ctx: KeyValuePropertyListContext) => void; + /** + * Exit a parse tree produced by `HiveSqlParser.keyValuePropertyList`. + * @param ctx the parse tree + */ + exitKeyValuePropertyList?: (ctx: KeyValuePropertyListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.keyValueProperty`. * @param ctx the parse tree @@ -1838,16 +1543,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitKeyValueProperty?: (ctx: KeyValuePropertyContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.keyProperty`. - * @param ctx the parse tree - */ - enterKeyProperty?: (ctx: KeyPropertyContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.keyProperty`. - * @param ctx the parse tree - */ - exitKeyProperty?: (ctx: KeyPropertyContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.tableRowFormatFieldIdentifier`. * @param ctx the parse tree @@ -1908,16 +1603,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTableFileFormat?: (ctx: TableFileFormatContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.tableLocation`. - * @param ctx the parse tree - */ - enterTableLocation?: (ctx: TableLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.tableLocation`. - * @param ctx the parse tree - */ - exitTableLocation?: (ctx: TableLocationContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.columnNameTypeList`. * @param ctx the parse tree @@ -2159,35 +1844,15 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitSkewedColumnValuePair?: (ctx: SkewedColumnValuePairContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.skewedColumnValues`. + * Enter a parse tree produced by `HiveSqlParser.constantList`. * @param ctx the parse tree */ - enterSkewedColumnValues?: (ctx: SkewedColumnValuesContext) => void; + enterConstantList?: (ctx: ConstantListContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.skewedColumnValues`. + * Exit a parse tree produced by `HiveSqlParser.constantList`. * @param ctx the parse tree */ - exitSkewedColumnValues?: (ctx: SkewedColumnValuesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.skewedColumnValue`. - * @param ctx the parse tree - */ - enterSkewedColumnValue?: (ctx: SkewedColumnValueContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.skewedColumnValue`. - * @param ctx the parse tree - */ - exitSkewedColumnValue?: (ctx: SkewedColumnValueContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.skewedValueLocationElement`. - * @param ctx the parse tree - */ - enterSkewedValueLocationElement?: (ctx: SkewedValueLocationElementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.skewedValueLocationElement`. - * @param ctx the parse tree - */ - exitSkewedValueLocationElement?: (ctx: SkewedValueLocationElementContext) => void; + exitConstantList?: (ctx: ConstantListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.orderSpecification`. * @param ctx the parse tree @@ -2238,16 +1903,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitColumnNameComment?: (ctx: ColumnNameCommentContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.orderSpecificationRewrite`. - * @param ctx the parse tree - */ - enterOrderSpecificationRewrite?: (ctx: OrderSpecificationRewriteContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.orderSpecificationRewrite`. - * @param ctx the parse tree - */ - exitOrderSpecificationRewrite?: (ctx: OrderSpecificationRewriteContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.columnRefOrder`. * @param ctx the parse tree @@ -2419,25 +2074,25 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitColumnNameColonType?: (ctx: ColumnNameColonTypeContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.colType`. + * Enter a parse tree produced by `HiveSqlParser.columnType`. * @param ctx the parse tree */ - enterColType?: (ctx: ColTypeContext) => void; + enterColumnType?: (ctx: ColumnTypeContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.colType`. + * Exit a parse tree produced by `HiveSqlParser.columnType`. * @param ctx the parse tree */ - exitColType?: (ctx: ColTypeContext) => void; + exitColumnType?: (ctx: ColumnTypeContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.colTypeList`. + * Enter a parse tree produced by `HiveSqlParser.columnTypeList`. * @param ctx the parse tree */ - enterColTypeList?: (ctx: ColTypeListContext) => void; + enterColumnTypeList?: (ctx: ColumnTypeListContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.colTypeList`. + * Exit a parse tree produced by `HiveSqlParser.columnTypeList`. * @param ctx the parse tree */ - exitColTypeList?: (ctx: ColTypeListContext) => void; + exitColumnTypeList?: (ctx: ColumnTypeListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.type`. * @param ctx the parse tree @@ -2676,16 +2331,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitLimitClause?: (ctx: LimitClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.deleteStatement`. - * @param ctx the parse tree - */ - enterDeleteStatement?: (ctx: DeleteStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.deleteStatement`. - * @param ctx the parse tree - */ - exitDeleteStatement?: (ctx: DeleteStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.columnAssignmentClause`. * @param ctx the parse tree @@ -2716,16 +2361,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSetColumnsClause?: (ctx: SetColumnsClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.updateStatement`. - * @param ctx the parse tree - */ - enterUpdateStatement?: (ctx: UpdateStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.updateStatement`. - * @param ctx the parse tree - */ - exitUpdateStatement?: (ctx: UpdateStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.sqlTransactionStatement`. * @param ctx the parse tree @@ -2736,16 +2371,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSqlTransactionStatement?: (ctx: SqlTransactionStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.startTransactionStatement`. - * @param ctx the parse tree - */ - enterStartTransactionStatement?: (ctx: StartTransactionStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.startTransactionStatement`. - * @param ctx the parse tree - */ - exitStartTransactionStatement?: (ctx: StartTransactionStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.transactionMode`. * @param ctx the parse tree @@ -2756,96 +2381,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTransactionMode?: (ctx: TransactionModeContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.transactionAccessMode`. - * @param ctx the parse tree - */ - enterTransactionAccessMode?: (ctx: TransactionAccessModeContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.transactionAccessMode`. - * @param ctx the parse tree - */ - exitTransactionAccessMode?: (ctx: TransactionAccessModeContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.isolationLevel`. - * @param ctx the parse tree - */ - enterIsolationLevel?: (ctx: IsolationLevelContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.isolationLevel`. - * @param ctx the parse tree - */ - exitIsolationLevel?: (ctx: IsolationLevelContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - enterLevelOfIsolation?: (ctx: LevelOfIsolationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.levelOfIsolation`. - * @param ctx the parse tree - */ - exitLevelOfIsolation?: (ctx: LevelOfIsolationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.commitStatement`. - * @param ctx the parse tree - */ - enterCommitStatement?: (ctx: CommitStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.commitStatement`. - * @param ctx the parse tree - */ - exitCommitStatement?: (ctx: CommitStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.rollbackStatement`. - * @param ctx the parse tree - */ - enterRollbackStatement?: (ctx: RollbackStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.rollbackStatement`. - * @param ctx the parse tree - */ - exitRollbackStatement?: (ctx: RollbackStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.setAutoCommitStatement`. - * @param ctx the parse tree - */ - enterSetAutoCommitStatement?: (ctx: SetAutoCommitStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.setAutoCommitStatement`. - * @param ctx the parse tree - */ - exitSetAutoCommitStatement?: (ctx: SetAutoCommitStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.abortTransactionStatement`. - * @param ctx the parse tree - */ - enterAbortTransactionStatement?: (ctx: AbortTransactionStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.abortTransactionStatement`. - * @param ctx the parse tree - */ - exitAbortTransactionStatement?: (ctx: AbortTransactionStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.abortCompactionStatement`. - * @param ctx the parse tree - */ - enterAbortCompactionStatement?: (ctx: AbortCompactionStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.abortCompactionStatement`. - * @param ctx the parse tree - */ - exitAbortCompactionStatement?: (ctx: AbortCompactionStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.mergeStatement`. - * @param ctx the parse tree - */ - enterMergeStatement?: (ctx: MergeStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.mergeStatement`. - * @param ctx the parse tree - */ - exitMergeStatement?: (ctx: MergeStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.whenClauses`. * @param ctx the parse tree @@ -2886,36 +2421,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitWhenMatchedThenClause?: (ctx: WhenMatchedThenClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.updateOrDelete`. - * @param ctx the parse tree - */ - enterUpdateOrDelete?: (ctx: UpdateOrDeleteContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.updateOrDelete`. - * @param ctx the parse tree - */ - exitUpdateOrDelete?: (ctx: UpdateOrDeleteContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.killQueryStatement`. - * @param ctx the parse tree - */ - enterKillQueryStatement?: (ctx: KillQueryStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.killQueryStatement`. - * @param ctx the parse tree - */ - exitKillQueryStatement?: (ctx: KillQueryStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.compactionId`. - * @param ctx the parse tree - */ - enterCompactionId?: (ctx: CompactionIdContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.compactionId`. - * @param ctx the parse tree - */ - exitCompactionId?: (ctx: CompactionIdContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.compactionPool`. * @param ctx the parse tree @@ -2976,16 +2481,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlterTblPartitionStatementSuffix?: (ctx: AlterTblPartitionStatementSuffixContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementPartitionKeyType`. - * @param ctx the parse tree - */ - enterAlterStatementPartitionKeyType?: (ctx: AlterStatementPartitionKeyTypeContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementPartitionKeyType`. - * @param ctx the parse tree - */ - exitAlterStatementPartitionKeyType?: (ctx: AlterStatementPartitionKeyTypeContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.alterViewStatementSuffix`. * @param ctx the parse tree @@ -2996,36 +2491,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlterViewStatementSuffix?: (ctx: AlterViewStatementSuffixContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterMaterializedViewStatementSuffix`. - * @param ctx the parse tree - */ - enterAlterMaterializedViewStatementSuffix?: (ctx: AlterMaterializedViewStatementSuffixContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterMaterializedViewStatementSuffix`. - * @param ctx the parse tree - */ - exitAlterMaterializedViewStatementSuffix?: (ctx: AlterMaterializedViewStatementSuffixContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRewrite`. - * @param ctx the parse tree - */ - enterAlterMaterializedViewSuffixRewrite?: (ctx: AlterMaterializedViewSuffixRewriteContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRewrite`. - * @param ctx the parse tree - */ - exitAlterMaterializedViewSuffixRewrite?: (ctx: AlterMaterializedViewSuffixRewriteContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRebuild`. - * @param ctx the parse tree - */ - enterAlterMaterializedViewSuffixRebuild?: (ctx: AlterMaterializedViewSuffixRebuildContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRebuild`. - * @param ctx the parse tree - */ - exitAlterMaterializedViewSuffixRebuild?: (ctx: AlterMaterializedViewSuffixRebuildContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.alterDatabaseStatementSuffix`. * @param ctx the parse tree @@ -3037,215 +2502,25 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitAlterDatabaseStatementSuffix?: (ctx: AlterDatabaseStatementSuffixContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.alterDatabaseSuffixProperties`. + * Enter a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. * @param ctx the parse tree */ - enterAlterDatabaseSuffixProperties?: (ctx: AlterDatabaseSuffixPropertiesContext) => void; + enterAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixProperties`. + * Exit a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. * @param ctx the parse tree */ - exitAlterDatabaseSuffixProperties?: (ctx: AlterDatabaseSuffixPropertiesContext) => void; + exitAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetOwner`. + * Enter a parse tree produced by `HiveSqlParser.locationPath`. * @param ctx the parse tree */ - enterAlterDatabaseSuffixSetOwner?: (ctx: AlterDatabaseSuffixSetOwnerContext) => void; + enterLocationPath?: (ctx: LocationPathContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetOwner`. + * Exit a parse tree produced by `HiveSqlParser.locationPath`. * @param ctx the parse tree */ - exitAlterDatabaseSuffixSetOwner?: (ctx: AlterDatabaseSuffixSetOwnerContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetLocation`. - * @param ctx the parse tree - */ - enterAlterDatabaseSuffixSetLocation?: (ctx: AlterDatabaseSuffixSetLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetLocation`. - * @param ctx the parse tree - */ - exitAlterDatabaseSuffixSetLocation?: (ctx: AlterDatabaseSuffixSetLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetManagedLocation`. - * @param ctx the parse tree - */ - enterAlterDatabaseSuffixSetManagedLocation?: (ctx: AlterDatabaseSuffixSetManagedLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetManagedLocation`. - * @param ctx the parse tree - */ - exitAlterDatabaseSuffixSetManagedLocation?: (ctx: AlterDatabaseSuffixSetManagedLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixRename`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixRename?: (ctx: AlterStatementSuffixRenameContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixRename`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixRename?: (ctx: AlterStatementSuffixRenameContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixAddCol`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixAddCol?: (ctx: AlterStatementSuffixAddColContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddCol`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixAddCol?: (ctx: AlterStatementSuffixAddColContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixAddConstraint`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixAddConstraint?: (ctx: AlterStatementSuffixAddConstraintContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddConstraint`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixAddConstraint?: (ctx: AlterStatementSuffixAddConstraintContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateColumns`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixUpdateColumns?: (ctx: AlterStatementSuffixUpdateColumnsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateColumns`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixUpdateColumns?: (ctx: AlterStatementSuffixUpdateColumnsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixProtections`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixProtections?: (ctx: AlterStatementSuffixProtectionsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixProtections`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixProtections?: (ctx: AlterStatementSuffixProtectionsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixDropConstraint`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixDropConstraint?: (ctx: AlterStatementSuffixDropConstraintContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixDropConstraint`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixDropConstraint?: (ctx: AlterStatementSuffixDropConstraintContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixRenameCol`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixRenameCol?: (ctx: AlterStatementSuffixRenameColContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixRenameCol`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixRenameCol?: (ctx: AlterStatementSuffixRenameColContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStatsCol`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixUpdateStatsCol?: (ctx: AlterStatementSuffixUpdateStatsColContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStatsCol`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixUpdateStatsCol?: (ctx: AlterStatementSuffixUpdateStatsColContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStats`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixUpdateStats?: (ctx: AlterStatementSuffixUpdateStatsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStats`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixUpdateStats?: (ctx: AlterStatementSuffixUpdateStatsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementChangeColPosition`. - * @param ctx the parse tree - */ - enterAlterStatementChangeColPosition?: (ctx: AlterStatementChangeColPositionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementChangeColPosition`. - * @param ctx the parse tree - */ - exitAlterStatementChangeColPosition?: (ctx: AlterStatementChangeColPositionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitions`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixAddPartitions?: (ctx: AlterStatementSuffixAddPartitionsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitions`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixAddPartitions?: (ctx: AlterStatementSuffixAddPartitionsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitionsElement`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixAddPartitionsElement?: (ctx: AlterStatementSuffixAddPartitionsElementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitionsElement`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixAddPartitionsElement?: (ctx: AlterStatementSuffixAddPartitionsElementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixTouch`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixTouch?: (ctx: AlterStatementSuffixTouchContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixTouch`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixTouch?: (ctx: AlterStatementSuffixTouchContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixArchive`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixArchive?: (ctx: AlterStatementSuffixArchiveContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixArchive`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixArchive?: (ctx: AlterStatementSuffixArchiveContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixUnArchive`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixUnArchive?: (ctx: AlterStatementSuffixUnArchiveContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixUnArchive`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixUnArchive?: (ctx: AlterStatementSuffixUnArchiveContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.partitionLocation`. - * @param ctx the parse tree - */ - enterPartitionLocation?: (ctx: PartitionLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.partitionLocation`. - * @param ctx the parse tree - */ - exitPartitionLocation?: (ctx: PartitionLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixRecoverPartitions`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixRecoverPartitions?: (ctx: AlterStatementSuffixRecoverPartitionsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixRecoverPartitions`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixRecoverPartitions?: (ctx: AlterStatementSuffixRecoverPartitionsContext) => void; + exitLocationPath?: (ctx: LocationPathContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixDropPartitions`. * @param ctx the parse tree @@ -3256,96 +2531,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlterStatementSuffixDropPartitions?: (ctx: AlterStatementSuffixDropPartitionsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixProperties`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixProperties?: (ctx: AlterStatementSuffixPropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixProperties`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixProperties?: (ctx: AlterStatementSuffixPropertiesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterViewSuffixProperties`. - * @param ctx the parse tree - */ - enterAlterViewSuffixProperties?: (ctx: AlterViewSuffixPropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterViewSuffixProperties`. - * @param ctx the parse tree - */ - exitAlterViewSuffixProperties?: (ctx: AlterViewSuffixPropertiesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixSerdeProperties`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixSerdeProperties?: (ctx: AlterStatementSuffixSerdePropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixSerdeProperties`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixSerdeProperties?: (ctx: AlterStatementSuffixSerdePropertiesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.tablePartitionPrefix`. - * @param ctx the parse tree - */ - enterTablePartitionPrefix?: (ctx: TablePartitionPrefixContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.tablePartitionPrefix`. - * @param ctx the parse tree - */ - exitTablePartitionPrefix?: (ctx: TablePartitionPrefixContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixFileFormat`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixFileFormat?: (ctx: AlterStatementSuffixFileFormatContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixFileFormat`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixFileFormat?: (ctx: AlterStatementSuffixFileFormatContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixClusterbySortby`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixClusterbySortby?: (ctx: AlterStatementSuffixClusterbySortbyContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixClusterbySortby`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixClusterbySortby?: (ctx: AlterStatementSuffixClusterbySortbyContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterTblPartitionStatementSuffixSkewedLocation`. - * @param ctx the parse tree - */ - enterAlterTblPartitionStatementSuffixSkewedLocation?: (ctx: AlterTblPartitionStatementSuffixSkewedLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterTblPartitionStatementSuffixSkewedLocation`. - * @param ctx the parse tree - */ - exitAlterTblPartitionStatementSuffixSkewedLocation?: (ctx: AlterTblPartitionStatementSuffixSkewedLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.skewedLocations`. - * @param ctx the parse tree - */ - enterSkewedLocations?: (ctx: SkewedLocationsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.skewedLocations`. - * @param ctx the parse tree - */ - exitSkewedLocations?: (ctx: SkewedLocationsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.skewedLocationsList`. - * @param ctx the parse tree - */ - enterSkewedLocationsList?: (ctx: SkewedLocationsListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.skewedLocationsList`. - * @param ctx the parse tree - */ - exitSkewedLocationsList?: (ctx: SkewedLocationsListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.skewedLocationMap`. * @param ctx the parse tree @@ -3356,126 +2541,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSkewedLocationMap?: (ctx: SkewedLocationMapContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixLocation`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixLocation?: (ctx: AlterStatementSuffixLocationContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixLocation`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixLocation?: (ctx: AlterStatementSuffixLocationContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixSkewedby`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixSkewedby?: (ctx: AlterStatementSuffixSkewedbyContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixSkewedby`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixSkewedby?: (ctx: AlterStatementSuffixSkewedbyContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixExchangePartition`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixExchangePartition?: (ctx: AlterStatementSuffixExchangePartitionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixExchangePartition`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixExchangePartition?: (ctx: AlterStatementSuffixExchangePartitionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixRenamePart`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixRenamePart?: (ctx: AlterStatementSuffixRenamePartContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixRenamePart`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixRenamePart?: (ctx: AlterStatementSuffixRenamePartContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixStatsPart`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixStatsPart?: (ctx: AlterStatementSuffixStatsPartContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixStatsPart`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixStatsPart?: (ctx: AlterStatementSuffixStatsPartContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixMergeFiles`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixMergeFiles?: (ctx: AlterStatementSuffixMergeFilesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixMergeFiles`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixMergeFiles?: (ctx: AlterStatementSuffixMergeFilesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixBucketNum`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixBucketNum?: (ctx: AlterStatementSuffixBucketNumContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixBucketNum`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixBucketNum?: (ctx: AlterStatementSuffixBucketNumContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.blocking`. - * @param ctx the parse tree - */ - enterBlocking?: (ctx: BlockingContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.blocking`. - * @param ctx the parse tree - */ - exitBlocking?: (ctx: BlockingContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.compactPool`. - * @param ctx the parse tree - */ - enterCompactPool?: (ctx: CompactPoolContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.compactPool`. - * @param ctx the parse tree - */ - exitCompactPool?: (ctx: CompactPoolContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixCompact`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixCompact?: (ctx: AlterStatementSuffixCompactContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixCompact`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixCompact?: (ctx: AlterStatementSuffixCompactContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixSetOwner`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixSetOwner?: (ctx: AlterStatementSuffixSetOwnerContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixSetOwner`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixSetOwner?: (ctx: AlterStatementSuffixSetOwnerContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixSetPartSpec`. - * @param ctx the parse tree - */ - enterAlterStatementSuffixSetPartSpec?: (ctx: AlterStatementSuffixSetPartSpecContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterStatementSuffixSetPartSpec`. - * @param ctx the parse tree - */ - exitAlterStatementSuffixSetPartSpec?: (ctx: AlterStatementSuffixSetPartSpecContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.alterStatementSuffixExecute`. * @param ctx the parse tree @@ -3486,16 +2551,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAlterStatementSuffixExecute?: (ctx: AlterStatementSuffixExecuteContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterIndexStatementSuffix`. - * @param ctx the parse tree - */ - enterAlterIndexStatementSuffix?: (ctx: AlterIndexStatementSuffixContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterIndexStatementSuffix`. - * @param ctx the parse tree - */ - exitAlterIndexStatementSuffix?: (ctx: AlterIndexStatementSuffixContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.fileFormat`. * @param ctx the parse tree @@ -3506,46 +2561,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitFileFormat?: (ctx: FileFormatContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. - * @param ctx the parse tree - */ - enterAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. - * @param ctx the parse tree - */ - exitAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixProperties`. - * @param ctx the parse tree - */ - enterAlterDataConnectorSuffixProperties?: (ctx: AlterDataConnectorSuffixPropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixProperties`. - * @param ctx the parse tree - */ - exitAlterDataConnectorSuffixProperties?: (ctx: AlterDataConnectorSuffixPropertiesContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetOwner`. - * @param ctx the parse tree - */ - enterAlterDataConnectorSuffixSetOwner?: (ctx: AlterDataConnectorSuffixSetOwnerContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetOwner`. - * @param ctx the parse tree - */ - exitAlterDataConnectorSuffixSetOwner?: (ctx: AlterDataConnectorSuffixSetOwnerContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetUrl`. - * @param ctx the parse tree - */ - enterAlterDataConnectorSuffixSetUrl?: (ctx: AlterDataConnectorSuffixSetUrlContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetUrl`. - * @param ctx the parse tree - */ - exitAlterDataConnectorSuffixSetUrl?: (ctx: AlterDataConnectorSuffixSetUrlContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.likeTableOrFile`. * @param ctx the parse tree @@ -3576,46 +2591,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateDataConnectorStatement?: (ctx: CreateDataConnectorStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dataConnectorComment`. - * @param ctx the parse tree - */ - enterDataConnectorComment?: (ctx: DataConnectorCommentContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dataConnectorComment`. - * @param ctx the parse tree - */ - exitDataConnectorComment?: (ctx: DataConnectorCommentContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dataConnectorUrl`. - * @param ctx the parse tree - */ - enterDataConnectorUrl?: (ctx: DataConnectorUrlContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dataConnectorUrl`. - * @param ctx the parse tree - */ - exitDataConnectorUrl?: (ctx: DataConnectorUrlContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dataConnectorType`. - * @param ctx the parse tree - */ - enterDataConnectorType?: (ctx: DataConnectorTypeContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dataConnectorType`. - * @param ctx the parse tree - */ - exitDataConnectorType?: (ctx: DataConnectorTypeContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dcProperties`. - * @param ctx the parse tree - */ - enterDcProperties?: (ctx: DcPropertiesContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dcProperties`. - * @param ctx the parse tree - */ - exitDcProperties?: (ctx: DcPropertiesContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.dropDataConnectorStatement`. * @param ctx the parse tree @@ -3636,16 +2611,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTableAllColumns?: (ctx: TableAllColumnsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.defaultValue`. - * @param ctx the parse tree - */ - enterDefaultValue?: (ctx: DefaultValueContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.defaultValue`. - * @param ctx the parse tree - */ - exitDefaultValue?: (ctx: DefaultValueContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.expressionList`. * @param ctx the parse tree @@ -3726,26 +2691,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitUniqueJoinSource?: (ctx: UniqueJoinSourceContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.uniqueJoinExpr`. - * @param ctx the parse tree - */ - enterUniqueJoinExpr?: (ctx: UniqueJoinExprContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.uniqueJoinExpr`. - * @param ctx the parse tree - */ - exitUniqueJoinExpr?: (ctx: UniqueJoinExprContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.uniqueJoinToken`. - * @param ctx the parse tree - */ - enterUniqueJoinToken?: (ctx: UniqueJoinTokenContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.uniqueJoinToken`. - * @param ctx the parse tree - */ - exitUniqueJoinToken?: (ctx: UniqueJoinTokenContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.joinToken`. * @param ctx the parse tree @@ -3776,26 +2721,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTableAlias?: (ctx: TableAliasContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.tableBucketSample`. - * @param ctx the parse tree - */ - enterTableBucketSample?: (ctx: TableBucketSampleContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.tableBucketSample`. - * @param ctx the parse tree - */ - exitTableBucketSample?: (ctx: TableBucketSampleContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.splitSample`. - * @param ctx the parse tree - */ - enterSplitSample?: (ctx: SplitSampleContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.splitSample`. - * @param ctx the parse tree - */ - exitSplitSample?: (ctx: SplitSampleContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.tableSample`. * @param ctx the parse tree @@ -3826,16 +2751,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAsOfClause?: (ctx: AsOfClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.uniqueJoinTableSource`. - * @param ctx the parse tree - */ - enterUniqueJoinTableSource?: (ctx: UniqueJoinTableSourceContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.uniqueJoinTableSource`. - * @param ctx the parse tree - */ - exitUniqueJoinTableSource?: (ctx: UniqueJoinTableSourceContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.dbSchemaName`. * @param ctx the parse tree @@ -3956,26 +2871,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitWhereClause?: (ctx: WhereClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.searchCondition`. - * @param ctx the parse tree - */ - enterSearchCondition?: (ctx: SearchConditionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.searchCondition`. - * @param ctx the parse tree - */ - exitSearchCondition?: (ctx: SearchConditionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.valuesSource`. - * @param ctx the parse tree - */ - enterValuesSource?: (ctx: ValuesSourceContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.valuesSource`. - * @param ctx the parse tree - */ - exitValuesSource?: (ctx: ValuesSourceContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.valuesClause`. * @param ctx the parse tree @@ -3986,36 +2881,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitValuesClause?: (ctx: ValuesClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.valuesTableConstructor`. - * @param ctx the parse tree - */ - enterValuesTableConstructor?: (ctx: ValuesTableConstructorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.valuesTableConstructor`. - * @param ctx the parse tree - */ - exitValuesTableConstructor?: (ctx: ValuesTableConstructorContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.valueRowConstructor`. - * @param ctx the parse tree - */ - enterValueRowConstructor?: (ctx: ValueRowConstructorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.valueRowConstructor`. - * @param ctx the parse tree - */ - exitValueRowConstructor?: (ctx: ValueRowConstructorContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.firstValueRowConstructor`. - * @param ctx the parse tree - */ - enterFirstValueRowConstructor?: (ctx: FirstValueRowConstructorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.firstValueRowConstructor`. - * @param ctx the parse tree - */ - exitFirstValueRowConstructor?: (ctx: FirstValueRowConstructorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.virtualTableSource`. * @param ctx the parse tree @@ -4036,26 +2901,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSelectClause?: (ctx: SelectClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.all_distinct`. - * @param ctx the parse tree - */ - enterAll_distinct?: (ctx: All_distinctContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.all_distinct`. - * @param ctx the parse tree - */ - exitAll_distinct?: (ctx: All_distinctContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.selectList`. - * @param ctx the parse tree - */ - enterSelectList?: (ctx: SelectListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.selectList`. - * @param ctx the parse tree - */ - exitSelectList?: (ctx: SelectListContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.selectTrfmClause`. * @param ctx the parse tree @@ -4116,16 +2961,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitWindow_clause?: (ctx: Window_clauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.window_defn`. - * @param ctx the parse tree - */ - enterWindow_defn?: (ctx: Window_defnContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.window_defn`. - * @param ctx the parse tree - */ - exitWindow_defn?: (ctx: Window_defnContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.window_specification`. * @param ctx the parse tree @@ -4146,36 +2981,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitWindow_frame?: (ctx: Window_frameContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.window_range_expression`. - * @param ctx the parse tree - */ - enterWindow_range_expression?: (ctx: Window_range_expressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.window_range_expression`. - * @param ctx the parse tree - */ - exitWindow_range_expression?: (ctx: Window_range_expressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.window_value_expression`. - * @param ctx the parse tree - */ - enterWindow_value_expression?: (ctx: Window_value_expressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.window_value_expression`. - * @param ctx the parse tree - */ - exitWindow_value_expression?: (ctx: Window_value_expressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.window_frame_start_boundary`. - * @param ctx the parse tree - */ - enterWindow_frame_start_boundary?: (ctx: Window_frame_start_boundaryContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.window_frame_start_boundary`. - * @param ctx the parse tree - */ - exitWindow_frame_start_boundary?: (ctx: Window_frame_start_boundaryContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.window_frame_boundary`. * @param ctx the parse tree @@ -4196,26 +3001,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitGroupByClause?: (ctx: GroupByClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.groupby_expression`. - * @param ctx the parse tree - */ - enterGroupby_expression?: (ctx: Groupby_expressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.groupby_expression`. - * @param ctx the parse tree - */ - exitGroupby_expression?: (ctx: Groupby_expressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.groupByEmpty`. - * @param ctx the parse tree - */ - enterGroupByEmpty?: (ctx: GroupByEmptyContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.groupByEmpty`. - * @param ctx the parse tree - */ - exitGroupByEmpty?: (ctx: GroupByEmptyContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.rollupStandard`. * @param ctx the parse tree @@ -4246,26 +3031,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitGroupingSetExpression?: (ctx: GroupingSetExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.groupingSetExpressionMultiple`. - * @param ctx the parse tree - */ - enterGroupingSetExpressionMultiple?: (ctx: GroupingSetExpressionMultipleContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.groupingSetExpressionMultiple`. - * @param ctx the parse tree - */ - exitGroupingSetExpressionMultiple?: (ctx: GroupingSetExpressionMultipleContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.groupingExpressionSingle`. - * @param ctx the parse tree - */ - enterGroupingExpressionSingle?: (ctx: GroupingExpressionSingleContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.groupingExpressionSingle`. - * @param ctx the parse tree - */ - exitGroupingExpressionSingle?: (ctx: GroupingExpressionSingleContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.havingClause`. * @param ctx the parse tree @@ -4286,46 +3051,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitQualifyClause?: (ctx: QualifyClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.havingCondition`. - * @param ctx the parse tree - */ - enterHavingCondition?: (ctx: HavingConditionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.havingCondition`. - * @param ctx the parse tree - */ - exitHavingCondition?: (ctx: HavingConditionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. - * @param ctx the parse tree - */ - enterExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. - * @param ctx the parse tree - */ - exitExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. - * @param ctx the parse tree - */ - enterExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. - * @param ctx the parse tree - */ - exitExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.expressionPart`. - * @param ctx the parse tree - */ - enterExpressionPart?: (ctx: ExpressionPartContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.expressionPart`. - * @param ctx the parse tree - */ - exitExpressionPart?: (ctx: ExpressionPartContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.expressionOrDefault`. * @param ctx the parse tree @@ -4346,16 +3071,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitFirstExpressionsWithAlias?: (ctx: FirstExpressionsWithAliasContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.expressionWithAlias`. - * @param ctx the parse tree - */ - enterExpressionWithAlias?: (ctx: ExpressionWithAliasContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.expressionWithAlias`. - * @param ctx the parse tree - */ - exitExpressionWithAlias?: (ctx: ExpressionWithAliasContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.expressions`. * @param ctx the parse tree @@ -4367,25 +3082,25 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitExpressions?: (ctx: ExpressionsContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.columnRefOrderInParenthesis`. + * Enter a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. * @param ctx the parse tree */ - enterColumnRefOrderInParenthesis?: (ctx: ColumnRefOrderInParenthesisContext) => void; + enterExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.columnRefOrderInParenthesis`. + * Exit a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. * @param ctx the parse tree */ - exitColumnRefOrderInParenthesis?: (ctx: ColumnRefOrderInParenthesisContext) => void; + exitExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.columnRefOrderNotInParenthesis`. + * Enter a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. * @param ctx the parse tree */ - enterColumnRefOrderNotInParenthesis?: (ctx: ColumnRefOrderNotInParenthesisContext) => void; + enterExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.columnRefOrderNotInParenthesis`. + * Exit a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. * @param ctx the parse tree */ - exitColumnRefOrderNotInParenthesis?: (ctx: ColumnRefOrderNotInParenthesisContext) => void; + exitExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.orderByClause`. * @param ctx the parse tree @@ -4406,16 +3121,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitClusterByClause?: (ctx: ClusterByClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.partitionByClause`. - * @param ctx the parse tree - */ - enterPartitionByClause?: (ctx: PartitionByClauseContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.partitionByClause`. - * @param ctx the parse tree - */ - exitPartitionByClause?: (ctx: PartitionByClauseContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.distributeByClause`. * @param ctx the parse tree @@ -4436,16 +3141,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitSortByClause?: (ctx: SortByClauseContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.trimFunction`. - * @param ctx the parse tree - */ - enterTrimFunction?: (ctx: TrimFunctionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.trimFunction`. - * @param ctx the parse tree - */ - exitTrimFunction?: (ctx: TrimFunctionContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.function_`. * @param ctx the parse tree @@ -4496,26 +3191,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitFunctionNameForInvoke?: (ctx: FunctionNameForInvokeContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.userDefinedFuncName`. - * @param ctx the parse tree - */ - enterUserDefinedFuncName?: (ctx: UserDefinedFuncNameContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.userDefinedFuncName`. - * @param ctx the parse tree - */ - exitUserDefinedFuncName?: (ctx: UserDefinedFuncNameContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.internalFunctionName`. - * @param ctx the parse tree - */ - enterInternalFunctionName?: (ctx: InternalFunctionNameContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.internalFunctionName`. - * @param ctx the parse tree - */ - exitInternalFunctionName?: (ctx: InternalFunctionNameContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.castExpression`. * @param ctx the parse tree @@ -4556,16 +3231,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitFloorExpression?: (ctx: FloorExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.floorDateQualifiers`. - * @param ctx the parse tree - */ - enterFloorDateQualifiers?: (ctx: FloorDateQualifiersContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.floorDateQualifiers`. - * @param ctx the parse tree - */ - exitFloorDateQualifiers?: (ctx: FloorDateQualifiersContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.extractExpression`. * @param ctx the parse tree @@ -4596,76 +3261,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitConstant?: (ctx: ConstantContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.prepareStmtParam`. - * @param ctx the parse tree - */ - enterPrepareStmtParam?: (ctx: PrepareStmtParamContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.prepareStmtParam`. - * @param ctx the parse tree - */ - exitPrepareStmtParam?: (ctx: PrepareStmtParamContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.parameterIdx`. - * @param ctx the parse tree - */ - enterParameterIdx?: (ctx: ParameterIdxContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.parameterIdx`. - * @param ctx the parse tree - */ - exitParameterIdx?: (ctx: ParameterIdxContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.stringLiteralSequence`. - * @param ctx the parse tree - */ - enterStringLiteralSequence?: (ctx: StringLiteralSequenceContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.stringLiteralSequence`. - * @param ctx the parse tree - */ - exitStringLiteralSequence?: (ctx: StringLiteralSequenceContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.charSetStringLiteral`. - * @param ctx the parse tree - */ - enterCharSetStringLiteral?: (ctx: CharSetStringLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.charSetStringLiteral`. - * @param ctx the parse tree - */ - exitCharSetStringLiteral?: (ctx: CharSetStringLiteralContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dateLiteral`. - * @param ctx the parse tree - */ - enterDateLiteral?: (ctx: DateLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dateLiteral`. - * @param ctx the parse tree - */ - exitDateLiteral?: (ctx: DateLiteralContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.timestampLiteral`. - * @param ctx the parse tree - */ - enterTimestampLiteral?: (ctx: TimestampLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.timestampLiteral`. - * @param ctx the parse tree - */ - exitTimestampLiteral?: (ctx: TimestampLiteralContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.timestampLocalTZLiteral`. - * @param ctx the parse tree - */ - enterTimestampLocalTZLiteral?: (ctx: TimestampLocalTZLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.timestampLocalTZLiteral`. - * @param ctx the parse tree - */ - exitTimestampLocalTZLiteral?: (ctx: TimestampLocalTZLiteralContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.intervalValue`. * @param ctx the parse tree @@ -4676,16 +3271,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitIntervalValue?: (ctx: IntervalValueContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.intervalLiteral`. - * @param ctx the parse tree - */ - enterIntervalLiteral?: (ctx: IntervalLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.intervalLiteral`. - * @param ctx the parse tree - */ - exitIntervalLiteral?: (ctx: IntervalLiteralContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.intervalExpression`. * @param ctx the parse tree @@ -4726,26 +3311,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAtomExpression?: (ctx: AtomExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceFieldExpression`. - * @param ctx the parse tree - */ - enterPrecedenceFieldExpression?: (ctx: PrecedenceFieldExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceFieldExpression`. - * @param ctx the parse tree - */ - exitPrecedenceFieldExpression?: (ctx: PrecedenceFieldExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceUnaryOperator`. - * @param ctx the parse tree - */ - enterPrecedenceUnaryOperator?: (ctx: PrecedenceUnaryOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceUnaryOperator`. - * @param ctx the parse tree - */ - exitPrecedenceUnaryOperator?: (ctx: PrecedenceUnaryOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceUnaryPrefixExpression`. * @param ctx the parse tree @@ -4756,16 +3321,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceUnaryPrefixExpression?: (ctx: PrecedenceUnaryPrefixExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceBitwiseXorOperator`. - * @param ctx the parse tree - */ - enterPrecedenceBitwiseXorOperator?: (ctx: PrecedenceBitwiseXorOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceBitwiseXorOperator`. - * @param ctx the parse tree - */ - exitPrecedenceBitwiseXorOperator?: (ctx: PrecedenceBitwiseXorOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceBitwiseXorExpression`. * @param ctx the parse tree @@ -4776,16 +3331,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceBitwiseXorExpression?: (ctx: PrecedenceBitwiseXorExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceStarOperator`. - * @param ctx the parse tree - */ - enterPrecedenceStarOperator?: (ctx: PrecedenceStarOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceStarOperator`. - * @param ctx the parse tree - */ - exitPrecedenceStarOperator?: (ctx: PrecedenceStarOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceStarExpression`. * @param ctx the parse tree @@ -4796,16 +3341,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceStarExpression?: (ctx: PrecedenceStarExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedencePlusOperator`. - * @param ctx the parse tree - */ - enterPrecedencePlusOperator?: (ctx: PrecedencePlusOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedencePlusOperator`. - * @param ctx the parse tree - */ - exitPrecedencePlusOperator?: (ctx: PrecedencePlusOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedencePlusExpression`. * @param ctx the parse tree @@ -4816,16 +3351,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedencePlusExpression?: (ctx: PrecedencePlusExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceConcatenateOperator`. - * @param ctx the parse tree - */ - enterPrecedenceConcatenateOperator?: (ctx: PrecedenceConcatenateOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceConcatenateOperator`. - * @param ctx the parse tree - */ - exitPrecedenceConcatenateOperator?: (ctx: PrecedenceConcatenateOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceConcatenateExpression`. * @param ctx the parse tree @@ -4836,16 +3361,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceConcatenateExpression?: (ctx: PrecedenceConcatenateExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceAmpersandOperator`. - * @param ctx the parse tree - */ - enterPrecedenceAmpersandOperator?: (ctx: PrecedenceAmpersandOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceAmpersandOperator`. - * @param ctx the parse tree - */ - exitPrecedenceAmpersandOperator?: (ctx: PrecedenceAmpersandOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceAmpersandExpression`. * @param ctx the parse tree @@ -4856,16 +3371,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceAmpersandExpression?: (ctx: PrecedenceAmpersandExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceBitwiseOrOperator`. - * @param ctx the parse tree - */ - enterPrecedenceBitwiseOrOperator?: (ctx: PrecedenceBitwiseOrOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceBitwiseOrOperator`. - * @param ctx the parse tree - */ - exitPrecedenceBitwiseOrOperator?: (ctx: PrecedenceBitwiseOrOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceBitwiseOrExpression`. * @param ctx the parse tree @@ -4876,16 +3381,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceBitwiseOrExpression?: (ctx: PrecedenceBitwiseOrExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceRegexpOperator`. - * @param ctx the parse tree - */ - enterPrecedenceRegexpOperator?: (ctx: PrecedenceRegexpOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceRegexpOperator`. - * @param ctx the parse tree - */ - exitPrecedenceRegexpOperator?: (ctx: PrecedenceRegexpOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceSimilarOperator`. * @param ctx the parse tree @@ -4916,16 +3411,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceSimilarExpression?: (ctx: PrecedenceSimilarExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionMain`. - * @param ctx the parse tree - */ - enterPrecedenceSimilarExpressionMain?: (ctx: PrecedenceSimilarExpressionMainContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionMain`. - * @param ctx the parse tree - */ - exitPrecedenceSimilarExpressionMain?: (ctx: PrecedenceSimilarExpressionMainContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionPart`. * @param ctx the parse tree @@ -4946,26 +3431,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceSimilarExpressionAtom?: (ctx: PrecedenceSimilarExpressionAtomContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionQuantifierPredicate`. - * @param ctx the parse tree - */ - enterPrecedenceSimilarExpressionQuantifierPredicate?: (ctx: PrecedenceSimilarExpressionQuantifierPredicateContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionQuantifierPredicate`. - * @param ctx the parse tree - */ - exitPrecedenceSimilarExpressionQuantifierPredicate?: (ctx: PrecedenceSimilarExpressionQuantifierPredicateContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.quantifierType`. - * @param ctx the parse tree - */ - enterQuantifierType?: (ctx: QuantifierTypeContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.quantifierType`. - * @param ctx the parse tree - */ - exitQuantifierType?: (ctx: QuantifierTypeContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionIn`. * @param ctx the parse tree @@ -5026,26 +3491,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitIsCondition?: (ctx: IsConditionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceUnarySuffixExpression`. - * @param ctx the parse tree - */ - enterPrecedenceUnarySuffixExpression?: (ctx: PrecedenceUnarySuffixExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceUnarySuffixExpression`. - * @param ctx the parse tree - */ - exitPrecedenceUnarySuffixExpression?: (ctx: PrecedenceUnarySuffixExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceNotOperator`. - * @param ctx the parse tree - */ - enterPrecedenceNotOperator?: (ctx: PrecedenceNotOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceNotOperator`. - * @param ctx the parse tree - */ - exitPrecedenceNotOperator?: (ctx: PrecedenceNotOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceNotExpression`. * @param ctx the parse tree @@ -5056,16 +3501,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceNotExpression?: (ctx: PrecedenceNotExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceAndOperator`. - * @param ctx the parse tree - */ - enterPrecedenceAndOperator?: (ctx: PrecedenceAndOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceAndOperator`. - * @param ctx the parse tree - */ - exitPrecedenceAndOperator?: (ctx: PrecedenceAndOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.precedenceAndExpression`. * @param ctx the parse tree @@ -5076,46 +3511,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPrecedenceAndExpression?: (ctx: PrecedenceAndExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceOrOperator`. - * @param ctx the parse tree - */ - enterPrecedenceOrOperator?: (ctx: PrecedenceOrOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceOrOperator`. - * @param ctx the parse tree - */ - exitPrecedenceOrOperator?: (ctx: PrecedenceOrOperatorContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.precedenceOrExpression`. - * @param ctx the parse tree - */ - enterPrecedenceOrExpression?: (ctx: PrecedenceOrExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.precedenceOrExpression`. - * @param ctx the parse tree - */ - exitPrecedenceOrExpression?: (ctx: PrecedenceOrExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.booleanValue`. - * @param ctx the parse tree - */ - enterBooleanValue?: (ctx: BooleanValueContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.booleanValue`. - * @param ctx the parse tree - */ - exitBooleanValue?: (ctx: BooleanValueContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.booleanValueTok`. - * @param ctx the parse tree - */ - enterBooleanValueTok?: (ctx: BooleanValueTokContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.booleanValueTok`. - * @param ctx the parse tree - */ - exitBooleanValueTok?: (ctx: BooleanValueTokContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.tableOrPartition`. * @param ctx the parse tree @@ -5166,16 +3561,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPartitionSelectorVal?: (ctx: PartitionSelectorValContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.partitionSelectorOperator`. - * @param ctx the parse tree - */ - enterPartitionSelectorOperator?: (ctx: PartitionSelectorOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.partitionSelectorOperator`. - * @param ctx the parse tree - */ - exitPartitionSelectorOperator?: (ctx: PartitionSelectorOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.subQuerySelectorOperator`. * @param ctx the parse tree @@ -5247,95 +3632,15 @@ export class HiveSqlParserListener implements ParseTreeListener { */ exitSql11ReservedKeywordsUsedAsFunctionName?: (ctx: Sql11ReservedKeywordsUsedAsFunctionNameContext) => void; /** - * Enter a parse tree produced by `HiveSqlParser.hint`. + * Enter a parse tree produced by `HiveSqlParser.configPropertiesItem`. * @param ctx the parse tree */ - enterHint?: (ctx: HintContext) => void; + enterConfigPropertiesItem?: (ctx: ConfigPropertiesItemContext) => void; /** - * Exit a parse tree produced by `HiveSqlParser.hint`. + * Exit a parse tree produced by `HiveSqlParser.configPropertiesItem`. * @param ctx the parse tree */ - exitHint?: (ctx: HintContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.hintList`. - * @param ctx the parse tree - */ - enterHintList?: (ctx: HintListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.hintList`. - * @param ctx the parse tree - */ - exitHintList?: (ctx: HintListContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.hintItem`. - * @param ctx the parse tree - */ - enterHintItem?: (ctx: HintItemContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.hintItem`. - * @param ctx the parse tree - */ - exitHintItem?: (ctx: HintItemContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.hintName`. - * @param ctx the parse tree - */ - enterHintName?: (ctx: HintNameContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.hintName`. - * @param ctx the parse tree - */ - exitHintName?: (ctx: HintNameContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.hintArgs`. - * @param ctx the parse tree - */ - enterHintArgs?: (ctx: HintArgsContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.hintArgs`. - * @param ctx the parse tree - */ - exitHintArgs?: (ctx: HintArgsContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.hintArgName`. - * @param ctx the parse tree - */ - enterHintArgName?: (ctx: HintArgNameContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.hintArgName`. - * @param ctx the parse tree - */ - exitHintArgName?: (ctx: HintArgNameContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.prepareStatement`. - * @param ctx the parse tree - */ - enterPrepareStatement?: (ctx: PrepareStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.prepareStatement`. - * @param ctx the parse tree - */ - exitPrepareStatement?: (ctx: PrepareStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.executeStatement`. - * @param ctx the parse tree - */ - enterExecuteStatement?: (ctx: ExecuteStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.executeStatement`. - * @param ctx the parse tree - */ - exitExecuteStatement?: (ctx: ExecuteStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.executeParamList`. - * @param ctx the parse tree - */ - enterExecuteParamList?: (ctx: ExecuteParamListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.executeParamList`. - * @param ctx the parse tree - */ - exitExecuteParamList?: (ctx: ExecuteParamListContext) => void; + exitConfigPropertiesItem?: (ctx: ConfigPropertiesItemContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.resourcePlanDdlStatements`. * @param ctx the parse tree @@ -5346,6 +3651,16 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitResourcePlanDdlStatements?: (ctx: ResourcePlanDdlStatementsContext) => void; + /** + * Enter a parse tree produced by `HiveSqlParser.mappingTypes`. + * @param ctx the parse tree + */ + enterMappingTypes?: (ctx: MappingTypesContext) => void; + /** + * Exit a parse tree produced by `HiveSqlParser.mappingTypes`. + * @param ctx the parse tree + */ + exitMappingTypes?: (ctx: MappingTypesContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.rpAssign`. * @param ctx the parse tree @@ -5376,36 +3691,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitRpUnassign?: (ctx: RpUnassignContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.rpUnassignList`. - * @param ctx the parse tree - */ - enterRpUnassignList?: (ctx: RpUnassignListContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.rpUnassignList`. - * @param ctx the parse tree - */ - exitRpUnassignList?: (ctx: RpUnassignListContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.createResourcePlanStatement`. - * @param ctx the parse tree - */ - enterCreateResourcePlanStatement?: (ctx: CreateResourcePlanStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.createResourcePlanStatement`. - * @param ctx the parse tree - */ - exitCreateResourcePlanStatement?: (ctx: CreateResourcePlanStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.withReplace`. - * @param ctx the parse tree - */ - enterWithReplace?: (ctx: WithReplaceContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.withReplace`. - * @param ctx the parse tree - */ - exitWithReplace?: (ctx: WithReplaceContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.activate`. * @param ctx the parse tree @@ -5436,16 +3721,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitDisable?: (ctx: DisableContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.unmanaged`. - * @param ctx the parse tree - */ - enterUnmanaged?: (ctx: UnmanagedContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.unmanaged`. - * @param ctx the parse tree - */ - exitUnmanaged?: (ctx: UnmanagedContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.year`. * @param ctx the parse tree @@ -5526,46 +3801,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitDecimal?: (ctx: DecimalContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterResourcePlanStatement`. - * @param ctx the parse tree - */ - enterAlterResourcePlanStatement?: (ctx: AlterResourcePlanStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterResourcePlanStatement`. - * @param ctx the parse tree - */ - exitAlterResourcePlanStatement?: (ctx: AlterResourcePlanStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.globalWmStatement`. - * @param ctx the parse tree - */ - enterGlobalWmStatement?: (ctx: GlobalWmStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.globalWmStatement`. - * @param ctx the parse tree - */ - exitGlobalWmStatement?: (ctx: GlobalWmStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.replaceResourcePlanStatement`. - * @param ctx the parse tree - */ - enterReplaceResourcePlanStatement?: (ctx: ReplaceResourcePlanStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.replaceResourcePlanStatement`. - * @param ctx the parse tree - */ - exitReplaceResourcePlanStatement?: (ctx: ReplaceResourcePlanStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dropResourcePlanStatement`. - * @param ctx the parse tree - */ - enterDropResourcePlanStatement?: (ctx: DropResourcePlanStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dropResourcePlanStatement`. - * @param ctx the parse tree - */ - exitDropResourcePlanStatement?: (ctx: DropResourcePlanStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.poolPath`. * @param ctx the parse tree @@ -5576,46 +3811,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPoolPath?: (ctx: PoolPathContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerExpression`. - * @param ctx the parse tree - */ - enterTriggerExpression?: (ctx: TriggerExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerExpression`. - * @param ctx the parse tree - */ - exitTriggerExpression?: (ctx: TriggerExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerExpressionStandalone`. - * @param ctx the parse tree - */ - enterTriggerExpressionStandalone?: (ctx: TriggerExpressionStandaloneContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerExpressionStandalone`. - * @param ctx the parse tree - */ - exitTriggerExpressionStandalone?: (ctx: TriggerExpressionStandaloneContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerOrExpression`. - * @param ctx the parse tree - */ - enterTriggerOrExpression?: (ctx: TriggerOrExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerOrExpression`. - * @param ctx the parse tree - */ - exitTriggerOrExpression?: (ctx: TriggerOrExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerAndExpression`. - * @param ctx the parse tree - */ - enterTriggerAndExpression?: (ctx: TriggerAndExpressionContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerAndExpression`. - * @param ctx the parse tree - */ - exitTriggerAndExpression?: (ctx: TriggerAndExpressionContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.triggerAtomExpression`. * @param ctx the parse tree @@ -5626,26 +3821,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTriggerAtomExpression?: (ctx: TriggerAtomExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerLiteral`. - * @param ctx the parse tree - */ - enterTriggerLiteral?: (ctx: TriggerLiteralContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerLiteral`. - * @param ctx the parse tree - */ - exitTriggerLiteral?: (ctx: TriggerLiteralContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.comparisionOperator`. - * @param ctx the parse tree - */ - enterComparisionOperator?: (ctx: ComparisionOperatorContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.comparisionOperator`. - * @param ctx the parse tree - */ - exitComparisionOperator?: (ctx: ComparisionOperatorContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.triggerActionExpression`. * @param ctx the parse tree @@ -5656,46 +3831,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitTriggerActionExpression?: (ctx: TriggerActionExpressionContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.triggerActionExpressionStandalone`. - * @param ctx the parse tree - */ - enterTriggerActionExpressionStandalone?: (ctx: TriggerActionExpressionStandaloneContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.triggerActionExpressionStandalone`. - * @param ctx the parse tree - */ - exitTriggerActionExpressionStandalone?: (ctx: TriggerActionExpressionStandaloneContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.createTriggerStatement`. - * @param ctx the parse tree - */ - enterCreateTriggerStatement?: (ctx: CreateTriggerStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.createTriggerStatement`. - * @param ctx the parse tree - */ - exitCreateTriggerStatement?: (ctx: CreateTriggerStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterTriggerStatement`. - * @param ctx the parse tree - */ - enterAlterTriggerStatement?: (ctx: AlterTriggerStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterTriggerStatement`. - * @param ctx the parse tree - */ - exitAlterTriggerStatement?: (ctx: AlterTriggerStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dropTriggerStatement`. - * @param ctx the parse tree - */ - enterDropTriggerStatement?: (ctx: DropTriggerStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dropTriggerStatement`. - * @param ctx the parse tree - */ - exitDropTriggerStatement?: (ctx: DropTriggerStatementContext) => void; /** * Enter a parse tree produced by `HiveSqlParser.poolAssign`. * @param ctx the parse tree @@ -5716,66 +3851,6 @@ export class HiveSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitPoolAssignList?: (ctx: PoolAssignListContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.createPoolStatement`. - * @param ctx the parse tree - */ - enterCreatePoolStatement?: (ctx: CreatePoolStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.createPoolStatement`. - * @param ctx the parse tree - */ - exitCreatePoolStatement?: (ctx: CreatePoolStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterPoolStatement`. - * @param ctx the parse tree - */ - enterAlterPoolStatement?: (ctx: AlterPoolStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterPoolStatement`. - * @param ctx the parse tree - */ - exitAlterPoolStatement?: (ctx: AlterPoolStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dropPoolStatement`. - * @param ctx the parse tree - */ - enterDropPoolStatement?: (ctx: DropPoolStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dropPoolStatement`. - * @param ctx the parse tree - */ - exitDropPoolStatement?: (ctx: DropPoolStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.createMappingStatement`. - * @param ctx the parse tree - */ - enterCreateMappingStatement?: (ctx: CreateMappingStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.createMappingStatement`. - * @param ctx the parse tree - */ - exitCreateMappingStatement?: (ctx: CreateMappingStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.alterMappingStatement`. - * @param ctx the parse tree - */ - enterAlterMappingStatement?: (ctx: AlterMappingStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.alterMappingStatement`. - * @param ctx the parse tree - */ - exitAlterMappingStatement?: (ctx: AlterMappingStatementContext) => void; - /** - * Enter a parse tree produced by `HiveSqlParser.dropMappingStatement`. - * @param ctx the parse tree - */ - enterDropMappingStatement?: (ctx: DropMappingStatementContext) => void; - /** - * Exit a parse tree produced by `HiveSqlParser.dropMappingStatement`. - * @param ctx the parse tree - */ - exitDropMappingStatement?: (ctx: DropMappingStatementContext) => void; visitTerminal(node: TerminalNode): void {} visitErrorNode(node: ErrorNode): void {} diff --git a/src/lib/hive/HiveSqlParserVisitor.ts b/src/lib/hive/HiveSqlParserVisitor.ts index 5cd9773..d008188 100644 --- a/src/lib/hive/HiveSqlParserVisitor.ts +++ b/src/lib/hive/HiveSqlParserVisitor.ts @@ -12,35 +12,24 @@ import { ProgramContext } from "./HiveSqlParser.js"; import { StatementContext } from "./HiveSqlParser.js"; import { ExplainStatementContext } from "./HiveSqlParser.js"; import { ExplainOptionContext } from "./HiveSqlParser.js"; -import { VectorizationOnlyContext } from "./HiveSqlParser.js"; import { VectorizatonDetailContext } from "./HiveSqlParser.js"; import { ExecStatementContext } from "./HiveSqlParser.js"; import { LoadStatementContext } from "./HiveSqlParser.js"; -import { DropPartitionsIgnoreClauseContext } from "./HiveSqlParser.js"; import { ReplicationClauseContext } from "./HiveSqlParser.js"; import { ExportStatementContext } from "./HiveSqlParser.js"; import { ImportStatementContext } from "./HiveSqlParser.js"; import { ReplDumpStatementContext } from "./HiveSqlParser.js"; import { ReplDbPolicyContext } from "./HiveSqlParser.js"; import { ReplLoadStatementContext } from "./HiveSqlParser.js"; -import { ReplConfigsContext } from "./HiveSqlParser.js"; -import { ReplConfigsListContext } from "./HiveSqlParser.js"; import { ReplTableLevelPolicyContext } from "./HiveSqlParser.js"; -import { ReplStatusStatementContext } from "./HiveSqlParser.js"; import { DdlStatementContext } from "./HiveSqlParser.js"; import { IfExistsContext } from "./HiveSqlParser.js"; -import { RestrictOrCascadeContext } from "./HiveSqlParser.js"; import { IfNotExistsContext } from "./HiveSqlParser.js"; -import { ForceContext } from "./HiveSqlParser.js"; +import { RestrictOrCascadeContext } from "./HiveSqlParser.js"; import { RewriteEnabledContext } from "./HiveSqlParser.js"; import { RewriteDisabledContext } from "./HiveSqlParser.js"; import { StoredAsDirsContext } from "./HiveSqlParser.js"; -import { OrReplaceContext } from "./HiveSqlParser.js"; import { CreateDatabaseStatementContext } from "./HiveSqlParser.js"; -import { DbLocationContext } from "./HiveSqlParser.js"; -import { DbManagedLocationContext } from "./HiveSqlParser.js"; -import { DbPropertiesContext } from "./HiveSqlParser.js"; -import { DbPropertiesListContext } from "./HiveSqlParser.js"; import { DbConnectorNameContext } from "./HiveSqlParser.js"; import { SwitchDatabaseStatementContext } from "./HiveSqlParser.js"; import { DropDatabaseStatementContext } from "./HiveSqlParser.js"; @@ -121,12 +110,9 @@ import { TableCommentContext } from "./HiveSqlParser.js"; import { TableLifecycleContext } from "./HiveSqlParser.js"; import { CreateTablePartitionSpecContext } from "./HiveSqlParser.js"; import { CreateTablePartitionColumnTypeSpecContext } from "./HiveSqlParser.js"; -import { CreateTablePartitionColumnSpecContext } from "./HiveSqlParser.js"; import { PartitionTransformSpecContext } from "./HiveSqlParser.js"; -import { ColumnNameTransformConstraintContext } from "./HiveSqlParser.js"; import { PartitionTransformTypeContext } from "./HiveSqlParser.js"; import { TableBucketsContext } from "./HiveSqlParser.js"; -import { TableImplBucketsContext } from "./HiveSqlParser.js"; import { TableSkewedContext } from "./HiveSqlParser.js"; import { RowFormatContext } from "./HiveSqlParser.js"; import { RecordReaderContext } from "./HiveSqlParser.js"; @@ -137,15 +123,15 @@ import { TableRowFormatContext } from "./HiveSqlParser.js"; import { TablePropertiesPrefixedContext } from "./HiveSqlParser.js"; import { TablePropertiesContext } from "./HiveSqlParser.js"; import { TablePropertiesListContext } from "./HiveSqlParser.js"; +import { KeyValuePropertiesContext } from "./HiveSqlParser.js"; +import { KeyValuePropertyListContext } from "./HiveSqlParser.js"; import { KeyValuePropertyContext } from "./HiveSqlParser.js"; -import { KeyPropertyContext } from "./HiveSqlParser.js"; import { TableRowFormatFieldIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatCollItemsIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatMapKeysIdentifierContext } from "./HiveSqlParser.js"; import { TableRowFormatLinesIdentifierContext } from "./HiveSqlParser.js"; import { TableRowNullFormatContext } from "./HiveSqlParser.js"; import { TableFileFormatContext } from "./HiveSqlParser.js"; -import { TableLocationContext } from "./HiveSqlParser.js"; import { ColumnNameTypeListContext } from "./HiveSqlParser.js"; import { ColumnNameTypeOrConstraintListContext } from "./HiveSqlParser.js"; import { ColumnNameColonTypeListContext } from "./HiveSqlParser.js"; @@ -170,15 +156,12 @@ import { AlterForeignKeyWithNameContext } from "./HiveSqlParser.js"; import { SkewedValueElementContext } from "./HiveSqlParser.js"; import { SkewedColumnValuePairListContext } from "./HiveSqlParser.js"; import { SkewedColumnValuePairContext } from "./HiveSqlParser.js"; -import { SkewedColumnValuesContext } from "./HiveSqlParser.js"; -import { SkewedColumnValueContext } from "./HiveSqlParser.js"; -import { SkewedValueLocationElementContext } from "./HiveSqlParser.js"; +import { ConstantListContext } from "./HiveSqlParser.js"; import { OrderSpecificationContext } from "./HiveSqlParser.js"; import { NullOrderingContext } from "./HiveSqlParser.js"; import { ColumnNameOrderContext } from "./HiveSqlParser.js"; import { ColumnNameCommentListContext } from "./HiveSqlParser.js"; import { ColumnNameCommentContext } from "./HiveSqlParser.js"; -import { OrderSpecificationRewriteContext } from "./HiveSqlParser.js"; import { ColumnRefOrderContext } from "./HiveSqlParser.js"; import { ColumnNameTypeContext } from "./HiveSqlParser.js"; import { ColumnNameTypeOrConstraintContext } from "./HiveSqlParser.js"; @@ -196,8 +179,8 @@ import { TableConstraintTypeContext } from "./HiveSqlParser.js"; import { ConstraintOptsCreateContext } from "./HiveSqlParser.js"; import { ConstraintOptsAlterContext } from "./HiveSqlParser.js"; import { ColumnNameColonTypeContext } from "./HiveSqlParser.js"; -import { ColTypeContext } from "./HiveSqlParser.js"; -import { ColTypeListContext } from "./HiveSqlParser.js"; +import { ColumnTypeContext } from "./HiveSqlParser.js"; +import { ColumnTypeListContext } from "./HiveSqlParser.js"; import { TypeContext } from "./HiveSqlParser.js"; import { PrimitiveTypeContext } from "./HiveSqlParser.js"; import { ListTypeContext } from "./HiveSqlParser.js"; @@ -221,103 +204,34 @@ import { SelectStatementWithCTEContext } from "./HiveSqlParser.js"; import { InsertClauseContext } from "./HiveSqlParser.js"; import { DestinationContext } from "./HiveSqlParser.js"; import { LimitClauseContext } from "./HiveSqlParser.js"; -import { DeleteStatementContext } from "./HiveSqlParser.js"; import { ColumnAssignmentClauseContext } from "./HiveSqlParser.js"; import { PrecedencePlusExpressionOrDefaultContext } from "./HiveSqlParser.js"; import { SetColumnsClauseContext } from "./HiveSqlParser.js"; -import { UpdateStatementContext } from "./HiveSqlParser.js"; import { SqlTransactionStatementContext } from "./HiveSqlParser.js"; -import { StartTransactionStatementContext } from "./HiveSqlParser.js"; import { TransactionModeContext } from "./HiveSqlParser.js"; -import { TransactionAccessModeContext } from "./HiveSqlParser.js"; -import { IsolationLevelContext } from "./HiveSqlParser.js"; -import { LevelOfIsolationContext } from "./HiveSqlParser.js"; -import { CommitStatementContext } from "./HiveSqlParser.js"; -import { RollbackStatementContext } from "./HiveSqlParser.js"; -import { SetAutoCommitStatementContext } from "./HiveSqlParser.js"; -import { AbortTransactionStatementContext } from "./HiveSqlParser.js"; -import { AbortCompactionStatementContext } from "./HiveSqlParser.js"; -import { MergeStatementContext } from "./HiveSqlParser.js"; import { WhenClausesContext } from "./HiveSqlParser.js"; import { WhenNotMatchedClauseContext } from "./HiveSqlParser.js"; import { WhenMatchedAndClauseContext } from "./HiveSqlParser.js"; import { WhenMatchedThenClauseContext } from "./HiveSqlParser.js"; -import { UpdateOrDeleteContext } from "./HiveSqlParser.js"; -import { KillQueryStatementContext } from "./HiveSqlParser.js"; -import { CompactionIdContext } from "./HiveSqlParser.js"; import { CompactionPoolContext } from "./HiveSqlParser.js"; import { CompactionTypeContext } from "./HiveSqlParser.js"; import { CompactionStatusContext } from "./HiveSqlParser.js"; import { AlterStatementContext } from "./HiveSqlParser.js"; import { AlterTableStatementSuffixContext } from "./HiveSqlParser.js"; import { AlterTblPartitionStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterStatementPartitionKeyTypeContext } from "./HiveSqlParser.js"; import { AlterViewStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewSuffixRewriteContext } from "./HiveSqlParser.js"; -import { AlterMaterializedViewSuffixRebuildContext } from "./HiveSqlParser.js"; import { AlterDatabaseStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetLocationContext } from "./HiveSqlParser.js"; -import { AlterDatabaseSuffixSetManagedLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenameContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddConstraintContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateColumnsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixProtectionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixDropConstraintContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenameColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateStatsColContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUpdateStatsContext } from "./HiveSqlParser.js"; -import { AlterStatementChangeColPositionContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixAddPartitionsElementContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixTouchContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixArchiveContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixUnArchiveContext } from "./HiveSqlParser.js"; -import { PartitionLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRecoverPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixDropPartitionsContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterViewSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSerdePropertiesContext } from "./HiveSqlParser.js"; -import { TablePartitionPrefixContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixFileFormatContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixClusterbySortbyContext } from "./HiveSqlParser.js"; -import { AlterTblPartitionStatementSuffixSkewedLocationContext } from "./HiveSqlParser.js"; -import { SkewedLocationsContext } from "./HiveSqlParser.js"; -import { SkewedLocationsListContext } from "./HiveSqlParser.js"; -import { SkewedLocationMapContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixLocationContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSkewedbyContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixExchangePartitionContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixRenamePartContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixStatsPartContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixMergeFilesContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixBucketNumContext } from "./HiveSqlParser.js"; -import { BlockingContext } from "./HiveSqlParser.js"; -import { CompactPoolContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixCompactContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixSetPartSpecContext } from "./HiveSqlParser.js"; -import { AlterStatementSuffixExecuteContext } from "./HiveSqlParser.js"; -import { AlterIndexStatementSuffixContext } from "./HiveSqlParser.js"; -import { FileFormatContext } from "./HiveSqlParser.js"; import { AlterDataConnectorStatementSuffixContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixPropertiesContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixSetOwnerContext } from "./HiveSqlParser.js"; -import { AlterDataConnectorSuffixSetUrlContext } from "./HiveSqlParser.js"; +import { LocationPathContext } from "./HiveSqlParser.js"; +import { AlterStatementSuffixDropPartitionsContext } from "./HiveSqlParser.js"; +import { SkewedLocationMapContext } from "./HiveSqlParser.js"; +import { AlterStatementSuffixExecuteContext } from "./HiveSqlParser.js"; +import { FileFormatContext } from "./HiveSqlParser.js"; import { LikeTableOrFileContext } from "./HiveSqlParser.js"; import { CreateTableStatementContext } from "./HiveSqlParser.js"; import { CreateDataConnectorStatementContext } from "./HiveSqlParser.js"; -import { DataConnectorCommentContext } from "./HiveSqlParser.js"; -import { DataConnectorUrlContext } from "./HiveSqlParser.js"; -import { DataConnectorTypeContext } from "./HiveSqlParser.js"; -import { DcPropertiesContext } from "./HiveSqlParser.js"; import { DropDataConnectorStatementContext } from "./HiveSqlParser.js"; import { TableAllColumnsContext } from "./HiveSqlParser.js"; -import { DefaultValueContext } from "./HiveSqlParser.js"; import { ExpressionListContext } from "./HiveSqlParser.js"; import { AliasListContext } from "./HiveSqlParser.js"; import { FromClauseContext } from "./HiveSqlParser.js"; @@ -326,17 +240,12 @@ import { AtomjoinSourceContext } from "./HiveSqlParser.js"; import { JoinSourceContext } from "./HiveSqlParser.js"; import { JoinSourcePartContext } from "./HiveSqlParser.js"; import { UniqueJoinSourceContext } from "./HiveSqlParser.js"; -import { UniqueJoinExprContext } from "./HiveSqlParser.js"; -import { UniqueJoinTokenContext } from "./HiveSqlParser.js"; import { JoinTokenContext } from "./HiveSqlParser.js"; import { LateralViewContext } from "./HiveSqlParser.js"; import { TableAliasContext } from "./HiveSqlParser.js"; -import { TableBucketSampleContext } from "./HiveSqlParser.js"; -import { SplitSampleContext } from "./HiveSqlParser.js"; import { TableSampleContext } from "./HiveSqlParser.js"; import { TableSourceContext } from "./HiveSqlParser.js"; import { AsOfClauseContext } from "./HiveSqlParser.js"; -import { UniqueJoinTableSourceContext } from "./HiveSqlParser.js"; import { DbSchemaNameContext } from "./HiveSqlParser.js"; import { DbSchemaNameCreateContext } from "./HiveSqlParser.js"; import { TableOrViewContext } from "./HiveSqlParser.js"; @@ -349,128 +258,75 @@ import { PartitioningSpecContext } from "./HiveSqlParser.js"; import { PartitionTableFunctionSourceContext } from "./HiveSqlParser.js"; import { PartitionedTableFunctionContext } from "./HiveSqlParser.js"; import { WhereClauseContext } from "./HiveSqlParser.js"; -import { SearchConditionContext } from "./HiveSqlParser.js"; -import { ValuesSourceContext } from "./HiveSqlParser.js"; import { ValuesClauseContext } from "./HiveSqlParser.js"; -import { ValuesTableConstructorContext } from "./HiveSqlParser.js"; -import { ValueRowConstructorContext } from "./HiveSqlParser.js"; -import { FirstValueRowConstructorContext } from "./HiveSqlParser.js"; import { VirtualTableSourceContext } from "./HiveSqlParser.js"; import { SelectClauseContext } from "./HiveSqlParser.js"; -import { All_distinctContext } from "./HiveSqlParser.js"; -import { SelectListContext } from "./HiveSqlParser.js"; import { SelectTrfmClauseContext } from "./HiveSqlParser.js"; import { SelectItemContext } from "./HiveSqlParser.js"; import { TrfmClauseContext } from "./HiveSqlParser.js"; import { SelectExpressionContext } from "./HiveSqlParser.js"; import { SelectExpressionListContext } from "./HiveSqlParser.js"; import { Window_clauseContext } from "./HiveSqlParser.js"; -import { Window_defnContext } from "./HiveSqlParser.js"; import { Window_specificationContext } from "./HiveSqlParser.js"; import { Window_frameContext } from "./HiveSqlParser.js"; -import { Window_range_expressionContext } from "./HiveSqlParser.js"; -import { Window_value_expressionContext } from "./HiveSqlParser.js"; -import { Window_frame_start_boundaryContext } from "./HiveSqlParser.js"; import { Window_frame_boundaryContext } from "./HiveSqlParser.js"; import { GroupByClauseContext } from "./HiveSqlParser.js"; -import { Groupby_expressionContext } from "./HiveSqlParser.js"; -import { GroupByEmptyContext } from "./HiveSqlParser.js"; import { RollupStandardContext } from "./HiveSqlParser.js"; import { RollupOldSyntaxContext } from "./HiveSqlParser.js"; import { GroupingSetExpressionContext } from "./HiveSqlParser.js"; -import { GroupingSetExpressionMultipleContext } from "./HiveSqlParser.js"; -import { GroupingExpressionSingleContext } from "./HiveSqlParser.js"; import { HavingClauseContext } from "./HiveSqlParser.js"; import { QualifyClauseContext } from "./HiveSqlParser.js"; -import { HavingConditionContext } from "./HiveSqlParser.js"; -import { ExpressionsInParenthesisContext } from "./HiveSqlParser.js"; -import { ExpressionsNotInParenthesisContext } from "./HiveSqlParser.js"; -import { ExpressionPartContext } from "./HiveSqlParser.js"; import { ExpressionOrDefaultContext } from "./HiveSqlParser.js"; import { FirstExpressionsWithAliasContext } from "./HiveSqlParser.js"; -import { ExpressionWithAliasContext } from "./HiveSqlParser.js"; import { ExpressionsContext } from "./HiveSqlParser.js"; -import { ColumnRefOrderInParenthesisContext } from "./HiveSqlParser.js"; -import { ColumnRefOrderNotInParenthesisContext } from "./HiveSqlParser.js"; +import { ExpressionsInParenthesisContext } from "./HiveSqlParser.js"; +import { ExpressionsNotInParenthesisContext } from "./HiveSqlParser.js"; import { OrderByClauseContext } from "./HiveSqlParser.js"; import { ClusterByClauseContext } from "./HiveSqlParser.js"; -import { PartitionByClauseContext } from "./HiveSqlParser.js"; import { DistributeByClauseContext } from "./HiveSqlParser.js"; import { SortByClauseContext } from "./HiveSqlParser.js"; -import { TrimFunctionContext } from "./HiveSqlParser.js"; import { Function_Context } from "./HiveSqlParser.js"; import { Null_treatmentContext } from "./HiveSqlParser.js"; import { FunctionNameCreateContext } from "./HiveSqlParser.js"; import { FunctionNameForDDLContext } from "./HiveSqlParser.js"; import { FunctionNameForInvokeContext } from "./HiveSqlParser.js"; -import { UserDefinedFuncNameContext } from "./HiveSqlParser.js"; -import { InternalFunctionNameContext } from "./HiveSqlParser.js"; import { CastExpressionContext } from "./HiveSqlParser.js"; import { CaseExpressionContext } from "./HiveSqlParser.js"; import { WhenExpressionContext } from "./HiveSqlParser.js"; import { FloorExpressionContext } from "./HiveSqlParser.js"; -import { FloorDateQualifiersContext } from "./HiveSqlParser.js"; import { ExtractExpressionContext } from "./HiveSqlParser.js"; import { TimeQualifiersContext } from "./HiveSqlParser.js"; import { ConstantContext } from "./HiveSqlParser.js"; -import { PrepareStmtParamContext } from "./HiveSqlParser.js"; -import { ParameterIdxContext } from "./HiveSqlParser.js"; -import { StringLiteralSequenceContext } from "./HiveSqlParser.js"; -import { CharSetStringLiteralContext } from "./HiveSqlParser.js"; -import { DateLiteralContext } from "./HiveSqlParser.js"; -import { TimestampLiteralContext } from "./HiveSqlParser.js"; -import { TimestampLocalTZLiteralContext } from "./HiveSqlParser.js"; import { IntervalValueContext } from "./HiveSqlParser.js"; -import { IntervalLiteralContext } from "./HiveSqlParser.js"; import { IntervalExpressionContext } from "./HiveSqlParser.js"; import { IntervalQualifiersContext } from "./HiveSqlParser.js"; import { ExpressionContext } from "./HiveSqlParser.js"; import { AtomExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceFieldExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceUnaryOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceUnaryPrefixExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceBitwiseXorOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceBitwiseXorExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceStarOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceStarExpressionContext } from "./HiveSqlParser.js"; -import { PrecedencePlusOperatorContext } from "./HiveSqlParser.js"; import { PrecedencePlusExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceConcatenateOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceConcatenateExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceAmpersandOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceAmpersandExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceBitwiseOrOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceBitwiseOrExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceRegexpOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarOperatorContext } from "./HiveSqlParser.js"; import { SubQueryExpressionContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceSimilarExpressionMainContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionPartContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionAtomContext } from "./HiveSqlParser.js"; -import { PrecedenceSimilarExpressionQuantifierPredicateContext } from "./HiveSqlParser.js"; -import { QuantifierTypeContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionInContext } from "./HiveSqlParser.js"; import { PrecedenceSimilarExpressionPartNotContext } from "./HiveSqlParser.js"; import { PrecedenceDistinctOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceEqualOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceEqualExpressionContext } from "./HiveSqlParser.js"; import { IsConditionContext } from "./HiveSqlParser.js"; -import { PrecedenceUnarySuffixExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceNotOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceNotExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceAndOperatorContext } from "./HiveSqlParser.js"; import { PrecedenceAndExpressionContext } from "./HiveSqlParser.js"; -import { PrecedenceOrOperatorContext } from "./HiveSqlParser.js"; -import { PrecedenceOrExpressionContext } from "./HiveSqlParser.js"; -import { BooleanValueContext } from "./HiveSqlParser.js"; -import { BooleanValueTokContext } from "./HiveSqlParser.js"; import { TableOrPartitionContext } from "./HiveSqlParser.js"; import { PartitionSpecContext } from "./HiveSqlParser.js"; import { PartitionValContext } from "./HiveSqlParser.js"; import { PartitionSelectorSpecContext } from "./HiveSqlParser.js"; import { PartitionSelectorValContext } from "./HiveSqlParser.js"; -import { PartitionSelectorOperatorContext } from "./HiveSqlParser.js"; import { SubQuerySelectorOperatorContext } from "./HiveSqlParser.js"; import { SysFuncNamesContext } from "./HiveSqlParser.js"; import { Id_Context } from "./HiveSqlParser.js"; @@ -478,26 +334,15 @@ import { FunctionIdentifierContext } from "./HiveSqlParser.js"; import { PrincipalIdentifierContext } from "./HiveSqlParser.js"; import { NonReservedContext } from "./HiveSqlParser.js"; import { Sql11ReservedKeywordsUsedAsFunctionNameContext } from "./HiveSqlParser.js"; -import { HintContext } from "./HiveSqlParser.js"; -import { HintListContext } from "./HiveSqlParser.js"; -import { HintItemContext } from "./HiveSqlParser.js"; -import { HintNameContext } from "./HiveSqlParser.js"; -import { HintArgsContext } from "./HiveSqlParser.js"; -import { HintArgNameContext } from "./HiveSqlParser.js"; -import { PrepareStatementContext } from "./HiveSqlParser.js"; -import { ExecuteStatementContext } from "./HiveSqlParser.js"; -import { ExecuteParamListContext } from "./HiveSqlParser.js"; +import { ConfigPropertiesItemContext } from "./HiveSqlParser.js"; import { ResourcePlanDdlStatementsContext } from "./HiveSqlParser.js"; +import { MappingTypesContext } from "./HiveSqlParser.js"; import { RpAssignContext } from "./HiveSqlParser.js"; import { RpAssignListContext } from "./HiveSqlParser.js"; import { RpUnassignContext } from "./HiveSqlParser.js"; -import { RpUnassignListContext } from "./HiveSqlParser.js"; -import { CreateResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { WithReplaceContext } from "./HiveSqlParser.js"; import { ActivateContext } from "./HiveSqlParser.js"; import { EnableContext } from "./HiveSqlParser.js"; import { DisableContext } from "./HiveSqlParser.js"; -import { UnmanagedContext } from "./HiveSqlParser.js"; import { YearContext } from "./HiveSqlParser.js"; import { MonthContext } from "./HiveSqlParser.js"; import { WeekContext } from "./HiveSqlParser.js"; @@ -506,31 +351,11 @@ import { HourContext } from "./HiveSqlParser.js"; import { MinuteContext } from "./HiveSqlParser.js"; import { SecondContext } from "./HiveSqlParser.js"; import { DecimalContext } from "./HiveSqlParser.js"; -import { AlterResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { GlobalWmStatementContext } from "./HiveSqlParser.js"; -import { ReplaceResourcePlanStatementContext } from "./HiveSqlParser.js"; -import { DropResourcePlanStatementContext } from "./HiveSqlParser.js"; import { PoolPathContext } from "./HiveSqlParser.js"; -import { TriggerExpressionContext } from "./HiveSqlParser.js"; -import { TriggerExpressionStandaloneContext } from "./HiveSqlParser.js"; -import { TriggerOrExpressionContext } from "./HiveSqlParser.js"; -import { TriggerAndExpressionContext } from "./HiveSqlParser.js"; import { TriggerAtomExpressionContext } from "./HiveSqlParser.js"; -import { TriggerLiteralContext } from "./HiveSqlParser.js"; -import { ComparisionOperatorContext } from "./HiveSqlParser.js"; import { TriggerActionExpressionContext } from "./HiveSqlParser.js"; -import { TriggerActionExpressionStandaloneContext } from "./HiveSqlParser.js"; -import { CreateTriggerStatementContext } from "./HiveSqlParser.js"; -import { AlterTriggerStatementContext } from "./HiveSqlParser.js"; -import { DropTriggerStatementContext } from "./HiveSqlParser.js"; import { PoolAssignContext } from "./HiveSqlParser.js"; import { PoolAssignListContext } from "./HiveSqlParser.js"; -import { CreatePoolStatementContext } from "./HiveSqlParser.js"; -import { AlterPoolStatementContext } from "./HiveSqlParser.js"; -import { DropPoolStatementContext } from "./HiveSqlParser.js"; -import { CreateMappingStatementContext } from "./HiveSqlParser.js"; -import { AlterMappingStatementContext } from "./HiveSqlParser.js"; -import { DropMappingStatementContext } from "./HiveSqlParser.js"; /** @@ -565,12 +390,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.vectorizationOnly`. - * @param ctx the parse tree - * @return the visitor result - */ - visitVectorizationOnly?: (ctx: VectorizationOnlyContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.vectorizatonDetail`. * @param ctx the parse tree @@ -589,12 +408,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dropPartitionsIgnoreClause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropPartitionsIgnoreClause?: (ctx: DropPartitionsIgnoreClauseContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.replicationClause`. * @param ctx the parse tree @@ -631,30 +444,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.replConfigs`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReplConfigs?: (ctx: ReplConfigsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.replConfigsList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReplConfigsList?: (ctx: ReplConfigsListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.replTableLevelPolicy`. * @param ctx the parse tree * @return the visitor result */ visitReplTableLevelPolicy?: (ctx: ReplTableLevelPolicyContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.replStatusStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReplStatusStatement?: (ctx: ReplStatusStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.ddlStatement`. * @param ctx the parse tree @@ -667,12 +462,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.restrictOrCascade`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.ifNotExists`. * @param ctx the parse tree @@ -680,11 +469,11 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.force`. + * Visit a parse tree produced by `HiveSqlParser.restrictOrCascade`. * @param ctx the parse tree * @return the visitor result */ - visitForce?: (ctx: ForceContext) => Result; + visitRestrictOrCascade?: (ctx: RestrictOrCascadeContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.rewriteEnabled`. * @param ctx the parse tree @@ -703,42 +492,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.orReplace`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOrReplace?: (ctx: OrReplaceContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.createDatabaseStatement`. * @param ctx the parse tree * @return the visitor result */ visitCreateDatabaseStatement?: (ctx: CreateDatabaseStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dbLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDbLocation?: (ctx: DbLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dbManagedLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDbManagedLocation?: (ctx: DbManagedLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dbProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDbProperties?: (ctx: DbPropertiesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dbPropertiesList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDbPropertiesList?: (ctx: DbPropertiesListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.dbConnectorName`. * @param ctx the parse tree @@ -1219,24 +978,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.createTablePartitionColumnSpec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateTablePartitionColumnSpec?: (ctx: CreateTablePartitionColumnSpecContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.partitionTransformSpec`. * @param ctx the parse tree * @return the visitor result */ visitPartitionTransformSpec?: (ctx: PartitionTransformSpecContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.columnNameTransformConstraint`. - * @param ctx the parse tree - * @return the visitor result - */ - visitColumnNameTransformConstraint?: (ctx: ColumnNameTransformConstraintContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.partitionTransformType`. * @param ctx the parse tree @@ -1249,12 +996,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.tableImplBuckets`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTableImplBuckets?: (ctx: TableImplBucketsContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.tableSkewed`. * @param ctx the parse tree @@ -1315,18 +1056,24 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; + /** + * Visit a parse tree produced by `HiveSqlParser.keyValueProperties`. + * @param ctx the parse tree + * @return the visitor result + */ + visitKeyValueProperties?: (ctx: KeyValuePropertiesContext) => Result; + /** + * Visit a parse tree produced by `HiveSqlParser.keyValuePropertyList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitKeyValuePropertyList?: (ctx: KeyValuePropertyListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.keyValueProperty`. * @param ctx the parse tree * @return the visitor result */ visitKeyValueProperty?: (ctx: KeyValuePropertyContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.keyProperty`. - * @param ctx the parse tree - * @return the visitor result - */ - visitKeyProperty?: (ctx: KeyPropertyContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.tableRowFormatFieldIdentifier`. * @param ctx the parse tree @@ -1363,12 +1110,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.tableLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTableLocation?: (ctx: TableLocationContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.columnNameTypeList`. * @param ctx the parse tree @@ -1514,23 +1255,11 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.skewedColumnValues`. + * Visit a parse tree produced by `HiveSqlParser.constantList`. * @param ctx the parse tree * @return the visitor result */ - visitSkewedColumnValues?: (ctx: SkewedColumnValuesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.skewedColumnValue`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSkewedColumnValue?: (ctx: SkewedColumnValueContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.skewedValueLocationElement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSkewedValueLocationElement?: (ctx: SkewedValueLocationElementContext) => Result; + visitConstantList?: (ctx: ConstantListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.orderSpecification`. * @param ctx the parse tree @@ -1561,12 +1290,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.orderSpecificationRewrite`. - * @param ctx the parse tree - * @return the visitor result - */ - visitOrderSpecificationRewrite?: (ctx: OrderSpecificationRewriteContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.columnRefOrder`. * @param ctx the parse tree @@ -1670,17 +1393,17 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.colType`. + * Visit a parse tree produced by `HiveSqlParser.columnType`. * @param ctx the parse tree * @return the visitor result */ - visitColType?: (ctx: ColTypeContext) => Result; + visitColumnType?: (ctx: ColumnTypeContext) => Result; /** - * Visit a parse tree produced by `HiveSqlParser.colTypeList`. + * Visit a parse tree produced by `HiveSqlParser.columnTypeList`. * @param ctx the parse tree * @return the visitor result */ - visitColTypeList?: (ctx: ColTypeListContext) => Result; + visitColumnTypeList?: (ctx: ColumnTypeListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.type`. * @param ctx the parse tree @@ -1823,12 +1546,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.deleteStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDeleteStatement?: (ctx: DeleteStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.columnAssignmentClause`. * @param ctx the parse tree @@ -1847,84 +1564,18 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.updateStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUpdateStatement?: (ctx: UpdateStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.sqlTransactionStatement`. * @param ctx the parse tree * @return the visitor result */ visitSqlTransactionStatement?: (ctx: SqlTransactionStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.startTransactionStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStartTransactionStatement?: (ctx: StartTransactionStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.transactionMode`. * @param ctx the parse tree * @return the visitor result */ visitTransactionMode?: (ctx: TransactionModeContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.transactionAccessMode`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTransactionAccessMode?: (ctx: TransactionAccessModeContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.isolationLevel`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIsolationLevel?: (ctx: IsolationLevelContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.levelOfIsolation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitLevelOfIsolation?: (ctx: LevelOfIsolationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.commitStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCommitStatement?: (ctx: CommitStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.rollbackStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRollbackStatement?: (ctx: RollbackStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.setAutoCommitStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSetAutoCommitStatement?: (ctx: SetAutoCommitStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.abortTransactionStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAbortTransactionStatement?: (ctx: AbortTransactionStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.abortCompactionStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAbortCompactionStatement?: (ctx: AbortCompactionStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.mergeStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitMergeStatement?: (ctx: MergeStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.whenClauses`. * @param ctx the parse tree @@ -1949,24 +1600,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.updateOrDelete`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUpdateOrDelete?: (ctx: UpdateOrDeleteContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.killQueryStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitKillQueryStatement?: (ctx: KillQueryStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.compactionId`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCompactionId?: (ctx: CompactionIdContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.compactionPool`. * @param ctx the parse tree @@ -2003,36 +1636,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementPartitionKeyType`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementPartitionKeyType?: (ctx: AlterStatementPartitionKeyTypeContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.alterViewStatementSuffix`. * @param ctx the parse tree * @return the visitor result */ visitAlterViewStatementSuffix?: (ctx: AlterViewStatementSuffixContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterMaterializedViewStatementSuffix`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterMaterializedViewStatementSuffix?: (ctx: AlterMaterializedViewStatementSuffixContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRewrite`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterMaterializedViewSuffixRewrite?: (ctx: AlterMaterializedViewSuffixRewriteContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterMaterializedViewSuffixRebuild`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterMaterializedViewSuffixRebuild?: (ctx: AlterMaterializedViewSuffixRebuildContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.alterDatabaseStatementSuffix`. * @param ctx the parse tree @@ -2040,311 +1649,41 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixProperties`. + * Visit a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. * @param ctx the parse tree * @return the visitor result */ - visitAlterDatabaseSuffixProperties?: (ctx: AlterDatabaseSuffixPropertiesContext) => Result; + visitAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => Result; /** - * Visit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetOwner`. + * Visit a parse tree produced by `HiveSqlParser.locationPath`. * @param ctx the parse tree * @return the visitor result */ - visitAlterDatabaseSuffixSetOwner?: (ctx: AlterDatabaseSuffixSetOwnerContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDatabaseSuffixSetLocation?: (ctx: AlterDatabaseSuffixSetLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDatabaseSuffixSetManagedLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDatabaseSuffixSetManagedLocation?: (ctx: AlterDatabaseSuffixSetManagedLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixRename`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixRename?: (ctx: AlterStatementSuffixRenameContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddCol`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixAddCol?: (ctx: AlterStatementSuffixAddColContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddConstraint`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixAddConstraint?: (ctx: AlterStatementSuffixAddConstraintContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateColumns`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixUpdateColumns?: (ctx: AlterStatementSuffixUpdateColumnsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixProtections`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixProtections?: (ctx: AlterStatementSuffixProtectionsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixDropConstraint`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixDropConstraint?: (ctx: AlterStatementSuffixDropConstraintContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixRenameCol`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixRenameCol?: (ctx: AlterStatementSuffixRenameColContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStatsCol`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixUpdateStatsCol?: (ctx: AlterStatementSuffixUpdateStatsColContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixUpdateStats`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixUpdateStats?: (ctx: AlterStatementSuffixUpdateStatsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementChangeColPosition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementChangeColPosition?: (ctx: AlterStatementChangeColPositionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixAddPartitions?: (ctx: AlterStatementSuffixAddPartitionsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixAddPartitionsElement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixAddPartitionsElement?: (ctx: AlterStatementSuffixAddPartitionsElementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixTouch`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixTouch?: (ctx: AlterStatementSuffixTouchContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixArchive`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixArchive?: (ctx: AlterStatementSuffixArchiveContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixUnArchive`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixUnArchive?: (ctx: AlterStatementSuffixUnArchiveContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.partitionLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPartitionLocation?: (ctx: PartitionLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixRecoverPartitions`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixRecoverPartitions?: (ctx: AlterStatementSuffixRecoverPartitionsContext) => Result; + visitLocationPath?: (ctx: LocationPathContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixDropPartitions`. * @param ctx the parse tree * @return the visitor result */ visitAlterStatementSuffixDropPartitions?: (ctx: AlterStatementSuffixDropPartitionsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixProperties?: (ctx: AlterStatementSuffixPropertiesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterViewSuffixProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterViewSuffixProperties?: (ctx: AlterViewSuffixPropertiesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixSerdeProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixSerdeProperties?: (ctx: AlterStatementSuffixSerdePropertiesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.tablePartitionPrefix`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTablePartitionPrefix?: (ctx: TablePartitionPrefixContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixFileFormat`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixFileFormat?: (ctx: AlterStatementSuffixFileFormatContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixClusterbySortby`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixClusterbySortby?: (ctx: AlterStatementSuffixClusterbySortbyContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterTblPartitionStatementSuffixSkewedLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterTblPartitionStatementSuffixSkewedLocation?: (ctx: AlterTblPartitionStatementSuffixSkewedLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.skewedLocations`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSkewedLocations?: (ctx: SkewedLocationsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.skewedLocationsList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSkewedLocationsList?: (ctx: SkewedLocationsListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.skewedLocationMap`. * @param ctx the parse tree * @return the visitor result */ visitSkewedLocationMap?: (ctx: SkewedLocationMapContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixLocation`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixLocation?: (ctx: AlterStatementSuffixLocationContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixSkewedby`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixSkewedby?: (ctx: AlterStatementSuffixSkewedbyContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixExchangePartition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixExchangePartition?: (ctx: AlterStatementSuffixExchangePartitionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixRenamePart`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixRenamePart?: (ctx: AlterStatementSuffixRenamePartContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixStatsPart`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixStatsPart?: (ctx: AlterStatementSuffixStatsPartContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixMergeFiles`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixMergeFiles?: (ctx: AlterStatementSuffixMergeFilesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixBucketNum`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixBucketNum?: (ctx: AlterStatementSuffixBucketNumContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.blocking`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBlocking?: (ctx: BlockingContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.compactPool`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCompactPool?: (ctx: CompactPoolContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixCompact`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixCompact?: (ctx: AlterStatementSuffixCompactContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixSetOwner`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixSetOwner?: (ctx: AlterStatementSuffixSetOwnerContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixSetPartSpec`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterStatementSuffixSetPartSpec?: (ctx: AlterStatementSuffixSetPartSpecContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.alterStatementSuffixExecute`. * @param ctx the parse tree * @return the visitor result */ visitAlterStatementSuffixExecute?: (ctx: AlterStatementSuffixExecuteContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterIndexStatementSuffix`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterIndexStatementSuffix?: (ctx: AlterIndexStatementSuffixContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.fileFormat`. * @param ctx the parse tree * @return the visitor result */ visitFileFormat?: (ctx: FileFormatContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDataConnectorStatementSuffix`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDataConnectorStatementSuffix?: (ctx: AlterDataConnectorStatementSuffixContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDataConnectorSuffixProperties?: (ctx: AlterDataConnectorSuffixPropertiesContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetOwner`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDataConnectorSuffixSetOwner?: (ctx: AlterDataConnectorSuffixSetOwnerContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterDataConnectorSuffixSetUrl`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterDataConnectorSuffixSetUrl?: (ctx: AlterDataConnectorSuffixSetUrlContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.likeTableOrFile`. * @param ctx the parse tree @@ -2363,30 +1702,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dataConnectorComment`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDataConnectorComment?: (ctx: DataConnectorCommentContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dataConnectorUrl`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDataConnectorUrl?: (ctx: DataConnectorUrlContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dataConnectorType`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDataConnectorType?: (ctx: DataConnectorTypeContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dcProperties`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDcProperties?: (ctx: DcPropertiesContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.dropDataConnectorStatement`. * @param ctx the parse tree @@ -2399,12 +1714,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.defaultValue`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDefaultValue?: (ctx: DefaultValueContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.expressionList`. * @param ctx the parse tree @@ -2453,18 +1762,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.uniqueJoinExpr`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUniqueJoinExpr?: (ctx: UniqueJoinExprContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.uniqueJoinToken`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUniqueJoinToken?: (ctx: UniqueJoinTokenContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.joinToken`. * @param ctx the parse tree @@ -2483,18 +1780,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.tableBucketSample`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTableBucketSample?: (ctx: TableBucketSampleContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.splitSample`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSplitSample?: (ctx: SplitSampleContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.tableSample`. * @param ctx the parse tree @@ -2513,12 +1798,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.uniqueJoinTableSource`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUniqueJoinTableSource?: (ctx: UniqueJoinTableSourceContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.dbSchemaName`. * @param ctx the parse tree @@ -2591,42 +1870,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.searchCondition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSearchCondition?: (ctx: SearchConditionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.valuesSource`. - * @param ctx the parse tree - * @return the visitor result - */ - visitValuesSource?: (ctx: ValuesSourceContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.valuesClause`. * @param ctx the parse tree * @return the visitor result */ visitValuesClause?: (ctx: ValuesClauseContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.valuesTableConstructor`. - * @param ctx the parse tree - * @return the visitor result - */ - visitValuesTableConstructor?: (ctx: ValuesTableConstructorContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.valueRowConstructor`. - * @param ctx the parse tree - * @return the visitor result - */ - visitValueRowConstructor?: (ctx: ValueRowConstructorContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.firstValueRowConstructor`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFirstValueRowConstructor?: (ctx: FirstValueRowConstructorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.virtualTableSource`. * @param ctx the parse tree @@ -2639,18 +1888,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.all_distinct`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAll_distinct?: (ctx: All_distinctContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.selectList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitSelectList?: (ctx: SelectListContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.selectTrfmClause`. * @param ctx the parse tree @@ -2687,12 +1924,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.window_defn`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWindow_defn?: (ctx: Window_defnContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.window_specification`. * @param ctx the parse tree @@ -2705,24 +1936,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.window_range_expression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWindow_range_expression?: (ctx: Window_range_expressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.window_value_expression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWindow_value_expression?: (ctx: Window_value_expressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.window_frame_start_boundary`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWindow_frame_start_boundary?: (ctx: Window_frame_start_boundaryContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.window_frame_boundary`. * @param ctx the parse tree @@ -2735,18 +1948,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.groupby_expression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGroupby_expression?: (ctx: Groupby_expressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.groupByEmpty`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGroupByEmpty?: (ctx: GroupByEmptyContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.rollupStandard`. * @param ctx the parse tree @@ -2765,18 +1966,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.groupingSetExpressionMultiple`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGroupingSetExpressionMultiple?: (ctx: GroupingSetExpressionMultipleContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.groupingExpressionSingle`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGroupingExpressionSingle?: (ctx: GroupingExpressionSingleContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.havingClause`. * @param ctx the parse tree @@ -2789,30 +1978,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.havingCondition`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHavingCondition?: (ctx: HavingConditionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.expressionPart`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpressionPart?: (ctx: ExpressionPartContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.expressionOrDefault`. * @param ctx the parse tree @@ -2825,12 +1990,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.expressionWithAlias`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExpressionWithAlias?: (ctx: ExpressionWithAliasContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.expressions`. * @param ctx the parse tree @@ -2838,17 +1997,17 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.columnRefOrderInParenthesis`. + * Visit a parse tree produced by `HiveSqlParser.expressionsInParenthesis`. * @param ctx the parse tree * @return the visitor result */ - visitColumnRefOrderInParenthesis?: (ctx: ColumnRefOrderInParenthesisContext) => Result; + visitExpressionsInParenthesis?: (ctx: ExpressionsInParenthesisContext) => Result; /** - * Visit a parse tree produced by `HiveSqlParser.columnRefOrderNotInParenthesis`. + * Visit a parse tree produced by `HiveSqlParser.expressionsNotInParenthesis`. * @param ctx the parse tree * @return the visitor result */ - visitColumnRefOrderNotInParenthesis?: (ctx: ColumnRefOrderNotInParenthesisContext) => Result; + visitExpressionsNotInParenthesis?: (ctx: ExpressionsNotInParenthesisContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.orderByClause`. * @param ctx the parse tree @@ -2861,12 +2020,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.partitionByClause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPartitionByClause?: (ctx: PartitionByClauseContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.distributeByClause`. * @param ctx the parse tree @@ -2879,12 +2032,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.trimFunction`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTrimFunction?: (ctx: TrimFunctionContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.function_`. * @param ctx the parse tree @@ -2915,18 +2062,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.userDefinedFuncName`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUserDefinedFuncName?: (ctx: UserDefinedFuncNameContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.internalFunctionName`. - * @param ctx the parse tree - * @return the visitor result - */ - visitInternalFunctionName?: (ctx: InternalFunctionNameContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.castExpression`. * @param ctx the parse tree @@ -2951,12 +2086,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.floorDateQualifiers`. - * @param ctx the parse tree - * @return the visitor result - */ - visitFloorDateQualifiers?: (ctx: FloorDateQualifiersContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.extractExpression`. * @param ctx the parse tree @@ -2975,60 +2104,12 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.prepareStmtParam`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrepareStmtParam?: (ctx: PrepareStmtParamContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.parameterIdx`. - * @param ctx the parse tree - * @return the visitor result - */ - visitParameterIdx?: (ctx: ParameterIdxContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.stringLiteralSequence`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStringLiteralSequence?: (ctx: StringLiteralSequenceContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.charSetStringLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCharSetStringLiteral?: (ctx: CharSetStringLiteralContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dateLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDateLiteral?: (ctx: DateLiteralContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.timestampLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTimestampLiteral?: (ctx: TimestampLiteralContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.timestampLocalTZLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTimestampLocalTZLiteral?: (ctx: TimestampLocalTZLiteralContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.intervalValue`. * @param ctx the parse tree * @return the visitor result */ visitIntervalValue?: (ctx: IntervalValueContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.intervalLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitIntervalLiteral?: (ctx: IntervalLiteralContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.intervalExpression`. * @param ctx the parse tree @@ -3053,102 +2134,48 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceFieldExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceFieldExpression?: (ctx: PrecedenceFieldExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceUnaryOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceUnaryOperator?: (ctx: PrecedenceUnaryOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceUnaryPrefixExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceUnaryPrefixExpression?: (ctx: PrecedenceUnaryPrefixExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceBitwiseXorOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceBitwiseXorOperator?: (ctx: PrecedenceBitwiseXorOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceBitwiseXorExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceBitwiseXorExpression?: (ctx: PrecedenceBitwiseXorExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceStarOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceStarOperator?: (ctx: PrecedenceStarOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceStarExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceStarExpression?: (ctx: PrecedenceStarExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedencePlusOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedencePlusOperator?: (ctx: PrecedencePlusOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedencePlusExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedencePlusExpression?: (ctx: PrecedencePlusExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceConcatenateOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceConcatenateOperator?: (ctx: PrecedenceConcatenateOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceConcatenateExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceConcatenateExpression?: (ctx: PrecedenceConcatenateExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceAmpersandOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceAmpersandOperator?: (ctx: PrecedenceAmpersandOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceAmpersandExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceAmpersandExpression?: (ctx: PrecedenceAmpersandExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceBitwiseOrOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceBitwiseOrOperator?: (ctx: PrecedenceBitwiseOrOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceBitwiseOrExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceBitwiseOrExpression?: (ctx: PrecedenceBitwiseOrExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceRegexpOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceRegexpOperator?: (ctx: PrecedenceRegexpOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceSimilarOperator`. * @param ctx the parse tree @@ -3167,12 +2194,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionMain`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceSimilarExpressionMain?: (ctx: PrecedenceSimilarExpressionMainContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionPart`. * @param ctx the parse tree @@ -3185,18 +2206,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionQuantifierPredicate`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceSimilarExpressionQuantifierPredicate?: (ctx: PrecedenceSimilarExpressionQuantifierPredicateContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.quantifierType`. - * @param ctx the parse tree - * @return the visitor result - */ - visitQuantifierType?: (ctx: QuantifierTypeContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceSimilarExpressionIn`. * @param ctx the parse tree @@ -3233,60 +2242,18 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceUnarySuffixExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceUnarySuffixExpression?: (ctx: PrecedenceUnarySuffixExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceNotOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceNotOperator?: (ctx: PrecedenceNotOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceNotExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceNotExpression?: (ctx: PrecedenceNotExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceAndOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceAndOperator?: (ctx: PrecedenceAndOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.precedenceAndExpression`. * @param ctx the parse tree * @return the visitor result */ visitPrecedenceAndExpression?: (ctx: PrecedenceAndExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceOrOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceOrOperator?: (ctx: PrecedenceOrOperatorContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.precedenceOrExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrecedenceOrExpression?: (ctx: PrecedenceOrExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.booleanValue`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBooleanValue?: (ctx: BooleanValueContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.booleanValueTok`. - * @param ctx the parse tree - * @return the visitor result - */ - visitBooleanValueTok?: (ctx: BooleanValueTokContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.tableOrPartition`. * @param ctx the parse tree @@ -3317,12 +2284,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.partitionSelectorOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPartitionSelectorOperator?: (ctx: PartitionSelectorOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.subQuerySelectorOperator`. * @param ctx the parse tree @@ -3366,65 +2327,23 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; /** - * Visit a parse tree produced by `HiveSqlParser.hint`. + * Visit a parse tree produced by `HiveSqlParser.configPropertiesItem`. * @param ctx the parse tree * @return the visitor result */ - visitHint?: (ctx: HintContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.hintList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHintList?: (ctx: HintListContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.hintItem`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHintItem?: (ctx: HintItemContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.hintName`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHintName?: (ctx: HintNameContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.hintArgs`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHintArgs?: (ctx: HintArgsContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.hintArgName`. - * @param ctx the parse tree - * @return the visitor result - */ - visitHintArgName?: (ctx: HintArgNameContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.prepareStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPrepareStatement?: (ctx: PrepareStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.executeStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExecuteStatement?: (ctx: ExecuteStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.executeParamList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitExecuteParamList?: (ctx: ExecuteParamListContext) => Result; + visitConfigPropertiesItem?: (ctx: ConfigPropertiesItemContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.resourcePlanDdlStatements`. * @param ctx the parse tree * @return the visitor result */ visitResourcePlanDdlStatements?: (ctx: ResourcePlanDdlStatementsContext) => Result; + /** + * Visit a parse tree produced by `HiveSqlParser.mappingTypes`. + * @param ctx the parse tree + * @return the visitor result + */ + visitMappingTypes?: (ctx: MappingTypesContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.rpAssign`. * @param ctx the parse tree @@ -3443,24 +2362,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.rpUnassignList`. - * @param ctx the parse tree - * @return the visitor result - */ - visitRpUnassignList?: (ctx: RpUnassignListContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.createResourcePlanStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateResourcePlanStatement?: (ctx: CreateResourcePlanStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.withReplace`. - * @param ctx the parse tree - * @return the visitor result - */ - visitWithReplace?: (ctx: WithReplaceContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.activate`. * @param ctx the parse tree @@ -3479,12 +2380,6 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.unmanaged`. - * @param ctx the parse tree - * @return the visitor result - */ - visitUnmanaged?: (ctx: UnmanagedContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.year`. * @param ctx the parse tree @@ -3533,108 +2428,24 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterResourcePlanStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterResourcePlanStatement?: (ctx: AlterResourcePlanStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.globalWmStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitGlobalWmStatement?: (ctx: GlobalWmStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.replaceResourcePlanStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitReplaceResourcePlanStatement?: (ctx: ReplaceResourcePlanStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dropResourcePlanStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropResourcePlanStatement?: (ctx: DropResourcePlanStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.poolPath`. * @param ctx the parse tree * @return the visitor result */ visitPoolPath?: (ctx: PoolPathContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerExpression?: (ctx: TriggerExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerExpressionStandalone`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerExpressionStandalone?: (ctx: TriggerExpressionStandaloneContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerOrExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerOrExpression?: (ctx: TriggerOrExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerAndExpression`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerAndExpression?: (ctx: TriggerAndExpressionContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.triggerAtomExpression`. * @param ctx the parse tree * @return the visitor result */ visitTriggerAtomExpression?: (ctx: TriggerAtomExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerLiteral`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerLiteral?: (ctx: TriggerLiteralContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.comparisionOperator`. - * @param ctx the parse tree - * @return the visitor result - */ - visitComparisionOperator?: (ctx: ComparisionOperatorContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.triggerActionExpression`. * @param ctx the parse tree * @return the visitor result */ visitTriggerActionExpression?: (ctx: TriggerActionExpressionContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.triggerActionExpressionStandalone`. - * @param ctx the parse tree - * @return the visitor result - */ - visitTriggerActionExpressionStandalone?: (ctx: TriggerActionExpressionStandaloneContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.createTriggerStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateTriggerStatement?: (ctx: CreateTriggerStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterTriggerStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterTriggerStatement?: (ctx: AlterTriggerStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dropTriggerStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropTriggerStatement?: (ctx: DropTriggerStatementContext) => Result; /** * Visit a parse tree produced by `HiveSqlParser.poolAssign`. * @param ctx the parse tree @@ -3647,41 +2458,5 @@ export class HiveSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `HiveSqlParser.createPoolStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreatePoolStatement?: (ctx: CreatePoolStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterPoolStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterPoolStatement?: (ctx: AlterPoolStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dropPoolStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropPoolStatement?: (ctx: DropPoolStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.createMappingStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateMappingStatement?: (ctx: CreateMappingStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.alterMappingStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitAlterMappingStatement?: (ctx: AlterMappingStatementContext) => Result; - /** - * Visit a parse tree produced by `HiveSqlParser.dropMappingStatement`. - * @param ctx the parse tree - * @return the visitor result - */ - visitDropMappingStatement?: (ctx: DropMappingStatementContext) => Result; } diff --git a/test/parser/hive/syntax/fixtures/setConfigProperties.sql b/test/parser/hive/syntax/fixtures/setConfigProperties.sql new file mode 100644 index 0000000..133d28d --- /dev/null +++ b/test/parser/hive/syntax/fixtures/setConfigProperties.sql @@ -0,0 +1,656 @@ +-- https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties#ConfigurationProperties-HiveConfigurationProperties + +set hive.auto.convert.join.noconditionaltask.size = 10000000; +set hive.groupby.orderby.position.alias = true; +set hive.orderby.position.alias = false; +SET hive.optimize.sort.dynamic.partition = false; +SET hive.exec.dynamic.partition.mode = nonstrict; +SET hive.exec.compress.output = true; +SET mapreduce.job.reduces = 10; +SET hive.default.fileformat = ORC; +SET mapred.job.queue.name = my_queue; +SET hive.metastore.warehouse.dir = /user/hive/warehouse; +SET mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec; +SET mapreduce.tasktracker.reduce.tasks.maximum = 8; +SET mapreduce.reduce.shuffle.input.buffer.percent = 0.7; + + + + + + + + +set hive.execution.engine = mr; +set hive.execution.mode = container; +set mapred.reduce.tasks = -1; +set hive.exec.reducers.bytes.per.reducer = 1,000,000,000; +set hive.exec.reducers.bytes.per.reducer = 256 MB; +set hive.exec.reducers.max = true; +set hive.jar.path = true; +set hive.aux.jars.path = true; +set hive.reloadable.aux.jars.path = true; +set hive.exec.scratchdir = /tmp/${user.name}; +set hive.exec.scratchdir = /tmp/hive-${user.name}; +set hive.exec.scratchdir = /tmp/hive; +set hive.scratch.dir.permission = true; +set hive.exec.local.scratchdir = true; +set hive.hadoop.supports.splittable.combineinputformat = true; +set hive.map.aggr = true; +set hive.groupby.skewindata = true; +set hive.groupby.mapaggr.checkinterval = true; +set hive.new.job.grouping.set.cardinality = true; +set hive.mapred.local.mem = true; +set hive.map.aggr.hash.force.flush.memory.threshold = true; +set hive.map.aggr.hash.percentmemory = true; +set hive.map.aggr.hash.min.reduction = true; +set hive.optimize.groupby = true; +set hive.optimize.countdistinct = true; +set hive.optimize.remove.sq_count_check = true; +set hive.multigroupby.singlemr = true; +set hive.multigroupby.singlereducer = true; +set hive.optimize.cp = true; +set hive.optimize.index.filter = true; +set hive.optimize.ppd = true; +set hive.optimize.ppd.storage = true; +set hive.ppd.remove.duplicatefilters = true; +set hive.ppd.recognizetransivity = true; +set hive.join.emit.interval = true; +set hive.join.cache.size = true; +set hive.mapjoin.bucket.cache.size = true; +set hive.mapjoin.followby.map.aggr.hash.percentmemory = true; +set hive.smalltable.filesize = true; +set hive.mapjoin.smalltable.filesize = true; +set hive.mapjoin.localtask.max.memory.usage = true; +set hive.mapjoin.followby.gby.localtask.max.memory.usage = 0.55; +set hive.mapjoin.check.memory.rows = true; +set hive.ignore.mapjoin.hint = true; +set hive.smbjoin.cache.rows = true; +set hive.mapjoin.optimized.keys = true; +set hive.mapjoin.optimized.hashtable = true; +set hive.mapjoin.optimized.hashtable.wbsize = true; +set hive.mapjoin.lazy.hashtable = true; +set hive.hashtable.initialCapacity = true; +set hive.hashtable.key.count.adjustment = true; +set hive.hashtable.loadfactor = true; +set hive.debug.localtask = true; +set hive.outerjoin.supports.filters = true; +set hive.optimize.skewjoin = true; +set hive.skewjoin.key = true; +set hive.skewjoin.mapjoin.map.tasks = true; +set hive.skewjoin.mapjoin.min.split = true; +set hive.optimize.skewjoin.compiletime = true; +set hive.optimize.union.remove = true; +set hive.mapred.supports.subdirectories = true; +set hive.mapred.mode = nonstrict; +set hive.exec.script.maxerrsize = true; +set hive.script.auto.progress = true; +set hive.exec.script.allow.partial.consumption = true; +set hive.script.operator.id.env.var = true; +set hive.script.operator.env.blacklist = true; +set hive.exec.compress.output = true; +set hive.exec.compress.intermediate = true; +set hive.exec.parallel = true; +set hive.exec.parallel.thread.number = true; +set hive.exec.rowoffset = true; +set hive.task.progress = true; +set hive.counters.group.name = true; +set hive.exec.pre.hooks = true; +set hive.exec.post.hooks = true; +set hive.exec.failure.hooks = true; +set hive.merge.mapfiles = true; +set hive.merge.mapredfiles = true; +set hive.mergejob.maponly = true; +set hive.merge.size.per.task = true; +set hive.merge.smallfiles.avgsize = true; +set hive.heartbeat.interval = true; +set hive.auto.convert.join = true; +set hive.auto.convert.join.noconditionaltask = true; +set hive.auto.convert.join.noconditionaltask.size = true; +set hive.auto.convert.join.use.nonstaged = true; +set hive.merge.nway.joins = true; +set hive.udtf.auto.progress = true; +set hive.mapred.reduce.tasks.speculative.execution = true; +set hive.exec.counters.pull.interval = true; +set hive.enforce.bucketing = true; +set hive.enforce.sorting = true; +set hive.optimize.bucketingsorting = true; +set hive.optimize.reducededuplication = true; +set hive.optimize.reducededuplication.min.reducer = true; +set hive.optimize.correlation = true; +set hive.optimize.limittranspose = true; +set hive.optimize.limittranspose.reductionpercentage = true; +set hive.optimize.limittranspose.reductiontuples = true; +set hive.optimize.filter.stats.reduction = true; +set hive.optimize.sort.dynamic.partition = true; +set hive.cbo.enable = true; +set hive.cbo.returnpath.hiveop = true; +set hive.cbo.cnf.maxnodes = true; +set hive.optimize.null.scan = true; +set hive.exec.dynamic.partition = true; +set hive.exec.dynamic.partition.mode = strict; +set hive.exec.max.dynamic.partitions = true; +set hive.exec.max.dynamic.partitions.pernode = true; +set hive.exec.max.created.files = true; +set hive.exec.default.partition.name = true; +set hive.fetch.output.serde = true; +set hive.exec.mode.local.auto = true; +set hive.exec.mode.local.auto.inputbytes.max = true; +set hive.exec.mode.local.auto.tasks.max = true; +set hive.exec.mode.local.auto.input.files.max = true; +set hive.exec.drop.ignorenonexistent = true; +set hive.exec.show.job.failure.debug.info = true; +set hive.auto.progress.timeout = true; +set hive.table.parameters.default = true; +set hive.variable.substitute = true; +set hive.error.on.empty.partition = true; +set hive.exim.uri.scheme.whitelist = true; +set hive.limit.row.max.size = true; +set hive.limit.optimize.limit.file = true; +set hive.limit.optimize.enable = true; +set hive.limit.optimize.fetch.max = true; +set hive.rework.mapredwork = true; +set hive.sample.seednumber = true; +set hive.autogen.columnalias.prefix.label = true; +set hive.autogen.columnalias.prefix.includefuncname = true; +set hive.exec.perf.logger = org.apache.hadoop.hive.ql.log.PerfLogger; +set hive.start.cleanup.scratchdir = true; +set hive.scratchdir.lock = true; +set hive.output.file.extension = true; +set hive.insert.into.multilevel.dirs = true; +set hive.conf.validation = true; +set hive.fetch.task.conversion = true; +set hive.map.groupby.sorted = true; +set hive.map.groupby.sorted.testmode = true; +set hive.groupby.orderby.position.alias = true; +set hive.groupby.position.alias = true; +set hive.orderby.position.alias = true; +set hive.fetch.task.aggr = true; +set hive.fetch.task.conversion.threshold = true; +set hive.limit.pushdown.memory.usage = true; +set hive.cache.expr.evaluation = true; +set hive.resultset.use.unique.column.names = true; +set hive.support.quoted.identifiers = true; +set hive.plan.serialization.format = true; +set hive.exec.check.crossproducts = true; +set hive.display.partition.cols.separately = true; +set hive.limit.query.max.table.partition = true; +set hive.files.umask.value = true; +set hive.optimize.sampling.orderby = true; +set hive.optimize.sampling.orderby.number = true; +set hive.optimize.sampling.orderby.percent = true; +set hive.compat = true; +set hive.optimize.constant.propagation = true; +set hive.entity.capture.transform = true; +set hive.support.sql11.reserved.keywords = true; +set hive.log.explain.output = true; +set hive.explain.user = true; +set hive.typecheck.on.insert = true; +set hive.exec.temporary.table.storage = true; +set hive.optimize.distinct.rewrite = true; +set hive.optimize.point.lookup = true; +set hive.optimize.point.lookup.min = true; +set hive.allow.udf.load.on.demand = true; +set hive.async.log.enabled = true; +set hive.msck.repair.batch.size = true; +set hive.exec.copyfile.maxnumfiles = true; +set hive.exec.copyfile.maxsize = true; +set hive.exec.stagingdir = .hive-staging; +set hive.query.lifetime.hooks = true; +set hive.remove.orderby.in.subquery = true; +set hive.datetime.formatter = true; +set hive.datetime.formatter.resolver.style = true; +set hive.script.serde = true; +set hive.script.recordreader = true; +set hive.script.recordwriter = true; +set hive.default.serde = true; +set hive.lazysimple.extended_boolean_literal = true; +set hive.io.exception.handlers = true; +set hive.input.format = true; +set hive.default.fileformat = true; +set hive.default.fileformat.managed = true; +set hive.fileformat.check = true; +set hive.query.result.fileformat = true; +set hive.io.rcfile.record.interval = true; +set hive.io.rcfile.column.number.conf = true; +set hive.io.rcfile.tolerate.corruptions = true; +set hive.io.rcfile.record.buffer.size = true; +set hive.exec.orc.memory.pool = true; +set hive.exec.orc.write.format = true; +set hive.exec.orc.base.delta.ratio = true; +set hive.exec.orc.default.stripe.size = 256*1024*1024; +set hive.exec.orc.default.block.size = true; +set hive.exec.orc.dictionary.key.size.threshold = true; +set hive.exec.orc.default.row.index.stride = true; +set hive.exec.orc.default.buffer.size = true; +set hive.exec.orc.default.block.padding = true; +set hive.exec.orc.block.padding.tolerance = true; +set hive.exec.orc.default.compress = true; +set hive.exec.orc.encoding.strategy = true; +set hive.orc.splits.include.file.footer = true; +set hive.orc.cache.stripe.details.size = true; +set hive.orc.cache.use.soft.references = true; +set hive.io.sarg.cache.max.weight.mb = true; +set hive.orc.compute.splits.num.threads = true; +set hive.exec.orc.split.strategy = true; +set hive.exec.orc.skip.corrupt.data = true; +set hive.exec.orc.zerocopy = true; +set hive.merge.orcfile.stripe.level = true; +set hive.orc.row.index.stride.dictionary.check = true; +set hive.exec.orc.compression.strategy = true; +set hive.parquet.timestamp.skip.conversion = true; +set hive.avro.timestamp.skip.conversion = true; +set hive.vectorized.execution.enabled = true; +set hive.vectorized.execution.reduce.enabled = true; +set hive.vectorized.execution.reduce.groupby.enabled = true; +set hive.vectorized.execution.reducesink.new.enabled = true; +set hive.vectorized.execution.mapjoin.native.enabled = true; +set hive.vectorized.execution.mapjoin.native.multikey.only.enabled = true; +set hive.vectorized.execution.mapjoin.minmax.enabled = true; +set hive.vectorized.execution.mapjoin.overflow.repeated.threshold = true; +set hive.vectorized.execution.mapjoin.native.fast.hashtable.enabled = true; +set hive.vectorized.groupby.checkinterval = true; +set hive.vectorized.groupby.maxentries = true; +set hive.vectorized.use.vectorized.input.format = true; +set hive.vectorized.use.vector.serde.deserialize = true; +set hive.vectorized.use.row.serde.deserialize = true; +set hive.vectorized.input.format.excludes = true; +set hive.metastore.local = true; +set hive.metastore.uri.selection = true; +set javax.jdo.option.ConnectionURL = true; +set javax.jdo.option.ConnectionDriverName = true; +set javax.jdo.PersistenceManagerFactoryClass = true; +set javax.jdo.option.DetachAllOnCommit = true; +set javax.jdo.option.NonTransactionalRead = true; +set javax.jdo.option.ConnectionUserName = true; +set javax.jdo.option.ConnectionPassword = true; +set javax.jdo.option.Multithreaded = true; +set datanucleus.connectionPoolingType = true; +set datanucleus.connectionPool.maxPoolSize = true; +set datanucleus.validateTables = true; +set datanucleus.schema.validateTables = true; +set datanucleus.validateColumns = true; +set datanucleus.schema.validateColumns = true; +set datanucleus.validateConstraints = true; +set datanucleus.schema.validateConstraints = true; +set datanucleus.storeManagerType = true; +set datanucleus.fixedDatastore = true; +set datanucleus.autoCreateSchema = true; +set datanucleus.schema.autoCreateAll = true; +set datanucleus.autoStartMechanismMode = true; +set datanucleus.transactionIsolation = true; +set datanucleus.cache.level2 = true; +set datanucleus.cache.level2.type = true; +set datanucleus.identifierFactory = true; +set datanucleus.plugin.pluginRegistryBundleCheck = true; +set hive.warehouse.subdir.inherit.perms = true; +set hive.metastore.execute.setugi = true; +set hive.metastore.event.listeners = true; +set hive.metastore.partition.inherit.table.properties = true; +set hive.metastore.end.function.listeners = true; +set hive.metastore.event.expiry.duration = true; +set hive.metastore.event.clean.freq = true; +set hive.metastore.connect.retries = true; +set hive.metastore.client.connect.retry.delay = true; +set hive.metastore.client.socket.timeout = true; +set hive.metastore.rawstore.impl = true; +set metastore.cached.rawstore.impl = true; +set metastore.cached.rawstore.cache.update.frequency = true; +set metastore.cached.rawstore.cached.object.whitelist = .*; +set metastore.cached.rawstore.cached.object.blacklist = true; +set metastore.cached.rawstore.max.cache.memory = true; +set hive.metastore.batch.retrieve.max = true; +set hive.metastore.ds.connection.url.hook = true; +set hive.metastore.ds.retry.attempts = true; +set hive.metastore.ds.retry.interval = true; +set hive.metastore.server.min.threads = true; +set hive.metastore.server.max.threads = true; +set hive.metastore.server.max.message.size = true; +set hive.metastore.server.tcp.keepalive = true; +set hive.metastore.sasl.enabled = true; +set hive.metastore.kerberos.keytab.file = true; +set hive.metastore.kerberos.principal = true; +set hive.metastore.client.kerberos.principal = true; +set hive.metastore.cache.pinobjtypes = true; +set hive.metastore.authorization.storage.checks = true; +set hive.metastore.thrift.framed.transport.enabled = true; +set hive.metastore.schema.verification = true; +set hive.metastore.disallow.incompatible.col.type.changes = true; +set hive.metastore.integral.jdo.pushdown = true; +set hive.metastore.try.direct.sql = true; +set hive.metastore.try.direct.sql.ddl = true; +set hive.metastore.orm.retrieveMapNullsAsEmptyStrings = true; +set hive.direct.sql.max.query.length = true; +set hive.direct.sql.max.elements.in.clause = true; +set hive.direct.sql.max.elements.values.clause = true; +set hive.metastore.port = true; +set hive.metastore.initial.metadata.count.enabled = true; +set hive.metastore.limit.partition.request = true; +set hive.metastore.fastpath = true; +set hive.metastore.jdbc.max.batch.size = true; +set hive.metastore.hbase.cache.size = true; +set hive.metastore.hbase.cache.ttl = true; +set hive.metastore.hbase.file.metadata.threads = true; +set hive.server2.thrift.port = true; +set hive.server2.thrift.bind.host = true; +set hive.server2.thrift.min.worker.threads = true; +set hive.server2.thrift.max.worker.threads = true; +set hive.server2.thrift.worker.keepalive.time = true; +set hive.server2.thrift.max.message.size = true; +set hive.server2.authentication = true; +set hive.server2.authentication.kerberos.keytab = true; +set hive.server2.authentication.kerberos.principal = true; +set hive.server2.authentication.client.kerberos.principal = true; +set hive.server2.custom.authentication.class = true; +set hive.server2.enable.doAs = true; +set hive.server2.authentication.ldap.url = true; +set hive.server2.authentication.ldap.baseDN = true; +set hive.server2.authentication.ldap.guidKey = true; +set hive.server2.authentication.ldap.Domain = true; +set hive.server2.authentication.ldap.groupDNPattern = true; +set hive.server2.authentication.ldap.groupFilter = true; +set hive.server2.authentication.ldap.groupMembershipKey = true; +set hive.server2.authentication.ldap.userMembershipKey = true; +set hive.server2.authentication.ldap.groupClassKey = true; +set hive.server2.authentication.ldap.userDNPattern = true; +set hive.server2.authentication.ldap.userFilter = true; +set hive.server2.authentication.ldap.customLDAPQuery = true; +set hive.server2.authentication.ldap.binddn = true; +set hive.server2.authentication.ldap.bindpw = true; +set hive.server2.global.init.file.location = true; +set hive.server2.transport.mode = true; +set hive.server2.thrift.http.port = true; +set hive.server2.thrift.http.path = true; +set hive.server2.thrift.http.min.worker.threads = true; +set hive.server2.thrift.http.max.worker.threads = true; +set hive.server2.thrift.http.max.idle.time = true; +set hive.server2.thrift.http.worker.keepalive.time = true; +set hive.server2.thrift.sasl.qop = true; +set hive.server2.async.exec.threads = true; +set hive.server2.async.exec.shutdown.timeout = true; +set hive.server2.table.type.mapping = true; +set hive.server2.session.hook = true; +set hive.server2.max.start.attempts = true; +set hive.server2.async.exec.wait.queue.size = true; +set hive.server2.async.exec.keepalive.time = true; +set hive.server2.long.polling.timeout = true; +set hive.server2.allow.user.substitution = true; +set hive.server2.authentication.spnego.keytab = true; +set hive.server2.authentication.spnego.principal = true; +set hive.server2.authentication.pam.services = true; +set hive.server2.use.SSL = true; +set hive.server2.keystore.path = true; +set hive.server2.keystore.password = true; +set hive.server2.tez.default.queues = true; +set hive.server2.tez.sessions.per.default.queue = true; +set hive.server2.tez.initialize.default.sessions = true; +set hive.server2.session.check.interval = true; +set hive.server2.idle.session.timeout = true; +set hive.server2.idle.operation.timeout = true; +set hive.server2.logging.operation.enabled = true; +set hive.server2.logging.operation.log.location = true; +set hive.server2.logging.operation.verbose = true; +set hive.server2.logging.operation.level = true; +set hive.server2.thrift.http.cookie.auth.enabled = true; +set hive.server2.thrift.http.cookie.max.age = true; +set hive.server2.thrift.http.cookie.path = true; +set hive.server2.thrift.http.cookie.domain = true; +set hive.server2.thrift.http.cookie.is.secure = true; +set hive.server2.thrift.http.cookie.is.httponly = true; +set hive.server2.close.session.on.disconnect = true; +set hive.server2.xsrf.filter.enabled = true; +set hive.server2.job.credential.provider.path = true; +set hive.server2.in.place.progress = true; +set hive.hadoop.classpath = true; +set hive.server2.webui.host = true; +set hive.server2.webui.port = true; +set hive.server2.webui.max.threads = true; +set hive.server2.webui.max.historic.queries = true; +set hive.server2.webui.use.ssl = true; +set hive.server2.webui.keystore.path = true; +set hive.server2.webui.keystore.password = true; +set hive.server2.webui.use.spnego = true; +set hive.server2.webui.spnego.keytab = true; +set hive.server2.webui.spnego.principal = true; +set hive.server2.webui.explain.output = true; +set hive.server2.webui.show.graph = true; +set hive.server2.webui.max.graph.size = true; +set hive.server2.webui.show.stats = true; +set hive.spark.dynamic.partition.pruning = true; +set hive.spark.dynamic.partition.pruning.map.join.only = true; +set hive.spark.dynamic.partition.pruning.max.data.size = true; +set hive.spark.exec.inplace.progress = true; +set hive.spark.use.file.size.for.mapjoin = true; +set hive.spark.use.ts.stats.for.mapjoin = true; +set hive.spark.explain.user = true; +set hive.prewarm.spark.timeout = true; +set hive.spark.optimize.shuffle.serde = true; +set hive.merge.sparkfiles = true; +set hive.spark.session.timeout.period = true; +set hive.spark.session.timeout.period = true; +set hive.spark.use.op.stats = true; +set hive.spark.use.ts.stats.for.mapjoin = true; +set hive.spark.use.groupby.shuffle = true; +set mapreduce.job.reduces = true; +set hive.spark.client.future.timeout = true; +set hive.spark.client.connect.timeout = true; +set hive.spark.client.server.connect.timeout = true; +set hive.spark.client.secret.bits = true; +set hive.spark.client.rpc.server.address = true; +set hive.spark.client.rpc.threads = true; +set hive.spark.client.rpc.max.size = true; +set hive.spark.client.channel.log.level = true; +set hive.mapjoin.optimized.hashtable = true; +set hive.mapjoin.optimized.hashtable.wbsize = true; +set hive.jar.directory = true; +set hive.user.install.directory = true; +set hive.compute.splits.in.am = true; +set hive.rpc.query.plan = true; +set hive.prewarm.enabled = true; +set hive.prewarm.numcontainers = true; +set hive.merge.tezfiles = true; +set hive.tez.input.format = true; +set hive.tez.input.generate.consistent.splits = true; +set hive.tez.container.size = true; +set hive.tez.java.opts = true; +set hive.convert.join.bucket.mapjoin.tez = true; +set hive.tez.log.level = true; +set hive.localize.resource.wait.interval = true; +set hive.localize.resource.num.wait.attempts = true; +set hive.tez.smb.number.waves = true; +set hive.tez.cpu.vcores = true; +set hive.tez.auto.reducer.parallelism = true; +set hive.tez.max.partition.factor = true; +set hive.tez.min.partition.factor = true; +set hive.tez.exec.print.summary = true; +set hive.tez.exec.inplace.progress = true; +set hive.llap.execution.mode = true; +set hive.server2.llap.concurrent.queries = true; +set hive.llap.client.consistent.splits = true; +set hive.llap.daemon.web.port = true; +set hive.llap.daemon.web.ssl = true; +set hive.llap.auto.auth = true; +set hive.llap.daemon.service.principal = true; +set hive.llap.daemon.service.hosts = true; +set hive.llap.daemon.task.preemption.metrics.intervals = true; +set hive.llap.object.cache.enabled = true; +set hive.llap.io.use.lrfu = true; +set hive.llap.io.lrfu.lambda = true; +set hive.llap.io.enabled = true; +set hive.llap.io.cache.orc.size = true; +set hive.llap.io.threadpool.size = true; +set hive.llap.io.orc.time.counters = true; +set hive.llap.io.memory.mode = true; +set hive.llap.io.allocator.alloc.min = true; +set hive.llap.io.allocator.alloc.max = true; +set hive.llap.io.allocator.arena.count = true; +set hive.llap.io.memory.size = true; +set hive.llap.io.allocator.direct = true; +set hive.llap.io.allocator.nmap = true; +set hive.llap.io.allocator.nmap.path = true; +set hive.llap.auto.allow.uber = true; +set hive.llap.auto.enforce.tree = true; +set hive.llap.auto.enforce.vectorized = true; +set hive.llap.auto.enforce.stats = true; +set hive.llap.auto.max.input.size = true; +set hive.llap.auto.max.output.size = true; +set hive.llap.queue.metrics.percentiles.intervals = true; +set hive.llap.management.rpc.port = true; +set hive.llap.allow.permanent.fns = true; +set hive.llap.daemon.download.permanent.fns = true; +set hive.llap.daemon.keytab.file = true; +set hive.llap.zk.sm.principal = true; +set hive.llap.zk.sm.keytab.file = true; +set hive.llap.zk.sm.connectionString = true; +set hive.llap.daemon.acl = true; +set hive.llap.management.acl = true; +set hive.llap.daemon.delegation.token.lifetime = true; +set hive.txn.manager = true; +set hive.txn.strict.locking.mode = true; +set hive.txn.timeout = true; +set hive.txn.heartbeat.threadpool.size = true; +set hive.timedout.txn.reaper.start = true; +set hive.timedout.txn.reaper.interval = true; +set hive.writeset.reaper.interval = true; +set hive.txn.max.open.batch = true; +set hive.max.open.txns = true; +set hive.count.open.txns.interval = true; +set hive.txn.retryable.sqlex.regex = true; +set hive.compactor.initiator.on = true; +set hive.compactor.cleaner.on = true; +set hive.compactor.worker.threads = true; +set hive.compactor.worker.timeout = true; +set hive.compactor.check.interval = true; +set hive.compactor.cleaner.run.interval = true; +set hive.compactor.delta.num.threshold = true; +set hive.compactor.delta.pct.threshold = true; +set hive.compactor.abortedtxn.threshold = true; +set hive.compactor.aborted.txn.time.threshold = true; +set hive.compactor.history.retention.succeeded = true; +set hive.compactor.history.retention.failed = true; +set metastore.compactor.history.retention.did.not.initiate = true; +set hive.compactor.history.reaper.interval = true; +set hive.compactor.initiator.failed.compacts.threshold = true; +set hive.index.compact.file.ignore.hdfs = true; +set hive.optimize.index.filter = true; +set hive.optimize.index.filter.compact.minsize = true; +set hive.optimize.index.filter.compact.maxsize = true; +set hive.index.compact.query.max.size = true; +set hive.index.compact.query.max.entries = true; +set hive.exec.concatenate.check.index = true; +set hive.optimize.index.autoupdate = true; +set hive.optimize.index.groupby = true; +set hive.index.compact.binary.search = true; +set hive.stats.dbclass = true; +set hive.stats.autogather = true; +set hive.stats.column.autogather = true; +set hive.stats.jdbcdriver = true; +set hive.stats.dbconnectionstring = true; +set hive.stats.default.publisher = true; +set hive.stats.default.aggregator = true; +set hive.stats.jdbc.timeout = true; +set hive.stats.atomic = true; +set hive.stats.retries.max = true; +set hive.stats.retries.wait = true; +set hive.stats.collect.rawdatasize = true; +set hive.client.stats.publishers = true; +set hive.client.stats.counters = true; +set hive.stats.reliable = true; +set hive.stats.ndv.error = true; +set hive.stats.collect.tablekeys = true; +set hive.stats.collect.scancols = true; +set hive.stats.key.prefix.max.length = true; +set hive.stats.key.prefix.reserve.length = true; +set hive.stats.max.variable.length = true; +set hive.analyze.stmt.collect.partlevel.stats = true; +set hive.stats.list.num.entries = true; +set hive.stats.map.num.entries = true; +set hive.stats.map.parallelism = true; +set hive.stats.fetch.partition.stats = true; +set hive.stats.fetch.column.stats = true; +set hive.stats.join.factor = true; +set hive.stats.deserialization.factor = true; +set hive.stats.avg.row.size = true; +set hive.compute.query.using.stats = true; +set hive.stats.gather.num.threads = true; +set hive.stats.fetch.bitvector = true; +set hive.tez.dynamic.semijoin.reduction = true; +set hive.tez.min.bloom.filter.entries = true; +set hive.tez.max.bloom.filter.entries = true; +set hive.tez.bloom.filter.factor = true; +set hive.tez.bigtable.minsize.semijoin.reduction = true; +set hive.conf.restricted.list = true; +set hive.conf.hidden.list = true; +set hive.conf.internal.variable.list = true; +set hive.security.command.whitelist = true; +set hive.security.authorization.enabled = true; +set hive.security.authorization.manager = true; +set hive.security.authenticator.manager = true; +set hive.security.authorization.createtable.user.grants = true; +set hive.security.authorization.createtable.group.grants = true; +set hive.security.authorization.createtable.role.grants = true; +set hive.security.authorization.createtable.owner.grants = true; +set hive.metastore.pre.event.listeners = true; +set hive.security.metastore.authorization.manager = true; +set hive.security.metastore.authenticator.manager = true; +set hive.security.metastore.authorization.auth.reads = true; +set hive.metastore.token.signature = true; +set hive.users.in.admin.role = true; +set hive.security.authorization.sqlstd.confwhitelist = true; +set hive.security.authorization.sqlstd.confwhitelist.append = true; +set hive.server2.builtin.udf.whitelist = true; +set hive.server2.builtin.udf.blacklist = true; +set hive.security.authorization.task.factory = true; +set fs.har.impl = true; +set hive.archive.enabled = true; +set hive.archive.har.parentdir.settable = true; +set hive.support.concurrency = true; +set hive.lock.manager = true; +set hive.lock.mapred.only.operation = true; +set hive.lock.query.string.max.length = true; +set hive.lock.numretries = true; +set hive.unlock.numretries = true; +set hive.lock.sleep.between.retries = true; +set hive.zookeeper.quorum = true; +set hive.zookeeper.client.port = true; +set hive.zookeeper.session.timeout = true; +set hive.zookeeper.namespace = true; +set hive.zookeeper.clean.extra.nodes = true; +set hive.lockmgr.zookeeper.default.partition.name = true; +set hive.metastore.metrics.enabled = true; +set hive.metastore.acidmetrics.thread.on = true; +set hive.server2.metrics.enabled = true; +set hive.service.metrics.class = true; +set hive.service.metrics.reporter = true; +set hive.service.metrics.codahale.reporter.classes = true; +set hive.service.metrics.file.location = true; +set hive.service.metrics.file.frequency = true; +set hive.service.metrics.hadoop2.component = true; +set hive.service.metrics.hadoop2.frequency = true; +set hive.cluster.delegation.token.store.class = true; +set hive.cluster.delegation.token.store.zookeeper.connectString = true; +set hive.cluster.delegation.token.store.zookeeper.znode = true; +set hive.cluster.delegation.token.store.zookeeper.acl = true; +set hive.cli.print.header = true; +set hive.cli.print.current.db = true; +set hive.hbase.wal.enabled = true; +set hive.hbase.generatehfiles = true; +set hive.hwi.war.file = true; +set hive.hwi.listen.host = true; +set hive.hwi.listen.port = true; +set hive.repl.rootdir = true; +set hive.repl.replica.functions.root.dir = true; +set hive.repl.partitions.dump.parallelism = true; +set hive.repl.approx.max.load.tasks = true; +set hive.repl.dump.metadata.only = true; +set hive.repl.dump.include.acid.tables = true; +set hive.repl.add.raw.reserved.namespace = true; +set hive.blobstore.supported.schemes = true; +set hive.blobstore.optimizations.enabled = true; +set hive.blobstore.use.blobstore.as.scratchdir = true; +set hive.exec.input.listing.max.threads = true; +set hive.test.mode = true; +set hive.test.mode.prefix = true; +set hive.test.mode.samplefreq = true; +set hive.test.mode.nosamplelist = true; +set hive.exec.submit.local.task.via.child = true; diff --git a/test/parser/hive/syntax/setConfigProperties.test.ts b/test/parser/hive/syntax/setConfigProperties.test.ts new file mode 100644 index 0000000..801e632 --- /dev/null +++ b/test/parser/hive/syntax/setConfigProperties.test.ts @@ -0,0 +1,16 @@ +import { HiveSQL } from 'src/parser/hive'; +import { readSQL } from 'test/helper'; + +const hive = new HiveSQL(); + +const features = { + setConfigProperties: readSQL(__dirname, 'setConfigProperties.sql'), +}; + +describe('HiveSQL Select Syntax Tests', () => { + features.setConfigProperties.forEach((configProperty) => { + it(configProperty, () => { + expect(hive.validate(configProperty).length).toBe(0); + }); + }); +});